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.
- Allgemeine Informationen: Dash ist ein Proof-of-Work Netzwerk, welches Bitcoin ähnelt.
- Blockzeit: ~2.6 Minuten pro Block
- Github Source: https://github.com/dashpay/dash
- Letzte Veröffentlichung: https://github.com/dashpay/dash/releases
- 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:
- 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.
- 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
- DIP002 Special Transactions sind eine fundamentale Komponente von Dash Core v0.13.0, die neue Transaktionsversionen und einen entsprechenden „Payload“ in das Netzwerk bringt.
- 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.
- 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
undtype
(jeweils 2 Byte). - Verweis auf die Sektion zu den Special Transactions in der Dash-Entwicklerreferenz zwecks weiterführender Details zu diesen Datentypen, z.B. <variable int>.
- 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:
- Der InstantSend-Status einer Transaktion muss erkannt werden.
- 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:
- getrawmempool
- getmempoolancestors
- getmempooldescendants
- getmempoolentry
- getrawtransaction
- decoderawtransaction
- gettransaction
- listtransactions
- listsinceblock
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¶
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.
- Funktionen: Transaktionsübermittlung, WebSocket-Benachrichtigungen
- Preisgestaltung: Kostenlos / Open-Source
- Dokumentation: https://github.com/dashevo/insight-api
BlockCypher¶
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.
- Funktionen: Transaktionsübermittlung, HD Wallet- / Adresserstellung, WebSocket und WebHook Rückmeldung und Payment Forwarding. BlockCypher greift nicht auf die Private Keys zu
- Preisgestaltung: Pro API-Anfrage, 5000 Anfragen -> $85 im Monat (https://accounts.blockcypher.com/plans )
- Dokumentation: https://www.blockcypher.com/dev/dash/
BitGo¶
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¶
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¶
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¶
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¶
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.
- Dokumentation: https://dash-docs.github.io/en/developer-guide
NodeJS/JavaScript: Dashcore¶
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.
- Plattformen: NodeJS / Javascript
- Dokumentation: https://bitcore.io/api/lib
- Lib-Repositorien: https://github.com/dashevo/dashcore-lib
- Node-Repositorien: https://github.com/dashevo/dashcore-node
- Siehe auch: Insight API
PHP: Bitcoin-PHP¶
https://github.com/snogcel/bitcoin-php
Bitcoin-PHP ist eine Bitcoin-Implementierung, die Dash unterstützt und mehrheitlich PHP verwendet.
- Plattform: PHP
- Dokumentation: https://github.com/Bit-Wasp/bitcoin-php/blob/master/doc/Introduction.md
- Repositorien: https://github.com/snogcel/bitcoin-php
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.
- Plattform: Python
- Dokumentation: https://pycoin.readthedocs.io/en/latest/
- Repositorien: https://github.com/DeltaEngine/pycoin
- Siehe auch: JSON-RPC Utilities
Java: DashJ¶
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.
- Plattformen: Java
- Dokumentation: https://bitcoinj.github.io/getting-started
- Repositorien: https://github.com/HashEngineering/dashj
- Beispielanwendung: https://github.com/tomasz-ludek/pocket-of-dash
Objective-C: Dash-Sync¶
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).
- Plattform: iOS
- Repositorien: https://github.com/dashevo/dashsync-iOS
.NET: NBitcoin¶
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.
- Plattform: .NET
- Dokumentation: https://programmingblockchain.gitbooks.io/programmingblockchain/content/
- Repositorien: https://github.com/MetacoSA/NBitcoin
- Siehe auch: JSON-RPC Utilities
BlockCypher¶
Auch BlockCypher bietet SDKs an.
- Plattformen: Ruby, Python, Java, PHP, Go, NodeJS
- Repositorien: https://www.blockcypher.com/dev/dash/#blockcypher-supported-language-sdks
GoCoin¶
- Plattformen: JavaScript, PHP, Java, Ruby, .NET, Python
- Repositorien: https://gocoin.com/docs
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 CoinLib, WorldCoinIndex 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.