Расширенные темы

Контроль монет

Контроль монет позволяет пользователям кошелька Dash Core определять какие адреса и выходы непотраченных транзакций (UTXOs) должны быть использованы в качестве входов в транзакциях. Это позволит вам удерживать определённый баланс на выбранных адресах вашего кошелька, в то время как с остальных адресов можно производить свободные траты. В кошельке Dash Core кликните Настройки > Параметры > Кошелёк > Включить функции контроля монет. Теперь, когда вы зайдёте во вкладку кошелька Отправить, то увидите новую кнопку с названием Входы…. Нажмите на эту кнопку и выберите, какие UTXO могут использоваться в качестве входа для любой созданной вами транзакции. Появится следующее окно:

../../_images/coin-selection.png

Окно «Выбор монет» в кошельке Dash Core, показывающее две мастерноды (в тестовой сети)

Нажмите правой кнопкой мыши на транзакцию (транзакции), которую вы не хотите тратить, затем выберите Заблокировать непотраченное. Напротив транзакции появится значок маленького замка. Чтобы инвертировать статус «заблокирован/разблокирован» сразу для всех UTXO, можно кликнуть на кнопку Сменить блокировку. Если готовы продолжать - нажмите OK. Теперь вы можете безопасно создавать транзакции из оставшихся средств и в этих транзакциях не будут задействованы заблокированные UTXO.

../../_images/coin-selection-lock.png
../../_images/coin-selection-locked.png

Блокирование UTXO в кошельке Dash Core

HD кошельки

Начиная с версии 0.12.2.0, Dash Core включает имплементацию совместимых со стандартами BIP39/BIP44 генерируемых иерархически детерминированных (HD) ключей. Эта функция доступна только из командной строки с помощью опции usehd при первом запуске кошелька Dash Core. Используйте эту функцию с осторожностью, так как до тех пор, пока вы не определите фразу-пароль кошелька, мнемоническая фраза и ключи будут храниться в формате простого текста. Обратите внимание, что фраза-пароль кошелька отличается от мнемонической фразы-пароля, её ещё называют «25-е слово» или «слово-расширение». Фраза-пароль кошелька зашифровывает сам кошелёк, тогда как мнемоническая фраза-пароль используется для указания различных ветвей происхождения из соответствующего мнемонического сида.

В этом примере мы будем использовать кошелёк с графическим интерфейсом под ОС Windows, но при использовании dash-qt или dashd на других операционных системах команды аналогичные. Для начала введите следующую команду со случайным образом сгенерированной HD-кошельком сид-фразой и без мнемонической фразы-пароля:

dash-qt.exe --usehd=1

Будет сгенерирован новый HD-кошелёк, а Dash Core отобразит предупреждение о том, что необходимо зашифровать свой кошелёк, чтобы он правильно работал после верификации. Откройте консоль с помощью Инструменты -> Консоль отладки или введите следующую команду из dash-cli в RPC-консоли для просмотра мнемонической фразы:

dumphdinfo

Dash Core отобразит HD сид-фразу в двух вариантах: в шестнадцатиричной системе счисления и как мнемоническую фразу BIP39. Для восстановления существующего HD-кошелька или определения ваших собственных, раздельно сгенерированных мнемонической фразы и/или фразы-пароля, убедитесь, что файл wallet.dat существует в datadir и введите следующую команду:

dash-qt.exe --usehd=1 --mnemonic="enter mnemonic" --mnemonicpassphrase="optional mnemonic passphrase"

HD-кошелёк будет восстановлен и как только завершится процесс синхронизации, отобразится ваш баланс.

Мультиподпись

В данном разделе представлен рабочий пример, демонстрирующий функцию мультиподписи в кошельке Dash Core. Хотя транзакции больше не видны в текущем блокчейне тестовой сети и некоторые форматы адресов или ответы RPC могут немного отличаться от версии, показанной здесь, принцип и команды одинаковы. В примере показано как настроить адрес с 2-из-3 multisig-адресов и создать транзакцию. В примере задействованными сторонами являются: покупатель, продавец и арбитр. Данный пример основывается на:

Шаг 1: Создайте три адреса

Для продавца:

