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

Cette documentation est aussi disponible au format PDF.

Dash Core version 0.13.x est un “fork » de Bitcoin et partage avec lui beaucoup de fonctionnalités. Les commandes JSON-RPC 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.

Notes sur l’intégration de la version 0.13.0

Cette documentation est également disponible au format PDF.

Dash 0.13.0 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.

Généralités sur 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 en toute sécurité par les vendeurs ou d’autres fournisseurs de service. Toutes les transactions InstantSend sont sécurisées pendant 25 blocs par le réseau des masternodes, dès le moment de leur diffusion. La transaction est minée dans le bloc suivant, conformément aux principes standard de la blockchain.

InstantSend est rendu possible par le réseau des masternodes, qui comprend environ 4800 serveurs. Ces nœuds se différencient des nœuds standard car ils fournissent une preuve de possession de 1000 dashs. Une des responsabilités de ce type spécial de serveurs est d’opérer un « verrouillage de transaction », également connu sous le nom d’InstantSend.

Ce concept fonctionne en complément du consensus de réseau. Quand une transaction InstantSend a lieu, le réseau accomplit une étape supplémentaire de validation, au cours de laquelle il examine les deux propriétés suivantes de la transaction :

  1. Âge de l’entrée : le réseau exigera que toutes les entrées aient au moins 6 confirmations.
  2. Composition de l’entrée : le nombre d’entrées utilisées détermine les frais requis.
    1. 1 à 4 entrées : frais de 0,00001 dash/ko pour l’utilisation automatique d’InstantSend.
    2. Plus de 5 entrées : des frais de 0,0001 dash par entrée sont demandés.

Si les conditions d”Âge de l’entrée et de Composition de l’entrée sont remplies, le réseau « verrouille » les entrées liés à cette transaction durant 25 blocs. Les transactions constituées de 4 entrées ou moins sont appelées « transactions simples » et n’engendrent pas de frais supplémentaires.

InstantSend automatique

Dash Core version 0.13.x introduit la fonctionnalité InstantSend automatique. Toute transaction considérée comme « transaction simple », et diffusée en tant que transaction standard, sera automatiquement diffusée en tant que transaction InstantSend.

Transactions InstantSend et transactions standard

Le terme “InstantSend » est employé pour décrire une transaction standard qui bénéficie de garanties supplémentaires de la part du réseau des masternodes. En conséquence, et du point de vue d’une intégration, il n’y a pas de différence technique entre les deux types de transaction.

La différence la plus notable est dans la manière dont sont appliquées les règles de confirmation au sein d’un système. Le système de réception doit être informé de l’état InstantSend afin d’appliquer en toute sécurité les règles de confirmation propres à cette technologie.

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

InstantSend automatique entraîne deux obligations pour le système à intégrer :

  1. La capacité à connaître le nombre d’entrées d’une transaction donnée.
  2. La capacité à appliquer des frais plus élevés dans le cas de 5 entrées ou plus.

Dans beaucoup de cas, un système intégré contiendra déjà tout le nécessaire pour garder les frais de transaction à un niveau minimum, par optimisation des entrées utilisées. Si cela est vrai, et qu’on peut supposer que seules des « transactions simples » sont générées, alors aucune tâche supplémentaire n’est requise.

Dans les cas où cela n’est pas possible ou en l’absence d’informations, le système intégré doit être capable de calculer des frais sur la base du nombre d’entrées utilisées pour générer la transaction. Ces frais de 0,0001 dash par entrée doivent être appliqués pour que la transaction soit bien diffusée en tant que transaction InstantSend. Dans ces cas-là, il est important que le marqueur « instantsend » soit positionné sur « vrai » (« true ») lorsque la commande sendrawtransaction est diffusée, par exemple :

sendrawtransaction "hexstring" false true

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.