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

Sporks werden über Integer-Variablen eingesetzt. Viele Sporks verwenden eine konkrete Unixzeit (die Zahl der Sekunden, die seit dem 01. Januar 1970 verstrichen sind), um den Startzeitpunkt genau zu definieren. Aktivierte Sporks werden auf 0 gesetzt (Zeit bis zur Aktivierung). Diese Funktion wird oft dazu verwendet einen Zeitpunkt sehr weit in die Zukunft zu verlegen, damit der Spork dadurch deaktiviert wird. Die folgenden Sporks existieren momentan im Netzwerk und führen die beschriebenen Funktionen aus:

Geändert in 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

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

SPORK_3_INSTANTSEND_BLOCK_FILTERING

Wenn aktiviert, lehnen Masternodes Blöcke ab, deren Transaktionen im Widerspruch zu festgesetzten, aber unbestätigten, InstantSend-Transaktionen stehen.

SPORK_9_SUPERBLOCKS_ENABLED

Wenn aktiviert, werden Superblocks verifiziert und zahlen die festgesetzten Beträge an die Proposal-Gewinner aus.

SPORK_17_QUORUM_DKG_ENABLED

Aktiviert den DKG-Prozess zum Schaffen von LLMQ-Quoren. Dieser Spork wird aktiviert werden, sobald 80% der Masternodes auf v0.14 geupgraded wurden. Hierdurch werden DKG und DKG-basiertes PoSe aktiviert.

SPORK_19_CHAINLOCKS_ENABLED

Aktiviert ChainLocks, einen Mechanismus, der das Risiko, eine Reorganisation der Blockchain zu erleiden, ausschaltet. ChainLocks werden in DIP0008 ChainLocks beschrieben.

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.

Spork-Status anzeigen#

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

Ausgabe von spork show und spork active in der Dash Core Debugkonsole#