Généralités sur l’intégration

Cette documentation est aussi disponible au format PDF.

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

  1. Information générale : Dash est un réseau à preuve de travail (Proof of Work) et il est similaire à Bitcoin.
    1. Durée de bloc : environ 2,6 minutes par bloc
    2. Code source GitHub : https://github.com/dashpay/dash
    3. Version la plus récete : https://github.com/dashpay/dash/releases
  2. Interface JSON-RPC : la majorité des commandes JSON-RPC de Bitcoin sont inchangées, rendant assez simple l’intégration dans des systèmes existants. Veuillez noter que les commandes suivantes ont été modifiées pour être compatibles avec InstantSend :
  3. Algorithme de hachage de bloc : Dash utilise l’algorithme « X11 » à la place de SHA256 qu’utilise Bitcoin. Il est cependant important de noter que cela ne concerne que le hachage du bloc lui-même. Tous les autres composants internes utilisent des empreintes SHA256 (transactions, arbre Merkle, etc.), ce qui permet à la plupart des bibliothèques déjà existantes de fonctionner dans l’écosystème Dash.
  4. Transactions spéciales : Dash Core v0.13.x introduit la notion de « transactions spéciales ». Veuillez vous référer au Guide d’intégration des types de transaction pour obtenir plus d’informations.

Transactions spéciales

Cette documentation est également disponible au format PDF.

Dash 0.13.0 and higher implement DIP002 Special Transactions, which form a basis for new transaction types that provide on-chain metadata to assist various consensus mechanisms. The following special transaction types exist:

Publication Version Type Volume de charge Charge Charge JSON But de la transaction
v0.13.0 3 0 n/d n/d n/d Transaction standard
v0.13.0 3 1 <variable int> <hex> proRegTx Enregistrement de masternode
v0.13.0 3 2 <variable int> <hex> proUpServTx Mise à jour de service de masternode
v0.13.0 3 3 <variable int> <hex> proUpRegTx Mise à jour d’opérateur de masternode
v0.13.0 3 4 <variable int> <hex> proUpRevTx Révocation de masternode
v0.13.0 3 5 <variable int> <hex> cbTx Preuve Merkle de la liste de masternodes
v0.13.0 3 6 <variable int> <hex> qcTx Engagement de quorum

Notes sur l’intégration :

  1. Les transactions spéciales DIP002 sont un composant de base de Dash Core version 0.13.0 et inaugurent pour le réseau une nouvelle version de transaction et sa “charge » liée.
  2. Les systèmes intégrés doivent pouvoir sérialiser et désérialiser ces nouveaux types de transactions, afin d’encoder et de décoder correctement les données brutes de transaction.
  3. Du point de vue de la rétro-compatibilité, le champ 4 octets (32 bits) version inclus dans les transactions antérieures a été divisé en deux champs : version et type (chacun de 2 octets).
  4. Veuillez consulter la section Transactions spéciales du guide de référence des développeurs Dash pour obtenir plus de détail sur ces types de données, par ex. <variable int>.
  5. L’état InstantSend et la charge JSON (par exemple proRegTx) sont inclus dans la réponse JSON-RPC. Veuillez noter que ces données ne sont pas incluses dans la signature de hachage calculée, et sont fournies par commodité.

Veuillez vous référer au Guide d’intégration des types de transaction pour obtenir des exemples fonctionnels de chaque type de transaction.

InstantSend

This documentation is also available as a PDF.

InstantSend is a feature provided by the Dash network that allows for zero-confirmation transactions to be safely accepted and re-spent. The network attempts to lock the inputs of every valid transaction when it is broadcast to the network. Every secured transaction is included in a following block in accordance with standard blockchain principles.

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.

This concept works as an extension to Nakamoto Consensus. InstantSend enables transacted funds to be immediately and securely respent by the recipient, even before the transaction is included in a block.

Réception de transactions InstantSend

Recevoir une transaction InstantSend suppose deux obligations :

  1. La capacité à déterminer l’état InstantSend d’une transaction donnée.
  2. La capacité à ajuster l’état de confirmation indépendamment de la confirmation de bloc.

L’état InstantSend est typiquement déterminé par une connexion directe au « daemon » Dash, ZMQ notification, ou bien par l’utilisation du script de notification d’un portefeuille externe.

Connexion directe : l’état InstantSend peut être identifié par une connexion directe au « daemon » Dash au moyen du protocole JSON-RPC. L’attribut « instantlock » de la réponse JSON reflète l’état de la transaction et il est inclus dans les commandes suivantes :

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

Notification de portefeuille : le « daemon » Dash Core peut être configuré pour exécuter un script externe dès qu’une transaction InstantSend relative à ce portefeuille est détectée. On le configure en ajourant la ligne suivante au fichier dash.conf :

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

C’est typiquement utilisé avec un portefeuille qui a été doté d’adresses en lecture seule.

Diffusion des transactions InstantSend

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.