seller@testnet03:~$ ./dash-cli getnewaddress
n18cPEtj4ZfToPZxRszUz2XPts4eGsxiPk
seller@testnet03:~$ ./dash-cli validateaddress n18cPEtj4ZfToPZxRszUz2XPts4eGsxiPk
{
    "isvalid" : true,
    "address" : "n18cPEtj4ZfToPZxRszUz2XPts4eGsxiPk",
    "ismine" : true,
    "isscript" : false,
    "pubkey" : "02a862b412ff9e3afd01a2873a02622897f6df92e3fc85597788b898309fec882e",
    "iscompressed" : true,
    "account" : ""
}
seller@testnet03:~$ ./dash-cli dumpprivkey n18cPEtj4ZfToPZxRszUz2XPts4eGsxiPk
cVQVgBr8sW4FTPYz16BSCo1PcAfDhpJArgMPdLxKZQWcVFwMXRXx

Для покупателя:

buyer@testnet03:~$ ./dash-cli getnewaddress
mp5orHuaFaHCXFSCeYvUPL7H16JU8fKG6u
buyer@testnet03:~$ ./dash-cli validateaddress mp5orHuaFaHCXFSCeYvUPL7H16JU8fKG6u
{
    "isvalid" : true,
    "address" : "mp5orHuaFaHCXFSCeYvUPL7H16JU8fKG6u",
    "ismine" : true,
    "isscript" : false,
    "pubkey" : "0315617694c9d93f0ce92769e050a6868ffc74d229077379c0af8bfb193c3d351c",
    "iscompressed" : true,
    "account" : ""
}
buyer@testnet03:~$ ./dash-cli dumpprivkey mp5orHuaFaHCXFSCeYvUPL7H16JU8fKG6u
cP9DFmEDb11waWbQ8eG1YUoZCGe59BBxJF3kk95PTMXuG9HzcxnU

Для арбитра:

arbiter@testnet03:~$ ./dash-cli getnewaddress
n1cZSyQXhach5rrj2tm5wg6JC7uZ3qPNiN
arbiter@testnet03:~$ ./dash-cli validateaddress n1cZSyQXhach5rrj2tm5wg6JC7uZ3qPNiN
{
    "isvalid" : true,
    "address" : "n1cZSyQXhach5rrj2tm5wg6JC7uZ3qPNiN",
    "ismine" : true,
    "isscript" : false,
    "pubkey" : "0287ce6cf69b85593ce7db801874c9a2fb1b653dbe5dd9ebfa73e98b710af9e9ce",
    "iscompressed" : true,
    "account" : ""
}
arbiter@testnet03:~$ ./dash-cli dumpprivkey n1cZSyQXhach5rrj2tm5wg6JC7uZ3qPNiN
cUbDFL81a2w6urAGZf7ecGbdzM82pdHLeCaPXdDp71s96SzDV49M

Это результаты для трёх пар ключей (публичный/приватный):

seller:    02a862b412ff9e3afd01a2873a02622897f6df92e3fc85597788b898309fec882e / cVQVgBr8sW4FTPYz16BSCo1PcAfDhpJArgMPdLxKZQWcVFwMXRXx
buyer:     0315617694c9d93f0ce92769e050a6868ffc74d229077379c0af8bfb193c3d351c / cP9DFmEDb11waWbQ8eG1YUoZCGe59BBxJF3kk95PTMXuG9HzcxnU
arbiter:   0287ce6cf69b85593ce7db801874c9a2fb1b653dbe5dd9ebfa73e98b710af9e9ce / cUbDFL81a2w6urAGZf7ecGbdzM82pdHLeCaPXdDp71s96SzDV49M

Шаг 2: Создайте адрес с мультиподписью

Для выполнения команды createmultisig необходимо принять в качестве переменных количество подписей n из количества ключей m (представленных в виде json-массива). В данном примере для подписи транзакции необходимы 2 из 3-х ключей.

Примечание: адрес может быть создан любым человеком, которому доступна информация о публичных ключах и известна их последовательность (результирующий адрес и redeemScript являются идентичными, смотрите ниже).

Для продавца:

seller@testnet03:~$ ./dash-cli createmultisig 2 '["02a862b412ff9e3afd01a2873a02622897f6df92e3fc85597788b898309fec882e","0315617694c9d93f0ce92769e050a6868ffc74d229077379c0af8bfb193c3d351c","0287ce6cf69b85593ce7db801874c9a2fb1b653dbe5dd9ebfa73e98b710af9e9ce"]'
{
    "address" : "2MuEQCZh7VB8pNrT4bj1CFZQh2oK7XZYLQf",
    "redeemScript" : "522102a862b412ff9e3afd01a2873a02622897f6df92e3fc85597788b898309fec882e210315617694c9d93f0ce92769e050a6868ffc74d229077379c0af8bfb193c3d351c210287ce6cf69b85593ce7db801874c9a2fb1b653dbe5dd9ebfa73e98b710af9e9ce53ae"
}

