Integrationsüberblick#

Diese Dokumentation ist ebenfalls als englischsprachige PDF verfügbar.

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

The Basics#

Dash is a Proof of Work network, and similar to Bitcoin, Dash has a mining network but uses a different block hashing algorithm. Dash serves as an improvement of Bitcoin’s shortcomings by offering a robust solution for instant transactions, enhancing user privacy, and offering a self-sustainable decentralized governance model.

JSON-RPC Interface#

The majority of commands are unchanged from Bitcoin making integration into existing systems relatively straightforward. Note that the following commands have been modified to support InstantSend:

Block Hashing Algorithm#

Dash uses the X11 algorithm in place of SHA256 used in Bitcoin. It’s important to note, however, that this only affects the hashing of the block itself. All other internals utilize SHA256 hashes (transactions, merkle root, etc.), which allows for most existing libraries to work in the Dash ecosystem.

Spezielle Transaktionen#

Dash Core v0.13.x introduced the concept of “Special Transactions”. Please see the Transaction Type Integration Guide for more information.

Spezielle Transaktionen#

Diese Dokumentation ist ebenfalls als englischsprachige PDF verfügbar.

Dash 0.13.0 und höher implementieren DIP002 Special Transactions, welches die Grundlage für neue Transaktionstypen ist, die On-Chain Metadaten für verschiedene Konsens-Mechanismen zur Verfügung stellt. Die folgenden speziellen Transaktionstypen existieren:

Veröffentlichung

Version

Typ

Payload-Größe

Payload

Payload JSON

Transaktionszweck

v0.13.0

3

0

n/a

n/a

n/a

Standardtransaktion

v0.13.0

3

1

<variable int>

<hex>

proRegTx

Masternode Registration

v0.13.0

3

2

<variable int>

<hex>

proUpServTx

Update Masternode Service

v0.13.0

3

3

<variable int>

<hex>

proUpRegTx

Update Masternode Operator

v0.13.0

3

4

<variable int>

<hex>

proUpRevTx

Masternode Revocation

v0.13.0

3

5

<variable int>

<hex>

cbTx

Masternode List Merkle Proof

v0.13.0

3

6

<variable int>

<hex>

qcTx

Quorum Commitment

Integrationsanmerkungen

  1. DIP002 Special Transactions sind eine fundamentale Komponente von Dash Core v0.13.0, die neue Transaktionsversionen und einen entsprechenden „Payload“ in das Netzwerk bringt.

  2. Integrated Systems must be able to serialize and deserialize these new Transaction Types to accurately encode and decode Raw Transaction data.

  3. Aus einer rückwärtskompatiblen Perspektive wurde das 4 Byte (32-Bit) Feld version, welches bei traditionellen Transaktionen üblich ist, in zwei Felder aufgeteilt: version und type (jeweils 2 Byte).

  4. Refer to the Special Transactions section of the dash developer reference for additional detail on these data types, e.g. <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.

Beispiele für jeden Transaktionstypus finden sich in der v0.13.0 Dokumentation zu den Integrationen der Transaktionstypen (PDF).

InstantSend#

Diese Dokumentation ist ebenfalls als englischsprachige PDF verfügbar.

InstantSend ist ein Feature des Dash-Netzwerks, welches Transaktionen mit 0 Bestätigungen erlaubt, die gefahrlos akzeptiert werden können. Alle InstantSend-Transaktionen werden vom Netzwerk abgesichert. Die Transaktion wird in den nächsten Block eingefügt, wie dies den Prinzipien der Blockchain-Technologie entspricht.

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.

Dieses Konzept fungiert als eine Erweiterung des Nakamoto Consensus. InstantSend ermöglicht es dem Empfänger das Geld sofort und sicher auszugeben, selbst wenn es noch nicht in einen Block eingetragen wurde.

InstantSend-Transaktionen empfangen#

Es gibt zwei Voraussetzungen, um InstantSend-Transaktionen erkennen zu können:

  1. Der InstantSend-Status einer Transaktion muss erkannt werden.

  2. Der Bestätigungs-Status muss unabhängig von den Block-Bestätigungen aktualisiert werden.

Der InstantSend-Status wird üblicherweise über eine direkte Verbindung mit dem Dash Daemon, ZMQ Benachrichtigungen oder ein externes Benachrichtigungsskript erkannt.

Direkte Verbindung: Der InstantSend-Status kann durch eine direkte Verbindung mit dem Dash Daemon über das JSON-RPC Protokoll erkannt werden. Das Attribut „instantlock“ der JSON-Ausgabe spiegelt den Status der Transaktion wieder und ist Teil der folgenden Befehle:

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

Wallet-Benachrichtigungen: Der Dash Core Daemon kann so konfiguriert werden, dass ein externes Skript mitteilt, wenn eine InstantSend-Transaktion beobachtet werden konnte. Dies wird dadurch konfiguriert, dass die folgende Zeile zu der Datei dash.conf hinzugefügt wird:

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