Ressources supplémentaires

Les ressources suivantes fournissent des informations supplémentaires sur InstantSend et sont destinées à fournir une compréhension plus complète des technologies sous-jacentes.

Services API

Cette documentation est également disponible au format PDF.

Plusieurs services d’API existent pour faciliter l’intégration rapide et simple de services au réseau Dash, parmi lesquels :

  • Diffusion de transaction
  • Taux de conversion
  • Change entre monnaies
  • Génération de facture

Les services d’API sont en général employés dans le but de vous épargner de faire tourner votre propre infrastructure pour interagir avec la blockchain. Cela comprend des mécanismes tels que :

  • Former une transaction et la diffuser au réseau.
  • Générer des adresses avec des portefeuilles HD.
  • Traiter le paiement avec des WebHooks.

Il existe plusieurs moyens d’accomplir cela, leur facteur principal de différenciation étant la grille tarifaire et les fonctionnalités fournies. La liste suivante de fournisseurs d’API essaie de souligner ces différences et fonctions clés, et inclut également un lien vers la documentation pertinente.

Insight

../_images/insight.png

https://github.com/dashevo/insight-api

L’API REST open source Insight est un moyen simple, pratique et puissant de lire des données sur le réseau Dash et de bâtir vos propres services à partir d’elles. Un guide pratique pour s’initier à l’API Insight et à son explorateur de blocs est disponible ici.

BlockCypher

../_images/blockcypher.png

https://www.blockcypher.com

BlockCypher est une API JSON simple, principalement RESTful, pour interagir avec des blockchains consultées via HTTP ou HTTPS depuis le domaine api.blockcypher.com.

BitGo

../_images/bitgo.png

https://www.bitgo.com

BitGo fournit une API REST simple et robuste et un SDK client, permettant d’intégrer des portefeuilles de monnaie numérique dans votre application. La compatibilité avec InstantSend est assurée.

  • Fonctionnalités : portefeuilles HD à multi-signature, opérations sur portefeuille, notifications WebSocket et WebHook, solutions de garde.
  • Modèle tarifaire : par appel API
  • Documentation : https://www.bitgo.com/api/v2/

ChainRider

../_images/chainrider.png

https://www.chainrider.io

ChainRider est un service dans le nuage qui fournit un jeu d’API REST pour la gestion et l’exploration des monnaies numériques.

  • Fonctionnalités : requêtes sur blockchain, notifications d’événement, diffusion de transaction, processeur de paiement, etc.
  • Grille tarifaire : essai gratuit, paiement par appel API
  • Documentation : https://www.chainrider.io/docs/dash

GoCoin

../_images/gocoin.png

https://gocoin.com

