Продвинутые функции#

В основе Dash Electrum лежит Electrum, Биткойн-кошелёк. Многие функции похожи, а значит, нет нужды приводить здесь всю документацию по Electrum. В этом разделе описываются некоторые часто используемые продвинутые функции. Чтобы узнать больше об остальных продвинутых функциях Electrum у Биткойн и Dash, нажмите на ссылку ниже.

Функция PrivateSend#

PrivateSend offers users enhanced privacy when creating transactions by splitting the user’s balance into a number of predefined denominations in advance of spending. This process is known as CoinJoin. PrivateSend is available in Dash Electrum versions and higher, with support for hardware wallets added in

Processing and sending#

To start PrivateSend processing in Dash Electrum, select Wallet > PrivateSend or click the PS icon in the lower right corner of the main window. The following window appears:


PrivateSend dialog in Dash Electrum#

Enter the Amount of Dash to keep anonymized and the number of PrivateSend rounds to use. Then click Enable PrivateSend, followed by Start Mixing. The process will begin, and the Mixing Progress bar shows the completion progress. Additional information on the process is available on the Info and Log tabs.

When processing is complete, simply check the PrivateSend checkbox on the Send tab before sending your transaction. Dash Electrum will only use Dash processed according to your specifications for the transaction.

Физические кошельки#

You can use hardware wallets with Dash Electrum. Under Linux, it may be necessary to first install dependencies and udev rules as follows:

sudo apt-get install python3-dev python3-pip cython3 libusb-1.0-0-dev libudev-dev
sudo pip3 install trezor

PrivateSend processing is also supported. Starting PrivateSend processing in Dash Electrum with a hardware wallet will generate a new HD wallet and mnemonic for the PrivateSend keystore. A transaction from the hardware wallet to an address in this keystore will be created, and processing will begin. You can then spend the processed Dash, or send it back to your hardware wallet.


Dash Electrum supports masternode creation through the DIP3 tab.


The DIP3 tab can be enabled via the View > Show DIP3 menu. This tab displays the status of your masternode(s) and also allows viewing a list of all registered masternodes on the network.

The tab displays the following data about each masternode you have set up:

  • Название (имя) мастерноды.

  • The state of the masternode (e.g. whether it has been activated).

  • The keys

  • The Provider Registration transaction hash of the masternode.

  • IP адрес и порт, через который можно получить доступ к мастерноде.


DIP3 tab with masternode information#

Настройки мастерноды#

To setup a masternode, navigate to the DIP3 tab and click the Add/Import button.


If combined with Electrum’s multisig features the masternode collateral can be stored in a multisig wallet for increased security flexibility. See this page for the Dash Electrum documentation demonstrating how to configure a masternode using a multisig collateral.

Always exercise caution when using multisig accounts and verify that each mnemonic is backed up appropriately.


Add or import masternode#

Electrum supports creating/registering new masternodes as well as importing and registering legacy masternodes via a masternode.conf file. At this point very few legacy masternodes are present, so only the Create and register DIP3 Masternode option will be covered in detail.

There are two supported ownership types: owner-only and owner/operator. The primary difference during setup is whether or not the operator BLS private key is stored in Electrum. The following steps show the creation of a self-hosted masternode so both ownership type checkboxes are selected. Click Next to continue.


Select operation type and ownership properties#

To start a masternode, you must have a 1000 DASH plus a small amount for fees available in your wallet. Leave Create collateral as ProRegTx output checked and click Next.


Select collateral output for masternode#

Certain information about your masternode is required. The IP address and port that your masternode uses must be supplied. Click Next after entering them (the port will be set to the default mainnet port of 9999 automatically).


Enter masternode IP address and port#

Each masternode requires three addresses: owner, voting, and payout. Electrum will automatically select addresses from your wallet. Click Next to continue.


Select masternode owner, voting, and payout addresses#

A masternode requires a BLS «operator» key as described in DIP3. If you manage your own masternode, both Dash Electrum and your masternode must know the operator private key. Your masternode will use the private key to sign messages, and the Dash network will know that you authorized it to do so.