Для покупателя:

buyer@testnet03:~$ ./dash-cli createmultisig 2 '["02a862b412ff9e3afd01a2873a02622897f6df92e3fc85597788b898309fec882e","0315617694c9d93f0ce92769e050a6868ffc74d229077379c0af8bfb193c3d351c","0287ce6cf69b85593ce7db801874c9a2fb1b653dbe5dd9ebfa73e98b710af9e9ce"]'
{
    "address" : "2MuEQCZh7VB8pNrT4bj1CFZQh2oK7XZYLQf",
    "redeemScript" : "522102a862b412ff9e3afd01a2873a02622897f6df92e3fc85597788b898309fec882e210315617694c9d93f0ce92769e050a6868ffc74d229077379c0af8bfb193c3d351c210287ce6cf69b85593ce7db801874c9a2fb1b653dbe5dd9ebfa73e98b710af9e9ce53ae"
}

Для арбитра:

arbiter@testnet03:~$ ./dash-cli createmultisig 2 '["02a862b412ff9e3afd01a2873a02622897f6df92e3fc85597788b898309fec882e","0315617694c9d93f0ce92769e050a6868ffc74d229077379c0af8bfb193c3d351c","0287ce6cf69b85593ce7db801874c9a2fb1b653dbe5dd9ebfa73e98b710af9e9ce"]'
{
    "address" : "2MuEQCZh7VB8pNrT4bj1CFZQh2oK7XZYLQf",
    "redeemScript" : "522102a862b412ff9e3afd01a2873a02622897f6df92e3fc85597788b898309fec882e210315617694c9d93f0ce92769e050a6868ffc74d229077379c0af8bfb193c3d351c210287ce6cf69b85593ce7db801874c9a2fb1b653dbe5dd9ebfa73e98b710af9e9ce53ae"
}

Шаг 3: Покупатель отправляет средства на адрес с мультиподписью

Это работает по тому же принципу, что и обычная транзакция.

Для покупателя:

buyer@testnet03:~$ ./dash-cli sendtoaddress 2MuEQCZh7VB8pNrT4bj1CFZQh2oK7XZYLQf 777.77
a8b3bf5bcace91a8dbbddbf9b7eb027efb9bd001792f043ecf7b558aaa3cb951

Продавец/арбитр может отследить транзакцию по её txid в блокчейн-обозревателе. Или из консоли, как показано ниже.

Для покупателя:

