Обзор по интеграции¶
Эта документация также доступна в формате PDF.
Dash Core v0.13.x является “форком” Биткойна и имеет с ним много общих функций. Ключевые отличия касаются существующих JSON-RPC команд, которые были изменены таким образом, чтобы можно было поддерживать такие уникальные функции, как InstantSend.
- Общая информация: Dash - сеть, работающая на основе “Доказательства Работы”, похожая на сеть Биткойна.
- Время нахождения блока: ~2,6 минуты
- Github: https://github.com/dashpay/dash
- Последний релиз: https://github.com/dashpay/dash/releases
- Интерфейс JSON-RPC: Большинство свойственных Биткойну JSON-RPC команд не поменялись, благодаря чему интеграция в существующие системы остаётся относительно простой. Обратите внимание, что приведённые ниже команды были изменены для возможности поддержки функции InstantSend:
- Алгоритм хеширования блока: Dash использует алгоритм X11, вместо SHA256, который используется в Биткойне. Однако стоит отметить, что это относится только к хешированию Блока. Все прочие внутренние функции работают с хешами SHA256 (транзакции, корни merkle, и т.д.), благодаря чему большинство существующих библиотек совместимы с экосистемой Dash.
- Специальные транзакции: Dash Core v0.13.x вводит концепцию “Специальных Транзакций”. Для получения дополнительной информации смотрите Руководство по интеграции типов транзакций.
Примечания по интеграции v0.13.0¶
Эта документация также доступна в формате PDF.
В Dash 0.13.0 реализованы Специальные Транзакции DIP002, которые формируют основу для новых типов транзакций, снабжающих блокчейн метаданными, которые оказывают помощь в работе различных механизмов консенсуса. Существуют следующие типы специальных транзакций:
Релиз | Версия | Тип | Размер нагрузки | Нагрузка | Нагрузка 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 | Формирование кворума |
Примечания по интеграции:
- DIP002 Специальные тразакции - основной компонент Dash Core v0.13.0, он вводит новые версии транзакций и соответствующую им «Нагрузку» сети
- Интегрированные системы должны быть способны к сериализации и десериализации этих новых Типов Транзакций, чтобы шифрование и дешифровка данных Исходных Транзакций происходила успешно.
- С точки зрения обратной совместимости, 4-байтная (32-bit) поле
версии
, включённое в Старые транзакции, было разделено на два поля:версия
итип
(каждое состоит из 2 байтов). - Обратитесь к разделу Специальные транзакции руководства разработчика Dash для получения дополнительной информации об этих типах данных, например<variable int>.
- 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¶
Эта документация также доступна в формате PDF.
InstantSend - это функция, предоставляемая сетью Dash, которая позволяет продавцам и другим поставщиками услуг безопасно принимать транзакции с 0-подтверждением. Все транзакции InstantSend защищены на 25 блоков «сетью мастернод» в момент создания транзакции. Транзакция добывается в следующем блоке в соответствии со стандартными принципами блокчейна.
Работа функции InstantSend обеспечивается сетью мастернод, в которую входит около 4800 мастернод-серверов. Эти ноды отличаются от стандартных нод тем, что доказали наличие владения 1000 DASH. Одной из назначаемых такому особому типу сервера обязанностей является «фиксирование транзакций», которая также известна как InstantSend.
Эта концепция работает как расширение консенсуса сети. Когда происходит транзакция «InstantSend», сеть проходит дополнительный процесс проверки, который проверяет два следующих свойства транзакции:
- Input Maturity: сеть потребует наличие как минимум 6 подтверждений на каждом входе.
- Input Composition: количество используемых входов определяет величину взимаемой комиссии.
- 1 - 4 входа: при использовании Автоматического InstantSend комиссия за кБ составляет 0,00001 DASH.
- 5+ входов: необходимая комиссия за вход составляет 0,0001 DASH.
Предполагая, что требования Input Maturity и Input Composition выполнены, сеть «зафиксирует» входы, связанные с этой транзакцией на 25 блоков. Транзакции, содержащие 4 или менее входа, называются «простыми транзакциями» и не требуют оплаты дополнительных комиссий.
Автоматический InstantSend¶
В Dash Core v0.13.x реализован процесс Автоматического InstantSend. Любая транзакция, которая классифицируется как «простая транзакция», будет автоматически передаваться в сеть как транзакция InstantSend при использовании стандартных точек передачи транзакций в сеть.
InstantSend и стандартные транзакции¶
Термин «InstantSend» используется для описания стандартной транзакции, которая была обеспечена дополнительными гарантиями сети мастернод. В результате, и с точки зрения интеграции, нет никакого технического различия между двумя типами транзакций.
Наиболее заметное различие связано с применением политики подтверждения в интегрированной системе. Принимающая система должна знать о статусе InstantSend с целью безопасного применения политики подтверждения транзакций, включённых с использованием этой технологии.
Получение транзакций InstantSend¶
Вводится два требования для получения транзакций InstantSend:
- Возможность определить «статус InstantSend» в заданной транзакции.
- Возможность настройки «статуса подтверждения» независимо от подтверждения блока.
InstantSend Status обычно определяется через прямое соединение с демоном dash, уведомление ZMQ, или с помощью сценария уведомления внешнего кошелька.
Прямое соединение: Статус InstantSend может быть идентифицирован через прямое соединение с демоном Dash с использованием протокола JSON-RPC. Атрибут «instantlock» ответа JSON отражает состояние транзакции и включён в следующие команды:
- getrawmempool
- getmempoolancestors
- getmempooldescendants
- getmempoolentry
- getrawtransaction
- decoderawtransaction
- gettransaction
- listtransactions
- listsinceblock
Уведомление кошелька: Dash Core Daemon можно настроить для выполнения внешнего скрипта всякий раз, когда выполняется транзакция InstantSend, связанная с конкретным кошельком. Настройка производится путём добавления следующей строки в файл dash.conf:
instantsendnotify=/path/to/concurrent/safe/handler %s
Обычно это используется с кошельком, заполненным адресами <только для просмотра.
Распространение транзакций InstantSend¶
Автоматический InstantSend вводит два требования к интегрируемой системе:
- Возможность оценить количество входов в заданной транзакции.
- Возможность применения повышенного уровня комиссий в случае, если количество входов больше 5.
Во многих случаях интегрированная система уже будет содержать логику, предназначенную для сведения к минимуму комиссий за транзакции за счёт оптимизации использования входов. Если это так, и можно предположить, что формируются только «простые транзакции», то никаких дополнительных усилий по разработке применять не требуется.
В тех случаях, когда количество входов определить невозможно или оно будет неизвестно, интегрированная система должна иметь возможность рассчитать комиссию на основе количества входов, используемых для формирования транзакции. Для успешной передачи в сеть в качестве транзакции InstantSend должна применяться плата за каждый вход в размере 0,0001 DASH. В таких случаях важно отметить, что флаг «instantsend» должен быть установлен как «true» при выполнении команды sendrawtransaction <https://dash-docs.github.io/en/developer-reference#sendrawtransaction>, например:
sendrawtransaction "hexstring" false true
Дополнительные ресурсы¶
Следующие ресурсы предоставляют дополнительную информацию о функции InstantSend и предназначены для обеспечения более полного понимания базовых технологий.
Сервисы API¶
Эта документация также доступна в формате PDF.
Существует несколько API, которые облегчают быструю и простую интеграцию с сетью Dash для таких сервисов как:
- Распространение транзакций
- Обменные курсы
- Конвертация валюты
- Генерация счетов
API обычно используются для того, чтобы устранить необходимость запуска собственной инфраструктуры для поддержки взаимодействия с блокчейном. Сюда входят такие механизмы, как:
- Формирование и распространение транзакций в сети.
- Генерация адресов с использованием HD кошельков.
- Обработка платежей с использованием WebHooks.
Существует множество вариантов поддержки этих методов, ключевым отличием которых является включённая модель ценообразования и поддерживаемые функции. В следующем списке провайдеров API выполнена попытка описать эти ключевые функции/дифференциаторы, также в него включена ссылка на соответствующую документацию.
Insight¶
https://github.com/dashevo/insight-api
Dash Insight REST API c открытым кодом - это удобный, мощный и простой способ считывать данные из сети Dash и разрабатывать с его помощью свои собственные сервисы. Практическое руководство по Insight API и Insight UI обозревателю блоков доступно тут.
- Функции: передача транзакций в сеть, уведомления WebSocket.
- Модель ценообразования: бесплатный / открытый источник
- Документация: https://github.com/dashevo/insight-api
BlockCypher¶
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¶
BitGo предоставляет простой и надёжный RESTful API и SDK для интеграции кошельков, поддерживающих цифровую валюту, с вашим приложением. Доступна поддержка Dash InstantSend.
- Функции: HD-кошельки с мультиподписью, операции с кошельком, уведомления WebSocket и WebHook, кастодиальные решения
- Модель ценообразования: за API запрос
- Документация: https://www.bitgo.com/api/v2/
ChainRider¶
ChainRider - облачный сервис, предоставляющий набор из нескольких REST API для управления цифровой валютой
- Функции: блокчейн-запросы, уведомления о событиях, обработка транзакций, обработка платежей и т.п.
- Модель ценообразования: бесплатно в течение пробного периода, оплата за API вызов
- Документация: https://www.chainrider.io/docs/dash
GoCoin¶
С помощью платформы 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¶
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¶
https://dash-docs.github.io/en/developer-guide
Руководство разработчика Dash предназначено для предоставления информации, необходимой для понимания Dash и создания приложений на основе Dash. Чтобы наилучшим образом использовать эту документацию, вы можете установить текущую версию Dash Core либо из исходного, либо из предварительно скомпилированного исполняемого файла.
- Документация: https://dash-docs.github.io/en/developer-guide
NodeJS/JavaScript: Dashcore¶
Dashcore является форком Bitcore и работает как полная нода Dash - ваши приложения запускаются непосредственно в децентрализованной сети. Для разработки приложений кошелька в Dash были добавлены дополнительные индексы для запроса балансов адресов, истории транзакций и неизрасходованных выходов.
- Платформа: NodeJS / Javascript
- Документация: https://bitcore.io/api/lib
- Репозиторий с библиотекой: https://github.com/dashevo/dashcore-lib
- Репозиторий ноды: https://github.com/dashevo/dashcore-node
- Смотрите также: Insight API
PHP: Bitcoin-PHP¶
https://github.com/snogcel/bitcoin-php
Bitcoin-PHP - это реализация Bitcoin с поддержкой Dash, которая в основном использует только PHP.
- Платформа: PHP
- Документация: https://github.com/Bit-Wasp/bitcoin-php/blob/master/doc/Introduction.md
- Репозиторий: https://github.com/snogcel/bitcoin-php
Python: PyCoin¶
https://github.com/DeltaEngine/pycoin
PyCoin - это реализация ряда вспомогательных утилит, которые могут быть полезны при работе с Bitcoin и Dash. Он тестировался с Python 2.7, 3.6 и 3.7.
- Платформа: Python
- Документация: https://pycoin.readthedocs.io/en/latest/
- Репозиторий: https://github.com/DeltaEngine/pycoin
- Смотрите также: Утилиты JSON-RPC
Java: DashJ¶
https://github.com/HashEngineering/dashj
DashJ - это библиотека для работы с протоколом Dash. В ней реализована поддержка кошелька, с её помощью можно отправлять/получать транзакции (включая InstantSend), не нуждаясь в локальной копии Dash Core, также она имеет много других дополнительных функций. Реализована на Java, но может использоваться с любым совместимым с JVM языком: присутствуют примеры в Python и JavaScript.
- Платформа: Java
- Документация: https://bitcoinj.github.io/getting-started
- Репозиторий: https://github.com/HashEngineering/dashj
- Образец приложения: https://github.com/tomasz-ludek/pocket-of-dash
Objective-C: Dash-Sync¶
https://github.com/dashevo/dashsync-iOS
Dash-Sync это блокчейн-фреймворк Dash для iOS на Objective-C. Он реализует большинство релевантных Предложений по улучшению Bitcoin (BIPs) и Предложений по улучшению Dash (DIPs).
- Платформа: iOS
- Репозиторий: https://github.com/dashevo/dashsync-iOS
.NET: NBitcoin¶
https://github.com/MetacoSA/NBitcoin
NBitcoin - самая полная Bitcoin-библиотека для платформы .NET, в которую были внесены изменения с целью добавления поддержки Dash. В ней реализованы все наиболее подходящие предложения по улучшению сети Bitcoin (BIPs) и предложения по улучшению сети Dash (DIPs). Она также обеспечивает доступ на нижний уровень к примитивам Dash, поэтому вы можете легко создавать приложения поверх них.
- Платформа: .NET
- Документация: https://programmingblockchain.gitbooks.io/programmingblockchain/content/
- Репозиторий: https://github.com/MetacoSA/NBitcoin
- Смотрите также: Утилиты JSON-RPC
BlockCypher¶
BlockCypher также предлагает SDK.
- Платформы: Ruby, Python, Java, PHP, Go, NodeJS
- Репозитории: https://www.blockcypher.com/dev/dash/#blockcypher-supported-language-sdks
Торговые автоматы¶
Участник сообщества moocowmoo написал код, цель которого помогать продавцам разрабатывать свои собственные торговые автоматы и настраивать их для получения платежей Dash InstantSend. Программное обеспечение Dashvend также может использоваться для создания любой платёжной системы, включая POS системы, которые могут принимать платежи InstantSend.
Ценовые тикеры¶
Вы можете добавить простой виджет с ценовым тикером на ваш сайт, используя простой фрагмент из генератора кода CoinGecko.
Аналогичные виджеты с различным дизайном доступны на CoinLib, WorldCoinIndex и 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 для генерации изображения.