Обзор по интеграции

Эта документация также доступна в формате PDF.

Dash Core is a “fork” of Bitcoin Core and shares many common functionalities. Key differences relate to existing JSON-RPC commands which have been customized to support unique functionalities such as InstantSend.

  1. Общая информация: Dash - сеть, работающая на основе “Доказательства Работы”, похожая на сеть Биткойна.
    1. Время нахождения блока: ~2,6 минуты
    2. Github: https://github.com/dashpay/dash
    3. Последний релиз: https://github.com/dashpay/dash/releases
  2. Интерфейс JSON-RPC: Большинство свойственных Биткойну JSON-RPC команд не поменялись, благодаря чему интеграция в существующие системы остаётся относительно простой. Обратите внимание, что приведённые ниже команды были изменены для возможности поддержки функции InstantSend:
  3. Алгоритм хеширования блока: Dash использует алгоритм X11, вместо SHA256, который используется в Биткойне. Однако стоит отметить, что это относится только к хешированию Блока. Все прочие внутренние функции работают с хешами SHA256 (транзакции, корни merkle, и т.д.), благодаря чему большинство существующих библиотек совместимы с экосистемой Dash.
  4. Специальные транзакции: Dash Core v0.13.x вводит концепцию “Специальных Транзакций”. Для получения дополнительной информации смотрите Руководство по интеграции типов транзакций.

Специальные транзакции

Эта документация также доступна в формате PDF.

Dash 0.13.0 and higher implement DIP002 Special Transactions, which form a basis for new transaction types that provide on-chain metadata to assist various consensus mechanisms. The following special transaction types exist:

Релиз Версия Тип Размер нагрузки Нагрузка Нагрузка JSON Назначение транзакции
v0.13.0 3 0 n/a n/a n/a Стандартная транзакция
v0.13.0 3 1 <variable int> <hex> proRegTx Регистрация мастерноды
v0.13.0 3 2 <variable int> <hex> proUpServTx Обновление параметров работы мастерноды
v0.13.0 3 3 <variable int> <hex> proUpRegTx Обновление оператора мастерноды
v0.13.0 3 4 <variable int> <hex> proUpRevTx Аннулирование мастерноды
v0.13.0 3 5 <variable int> <hex> cbTx Мёркл-подтверждение списка мастернод
v0.13.0 3 6 <variable int> <hex> qcTx Формирование кворума

Примечания по интеграции:

  1. DIP002 Специальные тразакции - основной компонент Dash Core v0.13.0, он вводит новые версии транзакций и соответствующую им «Нагрузку» сети
  2. Интегрированные системы должны быть способны к сериализации и десериализации этих новых Типов Транзакций, чтобы шифрование и дешифровка данных Исходных Транзакций происходила успешно.
  3. С точки зрения обратной совместимости, 4-байтная (32-bit) поле версии, включённое в Старые транзакции, было разделено на два поля: версия и тип (каждое состоит из 2 байтов).
  4. Обратитесь к разделу Специальные транзакции руководства разработчика Dash для получения дополнительной информации об этих типах данных, например<variable int>.
  5. InstantSend status and Payload JSON (e.g. proRegTx) is included in the JSON-RPC response, please note that this data is not part of the calculated hash and is provided for convenience.

Чтобы увидеть рабочие примеры каждого типа транзакций, смотрите документацию по интеграции типов транзакций v0.13.0 (PDF) .

InstantSend

This documentation is also available as a PDF.

InstantSend is a feature provided by the Dash network that allows for zero-confirmation transactions to be safely accepted and re-spent. The network attempts to lock the inputs of every valid transaction when it is broadcast to the network. Every secured transaction is included in a following block in accordance with standard blockchain principles.

InstantSend is enabled by the Masternode Network which comprises approximately 5,000 masternode servers. These nodes are differentiated from standard nodes by having proven ownership of 1,000 Dash, making the network highly resistant to Sybil attacks. Masternodes form Long-Living Masternode Quorums (LLMQs), which are responsible for providing near instant certainty to the transaction participants that the transaction inputs cannot be respent, and that the transaction will be included in a following block instead of a conflicting transaction.

This concept works as an extension to Nakamoto Consensus. InstantSend enables transacted funds to be immediately and securely respent by the recipient, even before the transaction is included in a block.

Получение транзакций InstantSend

Вводится два требования для получения транзакций InstantSend:

  1. Возможность определить «статус InstantSend» в заданной транзакции.
  2. Возможность настройки «статуса подтверждения» независимо от подтверждения блока.

InstantSend Status обычно определяется через прямое соединение с демоном dash, уведомление ZMQ, или с помощью сценария уведомления внешнего кошелька.

Прямое соединение: Статус InstantSend может быть идентифицирован через прямое соединение с демоном Dash с использованием протокола JSON-RPC. Атрибут «instantlock» ответа JSON отражает состояние транзакции и включён в следующие команды:

ZMQ Notification: Whenever a transaction enters the mempool and whenever a transaction is locked in the mempool, ZMQ notifications can be broadcast by the node. A list of possible ZMQ notifications can be found here.

The following notifications are relevant for recognizing transactions and their corresponding instantlocks:

  • zmqpubhashtx
  • zmqpubhashtxlock
  • zmqpubrawtx
  • zmqpubrawtxlock

Уведомление кошелька: Dash Core Daemon можно настроить для выполнения внешнего скрипта всякий раз, когда выполняется транзакция InstantSend, связанная с конкретным кошельком. Настройка производится путём добавления следующей строки в файл dash.conf:

instantsendnotify=/path/to/concurrent/safe/handler %s

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

Распространение транзакций InstantSend

Since Dash v0.14.0 established LLMQs on the Dash network, quorums will now attempt to lock every valid transaction by default without any additional fee or action by the sending wallet or user. A transaction is eligible for InstantSend when each of its inputs is considered confirmed. This is the case when at least one of the following circumstances is true:

  • the previous transaction referred to by the input is confirmed with 6 blocks
  • the previous transaction is confirmed through an older InstantSend lock
  • the block containing the previous transaction is ChainLocked

When checking the previous transaction for an InstantSend lock, it is important to also do this on mempool (non-mined) transactions. This allows chained InstantSend locking.

Дополнительные ресурсы

Следующие ресурсы предоставляют дополнительную информацию о функции InstantSend и предназначены для обеспечения более полного понимания базовых технологий.

Сервисы API

Эта документация также доступна в формате PDF.

Существует несколько API, которые облегчают быструю и простую интеграцию с сетью Dash для таких сервисов как:

  • Распространение транзакций
  • Обменные курсы
  • Конвертация валюты
  • Генерация счетов

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

  • Формирование и распространение транзакций в сети.
  • Генерация адресов с использованием HD кошельков.
  • Обработка платежей с использованием WebHooks.

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

Insight

../_images/insight.png

https://github.com/dashevo/insight-api

Dash Insight REST API c открытым кодом - это удобный, мощный и простой способ считывать данные из сети Dash и разрабатывать с его помощью свои собственные сервисы. Практическое руководство по Insight API и Insight UI обозревателю блоков доступно тут.

  • Функции: передача транзакций в сеть, уведомления WebSocket.
  • Модель ценообразования: бесплатный / открытый источник
  • Документация: https://github.com/dashevo/insight-api

BlockCypher

../_images/blockcypher.png

https://www.blockcypher.com