seller@testnet03:~$ ./dash-cli getrawtransaction a8b3bf5bcace91a8dbbddbf9b7eb027efb9bd001792f043ecf7b558aaa3cb951 1
{
    "hex" : "010000001a2e514dd90f666e3de4cddd22682ae1ca7225988656369d98228c742482fee16b010000006b48304502200ea8dddd404aac644fd382d3089480f2c9a6ce753a3c4fc0b12ac81afe8ffa3b022100d88f698a0d9fefbbf76240790530fe7e23bf6b354a1feedb4effa99813405b00012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff3181c52614be8742c36665b6a287a2d6c7970494b0a341ff9595c1c9a8f23aa2010000006b483045022041ee176da4df13adc782c9ff2afdb24c4e1b61b450895486388431bf1a88b81f02210082be1b3bd20d3f121c971fb745cba52523f6b8093ec93df5987c9beb302c19ac012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff332356f7d5e4264302ca4cc0f38d2a75a9b4c1df4bc4f94044f8a8fab81b7e1b010000006b483045022100dc322074961ae5e2e8cb11828301b1e083eff9ed6078aa064c52ed70d52737410220776b99c8552bbc2e644c7450ef8502d3497c3de7196b176f1c49cca18d1ff09f012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff388b56a8a74338ce10e931dc198ed25fa4cb7213e0ea9905d32a3e902366661f010000006b48304502206d2cdfe9af498e9e46f88d0bd881746bf2dae182664d03f7a635ff599bdee84b022100bf3a7b88ed80b30d8915a2ae34d546defbc9a660ebf941afb4aa29461e0b4c95012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff44578d7579bef2a204359f8c878993480b306193d954ee735c53f8b3e076c3ea010000006c4930460221008a67da5764934392437fa9e05483e4b29204fd5d78dea01f744d4a23c403881b022100c77e58307f58953b578de568138659b4efd2fadaec51917c2270fab0bd4a57a6012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff4a3b7b666ce8f249ef4f253b7f718fb5cc2f21f899608d319bcc04c75ec47353010000006b48304502203ca5a0559647ee0d1790714296396ca0bca27a3ef3e68f76706c63da9cd3684f0221008c9529f7a54d89440f8dca89c1c47725821012670d05a70681b57f182b069a74012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff4ab5d98908e4424929bfdba3d6402e6b45db60a622b4df8c73da1b37bdb949a4010000006b48304502210094da4e007ba94cdb47a8c4805dab4b93dc475a44340a9b6f6d7956d49749e3d3022077b94861995ffe3f59429bf5b873914d3c1157f23f018697650bc3bd2dc2de1f012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff4cd58c1ad5b0ffd8556deff402854d94a79222799916be8e0f88d0cca3c38c85010000006b483045022030e72eec0386c83489efff8f3c71aed8eec0265565cddeb1492aab6644cc63220221008d6df06656dae12dae573b860d65045f088e4df5e2127902231d8edd4196ef1d012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff501ff2345fc47b9b7749afcc32e790fdbe5d22fd96b2c5d0522d4cad0cd5566f010000006a47304402204e9bc23796974fdf323c49399ca7db76e2238630add4c617631549f4595af4a80220658038b14884c1a0d730de79c7e2769d4d28135ed7896e7aff01ca94c8edf7bb012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff5020fe72d4c1038213cc3e1b99f5b313c4b2d57f1e0d9abba90860dc5c38630a010000006a473044022071b7cca6a7d72fef4b46ad425c23c37f28c72501e5e61821f00e022c4c8ef49502200d8ba406fe336d64a8ae909cad20d0ffe302cd977900013ea72b37c488550625012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff59f32023d4225cc193182e81444f00f6d95652a9458daa08f4324ab4bdac7bed010000006b4830450221009e0f701840c01c2c37e2baec0ea2c43d517126107ef874c3d68f32dfa2e4f05f02206d1306dee274267598d5ab8d7c4c26346d25d8118b30a6921b9b238307916d6e012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff05b5b8ecaf7bcbd5fdfc64fd7dbd6ebfee18dcaf57e00b6711ba0abe4329eb23010000006a47304402200515822e6d9641c72f1af7968ba63d47463caffeca03733750b0866ef123fe00022071fd40bac12aa1d36244fc5391162b70ec306a5ed2dffef3a3d4995524317a10012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff09cc372e4409bcbacd85adb17918ca5b20427dc280b44bd4f234fb698ac07fc6010000006b483045022051e5c430110e8b0d85693c421031f14abf89bee1a14702e6655a1eaa2663927c0221009a54781fddd4093032507f12fe8a97ce926a743851a1a56c2ca70026ce98b7e6012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff0963f2cc80666835ae8c5939ac3011d2962ae88e872cdc13257cfb0188f83c7a010000006b483045022032fd819b1cdb8f506e27f26b3e46330c498b965386c3e96c34dceeff2a517cf7022100a4c34d77ed25116dc05ca7d783bd6cb91c1e38db0541878dac72f2d63d4b7c11012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff14cff38ccbdd840ffc491614e9b5167edb6ad6b9eeaf8e3dc30feaeefa39d820010000006c493046022100f4d6dfce7778acee6bdcf9f2ec39dbf902b6ca977b8622c886eadddefa01bf5502210089b3c2d23b5fc5b03d2d6ea4bf28f04b98342b02dd7d2020a6466bddd85c3d50012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff63750bbce93657a59fe3472fce714eafa09791fcf7f687f30a923162f2ba5196010000006c493046022100bbbf84829fcc2ec70bc6d77cfc69f512c1a14359958eee46243001908dc2a0ab0221008f1fbda61fcfccb78fe6d4e6385e8f508035676ef82654425bb704727f1e59b4012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff6466da482404f4a719f7eb16798d05878af2c36ad7174e2b68964693f39e954b010000006a47304402204d57344da5a1a29ea800215d19ada89787b1026f7e47c2f2f1ea0ef82bec5b6d02203039bd98546843a99d9e6749819875a4d996a682c57a192d9e5cef9b694a028b012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff8b0b4a84522fded19446eef3fdd94cc0f7449c71b6e0080837d5f240c78ce03b010000006c493046022100c152177ec49bb572d70976b53c10d0c4be55584975d657c43e87fbaac8c081ec0221009dd150697257cf769c3e90afbde88fbbe5f95c17c561883546537644ed628f6f012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff8d7078622b75fc2c3ea1094d07099b0e460a7f7a4c53cf225d066f919f17daf6010000006b483045022100e440d404867748cfba792119faae12d286b265a185cec86215fe2737ec1e7ca402207770447154f81564f7022b375943c2b7eaf3d05a3281c6f5c70328b098423d7d012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff98c23cc59412943bfedba3b4a48bb2f97f58c119946e5c492031c43a36dd576e010000006c493046022100910cf6fb057269e5e02fa44fc2ba03925d9e0e3232d3d5a66aac440db9627f9f022100b656d982dec47000de616f21a331b1fb5e19d1ab312c5845f5f1538dac4dd301012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff9d4851f00e3c2fa22816adc55703fcb539ae0fe218f369f23af079964a6225fc020000006c4930460221009918ee137e4aead4760c79dbe940556ae1ecb7935a653543b486f4198f16cc6a022100f82e04cd970f2c5fd8dd48813e38f87c10ed8fa7b45eec1854562948f9d43a1b012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffffa13c3221f0e08289657208bccf7b466ea5795c591751065a20b16f00892bd598010000006b483045022073d9fed13def14a655fd423f5c4fa63e46eeea76668cdf8bb89d96630890760d022100f70edce3513c9cbc671f92dc0b4d97c5edc0d9d26f4e726bb2d66776a3b9e411012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffffcac4f229bd19c47cd15ee9355af8383531a960ba0e0f3e8e4fa0a607ab2000d9010000006b483045022100967624e60a7670e849eb7500cf185620fd65de10d1e5f7cef9131d3c6403cb5f022005182af16fba1b7dbdd27a8935205b439c6034d566c6f14950aba6bb328cbf79012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffffcbf8cb94ee2bcda1c9ceb54feaf6815441f722b70c4f7569525cc9dee7cbbdc2010000006b4830450221008cfcfdc62f0a398e2419ebd56cf067e2abadf8116936250939b9fa763dd428680220052c6d316189d5f7164d2423aae99e97d05165f3e5c7d138e2858f0adab4ebba012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffffdbad6da5900987f77e5bcf714c935889fbea2d3ff388586a331fe42e0a82efe0010000006c493046022100e80d73130bcd25faa73764f4ff6c05e1b401f3960b7ef30b4244daaf5fce953a022100b99a55caaaa312df54c7d743791052c3e8392725becf91d2aa886d2e8259af10012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689fffffffffdc2d56fd131ae16837fc86e3015c9e78077dd36b6a2591cf1d500c584bbcc6a010000006b483045022100d13e5a55a4a71e039603bd2d3d76a757c63b1d199bcf340e3f2eeb5bed10897c022046a43ecc6cd8295981bde38c34c29708e402db59fc93e657196fc3032858d967012103954bfa8b6b1b0f1f5624ea2925b18cd1477fde2087eada1a51323a6617172689ffffffff0240d6de1b1200000017a91415c85c2472f5941b60a49462a2cfd0d17ab49d1c87c02fdf67000000001976a914b8d899f7193a7b3278be037b006c8f08998ebef388ac00000000",
    "txid" : "a8b3bf5bcace91a8dbbddbf9b7eb027efb9bd001792f043ecf7b558aaa3cb951",
    "version" : 1,
    "locktime" : 0,
[...]
    "vout" : [
        {
            "value" : 777.77000000,
            "n" : 0,
            "scriptPubKey" : {
                "asm" : "OP_HASH160 15c85c2472f5941b60a49462a2cfd0d17ab49d1c OP_EQUAL",
                "hex" : "a91415c85c2472f5941b60a49462a2cfd0d17ab49d1c87",
                "reqSigs" : 1,
                "type" : "scripthash",
                "addresses" : [
                    "2MuEQCZh7VB8pNrT4bj1CFZQh2oK7XZYLQf"
                ]
            }
        },
[...]
    ],
    "blockhash" : "000000034def806f348cadf6a80660aed1cfc30ccbd1492a8ea87062800ea94d",
    "confirmations" : 3,
    "time" : 1409224896,
    "blocktime" : 1409224896
}