La plateforme GoCoin rend l’acceptation de Dash aussi simple que d’installer un plug-in. Le processeur de paiement est déjà implémenté pour chaque plateforme commerciale majeure. GoCoin se dédie particulièrement à aider les vendeurs de secteurs nécessitant une grande confidentialité et ceux de secteurs spécifiques. GoCoin assume tous les risques de transaction de tous les paiements de vos clients.

  • Fonctionnalités : facturation, taux de change, appels WebHook. GoCoin détient les clés privées sur son serveur, permettant au vendeur de retirer les fonds en cryptomonnaie ou de les convertir en monnaie fiduciaire.
  • Intégrations : WooCommerce, Magento, Prestashop, VirtueMart, ZenCart, OpenCart, OSCommerce, UberCart, nopCommerce, WHMCS, NATS4, Shopify.
  • Grille tarifaire : 1% de frais de traitement (https://gocoin.com/fees)
  • Documentation : https://gocoin.com/docs

CoinPayments

../_images/coinpayments.png

https://www.coinpayments.net

CoinPayments est une passerelle intégrée de paiement pour les cryptomonnaies telles que Dash. Des plug-ins de panier d’achat sont disponibles pour toutes les applications de commerce populaires. CoinPayments peut vous aider à installer un nouveau système de caisse, ou s’intégrer à votre système existant.

  • Fonctionnalités : facturation, taux de change, appels WebHook. CoinPayments détient les clés privées sur son serveur, permettant au vendeur de retirer les fonds en cryptomonnaie ou de les convertir en monnaie fiduciaire.
  • Intégrations : aMember Pro, Arastta, Blesta, BoxBilling, Drupal, Ecwid, Hikashop, Magento, OpenCart, OSCommerce, PrestaShop, Tomato Cart, WooCommerce, Ubercart, XCart, ZenCart
  • Grille tarifaire : 0,5% de frais de traitement (https://www.coinpayments.net/help-fees)
  • Documentation : https://www.coinpayments.net/apidoc

Ressources SDK

Cette documentation est également disponible au format PDF.

Des SDK (kits de développement logiciel) sont utilisés pour accélérer la conception et le développement d’un produit destiné au réseau Dash. Ces ressources peuvent être utilisées soit pour communiquer avec un fournisseur d’API, soit pour la création d’applications autonomes, par formation de transactions et/ou exécution de divers services de portefeuille.

Guide développeur Dash

../_images/dash-logo.png

https://dash-docs.github.io/en/developer-guide

Le guide développeur Dash a pour but de fournir l’information dont vous avez besoin pour comprendre Dash et commencer à créer des applications basées sur Dash. Pour utiliser au mieux cette documentation, vous pourrez souhaiter installer la version la plus récente du portefeuille logiciel Dash Core, soit depuis le code source, soit en tant qu’exécutable pré-compilé.

NodeJS/JavaScript : Dashcore

../_images/bitcore.png

https://bitcore.io

Dash Core est un « fork » de Bitcoin et tourne en tant que nœud complet Dash — vos applications tournent directement sur le réseau pair à pair. Pour le développement d’applications portefeuille, des index supplémentaires ont été ajoutés dans Dash, permettant de demander les soldes d’adresses, les historiques de transactions et les sorties non dépensées.

PHP : Bitcoin-PHP

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

Bitcoin-PHP est une implémentation de Bitcoin compatible avec Dash, conçue presque exclusivement en PHP.

Python : PyCoin

https://github.com/DeltaEngine/pycoin

PyCoin est l’implémentation de toute une série de routines utilitaires, qui peuvent être utiles pour manipuler Bitcoin ou Dash. Elle a été testée avec Python 2.7, 3.6 et 3.7.

Java : DashJ

../_images/bitcoinj.png

https://github.com/HashEngineering/dashj

DashJ est une bibliothèque permettant de travailler avec le protocole Dash. Elle peut gérer un portefeuille, envoyer ou recevoir des transactions (y compris InstantSend) sans besoin de disposer d’une copie locale de Dash Core, et a beaucoup d’autres fonctions avancées. Elle est conçue en Java mais peut être utilisée depuis tout langage compatible JVM : des exemples en Python et JavaScript sont inclus.

Objective-C: Dash-Sync

../_images/dash-logo.png

https://github.com/dashevo/dashsync-iOS

Dash-Sync est une architecture de la blockchain Dash pour iOS, en Objective-C. Elle implémente les propositions d’améliorations de Bitcoin (BIP) les plus pertinentes, ainsi que les propositions d’amélioration de Dash (DIP).

.NET : NBitcoin

../_images/dash-logo.png

https://github.com/MetacoSA/NBitcoin

NBitcoin est la bibliothèque Bitcoin la plus complète pour la plateforme .NET, et elle a été modifiée pour devenir compatible avec Dash. Elle implémente les propositions d’amélioration de Bitcoin (BIP) et celles de Dash (DIP) les plus pertinentes. Elle permet aussi un accès bas niveau aux composants de Dash, pour vous permettre de bâtir vos applications au-dessus.

BlockCypher

../_images/blockcypher.png

https://www.blockcypher.com

BlockCypher propose aussi des SDK client.

GoCoin

../_images/gocoin.png

https://gocoin.com

Distributeurs automatiques

Moocowmoo, membre de la communauté, a publié un code pour aider les vendeurs à concevoir leur propre distributeur automatique et à leur permettre d’y accepter les paiements InstantSend Dash. Le logiciel Dashvend peut aussi être utilisé pour créer toutes sortes de systèmes de paiement, y compris des systèmes sur point de vente, compatibles avec les paiements InstantSend.

Afficheurs de cours

Vous pouvez ajouter à votre site web un afficheur de cours simple en utilisant le générateur de code de CoinGecko.

Des widgets similaires avec des apparences différentes sont disponibles sur CoinLibWorldCoinIndex et Cryptonator, tandis qu’une API fournissant des informations analogues est disponible sur DashCentral.

QR-codes

Beaucoup de portefeuilles logiciels peuvent générer des QR-codes destinés à être scannés, pour simplifier la saisie d’une adresse Dash. Imprimer ces codes ou les publier sur votre site web facilite la réception de paiements ou de dons en dashs, à la fois en ligne ou hors ligne.

  • Dans le portefeuille logiciel Dash Core, allez sur l’onglet Recevoir, générez si nécessaire une adresse et double-cliquez-la pour afficher un QR-code. Faites un clic-droit sur le QR-code et choisissez Enregistrer l’image pour l’enregistrer comme fichier PNG.
  • Dans le portefeuille logiciel Dash pour Android, touchez Demander un paiement puis touchez le QR-code pour en afficher une version plus grande. Vous pouvez en faire une capture d’écran pour la conserver.
  • Dans le portefeuille logiciel Dash pour iOS, balayez vers la gauche pour accéder à l’écran Recevoir. Un QR-code et une adresse seront affichés. Vous pouvez en faire une capture d’écran pour le conserver.
  • Pour générer un QR-code depuis n’importe quelle adresse Dash, allez sur le générateur de QR-code CWA et collez simplement votre adresse Dash pour générer une image.