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.

Funciones de spork#

Las Sporks se configuran usando valores enteros. Muchas sporks se pueden configurar para un tiempo en una fecha de época particular (número de segundos que han transcurrido desde el 1 de enero de 1970) para especificar la hora a la que se activarán. Las sporks habilitadas se configuran en 0 (segundos hasta la activación). Esta función se usa a menudo para establecer una fecha de habilitación de spork en el futuro, la cual esta deshabilitada de manera efectiva hasta que se modifica. Las siguientes sporks existen actualmente en la red y cumplen las funciones que se describen a continuación:

Distinto en la versión 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

Governs the ability of Dash clients to use InstantSend functionality. InstantSend is described in DIP0010 LLMQ-based InstantSend.

SPORK_3_INSTANTSEND_BLOCK_FILTERING

Si está habilitado, los masternodes rechazarán los bloques que contengan transacciones en conflicto con las transacciones de InstantSend bloqueadas pero no confirmadas.

SPORK_9_SUPERBLOCKS_ENABLED

Si está habilitado, los superbloques se verifican y emiten para pagar a los ganadores de propuestas.

SPORK_17_QUORUM_DKG_ENABLED

Enables the DKG process to create LLMQ quorums. This spork will be turned on once 80% masternodes are upgraded to v0.14, which will enable DKG and DKG-based PoSe.

SPORK_19_CHAINLOCKS_ENABLED

Enables ChainLocks, a mechanism of preventing the risk to payments introduced by blockchain reorganization events. ChainLocks are described in DIP0008 ChainLocks.

SPORK_21_QUORUM_ALL_CONNECTED

Enables connections between all masternodes in a quorum to optimize the signature recovery process.

SPORK_23_QUORUM_POSE

Enforces Proof of Service requirements for masternodes to support a minimum protocol version and maintain open ports.

SPORK_24_TEST_EHF

Supports enhanced hard fork (EHF) testing.

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

Salidas de spork show y spork active en la consola de depuración Dash Core#