Sporks#

A multi-phased fork, colloquially known as a « spork », is a mechanism unique to Dash used to safely deploy new features to the network through network-level variables to avoid the risk of unintended network forking during upgrades. It can also be used to disable certain features if a security vulnerability is discovered - see the features page for a brief introduction to sporks.

Enforcement of spork-controlled code can be activated remotely by members of the core development team signing a network message using a relevant private key. Should problems arise, the code can be deactivated in the same manner, without the need for a network-wide rollback or client update. This documentation describes the meaning of each spork currently existing on the network, and how to check their respective statuses.

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 :

Modifié dans la version v21.0.0: Mainnet spork values were hardened by immutably setting them. Sporks continue to be valuable for testing on other networks; however, on mainnet, the risks of maintaining them now outweigh the benefits of retaining them.

SPORK_2_INSTANTSEND_ENABLED

Dirige la capacité des clients Dash à utiliser la fonctionnalité InstantSend. InstantSend est décrit dans DIP0010 LLMQ-based 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_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_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_21_QUORUM_ALL_CONNECTED

Active les connexions entre tous les masternodes selon un quorum, pour optimiser la procédure de restauration de signature.

SPORK_23_QUORUM_POSE

Contraint les masternodes à des exigences de preuve de service, pour garantir une version minimale de protocole et maintenir des ports ouverts.

SPORK_24_TEST_EHF

Supports enhanced hard fork (EHF) testing.

Affichage de l’état de spork#

The spork show and spork active commands issued in the debug window (or from dash-cli on a masternode) allow you to interact with sporks. You can open the debug window by selecting Window > Console.

../../../_images/dashcore-sporks.png

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