Electrum will generate the required BLS private/public key pair and provide you with the line that must be copied to the masternode for proper masternode configuration. Click Next after copying this line to your masternode’s dash.conf file.


BLS key setup#

All parameters are now configured. This screen shows the configuration details and allows you to save the information. Make sure the Make ProRegTx after saving Masternode data box is checked, then click Save. The Send tab will open and be populated with the info necessary to register the masternode.


Examine parameters and save masternode#

Registering your masternode#

Since the ProRegTx information required to register the masternode was filled out by the previous step, just Click Pay… to complete the registration.


To complete registration of any previously setup masternode, go to the DIP3 tab, select the unregistered masternode from the list of Wallet MNs, and click Register.


Send tab with ProRegTx prepared#

Enter your password and click Send to broadcast the registration transaction.


Confirm ProRegTx Transaction#

The transaction hash will be displayed once the transaction has been sent successfully. This ProRegTx hash is used by the network to uniquely identify the masternode. Click OK to close the screen.


Transaction sent screen showing transaction hash#

Prior to the ProRegTx being confirmed the new masternode will appear as unregistered on the DIP3 tab.


DIP3 tab showing unregistered masternode#

Once the ProRegTx has been confirmed, the new masternode will appear as registered on the DIP3 tab.


DIP3 tab showing registered masternode#

Updating masternode registration#

To update masternode registration information, navigate to the DIP3 tab and click the Update Registrar button.


Update Registrar#

The masternode owner may update the voting and payout addresses at any time. Addresses from the current wallet can be selected from the drop down menu or addresses from a different wallet (e.g. a hardware wallet) can be pasted into either field. Click Next to continue.


Update masternode voting and/or payout address#

The masternode owner may also update the operator BLS key at any time. Click Next to continue.


Any time the the operator private key is changed it must be copied into the dash.conf file on the masternode. Electrum will provide a notification with instructions when this is required.


Update operator BLS key#

All parameters are now configured. This screen shows the updated configuration details. Click Prepare ProUpRegTx to continue. The Send tab will open and be populated with the info necessary to update the masternode.


Examine parameters and update masternode#

The ProUpRegTx information required to update the masternode registration was filled out by the previous step so just Click Pay… to complete the update.


Send tab with ProUpRegTx prepared#

Enter your password and click Send to broadcast the update transaction.


Confirm ProUpRegTx Transaction#

The transaction hash will be displayed once the transaction has been sent successfully. Click OK to close the screen.


Transaction sent screen showing transaction hash#

Updating masternode service parameters#

The masternode service may need to be updated to:

  1. Change the IP address, port, or operator payout address of a masternode

  2. Revive a masternode that was Proof of Service (PoSe) banned

To update masternode service information, navigate to the DIP3 tab and click the Update Service button.


Update Service#

The masternode operator may update the IP address and port at any time. Update the IP address and click Next to continue.


Update masternode IP address#

All parameters are now configured. This screen shows the updated configuration details. Click Prepare ProUpServTx to continue. The Send tab will open and be populated with the info necessary to update the masternode.


Examine parameters and update masternode service#

The ProUpServTx information required to update the masternode was filled out by the previous step so just Click Pay… to complete the update.


Send tab with ProUpServTx prepared#

Enter your password and click Send to broadcast the update transaction.


Confirm ProUpServTx Transaction#

The transaction hash will be displayed once the transaction has been sent successfully. Click OK to close the screen.


Transaction sent screen showing transaction hash#

Кошельки с мультиподписью#

В этой инструкции рассказывается, как создать кошелёк с мультиподписью 2 из 2. Такой кошелёк состоит из двух отдельных кошельков (обычно на разных машинах и контролируемых разными людьми), которые должны работать в связке, чтобы дать доступ к средствам. У этих кошельков одинаковый набор адресов.

  • Обычно такой кошелёк используется, когда вы хотите контролировать средства совместно с кем-то: возможно, вы управляете компанией вместе с вашим другом и уверены, что средства должны тратиться только в том случае, если вы оба с этим согласны.

  • Ещё один вариант использования - безопасность. Один из кошельков может располагаться на вашем главном компьютере, а другой на машине, находящейся оффлайн. Таким образом вы сильно затрудните жизнь хакеру или вредоносному ПО, которые попытаются украсть ваши монеты.

