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

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

Контроль монет позволяет пользователям кошелька 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#

Запуск тестовой сети Dash#

Для проведения экспериментов рекомендуется запускать Dash Core в тестовой сети. Для её запуска через командную строку выполните следующие действия:

Для Linux:

./dash-qt -testnet

Для Mac (запускается из Applications/Dash-Qt.app/Contents/MacOS):

Dash-Qt -testnet

Примечание: Перед выполнением этого действия может потребоваться разрешить приложение от неизвестного разработчика. Cmd+Click на приложении и нажмите Открыть.

Теперь откройте терминал Mac и выполните команду:

cd /Applications/Dash-Qt.app/Contents/MacOS
./Dash-Qt -testnet

Вы можете пополнить свой кошелек в тестовой части, обратившись к крану <http://faucet.testnet.networks.dash.org/>`_.

HD кошельки#

Переход на HD#

Предупреждение

После перехода на кошелек HD необходимо создать новую резервную копию.

В Dash Core реализована возможность обновления неиерархического детерминированного (HD) кошелька до HD-кошелька с помощью команды upgradetohd. Команду можно выполнить, открыв консоль из Window > Console или выполнив следующую RPC-команду из dash-cli:

upgradetohd "" "" <walletpassphrase>

Если кошелек уже зашифрован, то в качестве третьего параметра команды необходимо ввести кодовую фразу. Если кошелек еще не зашифрован, то указание парольной фразы запускает шифрование кошелька.

Чтобы увидеть полную информацию о команде, выполните следующие действия из консоли или dash-cli:

help upgradetohd

Просмотр информации о HD-кошельке#

Откройте консоль из Window > Console или выполните следующую RPC-команду из dash-cli для просмотра мнемонического семени:

dumphdinfo

Dash Core отобразит HD seed в HEX формате и в формате мнемоники BIP39. Также отображается мнемоническая парольная фраза, если она использовалась при создании кошелька.

Восстановление HD-кошелька#

Чтобы восстановить существующий HD-кошелек или задать свою собственную мнемонику и/или парольную фразу, создайте новый пустой кошелек с помощью следующей команды:

createwallet "enter wallet name" false true "optional wallet password"

Добавьте реквизиты кошелька HD к вновь созданному кошельку, выполнив команду:

upgradetohd "enter mnemonic" "optional mnemonic passphrase" "optional wallet passphrase"

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

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

Включить создание HD-кошелька по умолчанию#

В Dash Core реализована совместимая с BIP39/BIP44 иерархическая детерминированная (HD) генерация ключей. В данном примере мы будем использовать кошелек с графическим интерфейсом Windows, но команды будут аналогичными при использовании dash-qt или dashd в других операционных системах. Введите следующую команду, чтобы настроить Dash Core на генерацию HD-кошельков по умолчанию:

dash-qt.exe -usehd

Чтобы эта конфигурация сохранялась между перезапусками, добавьте usehd=1 в файл dash.conf.

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

В данном разделе представлен рабочий пример, демонстрирующий функцию мультиподписи в кошельке 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
    }
]

Daemon#

В системах Linux Dash может выполняться как фоновый процесс (или демон). Это особенно удобно, если вы используете Dash в качестве сервера, а не узла с графическим интерфейсом. Данное руководство предполагает, что вы установили Dash Core для Linux, как описано в Руководство по установке в Linux.

  1. Создайте пользователя и группу для запуска daemon:

    sudo useradd -m dash -s /bin/bash
    
  2. Создайте каталог данных для Dash в домашнем каталоге нового пользователя:

    sudo -u dash mkdir -p /home/dash/.dashcore
    
  3. Создайте файл конфигурации в новом каталоге данных Dash:

    sudo -u dash nano /home/dash/.dashcore/dash.conf
    
  4. Вставьте в файл dash.conf следующую базовую конфигурацию, заменив на длинный и случайный пароль:

    listen=1
    server=1
    daemon=1
    
  5. Зарегистрируйте daemon dashd в качестве системной службы, создав следующий файл:

    sudo nano /etc/systemd/system/dashd.service
    
  6. Вставьте в файл следующую конфигурацию deamon:

    [Unit]
    Description=Dash Core Daemon
    After=syslog.target network-online.target
    
    [Service]
    Type=forking
    User=dash
    Group=dash
    OOMScoreAdjust=-1000
    ExecStart=/usr/local/bin/dashd -pid=/home/dash/.dashcore/dashd.pid
    TimeoutStartSec=10m
    ExecStop=/usr/local/bin/dash-cli stop
    TimeoutStopSec=120
    Restart=on-failure
    RestartSec=120
    StartLimitInterval=300
    StartLimitBurst=3
    
    [Install]
    WantedBy=multi-user.target
    
  7. Зарегистрируйте и запустите deamon с помощью systemd:

    sudo systemctl daemon-reload
    sudo systemctl enable dashd
    sudo systemctl start dashd
    

Теперь Dash установлен в качестве системного deamon. Просмотреть статус можно следующим образом:

