Integrationsüberblick

Diese Dokumentation ist ebenfalls als englischsprachige PDF verfügbar.

Dash Core ist eine “Fork” von Bitcoin Core <https://github.com/bitcoin/bitcoin> und verfügt über gemeinsame Funktionen. Die Hauptunterschiede beziehen sich auf existierende JSON-RPC Befehle, welche angepasst wurden, um Sonderfunktionen, wie z.B. InstantSend, zu unterstützen.

  1. Allgemeine Informationen: Dash ist ein Proof-of-Work Netzwerk, welches Bitcoin ähnelt.
    1. Blockzeit: ~2.6 Minuten pro Block
    2. Github Source: https://github.com/dashpay/dash
    3. Letzte Veröffentlichung: https://github.com/dashpay/dash/releases
  2. JSON-RPC Interface: Die Mehrzahl der Befehle wurden gegenüber Bitcoin nicht geändert und können einfach in ein bestehendes System übernommen werden. Die folgenden Befehle wurden geändert, damit sie InstantSend unterstützen:
  3. Block Hashing Algorithmus: Dash verwendet den X11-Algorithmus, während Bitcoin auf SHA256 zurückgreift. Es ist wichtig zu beachten, dass dies nur das Hashing der Blöcke selbst betrifft. In allen anderen Fällen werden SHA256 Hashes (Transaktionen, Merkle Root, etc.) verwendet, weswegen die meisten anderen Libraries für Dash übernommen werden können.
  4. Spezielle Transaktionen: Dash Core v0.13.x hat sog. „Special Transactions“ eingeführt. Weitere Informationen befinden sich im Transaction Type Integration Guide.

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. Integrierte Systeme müssen über die Fähigkeit verfügen, diese neuen Transaktionstypen in eine serielle Reihenfolge zu bringen und seriell-parallel zu wandeln, damit sie die rohen Transaktionsdaten kodieren und dekodieren können.
  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. Verweis auf die Sektion zu den Special Transactions in der Dash-Entwicklerreferenz zwecks weiterführender Details zu diesen Datentypen, z.B. <variable int>.
  5. InstantSend Status und Payload JSON (e.g. proRegTx) sind in der JSON-RPC Antwort enthalten. Diese Daten sind nicht Teil des berechneten Hash und werden nur der Einfachheit halber zur Verfügung gestellt.

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 wird durch das Masternode-Netzwerk ermöglicht, das momentan aus etwa 5000 Masternodes besteht. Diese Nodes unterscheiden sich von anderen Nodes, da die Betreiber den Besitz von 1000 Dash nachweisen müssen, was das Netzwerk gegen Sybil-Angriffe absichert. Masternodes bilden Long-Living Masternode Quorums (LLMQs), deren Aufgabe es ist, abzusichern, dass ein Transaktionsguthaben nicht erneut ausgegeben wird und die Transaktion anstelle einer konkurrierenden Transaktion in einen Block eingefügt wird.

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

Dies wird üblicherweise mit einer Wallet kombiniert, welche nur über Watch-Only Adressen verfügt.

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 also 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

Diese Dokumentation ist auch als englischsprachiges PDF verfügbar.

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

https://github.com/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.

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
  • Dokumentation: https://www.bitgo.com/api/v2/

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
  • Dokumentation: https://www.chainrider.io/docs/dash

GoCoin

../_images/gocoin.png

https://gocoin.com

Durch die GoCoin-Plattform kann Dash mithilfe eines simplen Plugins akzeptiert werden. Dieses kann in die meisten der großen Shop-Plattformen integriert werden. GoCoin bietet seine Dienste auch Unternehmen an, die an einem hohen Maß an Privatsphäre interessiert sind. Alle Transaktionsrisiken werden von GoCoin getragen.

  • Funktionen: Abrechnung, Währungsrechner, WebHook Rückmeldung. GoCoin sichert die Private Keys der Händler. Kryptowährungen können entweder ausgezahlt oder in Fiat umgewandelt werden.
  • Integrationen: WooCommerce, Magento, Prestashop, VirtueMart, ZenCart, OpenCart, OSCommerce, UberCart, nopCommerce, WHMCS, NATS4, Shopify
  • Preisgestaltung: 1% der Transaktion (https://gocoin.com/fees)
  • Dokumentation: https://gocoin.com/docs

CoinPayments

../_images/coinpayments.png

https://www.coinpayments.net

CoinPayments ist ein Zahlungs-Gateway, der neben Dash mit verschiedenen Kryptowährungen kompatibel ist. PlugIns sind für viele verschiedene Software-Anbieter verfügbar. CoinPayments kann selbst einen Checkout gestalten, aber auch in einen bestehenden Checkout integriert werden.

  • Funktionen: Abrechnung, Währungsrechner, WebHook Rückmeldung. GoCoin sichert die Private Keys der Händler. Kryptowährungen können entweder ausgezahlt oder in Fiat umgewandelt werden.
  • 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

Diese Dokumentation ist auch als englischsprachiges PDF verfügbar.

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://dash-docs.github.io/en/developer-guide

Der Dash Developer Guide soll alle Informationen bereitstellen, die notwendig sind, um Dash zu verstehen und darauf basierende Applikationen zu schaffen. Um diese Dokumentation am besten zu verwenden ist es empfehlenswert die aktuelle Version der Dash Core Wallet installiert zu haben.

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.

PHP: Bitcoin-PHP

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

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

Python: PyCoin

https://github.com/DeltaEngine/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

https://github.com/HashEngineering/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

https://github.com/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

https://github.com/MetacoSA/NBitcoin

NBitcoin ist die umfassendste Bitcoin Library für die .NET-Plattform und wurde dahingehend geupdated, dass Dash unterstützt werden kann. Alle wichtigen Bitcoin Improvement Proposals (BIPs) und Dash Improvement Proposals (DIPs) sind integriert. Zudem kann auf alle Dash-Grundlagen zugegriffen werden, wodurch einfache Applikationen darauf aufbauen können.

BlockCypher

../_images/blockcypher.png

https://www.blockcypher.com

Auch BlockCypher bietet SDKs an.

GoCoin

../_images/gocoin.png

https://gocoin.com

Verkaufsautomat

Das Community-Mitglied moocowmoo hat einen Quellcode veröffentlicht, der Händlern dabei helfen soll, einen Automaten aufzusetzen, der Zahlungen mit Dash-InstantSend unterstützt. Die Dashvend Software kann auch für andere Zahlungssystem verwendet werden, wie z.B. Point-of-Sale Systeme, die InstantSend-Zahlungen akzeptieren wollen.

Preisticker

Ein einfaches Preisticker-Widget kann mit der Hilfe von CoinGecko in jede Seite implementiert werden.

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

QR-Codes

Die meisten Wallets können einen QR-Code generieren, der eingescannt werden kann, um eine Dash-Adresse zu übermitteln. Diese QR-Codes können ausgedruckt oder auf einer Webseite veröffentlicht werden, wodurch es einfach ist, Zahlungen und Trinkgelder in Dash zu erhalten, sowohl online als auch offline.

  • Über die Registerkarte Empfangen der Dash Core Wallet, kann eine Adresse mit zugehörigem QR-Code generiert werden. Dieser kann per Rechtsklick und Bild speichern als PNG-Datei gespeichert werden.
  • 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.