This is typically used with a wallet that has been populated with watch-only addresses.

InstantSend-Transaktionen übermitteln#

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 do this on mempool (non-mined) transactions. This allows chained InstantSend locking.

Zusätzliche Ressourcen#

Die folgenden Ressourcen bieten weitergehende Informationen über InstantSend und sind dafür gedacht ein besseres Verstehen der zugrundeliegenden Technologie zu ermöglichen.

API-Dienste#

Mehrere API-Dienste können dazu verwendet werden, eine der folgenden Funktionen des Dash-Netzwerks mit einer Plattform zu verbinden:

  • Transaktionsübermittlung

  • Kurse

  • Währungsumtausch

  • Anfrageerstellung

API-Dienste werden im Normalfall verwendet, damit auf eine eigene Infrastruktur zum Zugriff auf die Blockchain verzichtet werden kann. Dazu gehören Mechanismen wie:

  • Transaktion erstellen und an das Netzwerk übermitteln

  • Adresserstellung über HD-Wallets

  • Zahlungsverarbeitung über WebHooks

Es gibt mehrere Arten, auf derartige Funktionen zuzugreifen, wobei diese sich hauptsächlich in der Preisgestaltung und in der Reichweite der Möglichkeiten unterscheiden. Die folgende Liste an API-Diensten versucht die Unterschiede herauszustellen und verweist auf weiterführende Dokumentationen zu den einzelnen Diensten.

Insight#

../../../_images/insight.png

dashevo/insight-api

Die Open-Source Insight REST API bietet einen benutzerfreundlichen, leistungsstarken und einfachen Weg, um Daten aus dem Dash-Netzwerk in die eigene Plattform zu integrieren. Eine praktische Anleitung, wie man mit der Implementierung der Insight API und des Insight UI Blockexplorers beginnen kann, gibt es hier.

  • Funktionen: Transaktionsübermittlung, WebSocket-Benachrichtigungen

  • Preisgestaltung: Kostenlos / Open-Source

  • Dokumentation: dashevo/insight-api

BlockCypher#

../../../_images/blockcypher.png

https://www.blockcypher.com

BlockCypher bietet eine RESTful JSON API, um mit der Blockchain zu interagieren. Der Zugriff ist über HTTP oder HTTPS durch die Adresse api.blockcypher.com möglich.

BitGo#

../../../_images/bitgo.png

https://www.bitgo.com

BitGo bietet eine einfache und leistungsstarke RESTful API und die erforderliche Client SDK, um die Wallet einer digitalen Währung mit der eigenen Applikation zu verbinden. Dash InstantSend wird ebenfalls unterstützt.

  • Funktionen: Multi-Signature HD Wallets, Wallet-Operationen, WebSocket uand WebHook-Benachrichtigungen

  • Preisgestaltung: Pro API-Anfrage

  • Documentation: https://app.bitgo.com/docs/

ChainRider#

../../../_images/chainrider.png

https://www.chainrider.io

ChainRider ist ein Cloud-Dienst, der eine Reihe von REST APIs zum Verwalten und Analysieren digitaler Währungen bietet.

  • Funktionen: Blockchain Queries, Event-Benachrichtigungen, Transaktions-Übermittlung, Zahlungsverarbeitung, usw.

  • Preisgestaltung: Kostenlose Testperiode, pro API-Anfrage

  • Documentation: https://www.chainrider.io/docs/dash/

Blockmove#

../../../_images/blockmove.png

https://blockmove.io

Сryptocurrency wallet, merchant & API provider. Blockmove is a simple and easy way to start accepting payments in cryptocurrency.

  • Features: Non-custodial wallet, HD Wallet, High anonymity, Low fees. Private keys are not stored and are available only to the user.

  • Pricing Model: API - 0.3% for withdrawal transactions. Merchant - 1 year free, then $49/month

  • Documentation: https://docs.blockmove.io

NOWNodes#

../../../_images/nownodes.png

https://nownodes.io/

NOWNodes provides simple, fast, and secure RPC access to Dash-based full nodes. The low latency and high performance is of great use to researchers and businesses such as crypto miners or hardware wallet providers.

CoinPayments#

../../../_images/coinpayments.png

https://www.coinpayments.net

