Développeurs

Dash Core a publié un guide développeur très complet pour aider les nouveaux développeurs à se lancer dans le code Dash, et comme référence pour les développeurs plus expérimentés. Ce guide peut être mis à profit pour intégrer rapidement et efficacement des applications externes à l’écosystème Dash. Chacun peut contribuer au guide en signalant un problème ou en soumettant une requête « pull » sur GitHub. La documentation est disponible à cette adresse : https://dash-docs.github.io/en/

L’équipe Dash Core gère également la feuille de route Dash, qui précise les étapes prévues pour les versions futures de Dash et inclut des détails techniques spécifiques sur la façon dont l’équipe de développement compte concrétiser chaque étape. La feuille de route Dash est accompagnée des propositions d’amélioration de Dash (Dash Improvement Proposals, DIP), qui comportent des explications techniques détaillées sur les changements proposés au protocole Dash lui-même.

Les sections restantes, disponibles ci-dessous, décrivent en pratique les étapes nécessaires pour accomplir les tâches communes de développement de Dash.

Sporks

Un fork à plusieurs étapes, connu informellement sous le nom de « spork », est un mécanisme unique à Dash qui est utilisé pour déployer de manière sûre des nouvelles fonctionnalités du réseau, à travers des variables au niveau du réseau, permettant ainsi d’éviter le risque de forks non souhaités du réseau pendant les mises à jour. Il peut aussi être utilisé pour désactiver certaines fonctionnalités si une faille de sécurité est découverte — voir ici une brève introduction aux sporks. La présente documentation explique le sens de chaque spork actuellement existant sur le réseau, et comment vérifier leur état respectif.

Fonctionnalités de spork

Les sporks sont configurés avec des valeurs entières. Beaucoup de sporks peuvent être configurés pour une époque « datetime » donnée (nombre de secondes écoulées depuis le 1er janvier 1970) afin d’indiquer la date et l’heure auxquelles ils deviendront actifs. Les sporks activés sont configurés sur 0 (secondes avant l’activation). Cette fonction est souvent utilisée pour configurer l’activation d’un spork si loin dans le futur qu’il est, en pratique, désactivé jusqu’à nouvel ordre. Les sporks suivants sont actuellement actifs sur le réseau et permettent les fonctions décrites ci-dessous :

SPORK_2_INSTANTSEND_ENABLED
Contrôle la capacité des clients Dash à utiliser la fonctionnalité InstantSend.
SPORK_3_INSTANTSEND_BLOCK_FILTERING
Lorsqu’il est activé, les masternodes rejettent les blocs contenant des transactions en conflit avec des transactions InstantSend verrouillées mais non confirmées.
SPORK_5_INSTANTSEND_MAX_VALUE
Fixe le montant maximal en dashs qui peut être inclus dans une transaction InstantSend.
SPORK_6_NEW_SIGS
Active un nouveau format de signature pour des messages réseau spécifiques à Dash apparus dans Dash 12.3. Pour en savoir plus, voir ici et ici.
SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT
Lorsqu’il est activé, les mineurs doivent payer 50% de la récompense de bloc à un masternode en cours d’attente de sélection, sinon le bloc sera considéré non valide.
SPORK_9_SUPERBLOCKS_ENABLED
Lorsqu’il est activé, les « superblocs » sont vérifiés puis générés pour payer les propositions budgétaires gagnantes.
SPORK_10_MASTERNODE_PAY_UPDATED_NODES
Vérifie si les masternodes tournant sous une version antérieure du protocole sont considérés comme éligibles aux paiements. Cela peut être utilisé comme incitation aux masternodes de se mettre à jour.
SPORK_12_RECONSIDER_BLOCKS
Impose la réindexation d’un nombre donné de blocs pour corriger les forks non intentionnels du réseau.
SPORK_13_OLD_SUPERBLOCK_FLAG
Obsolète. Pas de fonction réseau depuis le bloc 614820.
SPORK_14_REQUIRE_SENTINEL_FLAG
Détermine si les masternodes sont éligibles aux paiements si leur status est WATCHDOG_EXPIRED, c’est-à-dire si Sentinel ne tourne pas correctement.
SPORK_15_DETERMINISTIC_MNS_ENABLED
Vérifie si les masternodes déterministes sont requis. Si ce spork est activé, l’ancienne logique de liste des masternodes ne fonctionnera plus, et les masternodes non mis à jour ne seront plus éligibles aux paiements.
SPORK_16_INSTANTSEND_AUTOLOCKS
Active le verrouillage automatique des transactions ayant moins qu’un certain nombre d’entrées, et supprime les frais InstantSend précédemment en vigueur. Permet à tout nœud de demander le verrouillage de transaction, pas seulement au nœud expéditeur.
SPORK_17_QUORUM_DKG_ENABLED
Active la procédure DKG pour créer les quorums LLMQ. Ce spork sera activé lorsque 80% des masternodes auront effectué la mise à jour 0.14, ce qui activera la preuve de service (PoSe) DKG et basée sur DKG.
SPORK_19_CHAINLOCKS_ENABLED
Active ChainLocks, un mécanisme d’élimination des risques de paiement que constituent les réorganisations de blockchain. ChainLocks sont décrits dans la DIP0008 ChainLocks.
SPORK_20_INSTANTSEND_LLMQ_BASED
À son activation, les paiements InstantSend traditionnels seront remplacés par InstantSend basé sur LLMQ, tel que décrit dans la DIP0010 InstantSend basé sur LLMQ.

Affichage de l’état de spork

Les commandes spork show et spork active sont saisies dans la fenêtre de débogage (ou en utilisant « dash-cli » sur un masternode) et vous permettent d’interagir avec les sporks. On peut ouvrir la fenêtre de débogage dans Dash Core par le menu Outils > Console de débogage.

../_images/dashcore-sporks.png

affichage de spork et sortie active de spork dans la console de débogage du portefeuille logiciel Dash Core

Historique des versions

Les notes de publication complètes et l’historique des versions de Dash sont disponibles ici :