Шаг 4: Трата средств из кошелька с мультиподписью

Теперь мы предполагаем, что сделка завершена, покупатель получил товар и все счастливы. А продавец теперь хочет получить свои DASH. Так как было задействовано 2-из-3-х мультиподписей, транзакция должна быть подписана 2 сторонами (продавец + покупатель или арбитр). Продавец создаёт транзакцию (мы заново используем его публичный адрес из примера выше).

Для продавца:

seller@testnet03:~$ ./dash-cli createrawtransaction '[{"txid":"a8b3bf5bcace91a8dbbddbf9b7eb027efb9bd001792f043ecf7b558aaa3cb951","vout":0}]' '{"n18cPEtj4ZfToPZxRszUz2XPts4eGsxiPk":777.77}'
010000000151b93caa8a557bcf3e042f7901d09bfb7e02ebb7f9dbbddba891ceca5bbfb3a80000000000ffffffff0140d6de1b120000001976a914d728be76cd74b5d148eba2a49246b80dac12f73e88ac00000000

И частично подписывает её, используя redeemScript, scriptPubKey и свой приватный ключ

Для продавца:

seller@testnet03:~$ ./dash-cli signrawtransaction '010000000151b93caa8a557bcf3e042f7901d09bfb7e02ebb7f9dbbddba891ceca5bbfb3a80000000000ffffffff0140d6de1b120000001976a914d728be76cd74b5d148eba2a49246b80dac12f73e88ac00000000' '[{"txid":"a8b3bf5bcace91a8dbbddbf9b7eb027efb9bd001792f043ecf7b558aaa3cb951","vout":0,"scriptPubKey":"a91415c85c2472f5941b60a49462a2cfd0d17ab49d1c87","redeemScript":"522102a862b412ff9e3afd01a2873a02622897f6df92e3fc85597788b898309fec882e210315617694c9d93f0ce92769e050a6868ffc74d229077379c0af8bfb193c3d351c210287ce6cf69b85593ce7db801874c9a2fb1b653dbe5dd9ebfa73e98b710af9e9ce53ae"}]' '["cVQVgBr8sW4FTPYz16BSCo1PcAfDhpJArgMPdLxKZQWcVFwMXRXx"]'
{
    "hex" : "010000000151b93caa8a557bcf3e042f7901d09bfb7e02ebb7f9dbbddba891ceca5bbfb3a800000000b500483045022051a7f0e95a5066859ce37fe64a6e7ab6e30bfe9a68d9d3f1453064052eab5625022100c0067a33d2ee02478d89fc1a71f3a93c883db022e970886181c50ca9afc3dfa4014c69522102a862b412ff9e3afd01a2873a02622897f6df92e3fc85597788b898309fec882e210315617694c9d93f0ce92769e050a6868ffc74d229077379c0af8bfb193c3d351c210287ce6cf69b85593ce7db801874c9a2fb1b653dbe5dd9ebfa73e98b710af9e9ce53aeffffffff0140d6de1b120000001976a914d728be76cd74b5d148eba2a49246b80dac12f73e88ac00000000",
    "complete" : false
}