systemctl status dashd

Просмотреть логи можно следующим образом:

sudo journalctl -u dashd

Tor#

Tor - свободное программное обеспечение с открытым исходным кодом для обеспечения анонимного общения. Название произошло от аббревиатуры оригинального названия программного проекта «The Onion Router». Tor направляет интернет-трафик через бесплатную, всемирную, добровольную оверлейную сеть, состоящую из более чем семи тысяч ретрансляторов, что позволяет скрыть местоположение и использование пользователя от тех, кто ведет наблюдение за сетью или анализирует трафик.

Dash Core GUI#

Трафик Dash Core можно направить на прохождение через Tor, указав в качестве прокси-сервера запущенную службу Tor. Сначала установите Tor, посетив сайт https://www.torproject.org/download/ и загрузив соответствующий пакет Tor Browser для вашей системы. Настройте браузер Tor, следуя документации в разделах Installation и Running Tor Browser for the First Time.

После запуска Tor Browser у вас есть две возможности настроить Dash Core на использование Tor для сетевого трафика.

  1. Используя GUI: Запустите Dash Core, перейдите в раздел Настройки > Параметры > Сеть и включите настройку Подключение через прокси-сервер SOCKS5. Укажите 127.0.0.1 для Proxy IP и 9150 для Port. Нажмите OK и перезапустите Dash Core.

  2. Использование dash.conf: Убедитесь, что Dash Core не запущен, и отредактируйте файл настроек dash.conf. Добавьте строку proxy=127.0.0.1:9150, сохраните файл и запустите Dash Core.

Теперь вы подключены через сеть Tor. Вам нужно будет не забывать запускать Tor Browser каждый раз перед запуском Dash Core, иначе синхронизация будет невозможна.

Tor onion сервис#

Tor onion services позволяет другим пользователям подключаться к вашей Dash ноде, используя onion-адрес, обеспечивая дополнительную анонимность за счет сокрытия вашего IP-адреса. Выполните следующие шаги для настройки onion-сервиса в Ubuntu Linux:

  1. Установка Tor:

    sudo apt install tor
    
  2. Добавьте в файл torrc следующую строку:

    sudo bash -c "echo -e 'ControlPort 9051\nCookieAuthentication 1\nCookieAuthFileGroupReadable 1' >> /etc/tor/torrc"
    
  3. Перезапустите Tor:

    sudo systemctl restart tor
    
  4. Определите группу, под которой работает Tor (обычно это последняя запись в файле groups):

    tail /etc/group
    

    В дистрибутивах Linux на базе Debian в качестве группы обычно выступает debian-tor.

  5. Добавьте пользователя, выполняющего команду Dash, в группу Tor:

    sudo usermod -aG debian-tor dash
    
  6. Добавьте в dash.conf следующие две строки:

    proxy=127.0.0.1:9050
    torcontrol=127.0.0.1:9051
    
  7. Перезапустите Dash и проследите за debug.log для получения информации об onion:

    grep -i onion ~/.dashcore/debug.log
    

    На экране должна появиться строка, аналогичная следующей:

    2020-06-29 03:43:57 tor: Got service ID knup3fvr6fyvypu7, advertising service knup3fvr6fyvypu7.onion:19999
    

Теперь по указанному адресу доступен ваш onion сервис.

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

Начиная с версии 18.0.0, в Dash Core появилась возможность работы с несколькими кошельками из меню File в дополнение к ранее доступным опциям.

Предупреждение

RPC, связанные с кошельками, требуют использования опции -rpcwallet, если загружено более одного файла кошелька. Это необходимо для того, чтобы команда RPC выполнялась с использованием правильного кошелька. Дополнительную информацию см. в :ref:`Документация разработчиков для Core `.

Открыть кошелёк#

Чтобы открыть кошелек, нажмите Файл -> Открыть кошелек, а затем щелкните на имени файла кошелька.

../../../../_images/wallet-open.png

Открыть кошелёк#

Выберите активный кошелек#

Когда открыто несколько кошельков, слева от логотипа Dash на панели вкладок отображается выпадающее окно выбора кошелька. Щелкните по выпадающему окну и выберите кошелек, чтобы установить его в качестве активного.

../../../../_images/wallet-select-dropdown.png

Выпадающее окно выбора кошелька#

Закройте кошелёк#

Чтобы закрыть кошелек, установите его в качестве активного с помощью выпадающего окна выбора кошелька. Затем нажмите Файл -> Закрыть кошелек и нажмите Да на экране подтверждения закрытия кошелька.

../../../../_images/wallet-close-confirmation.png

Подтверждение закрытия кошелька#

Примечание

Если единственный открытый кошелек закрыт, то связанные с кошельком элементы на панели вкладок будут отключены.

Альтернативные методы#

Также можно выбирать между различными кошельками Dash при запуске Dash Core, указывая аргумент 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#

Предупреждение

Поддержка KeePass была удалена в Dash Core 18.0.0. Подробности по-прежнему можно найти в предыдущих версиях этой документации.