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

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

Мастерноды в Dash Electrum

Dash Electrum поддерживает создание мастернод через интерфейс, который называется Диспетчер мастернод. Эти функции доступны с версии протокола 70201 и выше.

Диспетчер мастернод

В Диспетчер мастернод можно попасть через меню Кошелёк > Мастерноды или нажав Ctrl+M. Здесь отображается статус вашей мастерноды (или мастернод). Кошелёк без мастерноды начнёт с мастерноды с настройками по умолчанию, для который вы можете заполнить всю необходимую информацию.

В диспетчере отображаются следующие данные о каждой вашей мастерноде:

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

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

Для мастерноды требуется ключ «делегирования», который известен и Dash Electrum, и вашей мастерноде. С помощью этого ключа ваша мастернода будет подписывать сообщения, а сеть Dash будет знать, что вы разрешили ей это сделать. Ключом делегирования может быть как один из ключей вашего Dash Electrum, так и импортированный ключ. В любом случае, и ваша мастернода, и Dash Electrum должны знать этот приватный ключ.

Чтобы использовать один из ключей Dash Electrum в качестве ключа делегирования, внесите этот приватный ключ в поле Приватный ключ мастерноды во вкладке Обзор мастерноды.

IP адрес и версия протокола

Необходимо предоставить определённую информацию о вашей мастерноде - IP адрес и порт. Также нужно знать версию протокола, которую поддерживает ваша мастернода. Если вы выполните импорт файла «masternode.conf», эта информация заполнится автоматически.

../../_images/mn-view.png

Внесение информации об IP и версии протокола

Залог

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

После сканирования вы увидите список доступных залоговых платежей в 1000 Dash. Если вы выберете один из них, то поля данных выбранной мастерноды заполнятся автоматически, однако эти изменения сохранятся только после того, как вы нажмёте кнопку Сохранить в правом нижнем углу вкладки.

../../_images/mn-collateral.png

Внесение информации об IP и версии протокола

Активация вашей мастерноды

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

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

../../_images/mn-enabling.png

Внесение информации об IP и версии протокола

Импорт файла masternode.conf

Импортировать файл masternode.conf можно с помощью вкладки Masternode.conf в Диспетчере мастернод. Это рекомендуемый способ настройки мастерноды, поскольку так вы сможете одинаково настроить мастерноды для Dash Core и для Dash Electrum. Импорт файла masternode.conf автоматически настроит одну или несколько мастернод в Диспетчере мастернод.

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

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

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

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

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

../../_images/faq-multisig-create.png

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

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

../../_images/faq-multisig-xpub.png

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

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

../../_images/faq-multisig-share-xpub.png

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

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

Получение

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

Отправка

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

../../_images/faq-multisig-partially-signed.png

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

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

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

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

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

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

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

../../_images/faq-multisig-fully-signed.png

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

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

Возможно, вы получили бумажный кошелёк в подарок от другого пользователя Dash, или ранее хранили его в безопасном месте. Средства можно переместить из бумажного кошелька в электронный кошелёк через импорт его приватного ключа <http://bitzuma.com/posts /six-things-bitcoin-users-should- know-about-private-keys/>`_, который является длинной последовательностью символов и начинается с «7» или заглавной буквы «X». Ниже показан пример приватного ключа (в формате WIF).

../../_images/sweep-secret.png

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

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

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

../../_images/sweep-privkey.png

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

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

../../_images/sweep-broadcast.png

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

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

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

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

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

../../_images/faq-cold-xpub.png

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

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

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

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

../../_images/faq-cold-watching.png

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

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

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

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

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

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

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

electrum setconfig ssl_privkey /path/to/ssl.key

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

-----BEGIN CERTIFICATE-----
your cert
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
intermediate cert
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
root cert
-----END CERTIFICATE-----

Задайте путь 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 в браузере.

../../_images/payrequest.png

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

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

../../_images/payreq_window.png

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

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

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

Скачать 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":[]}' http://127.0.0.1:7777

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

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

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

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