Vai al contenuto
buybitcoinsmart

Glossario / Protocollo e aggiornamenti

Speedy Trial

Che cos'è Speedy Trial?
Speedy Trial è la configurazione di attivazione usata per Taproot: una breve finestra di segnalazione dei miner con una soglia abbassata al 90 per cento e l'entrata in vigore rinviata a un'altezza di blocco fissa successiva.

Specificato nel BIP-341.

Speedy Trial è un deployment dei bit di versione di BIP-9 modificato, scritto dentro BIP-341 stesso anziché in un BIP a sé. I miner hanno avuto 109 giorni, dal 24 aprile all'11 agosto 2021, per impostare il bit 2 in 1.815 di 2.016 blocchi, con l'entrata in vigore fissata al blocco 709.632. Quell'altezza di entrata in vigore era fissata prima dell'apertura della segnalazione, quindi chi deteneva bitcoin conosceva il blocco esatto in cui le regole sarebbero cambiate.

Come funziona

Speedy Trial mantiene il metodo di conteggio di BIP-9, cambia due dei suoi numeri e aggiunge un parametro che BIP-9 non ha mai avuto.

BIP-9 conta i blocchi che segnalano in ogni periodo di retarget di 2.016 blocchi e porta un deployment da STARTED a LOCKED_IN non appena un periodo ne contiene abbastanza. La sua soglia è di 1.916 blocchi, il 95 per cento di un periodo, e la sua indicazione per la finestra è di un anno, 31.536.000 secondi dopo l'orario di inizio. Sia l'inizio sia la scadenza si leggono dal median time past, la mediana delle marche temporali di un blocco e dei suoi dieci predecessori, così l'orologio è quello della catena e non quello di nessuno.

Il deployment di Taproot ha ridotto la soglia a 1.815 blocchi, il 90 per cento, e ha dato alla finestra 9.417.600 secondi, dal timestamp epoch 1619222400 al 1628640000. L'aggiunta è stata min_activation_height. Con il semplice BIP-9 un deployment in LOCKED_IN diventa ACTIVE al confine di retarget successivo, quindi il lock-in vincola l'altezza di entrata in vigore solo ai 2.016 blocchi che lo seguono. Con Speedy Trial lo stato LOCKED_IN si ripete finché la catena non raggiunge l'altezza indicata, e solo allora passa ad ACTIVE. L'altezza della mainnet era 709.632, che corrisponde esattamente a 352 periodi di retarget e quindi a un confine di periodo. Il deployment si è attivato lì.

La separazione è tutta l'idea. La segnalazione risponde rapidamente a una domanda, e il lungo intervallo che segue è tempo perché tutti gli altri si aggiornino, non tempo speso a discutere.

Dove lo vedi

I parametri di Speedy Trial sono leggibili nel campo versione di ogni blocco minato durante la finestra di segnalazione del 2021.

Un blocco che segnala porta i bit superiori 001 più il bit proprio del deployment, quindi un segnale di Taproot sul bit 2 si legge come versione 0x20000004. I miner che richiedono lavoro incontrano lo stesso deployment tramite getblocktemplate, la cui chiave "rules" nomina i soft fork già attivi e la cui chiave "vbavailable" associa ciascuno di quelli in sospeso al suo bit. Il nome che BIP-341 dà a questo deployment, e quindi la stringa che legge un miner, è semplicemente "taproot".

L'esecuzione dello stesso deployment sulla testnet3 mostra a cosa serviva il ritardo. Ha usato marche temporali di inizio e di scadenza identiche, una soglia di 1.512 blocchi al 75 per cento e min_activation_height a 0, quindi nulla è stato rinviato oltre l'intervallo di un periodo del BIP-9 stesso e si è attivato all'altezza 2.011.968. La mainnet ha avuto l'attesa in più; la rete di test non aveva un'economia da proteggere. Su signet le regole erano sempre attive, quindi lì non c'è stata alcuna prova.

Speedy Trial vs UASF

Un soft fork attivato dagli utenti impone l'esito dal lato dei nodi, e Speedy Trial ha deliberatamente rifiutato quel potere.

Il meccanismo che lo impone è scritto in BIP-8 come lockinontimeout. Impostalo su true e il deployment riceve un periodo MUST_SIGNAL prima della scadenza, in cui i blocchi che non segnalano diventano non validi una volta esaurita la quota di blocchi non segnalanti consentita dal periodo, garantendo il lock-in del deployment sia che i miner cooperino sia che non lo facciano. BIP-8 raccomanda il flag per qualsiasi soft fork che si prevede debba affrontare opposizione politica da una quota non trascurabile dei miner, e nello stesso documento avverte che i nodi che lo eseguono possono seguire una catena con meno lavoro per un periodo prolungato e possono avere bisogno di collegarsi preferenzialmente tra loro.

Speedy Trial non portava alcun flag del genere. Mancare la soglia prima della scadenza metteva il deployment in FAILED e non faceva altro, ed è stato il compromesso scelto: nessuna garanzia di attivazione, nessun rischio di divisione della catena e una risposta a basso costo in entrambi i casi.

Da non confondere con

Domande frequenti

Esiste un BIP per Speedy Trial?

No. Speedy Trial non ha un numero di BIP proprio. I suoi parametri e la sua macchina a stati modificata sono scritti nella sezione Deployment di BIP-341, la specifica di Taproot, descritti lì come BIP-9 modificato per usare una soglia più bassa, con un parametro aggiuntivo min_activation_height.

Che cosa sarebbe successo se i miner non avessero segnalato in tempo?

Il deployment sarebbe passato a FAILED alla scadenza dell'11 agosto 2021 e nulla sulla rete sarebbe cambiato. La macchina a stati di Speedy Trial non portava alcun flag di attivazione forzata del tipo che BIP-8 offre tramite lockinontimeout, quindi se i miner non avessero mai raggiunto la soglia il tentativo si sarebbe semplicemente concluso.

Il metodo di attivazione influisce sui bitcoin che già detengo?

Solo attraverso ciò che ha attivato. Taproot è diventato vincolante al blocco 709.632 e, come soft fork, ha lasciato il software più vecchio funzionante senza modifiche, quindi gli output creati prima sono rimasti spendibili. Il metodo ha deciso i tempi e il rischio di una divisione, non le regole in sé.

Leggi anche

Termini correlati

Altro in Protocollo e aggiornamenti

Leggi questa pagina in inglese