Обратите внимание, что исходящий hex-код стал длиннее, но он дополнен флагом «false», так как для транзакции требуется ещё одна подпись. Поэтому теперь либо покупатель, либо арбитр могут завершить подпись транзакции, используя выходы из примера выше и свои приватные ключи. Предположим, что подпись завершает покупатель.

Для покупателя:

buyer@testnet03:~$ ./dash-cli signrawtransaction '010000000151b93caa8a557bcf3e042f7901d09bfb7e02ebb7f9dbbddba891ceca5bbfb3a800000000b500483045022051a7f0e95a5066859ce37fe64a6e7ab6e30bfe9a68d9d3f1453064052eab5625022100c0067a33d2ee02478d89fc1a71f3a93c883db022e970886181c50ca9afc3dfa4014c69522102a862b412ff9e3afd01a2873a02622897f6df92e3fc85597788b898309fec882e210315617694c9d93f0ce92769e050a6868ffc74d229077379c0af8bfb193c3d351c210287ce6cf69b85593ce7db801874c9a2fb1b653dbe5dd9ebfa73e98b710af9e9ce53aeffffffff0140d6de1b120000001976a914d728be76cd74b5d148eba2a49246b80dac12f73e88ac00000000' '[{"txid":"a8b3bf5bcace91a8dbbddbf9b7eb027efb9bd001792f043ecf7b558aaa3cb951","vout":0,"scriptPubKey":"a91415c85c2472f5941b60a49462a2cfd0d17ab49d1c87","redeemScript":"522102a862b412ff9e3afd01a2873a02622897f6df92e3fc85597788b898309fec882e210315617694c9d93f0ce92769e050a6868ffc74d229077379c0af8bfb193c3d351c210287ce6cf69b85593ce7db801874c9a2fb1b653dbe5dd9ebfa73e98b710af9e9ce53ae"}]' '["cP9DFmEDb11waWbQ8eG1YUoZCGe59BBxJF3kk95PTMXuG9HzcxnU"]'
{
    "hex" : "010000000151b93caa8a557bcf3e042f7901d09bfb7e02ebb7f9dbbddba891ceca5bbfb3a800000000fdff0000483045022051a7f0e95a5066859ce37fe64a6e7ab6e30bfe9a68d9d3f1453064052eab5625022100c0067a33d2ee02478d89fc1a71f3a93c883db022e970886181c50ca9afc3dfa401493046022100dc3f61fdb7b8ea7ec729682d355646c922f5512054c4985534e6b91040c5bd660221008b48c117ec95814f573d33bca981cb703fdd9fa6e52aa8fe67423e06cad87215014c69522102a862b412ff9e3afd01a2873a02622897f6df92e3fc85597788b898309fec882e210315617694c9d93f0ce92769e050a6868ffc74d229077379c0af8bfb193c3d351c210287ce6cf69b85593ce7db801874c9a2fb1b653dbe5dd9ebfa73e98b710af9e9ce53aeffffffff0140d6de1b120000001976a914d728be76cd74b5d148eba2a49246b80dac12f73e88ac00000000",
    "complete" : true
}

