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

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

Функция PrivateSend#

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

Обработка и отправка#

Чтобы запустить обработку PrivateSend в Dash Electrum, выберите Кошелек > PrivateSend или щелкните на значке PS в правом нижнем углу главного окна. Откроется следующее окно:

../../../../_images/ps-view.png

Диалоговое окно PrivateSend в Dash Electrum#

Введите Сумму Dash для сохранения приватности и количество Раундов PrivateSend для использования. Затем нажмите кнопку Enable PrivateSend, а затем Start Mixing. Процесс начнется, и на панели Прогресс смешивания будет показан ход его завершения. Дополнительная информация о процессе доступна на вкладках Info и Log.

После завершения обработки просто установите флажок PrivateSend на вкладке Send перед отправкой транзакции. Dash Electrum будет использовать для транзакции только Dash, обработанный в соответствии с вашими условиями.

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

С Dash Electrum можно использовать аппаратные кошельки. В Linux может потребоваться предварительная установка зависимостей и правил udev следующим образом:

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

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

Мастерноды#

Dash Electrum поддерживает создание masternode через вкладку DIP3.

DIP3#

Вкладка DIP3 может быть включена через меню View > Show DIP3. На этой вкладке отображается статус вашей мастерноды (нод), а также можно просмотреть список всех зарегистрированных мастернод в сети.

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

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

  • Статус мастерноды (например, была ли она активирована).

  • Ключи

  • Хэш транзакции регистрации провайдера для мастерноды.

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

../../../../_images/mn-dip3-registered-owner-operator.png

Вкладка DIP3 с информацией о мастерноде#

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

Для настройки мастерноды перейдите на вкладку DIP3 и нажмите кнопку Add/Import.

Примечание

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

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

../../../../_images/mn-dip3-add-or-import.png

Добавить или импортировать мастерноду#

Electrum поддерживает создание/регистрацию новых мастернод, а также импорт и регистрацию старых мастернод с помощью файла masternode.conf. На данный момент существует очень мало старых мастернод, поэтому подробно будет рассмотрена только опция Создание и регистрация мастернод DIP3.

Поддерживаются два типа владения: только владелец и владелец/оператор. Основное различие при настройке заключается в том, хранится ли закрытый ключ BLS оператора в Electrum. В следующих шагах показано создание мастерноды, размещаемого на собственном хостинге, для которого установлены оба флажка типа владения. Для продолжения нажмите Next.

../../../../_images/mn-create-and-register-owner-operator.png

Выберите тип операции и свойства владения#

Для запуска мастерноды необходимо иметь на кошельке 1000 DASH плюс небольшую сумму для оплаты. Оставьте галочку Создать обеспечение как вывод ProRegTx и нажмите Следующее.

../../../../_images/mn-create-select-collateral.png

Выберите выход обеспечения для мастерноды#

Необходимо предоставить определенную информацию о вашем мастерноде. Необходимо указать IP-адрес и порт, используемые вашим мастернодом. После их ввода нажмите кнопку Next (порт будет автоматически установлен на стандартный порт основной сети 9999).

../../../../_images/mn-create-service-params.png

Введите IP-адрес и порт мастерноды#

Для каждой мастерноды требуется три адреса: владельца, голосования и выплат. Electrum автоматически выберет адреса из вашего кошелька. Нажмите Next, чтобы продолжить.

../../../../_images/mn-create-select-addresses.png

Выбор владельца мастерноды, также как и адрес для голосования и выплат#

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

Electrum сгенерирует необходимую пару ключей BLS и предоставит строку, которую необходимо скопировать в мастерноду для правильной настройки. Нажмите Next после копирования этой строки в файл dash.conf вашего мастернода.

../../../../_images/mn-create-bls-key-setup.png

Настройка BLS ключей#

Теперь все параметры сконфигурированы. На этом экране отображаются подробности конфигурации и появляется возможность сохранить информацию. Убедитесь, что флажок Make ProRegTx after saving masterнод data установлен, и нажмите кнопку Save. Откроется вкладка Отправить, на которой будет размещена информация, необходимая для регистрации мастернода.

../../../../_images/mn-create-review-and-save.png

Проверить параметры и сохранить мастерноду#

Регистрация вашей мастерноды#

Поскольку информация ProRegTx, необходима для регистрации мастерноды, была заполнена на предыдущем шаге, просто нажмите Pay… для завершения регистрации.

Примечание

Чтобы завершить регистрацию ранее настроенной мастерноды, перейдите на вкладку DIP3, выберите незарегистрированную мастерноду из списка MN кошелька и нажмите кнопку Регистрация.

../../../../_images/mn-proregtx.png

Отправить вкладку с подготовленным ProRegTx#

Введите пароль и нажмите кнопку Отправить для трансляции операции регистрации.