CoinPayments is an integrated payment gateway for cryptocurrencies such as Dash. Shopping cart plugins are available for all popular webcarts used today. CoinPayments can help you set up a new checkout or integrate with your pre-existing checkout.

  • Features: Invoicing, Exchange Rates, WebHook Callbacks. CoinPayments holds Private Keys on their server allowing merchants to withdraw funds in Cryptocurrency or convert to fiat.

  • Integrationen: aMember Pro, Arastta, Blesta, BoxBilling, Drupal, Ecwid, Hikashop, Magento, OpenCart, OSCommerce, PrestaShop, Tomato Cart, WooCommerce, Ubercart, XCart, ZenCart

  • Preisgestaltung: 0,5% der Transaktion (https://www.coinpayments.net/help-fees)

  • Dokumentation: https://www.coinpayments.net/apidoc

SDK-Ressourcen#

SDKs (Software Development Kits) werden verwendet um die Entwicklung und Gestaltung eines Produktes für das Dash-Netzwerk zu vereinfachen. Diese Ressourcen können entweder verwendet werden, um mit einer API zu interagieren, oder, um eine selbständige Applikation zu schaffen, indem Transaktionen oder andere Wallet-Funktionen ermöglicht werden.

Dash Developer Guide#

../../../_images/dash-logo.png

https://dashcore.readme.io/

The Dash Developer Portal aims to provide the information you need to understand Dash and start building Dash-based applications. To make the best use of this documentation, you may want to install the current version of Dash Core and Dash Platform, either from source, from a pre-compiled executable or from Docker Hub.

NodeJS/JavaScript: Dashcore#

../../../_images/bitcore.png

https://bitcore.io

Bei Dashcore handelt es sich um eine Bitcore-Fork, die als Dash Fullnode fungiert, weswegen Applikationen direkt über das Peer-to-Peer-Netzwerk laufen. Für Wallet Applikationen gibt es zusätzliche Indices, durch die Adressen, Transaktionsaufzeichnungen und ungenutzte Outputs abgefragt werden können.

NodeJS/JavaScript: DashJS#

DashJS allows you to transact on L1 or fetch/register documents on L2 within a single library, including management and signing of your documents.

PHP: Bitcoin-PHP#

Bit-Wasp/bitcoin-php

Bitcoin-PHP ist eine Bitcoin-Implementierung, die Dash unterstützt und mehrheitlich PHP verwendet.

Python: PyCoin#

richardkiss/pycoin

PyCoin bietet eine Reihe von Dienstroutinen, die im Umgang mit Bitcoin und Dash von Nutzen sind. Es wurde mit Python 2.7, 3.6 und 3.7 getestet.

Java: DashJ#

../../../_images/bitcoinj.png

dashevo/dashj

DashJ ist eine Library, um mit dem Dash-Protokoll zu interagieren. Dadurch kann unter anderem eine Wallet betrieben werden (inklusive InstantSend), ohne eine Dash Core Kopie zu speichern. Es wird in Java implementiert, kann aber mit allen JVM-kompatiblen Sprachen verwendet werden: Python- und JavaScript-Beispiele sind beigefügt.

Objective-C: Dash-Sync#

../../../_images/dash-logo.png

dashevo/dashsync-iOS

Dash-Sync ist ein Objective-C Dash Blockchain-Framework für iOS. Es beinhaltet die wichtigsten Bitcoin Improvement Proposals (BIPs) und Dash Improvement Proposals (DIPs).

.NET: NBitcoin#

../../../_images/dash-logo.png

MetacoSA/NBitcoin

NBitcoin is the most complete Bitcoin library for the .NET platform and has been patched to include support for Dash. It implements all most relevant Bitcoin Improvement Proposals (BIPs) and Dash Improvement Proposals (DIPs). It also provides low level access to Dash primitives so you can easily build your application on top of it.

BlockCypher#

../../../_images/blockcypher.png

https://www.blockcypher.com

Auch BlockCypher bietet SDKs an.

Verkaufsautomat#

Community member moocowmoo has released code to help merchants build their own vending machine and set it up to receive Dash InstantSend payments. The Dashvend software can also be used to create any sort of payment system, including point-of-sale systems that can accept InstantSend payments.

Preisticker#

You can add a simple price ticker widget to your website using the simple code snippet generator from CoinGecko.

Ähnliche Widgets sind verfügbar über CoinLibWorldCoinIndex und Cryptonator. Eine API mit der selben Funktionen wird von DashCentral bereitgestellt.

QR-Codes#

Many wallets can generate QR codes that are scannable to simplify entry of the Dash address. Printing these codes or posting the on your website makes it easy to receive payment and tips in Dash, both online and offline.

  • In Dash Core, go to the Receive tab, generate an address if necessary, and double-click it to display a QR code. Right-click on the QR code and select Save Image to save a PNG file.

  • In der Dash Android Wallet kannst du über Dash empfangen einen QR-Code erzeugen und durch Antippen vergrößern. Du kannst das Bild als Screenshot speichern.

  • In der Dash Android Wallet kannst du links über Dash empfangen eine Adresse und einen QR-Code erzeugen. Du kannst das Bild als Screenshot speichern.

  • Über CWA QR Code Generator kannst du jederzeit einen QR-Code für jede beliebige Adresse erzeugen und als Bild speichern.