Теперь подпись завершена и любая из сторон может отправить транзакцию на обработку в сеть.

Для покупателя:

buyer@testnet03:~$ ./dash-cli sendrawtransaction 010000000151b93caa8a557bcf3e042f7901d09bfb7e02ebb7f9dbbddba891ceca5bbfb3a800000000fdff0000483045022051a7f0e95a5066859ce37fe64a6e7ab6e30bfe9a68d9d3f1453064052eab5625022100c0067a33d2ee02478d89fc1a71f3a93c883db022e970886181c50ca9afc3dfa401493046022100dc3f61fdb7b8ea7ec729682d355646c922f5512054c4985534e6b91040c5bd660221008b48c117ec95814f573d33bca981cb703fdd9fa6e52aa8fe67423e06cad87215014c69522102a862b412ff9e3afd01a2873a02622897f6df92e3fc85597788b898309fec882e210315617694c9d93f0ce92769e050a6868ffc74d229077379c0af8bfb193c3d351c210287ce6cf69b85593ce7db801874c9a2fb1b653dbe5dd9ebfa73e98b710af9e9ce53aeffffffff0140d6de1b120000001976a914d728be76cd74b5d148eba2a49246b80dac12f73e88ac00000000
cf1a75672006a05b38d94acabb783f81976c9e83a8de4da9cbec0de711cf2d71

Опять-таки, данную транзакцию можно отследить в обозревателе блокчейна. А продавец рад получить деньги на свой публичный адрес, что показано ниже.

Для продавца:

seller@testnet03:~$ dash-cli listtransactions "" 1
[
    {
        "account" : "",
        "address" : "n18cPEtj4ZfToPZxRszUz2XPts4eGsxiPk",
        "category" : "receive",
        "amount" : 777.77000000,
        "confirmations" : 17,
        "blockhash" : "000000067a13e9bd5c1d5ff48cb4b9f8414a6adcc470656262731bfd013510dd",
        "blockindex" : 9,
        "blocktime" : 1409228449,
        "txid" : "cf1a75672006a05b38d94acabb783f81976c9e83a8de4da9cbec0de711cf2d71",
        "time" : 1409227887,
        "timereceived" : 1409227887
    }
]

Множественные кошельки

Во время запуска кошелька Dash Core есть возможность выбора разных кошельков Dash с помощью определения аргумента wallet, или даже одновременного запуска нескольких копий Dash Core с указанием раздельных каталогов данных, используя аргумент datadir.

Для начала установите кошелёк Dash Core на вашу систему в соответствии с инструкциями по установке. На шаге Первый запуск Dash Core вы можете решить хотите ли вы поддерживать раздельные файлы wallet.dat, расположенные в папке по умолчанию (это проще, если не требуется запускать кошельки одновременно) или определить полностью раздельные каталоги данных, например C:\Dash1 (это проще, если хотите запускать кошельки одновременно).

Раздельные файлы wallet.dat

Для этого сценария мы создадим на рабочем столе два ярлыка, каждый из которых будет использовать свой файл кошелька. Переходим к бинарному файлу, который используется для запуска Dash Core (по умолчанию он расположен по адресу C:\Program Files\DashCore\dash-qt.exe или похожему) и создаём два ярлыка на рабочем столе. Затем открываем окно Свойства для каждого из этих ярлыков.

../../_images/shortcuts.png

Создание ярлыков на рабочем столе с использованием Windows 10

