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

Cette documentation est aussi disponible au format PDF.

Dash Core est un “fork » de Bitcoin Core et partage avec lui beaucoup de fonctionnalités. Les différences principales sont relatives aux commandes JSON-RPC, qui ont été personnalisées pour être compatibles avec des fonctionnalités uniques à Dash telles qu’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, dans sa version 0.13.0 et ultérieure, implémente les transactions spéciales DIP002, qui forment la base de nouveaux types de transactions fournissant des métadonnées sur chaîne, pour rendre possibles différents mécanismes de consensus. Les types de transactions spéciales sont les suivants :

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

Cette documentation est aussi disponible au format PDF.

InstantSend est une fonctionnalité fournie par le réseau Dash qui permet aux transactions à 0 confirmation d’être acceptées et aussitôt dépensées à nouveau, en toute sécurité. Le réseau tâche de verrouiller les entrées de chaque transaction valide lorsqu’elle est diffusée au réseau. Chaque transaction sécurisée est incluse dans un bloc suivant, conformément aux principes standard de la blockchain.

InstantSend est rendu possible par le réseau des masternodes, qui comprend environ 5000 serveurs. Ces nœuds se différencient des nœuds standard en prouvant qu’ils possèdent 1000 dashs, ce qui rend le réseau hautement résistant aux attaques Sybil. Les masternodes forment des quorums de masternode de longue durée (Long-Living Masternode Quorums, LLMQ) dont la mission est de garantir presque instantanément aux participants de la transaction que ses entrées ne peuvent pas être dépensées à nouveau, et que la transaction sera incluse dans un bloc ultérieur, sans pouvoir faire l’objet d’une contestation.

Ce concept constitue une extension du consensus Nakamoto. InstantSend permet aux fonds de la transaction d’être immédiatement retransmis par le destinataire en toute sécurité, avant même que la transaction ne soit incluse dans un bloc.

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 :

Notification ZMQ : dès qu’une transaction est incluse ou verrouillée dans le tampon mémoire, les notifications ZMQ peuvent être diffusées par le nœud. Une liste des notifications ZMQ possibles peut être consultée ici.

Les notifications suivantes sont utiles pour reconnaître les transactions et leurs verrouillages instantanés correspondants :

  • 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

Depuis que la version 0.14.0 de Dash a lancé les LLMQ sur le réseau Dash, les quorums tentent par défaut de verrouiller chaque transaction valide, sans frais supplémentaires ni action à effectuer par le portefeuille d’envoi ou l’utilisateur. Une transaction est éligible pour InstantSend quand chacune de ses entrées est considérée comme confirmée. Cela est le cas dès qu’une des conditions suivantes est vraie :

  • la transaction précédente à laquelle l’entrée fait référence est confirmée par 6 blocs
  • la transaction précédente est confirmée par un verrouillage InstantSend antérieur
  • le bloc contenant la transaction précédente est verrouillé sur chaîne

Lorsqu’on vérifie le verrouillage InstantSend d’une transaction précédente, il est important de le faire également sur des transactions non encore minées (dans le tampon mémoire). Cela rend possible le verrouillage InstantSend chaîné.

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.