Создание пары кошельков 2-из-2х#

Каждый из участников должен сделать следующее: в меню выбрать Файл > Новый, а затем Кошелёк с мультподписью. На следующем экране надо выбрать 2 из 2.


Выбор x из y подписей для кошелька с мультиподписью#

После создания и подтверждения мнемонической фразы, вы увидите xpub адрес для этого кошелька.


xpub ключ первого кошелька#

После создания мнемонической фразы (не забудьте сохранить её в безопасном месте!) нужно будет ввести публичный мастер ключ другого кошелька. Соответственно, при создании второго кошелька, туда нужно будет ввести публичный мастер ключ первого кошелька.


Ввод xpub из второго кошелька в первый кошелёк#

Всё это нужно будет делать параллельно для двух кошельков. Обратите внимание, что на этом шаге вы можете нажать Отмена и вернуться к этому файлу позже.


Проверьте, генерируют ли кошельки один и тот же набор Адресов. Теперь вы можете отправлять средства на эти Адреса (обратите внимание, что все они начинаются с «7») с любого кошелька, который работает с P2SH адресами.


Чтобы потратить моменты из 2-из-2 кошелька, оба подписывающих лица должны вместе подписать транзакцию. Для этого, создайте транзакцию в одном из этих кошельков (заполнив форму во вкладке Отправить). После подписания появится окно с деталями транзакции.


Частично подписанная 2-из-2 транзакция в Dash Electrum#

Теперь эта транзакция отправляется во второй кошелёк. И тут возможны несколько вариантов:

  • Вы можете поместить файл на USB-флешку

    Вы можете сохранить частично подписанную транзакцию в файл (через кнопку Сохранить), перенести его на машину, где находится второй кошелёк (например, с помощью USB-флешки), и загрузить его туда (Инструменты > Загрузить транзакцию > Из файла)

  • Можно использовать QR код

    Также есть кнопка, показывающая картинку с QR кодом. Если на неё нажать, отобразится QR код, содержащий транзакцию. Его можно отсканировать во втором кошельке (Инструменты > Загрузить транзакцию > Из QR кода)

После того, как вы перенесли транзакцию любым из вышеописанных методов, можете добавить к ней вторую подпись (кнопка Подписать). Затем она будет отправлена в сеть.


Полностью подписанная транзакция с мультиподписью 2-из-2х в Dash Electrum#

Перемещение средств из бумажного кошелька#

You may have received a paper wallet as a gift from another Dash user, or previously stored one in a safe deposit box. Funds are swept from a paper wallet into a live wallet by importing its private key, which is a long sequence of characters starting with the number «7» or the capital letter «X». The example below displays a private key (WIF format).


Публичный адрес и связанный с ним приватный ключ, созданный с помощью Генератора бумажных кошельков Dash#

Средства из бумажных кошельков можно перенести в кошелёк Dash Electrum, создав с помощью приватного ключа транзакцию и отправив её на новый адрес в вашем кошельке. Это необходимо, поскольку нельзя добавить новые публичные или приватные ключи к уже существующей определённой серии адресов, полученных из мнемонической фразы.

Перейдите в меню Кошелёк > Приватные ключи > Перевести. Откроется диалог Сканировать приватные ключи, куда вы можете ввести ваш приватный ключ (ключи). В нижнем поле появится неиспользованный адрес, связанный с вашим кошельком Dash Electrum. Его можно изменить, нажав на кнопку Адрес. После того, как вы ввели приватный ключ, нажмите Сканировать.


Ввод приватного ключа#

Затем Dash Electrum подготовит транзакцию, используя введённый приватный ключ, чтобы получить публичный адрес для ввода транзакции, а адрес из вашего кошелька для вывода, и подпишет сообщение. Нажмите Транслировать, чтобы отправить транзакцию в блокчейн. После этого сумма появится в вашем кошельке под определённым адресом. А на том адресе, с которого вы взяли средства, сумма обнулится.