Обновите строку Объект каждого ярлыка для того, чтобы они ссылались на разные файлы кошельков, указав аргумент wallet при запуске кошелька. Если вы не укажете аргумент wallet, то по умолчанию будет использоваться wallet.dat. Если указанного файла кошелька не существует, он будет создан. В следующем примере показано, как создать два кошелька с именами workwallet.dat и homewallet.dat:

  • Расположение кошелька 1: "C:\Program Files\DashCore\dash-qt.exe" -wallet=workwallet.dat
  • Расположение кошелька 2: "C:\Program Files\DashCore\dash-qt.exe" -wallet=homewallet.dat
../../_images/walletfiles.png

Расположение отдельных файлов кошелька

Теперь с помощью двух созданных ярлыков можно быстро и просто открывать различные кошельки с вашего рабочего стола. Обратите внимание, что открывать оба кошелька одновременно нельзя. Чтобы делать это, необходимо создать два отдельных каталога данных, как описано ниже.

Отдельные каталоги данных

Запустите кошелёк Dash Core и дождитесь пока он полностью синхронизируется с сетью, затем закройте Dash Core. Теперь вы можете создать две папки, например C:\Dash1 и C:\Dash2 и скопировать папки blocks и chainstate из синхронизированной папки данных в эти новые папки. Каждая из них будет обслуживаться как отдельная папка с данными, что позволит вам запускать две копии приложения Dash Core одновременно. Создайте два (или более) ярлыка на рабочем столе в соответствии с описанием выше, затем определите аргументы для datadir, как показано ниже:

  • Расположение каталога данных 1: "C:\Program Files\DashCore\dash-qt.exe" -datadir=C:\Dash1 -listen=0
  • Расположение каталога данных 2: "C:\Program Files\DashCore\dash-qt.exe" -datadir=C:\Dash2 -listen=0
../../_images/datadirs.png

Расположение отдельных каталогов данных

Теперь с помощью двух созданных ярлыков можно быстро, просто и одновременно открывать различные кошельки с рабочего стола. Оба кошелька будут иметь отдельные и полные копии блокчейна, для чего может потребоваться большой объём дискового пространства. Для более эффективного использования дискового пространства и поддержания работы нескольких раздельных кошельков без необходимости хранения полной копии блокчейна, рассмотрите возможность использования SPV или «лёгкого» кошелька, такого как Dash Electrum.

../../_images/2wallets.png

Две копии кошелька Dash Core, запущенные одновременно

KeePass

Начиная с версии 0.11.0, Dash Core поддерживает интеграцию KeePass, популярного, свободно распространяемого менеджера паролей. В этом руководстве описывается как сконфигурировать ассоциацию между Dash Core и KeePass, и сохранить фразу-пароль кошелька Dash Core в KeePass, используя интеграцию. После того, как это будет сделано, KeePass можно использовать для разблокировки кошелька.

Установка

Вам понадобится следующее:

Если эти пакеты ещё не установлены, то установите их в соответствии с инструкциями по ссылкам ниже:

Команды

В консоли или на сервере клиента Dash Core доступны следующие RPC-команды KeePass:

keepass genkey
Генерирует зашифрованный способом base64 256-битный AES-ключ, который используется для коммуникации с KeePassHttp. Это важно только для ручного конфигурирования. Для автоматического конфигурирования используйте инициализацию.
keepass init
Устанавливает ассоциацию между Dash и KeePass генерацией AES-ключа и отправкой ассоциированного сообщения на KeePassHttp. Это автоматически заставляет KeePass запросить ID для ассоциации. Возвращает ассоциацию и зашифрованную способом base64 строку для AES-ключа.
keepass setpassphrase
Задаёт новое значение для парольной фразы KeePassHttp. Эта фраза должна соответствовать фразе-паролю, которую вы собираетесь использовать для кошелька. Обратите внимание, что стандартные команды RPC «walletpassphrasechange» и шифрование кошелька с помощью графического интерфейса QT уже отправили обновления на KeePassHttp, так что это необходмио только для ручных манипуляций с паролем.

Для dashd и dash-qt доступны следующие новые аргументы:

keepass
Используйте интеграцию KeePass 2 при помощи плагина KeePassHttp (по умолчанию: 0)
keepassport=<port>
Соединение с KeePassHttp через порт <port> (по умолчанию: 19455)
keepasskey=<key>
Ключ KeePassHttp для зашифрованной стандартом AES коммуникации с помощью KeePass
keepassid=<name>
KeePassHttp id для установленной ассоциации
keepassname=<name>
Задание имени для создания url с записью KeePass, в которой хранится фраза-пароль кошелька