Integrationsüberblick

Diese Dokumentation ist ebenfalls als englischsprachige PDF verfügbar.

Dash Core v0.13.x ist eine “Fork” von 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.

v0.13.0 Integrationsanmerkungen

Diese Dokumentation ist ebenfalls als englischsprachige PDF verfügbar.

Dash 0.13.0 implementiert 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 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 Überblick

Diese Dokumentation ist ebenfalls als englischsprachige PDF verfügbar.

InstantSend ist ein Feature des Dash-Netzwerks, welches Transaktionen mit 0 Bestätigungen erlaubt, die von Händlern und Dienstleistungsanbietern gefahrlos akzeptiert werden können. Alle InstantSend-Transaktionen werden ab dem Senden 25 Blöcke lang vom Masternode-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, welches aus etwa 4800 Masternode-Servern besteht. Diese Nodes unterscheiden sich von normalen Nodes dadurch, dass ihre Betreiber 1000 Dash als Sicherheitspfand besitzen müssen. Eine Aufgabe der Masternodes ist das „Absichern von Transaktionen“, welches InstantSend genannt wird.

Dieses Konzept ist eine Erweiterung des Netzwerkskonsens. Wenn eine „InstantSend“ Transaktion stattfindet, durchläuft das Netzwerk einen zusätzlichen Validierungsprozess, der die folgenden beiden Eigenschaft der Transaktion überprüft:

  1. Input Maturity: Das Netzwerk verlangt von allen Inputs mindestens 6 Bestätigungen.
  2. Input Composition: Die Zahl der verwendeten Inputs bestimmt die Gebührenstruktur.
    1. 1 - 4 Inputs: 0.00001 Dash Gebühr pro kB, durch automatischen InstantSend.
    2. 5+ Inputs: 0.0001 Dash Gebühr pro Input.

Wenn die Anforderungen Input Maturity und Input Composition erfüllt sind, „sperrt“ das Netzwerk die Inputs, die zu dieser Transaktion gehören, 25 Blöcke lang. Transaktionen mit 4 oder weniger Inputs werden als „einfache Transaktionen“ bezeichnet und können ohne Zusatzkosten durchgeführt werden.

Automatischer InstantSend

Dash Core v0.13.x führte den Vorgang des automatischen InstantSend ein, durch den jede „einfache Transaktion“ automatisch als InstantSend-Transaktion an das Netzwerk übermittelt wird, wenn sie dabei auf die herkömmlichen Übermittlungsendpunkte zugreift.

InstantSend vs. Standardtransaktionen

Der Begriff InstantSend wird verwendet, um eine Standardtransaktion zu beschreiben, die zusätzlich durch das Masternode-Netzwerk abgesichert wird. Daher gibt es, aus integrativer Sicht, keinen technischen Unterschied zwischen den beiden Transaktionen.

Der hauptsächliche Unterschied besteht darin, wie das integrierende System seine Bestätigungsanforderungen an diese Funktion anpasst. Das empfangende System muss den InstantSend-Status erkennen, um die Bestätigungsanforderungen sicher anpassen zu können, wenn es diese Technologie verwenden will.

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:

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

Automatisches InstantSend führt zwei Voraussetzungen in das zu integrierende System ein:

  1. Die Zahl der Inputs einer Transaktion muss überprüft werden.
  2. Bei 5 oder mehr Inputs muss die Möglichkeit bestehen, eine höhere Gebühr zu bezahlen.

In vielen Fällen verfügt das System bereits über eine Funktion, welche die Transaktionsgebühren so gering wie möglich halten soll, indem die Zahl der Inputs optimiert wird. Wenn dies der Fall ist und nur einfache Transaktionen erzeugt werden, so ist keine weitergehende Entwicklungsarbeit nötig.

Wenn diese unbekannt oder nicht möglich ist, wird das integrierte System die Gebühren anhand der Inputs der Transaktion berechnen. Diese Gebühr von 0.0001 Dash pro Input ist notwendig, damit die Transaktion als InstantSend wahrgenommen wird. In diesen Fällen ist es notwendig, dass die “instantsend” Markierung als “true” vermerkt ist, wenn der Befehl sendrawtransaction verwendet wird, z.B.:

sendrawtransaction "hexstring" false true

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.