Трансляция транзакции с бумажного кошелька#

Холодное хранение#

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

Создание оффлайн кошелька#

Создайте кошёлек обычным способом, через меню (Файл > Новый). После создания кошелька, откройте Кошелёк > Главные публичные ключи.


Главный публичный ключ нового оффлайн кошелька#

Главный публичный ключ вашего кошелька - это строка, которая отображается во всплывающем окне. Скопируйте этот ключ на вашу онлайн машину любым удобным способом.

Создание кошелька с ограниченным функционалом#

Откройте на вашей онлайн машине Dash Electrum и выберите Файл > Новый / Восстановить. Введите имя кошелька и выберите Использовать публичные или приватные ключи. Введите ваш главный публичный ключ в поле. Чтобы завершить создание кошелька, нажмите Далее. Когда всё будет готово, вы увидите всплывающее окно с информацией, что вы открываете кошелёк с ограниченным функционалом.


Главный публичный ключ нового оффлайн кошелька#

Затем должна появиться история транзакций вашего холодного кошелька.

Создание неподписанной транзакции#

В онлайн-кошельке, работающем в ограниченном режиме, откройте вкладку Отправить, введите данные о транзакции и нажмите Отправить. Появится окно с уведомлением, что к сумме транзакции будет добавлена комиссия. Далее. В появившемся окне нажмите Сохранить и сохраните транзакцию в удобное место на вашем компьютере. Закройте окно и перенесите файл транзакции на оффлайн-машину (например, с помощью USB-флешки).

Как подписать транзакцию#

В меню оффлайн кошелька выберите Инструменты > Загрузить транзакцию > Из файла и выберите файл транзакции, который создали на предыдущем шаге. Нажмите Подписать. После подписания транзакции, в указанном поле появится ID транзакции. Нажмите Сохранить, сохраните файл в удобное место на вашем компьютере и перенесите его обратно на онлайн машину.

Трансляция вашей транзакции#

На онлайн машине, в меню кошелька выберите Инструменты > Загрузить транзакцию > Из файла. Выберите файл с подписанной транзакцией. В открывшемся окне нажмите Транслировать. Транзакция будет транслирована в сеть Dash.

Командная строка#

У Dash Electrum есть командная строка, доступная при работе с Linux или macOS. В этом разделе мы расскажем о нескольких базовых принципах работы с ней.

Использование встроенного помощника#

Чтобы посмотреть список команда Dash Electrum, введите:

electrum help

Чтобы посмотреть инструкции к команде, введите:

electrum help <command>

Волшебные слова#

Аргументы, которые передаются командам, могут содержать следующие волшебные слова: ! ? : -.

Восклицательный знак ! - это сокращение, означающее «максимально доступное количество». Обратите внимание, что комиссия за транзакцию будет рассчитана и вычтена из этой суммы. Например:

electrum payto Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq !

Вопросительный знак ? означает, что вы хотите запросить какой-либо параметр. Например:

electrum signmessage Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq ?

Если вы хотите спрятать запрошенный параметр (чтобы он не отображался в вашем терминале), используйте двоеточие :. Обратите внимание, что здесь у вас дважды запросят подтверждение - сначала через приватный ключ, затем через пароль от кошелька:

electrum importprivkey :

Параметр, заменённый на дефис - будет считан из стандартного ввода (in a pipe):

cat LICENCE | electrum signmessage Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq -


Также, в большинстве команд вместо адресов биткойн можно пользоваться DNS псевдонимам:

electrum payto ecdsa.net !

Форматирование вывода с помощью jq#

Команды выводятся либо в простых строках, либо в структурированных данных json. Программа jq - очень полезная утилита. Установите её с помощью:

sudo apt-get install jq

Она используется в следующем примере.

Подписание и верификация сообщения#

Мы можем использовать переменную, чтобы хранить подпись и верифицировать её:

sig=$(cat LICENCE| electrum signmessage Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq -)

А также:

cat LICENCE | electrum verifymessage Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq $sig -

Отображение остатка#

Команда listunspent выводит список dict объектов с различными полями. Допустим, мы хотим из каждой записи извлечь поле value, т. е. «количество». Этого можно добиться с помощью следующей jq команды:

electrum listunspent | jq 'map(.value)'

Как выбрать из истории только входящие транзакции#

У входящих транзакций в поле ‘value’ позитивное значение:

electrum history | jq '.[] | select(.value>0)'

Сортировка транзакций по дате#

Эти команды выбирают те транзакции, которые были проведены после выбранной даты:

after=$(date -d '07/01/2015' +"%s")
electrum history | jq --arg after $after '.[] | select(.timestamp>($after|tonumber))'

Таким же образом мы можем экспортировать транзакции за нужный период времени:

before=$(date -d '08/01/2015' +"%s")
after=$(date -d '07/01/2015' +"%s")
electrum history | jq --arg before $before --arg after $after '.[] | select(.timestamp&gt;($after|tonumber) and .timestamp&lt;($before|tonumber))'

Зашифровка и расшифровка сообщений#

Для этого нам понадобится публичный ключ адреса кошелька:

pk=$(electrum getpubkeys Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq| jq -r '.[0]')


cat | electrum encrypt $pk -


electrum decrypt $pk ?

Обратите внимание: эта команда потребует ввести сначала зашифрованное сообщение, а затем пароль от кошелька.

Экспорт приватных ключей и перемещение монет#

С помощью следующей команды можно экспортировать приватные ключи всех адресов кошелька, на которых есть какое-то количество Dash:

electrum listaddresses --funded | electrum getprivatekeys -

Эта команда выведет список приватных ключей. В большинстве случаев, вам просто понадобится список. Это можно сделать с помощью jq фильтра:

electrum listaddresses --funded | electrum getprivatekeys - | jq 'map(.[0])'

И наконец, нам нужно использовать список приватных ключей, чтобы ввести команду на перевод средств:

electrum listaddresses --funded | electrum getprivatekeys - | jq 'map(.[0])' | electrum sweep - [destination address]

Использование холодного хранения с командной строкой#

В этом разделе рассказывается, как подписать транзакцию в оффлайн кошельке Dash Electrum с помощью командной строки.

Создание неподписанной транзакции#

Создайте неподписанную транзакцию с помощью онлайн-кошелька (с ограниченным функционалом):

electrum payto Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq 0.1 --unsigned > unsigned.txn

Неподписанная транзакция хранится в файле ‘unsigned.txn’. Обратите внимание, что вам не понадобится опция –unsigned, если вы пользуетесь кошельком с ограниченным функционалом.

Её можно посмотреть с помощью:

cat unsigned.txn | electrum deserialize -

Подписание транзакции#

Сериализация формата Dash Electrum содержит главный публичный ключ, а также ключ с наследованием, который используется офлайн кошельком для подписания транзакции. Таким образом, нам нужно только передать сериализованную транзакцию в офлайн кошелёк.

cat unsigned.txn | electrum signtransaction - > signed.txn

После команды потребуется ввести пароль, а также сохранить подписанную транзакцию в ‘signed.txn’.

Трансляция транзакции#

Отправьте вашу транзакцию в сеть Dash:

cat signed.txn | electrum broadcast -

Если всё прошло успешно, высветится ID транзакции.

Как принимать Dash через вебсайт с помощью Dash Electrum#

В этом уроке мы расскажем вам, как принимать Dash на вебсайте с подписанными SSL платёжными запросами. Урок обновлён для версии Dash Electrum 2.6.


  • Веб-сервер, который поддерживает статичный HTML

  • Сертификат SSL (подписанный CA)

  • Electrum версии 2.6 или выше

Создайте кошелёк#

Создайте кошелёк на вашем веб-сервере

electrum create

Если вы хотите, чтобы приватные ключи не хранились на сервере, можно использовать кошелёк с ограниченным функционалом (восстановленный через xpub). После создания кошелька, запустить Dash Electrum в фоновом режиме:

electrum daemon start

Добавьте в настройки SSL сертификат#

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

your private key
-----BEGIN END KEY-----

С помощью setconfig задайте путь к файлу с приватным ключом:

electrum setconfig ssl_privkey /path/to/ssl.key

Создайте ещё один файл, в котором будет ваш сертификат и список сертификатов, с которыми он связан, в том числе корневой CA. Ваш сертификат должен находиться в начале списка, а корневой CA - в конце:

your cert
intermediate cert
root cert

Задайте путь ssl_chain с помощью setconfig:

electrum setconfig ssl_chain /path/to/ssl.chain

Настройте директорию под запросы#

Эта директория должна поддерживаться вашим вебсайтом (например, Apache):

electrum setconfig requests_dir /var/www/r/

По умолчанию, Dash Electrum будет отображать локальные URL, в том числе ‘file://‘. Чтобы отображались глобальные URL, нам нужно настроить ещё один параметр, url_rewrite. Например:

electrum setconfig url_rewrite "['file:///var/www/','https://electrum.org/']"

Создайте подписанный запрос на оплату#

electrum addrequest 3.14 -m "this is a test"
   "URI": "dash:Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq?amount=3.14&r=https://electrum.org/r/7c2888541a",
   "address": "Xtdw4fezqbSpC341vcr8u9HboiJMFa9gBq",
   "amount": 314000000,
   "amount (DASH)": "3.14",
   "exp": 3600,
   "id": "7c2888541a",
   "index_url": "https://electrum.org/r/index.html?id=7c2888541a",
   "memo": "this is a test",
   "request_url": "https://electrum.org/r/7c2888541a",
   "status": "Pending",
   "time": 1450175741

Эта команда выводит json объект с двумя URL:

  • request_url это URL подписанного реквеста BIP70.

  • index_url это URL странички, которая отображает реквест.

Обратите внимание, что request_url и index_url используют доменное имя, которые мы установили в url_rewrite. Список с текущими запросами можно посмотреть с помощью команды listrequests.

Откройте страничку с запросом оплаты в вашем браузере.#

Давайте откроем index_url в браузере.


Страница запроса оплаты в веб-браузере#

На этой странице отображается запрос оплаты. Вы можете открыть dash: URI с помощью кошелька или просканировать QR код. Линия внизу показывает время, оставшееся до истечения срока действия запроса.


Кошелёк в ожидании платежа#

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

Добавление поддержки веб-сокетов#

Скачать SimpleWebSocketServer можно здесь:

git clone https://github.com/ecdsa/simple-websocket-server.git

Установите websocket_server и websocket_port в ваши настройки:

electrum setconfig websocket_server <FQDN of your server>
electrum setconfig websocket_port 9999

И перезапустите работающую службу:

electrum daemon stop
electrum daemon start

Теперь страничка полностью интерактивна: она будет обновляться после получения платежа. Пожалуйста, обратите внимание, что некоторые порты могут блокироваться фаерволами клиентов, поэтому было бы более безопасно, например, изменить прокси веб-сокетов, которые используют стандартный 443 порт на дополнительный под-домен.

Интерфейс JSONRPC#

С помощью JSONRPC можно отправлять команды службе Dash Electrum. Это может оказаться полезно, если вы хотите использовать Dash Electrum с PHP скриптом.

Обратите внимание, что по умолчанию служба использует случайный номер порта. Чтобы использовать постоянный номер порта, вам нужно настроить переменные в rpcport (а также перезапустить службу):

electrum setconfig rpcport 7777

С этими настройками, мы можем выполнять запросы, используя curl или PHP. Например:

curl --data-binary '{"id":"curltext","method":"getbalance","params":[]}'

Запрос с заданными параметрами:

curl --data-binary '{"id":"curltext","method":"listaddresses","params":{"funded":true}}'

Создание платёжного запроса:

curl --data-binary '{"id":"curltext","method":"addrequest","params":{"amount":"3.14","memo":"test"}}'