../../../../_images/mn-proregtx-confirm-tx.png

Подтверждение транзакции ProRegTx#

После успешной отправки транзакции будет отображен ее хэш. Этот хэш ProRegTx используется сетью для уникальной идентификации мастерноды. Нажмите OK, чтобы закрыть экран.

../../../../_images/mn-proregtx-sent-confirmation.png

Экран отправки транзакции с отображением хэша транзакции#

До подтверждения ProRegTx новая мастернода будет отображаться как незарегистрированная на вкладке DIP3.

../../../../_images/mn-dip3-unregistered.png

На вкладке DIP3 отображается незарегистрированная мастернода#

После подтверждения ProRegTx новая мастернода будет отображаться как зарегистрированная на вкладке DIP3.

../../../../_images/mn-dip3-registered.png

На вкладке DIP3 отображается зарегистрированная мастернода#

Информация по регистрации мастерноды#

Для обновления регистрационной информации о мастерноде перейдите на вкладку DIP3 и нажмите кнопку Update Registrar.

../../../../_images/mn-update-registrar.png

Обновить Registrar#

Владелец мастерноды может в любое время обновить адреса голосования и выплат. Адреса из текущего кошелька можно выбрать из выпадающего меню или вставить в любое поле адреса из другого кошелька (например, аппаратного). Для продолжения работы нажмите кнопку Next.

../../../../_images/mn-update-registrar-addresses.png

Обновление адреса голосования и/или выплат мастерноды#

Владелец мастерноды также может в любое время обновить BLS-ключ оператора. Для продолжения нажмите кнопку Next.

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

При каждом изменении приватного ключа оператора он должен быть скопирован в файл dash.conf на мастерноде. Electrum предоставит уведомление с инструкциями, когда это потребуется.

../../../../_images/mn-update-registrar-operator-key-owner-operator.png

Обновление BLS ключа оператора#

Теперь все параметры сконфигурированы. На этом экране показаны обновленные данные конфигурации. Для продолжения нажмите Подготовить ProUpRegTx. Откроется вкладка Отправить, на которой будет размещена информация, необходимая для обновления мастерноды.

../../../../_images/mn-update-registrar-review.png

Проверить параметры и обновить мастерноду#

Информация ProUpRegTx, необходимая для обновления данных регистрации мастерноды, была заполнена на предыдущем шаге, поэтому просто нажмите Pay… для завершения обновления.

../../../../_images/mn-proupregtx.png

Вкладка отправки с с подготовленным ProUpRegTx#

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

../../../../_images/mn-proupregtx-confirm-tx.png

Подтверждение транзакции ProUpRegTx#

После успешной отправки транзакции на экране появится хэш транзакции. Нажмите OK, чтобы закрыть экран.

../../../../_images/mn-proupregtx-sent-confirmation.png

Экран отправки транзакции с отображением хэша транзакции#

Обновление сервисных параметров мастерноды#

Возможно, потребуется обновить сервис мастерноды:

  1. Изменение IP-адреса, порта или адреса выплат оператора мастерноды

  2. Восстановить мастерноду, которая была заблокирована по Proof of Service (PoSe)

Для обновления служебной информации мастерноды перейдите на вкладку DIP3 и нажмите кнопку Update Service.

../../../../_images/mn-dip3-update-service.png

Обновление сервиса#

Оператор мастерноды может в любое время обновить IP-адрес и порт. Обновите IP-адрес и нажмите Next для продолжения.

../../../../_images/mn-update-service.png

Обновление IP-адреса мастерноды#

Теперь все параметры сконфигурированы. На этом экране отображаются обновленные сведения о конфигурации. Для продолжения нажмите Подготовить ProUpServTx. Откроется вкладка Send, на которой будет размещена информация, необходимая для обновления мастерноды.

../../../../_images/mn-update-service-review.png

Изучение параметров и обновление службы мастерноды#

Информация о ProUpServTx, необходимая для обновления мастерноды, была заполнена на предыдущем шаге, поэтому просто нажмите Pay… для завершения обновления.

../../../../_images/mn-proupservtx.png

Вкладка отправки с с подготовленным ProUpServTx#

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

../../../../_images/mn-proupservtx-confirm-tx.png

Подтверждение транзакции ProUpServTx#

После успешной отправки транзакции на экране появится хэш транзакции. Нажмите OK, чтобы закрыть экран.

../../../../_images/mn-proupservtx-sent-confirmation.png

Экран отправки транзакции с отображением хэша транзакции#

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

В этой инструкции рассказывается, как создать кошелёк с мультиподписью 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, или ранее хранили его в безопасном месте. Средства можно переместить из бумажного кошелька в электронный кошелёк через импорт его приватного ключа <https://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