BlockCypher представляет собой простой, в основном RESTful JSON API для взаимодействия с блокчейнами, доступ к которому осуществляется через HTTP или HTTPS из домена api.blockcypher.com.

  • Функции: обработка транзакций, кошелёк HD / генерация адресов, обратные вызовы WebSocket и WebHook, а также перенаправление платежей. BlockCypher не обрабатывает приватные ключи.
  • Модель ценообразования: за API запрос, 5000 запросов -> $85.00 в месяц (https://accounts.blockcypher.com/plans)
  • Документация: https://www.blockcypher.com/dev/dash/

BitGo

../_images/bitgo.png

https://www.bitgo.com

BitGo предоставляет простой и надёжный RESTful API и SDK для интеграции кошельков, поддерживающих цифровую валюту, с вашим приложением. Доступна поддержка Dash InstantSend.

  • Функции: HD-кошельки с мультиподписью, операции с кошельком, уведомления WebSocket и WebHook, кастодиальные решения
  • Модель ценообразования: за API запрос
  • Документация: https://www.bitgo.com/api/v2/

ChainRider

../_images/chainrider.png

https://www.chainrider.io

ChainRider - облачный сервис, предоставляющий набор из нескольких REST API для управления цифровой валютой

  • Функции: блокчейн-запросы, уведомления о событиях, обработка транзакций, обработка платежей и т.п.
  • Модель ценообразования: бесплатно в течение пробного периода, оплата за API вызов
  • Документация: https://www.chainrider.io/docs/dash

GoCoin

../_images/gocoin.png

https://gocoin.com

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

  • Функции: выставление счетов, курсы валют, обратные вызовы WebHook. GoCoin хранит приватные ключи на своём сервере, что позволяет продавцу выводить средства в криптовалюте или конвертировать их в фиатную валюту.
  • Интеграция с: WooCommerce, Magento, Prestashop, VirtueMart, ZenCart, OpenCart, OSCommerce, UberCart, nopCommerce, WHMCS, NATS4, Shopify.
  • Модель ценообразования: комиссия за обработку в размере 1% (https://gocoin.com/fees)
  • Документация: https://gocoin.com/docs

CoinPayments

../_images/coinpayments.png

https://www.coinpayments.net

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

  • Функции: выставление счетов, курсы валют, обратные вызовы WebHook. CoinPayments хранит приватные ключи на своём сервере, что позволяет продавцу извлекать средства в криптовалюте или конвертировать их в фиатную валюту.
  • Интеграции: aMember Pro, Arastta, Blesta, BoxBilling, Drupal, Ecwid, Hikashop, Magento, OpenCart, OSCommerce, PrestaShop, Tomato Cart, WooCommerce, Ubercart, XCart, ZenCart
  • Модель ценообразования: комиссия за обработку в размере 0,5% (https://www.coinpayments.net/help-fees)
  • Документация: https://www.coinpayments.net/apidoc

Ресурсы SDK

Эта документация также доступна в формате PDF.

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

Руководство для разработчиков Dash

../_images/dash-logo.png

https://dash-docs.github.io/en/developer-guide

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

NodeJS/JavaScript: Dashcore

../_images/bitcore.png

https://bitcore.io

Dashcore является форком Bitcore и работает как полная нода Dash - ваши приложения запускаются непосредственно в децентрализованной сети. Для разработки приложений кошелька в Dash были добавлены дополнительные индексы для запроса балансов адресов, истории транзакций и неизрасходованных выходов.

PHP: Bitcoin-PHP

https://github.com/snogcel/bitcoin-php

Bitcoin-PHP - это реализация Bitcoin с поддержкой Dash, которая в основном использует только PHP.

Python: PyCoin

https://github.com/DeltaEngine/pycoin

PyCoin - это реализация ряда вспомогательных утилит, которые могут быть полезны при работе с Bitcoin и Dash. Он тестировался с Python 2.7, 3.6 и 3.7.

Java: DashJ

../_images/bitcoinj.png

https://github.com/HashEngineering/dashj

DashJ - это библиотека для работы с протоколом Dash. В ней реализована поддержка кошелька, с её помощью можно отправлять/получать транзакции (включая InstantSend), не нуждаясь в локальной копии Dash Core, также она имеет много других дополнительных функций. Реализована на Java, но может использоваться с любым совместимым с JVM языком: присутствуют примеры в Python и JavaScript.

Objective-C: Dash-Sync

../_images/dash-logo.png

https://github.com/dashevo/dashsync-iOS

Dash-Sync это блокчейн-фреймворк Dash для iOS на Objective-C. Он реализует большинство релевантных Предложений по улучшению Bitcoin (BIPs) и Предложений по улучшению Dash (DIPs).

.NET: NBitcoin

../_images/dash-logo.png

https://github.com/MetacoSA/NBitcoin

NBitcoin - самая полная Bitcoin-библиотека для платформы .NET, в которую были внесены изменения с целью добавления поддержки Dash. В ней реализованы все наиболее подходящие предложения по улучшению сети Bitcoin (BIPs) и предложения по улучшению сети Dash (DIPs). Она также обеспечивает доступ на нижний уровень к примитивам Dash, поэтому вы можете легко создавать приложения поверх них.

BlockCypher

../_images/blockcypher.png

https://www.blockcypher.com

BlockCypher также предлагает SDK.

GoCoin

../_images/gocoin.png

https://gocoin.com

Торговые автоматы

Участник сообщества moocowmoo написал код, цель которого помогать продавцам разрабатывать свои собственные торговые автоматы и настраивать их для получения платежей Dash InstantSend. Программное обеспечение Dashvend также может использоваться для создания любой платёжной системы, включая POS системы, которые могут принимать платежи InstantSend.

Ценовые тикеры

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

Аналогичные виджеты с различным дизайном доступны на CoinLibWorldCoinIndex и Cryptonator, в то время как API, предоставляющий аналогичную информацию, размещён на DashCentral.

QR-коды

Многие кошельки способны генерировать QR-коды, которые затем можно сканировать для упрощения ввода адреса Dash. Печать этих кодов или размещение на вашем сайте позволяет легко получать платежи и чаевые в DASH, находясь как онлайн, так и офлайн.

  • В кошельке Dash Core откройте вкладку Получить, при необходимости сгенерируйте адрес и дважды кликните на нём, чтобы отобразить QR-код. Кликните правой кнопкой на QR-коде и выберите Сохранить изображение, чтобы сохранить его в формате PNG.
  • В кошельке Dash для Android нажмите Запросить средства, а затем нажмите на QR-код, чтобы отобразить его увеличенное изображение. Для сохранения этого изображения вы можете сделать его скриншот.
  • В кошельке Dash для iOS проведите пальцем влево, чтобы отобразить экран Запросить средства. Появятся QR-код и адрес. Для сохранения этого изображения вы можете сделать его скриншот.
  • Чтобы сгенерировать QR-код из любого адреса Dash, посетите CWA QR Code Generator и просто вставьте свой адрес Dash для генерации изображения.