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.

Spork funções#

Sporks são definidos usando valores inteiros. Muitos sporks podem ser definidos para uma data específica (número de segundos decorridos desde 1º de janeiro de 1970) para especificar a hora em que eles serão ativados. Os sporks ativados estão definidos como 0 (segundos até a ativação). Esta função é freqüentemente usada para definir uma data de ativação do spork até o futuro no futuro, que é efetivamente desativada até ser alterada. Os seguintes sporks existem atualmente na rede e servem funções conforme descrito abaixo:

Alterado na versão 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

Se ativado, os masternodes rejeitarão os blocos que contêm transações em conflito com transações InstantSend bloqueadas mas não confirmadas.

SPORK_9_SUPERBLOCKS_ENABLED

Se ativado, os superblocos são verificados e emitidos para pagar os vencedores das propostas.

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.

Visualizar o status do 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

spork show e spork active output no console de depuração do Dash Core#