Glossario / Mining e consenso
Limite di sigop per blocco
- Che cos'è il limite di sigop per blocco?
- Il limite di sigop per blocco limita ogni blocco bitcoin a 80.000 unità di costo delle operazioni di firma, un budget di verifica contato separatamente dal budget di dimensione di 4.000.000 unità di peso.
Specificato nel BIP-141.
Verificare le firme costa tempo a un nodo, perciò il consenso misura quel lavoro con un budget proprio invece di imputarlo allo spazio del blocco. Il BIP141 ha fissato il contatore a 80.000 unità e ha assegnato a ogni operazione di firma legacy un prezzo di quattro di esse, quadruplicando un tetto precedente di 20.000. Un normale prelievo a chiave singola o Taproot spende una manciata di unità, quindi il tetto è invisibile a quasi tutti coloro che spostano bitcoin.
Come funziona
Il limite di sigop per blocco è un totale progressivo, sommato transazione per transazione mentre un nodo collega un blocco, e un blocco il cui totale supera 80.000 è invalido.
Non viene eseguito nulla per produrlo: un nodo analizza i byte degli script e conta gli opcode, quindi una verifica di firma in un ramo che il pagamento non prende mai viene addebitata per intero. Il pessimismo è deliberato: un nodo deve sapere che un blocco è sostenibile prima di verificare qualsiasi cosa.
Si sommano tre conteggi, e non tutti ricadono sulla stessa transazione. Il conteggio legacy legge gli script di input della transazione stessa e i suoi script di output, moltiplicati per quattro, quindi un'operazione scritta in uno scriptPubKey viene addebitata a chi crea l'output e non a chi lo spende dopo. Il conteggio pay to script hash legge il redeem script che un input che spende rivela, anch'esso moltiplicato per quattro. Il conteggio del witness conta al valore nominale: un'unità per un input P2WPKH, e uno script P2WSH addebitato esattamente come lo sarebbe stato sotto P2SH.
Una differenza tra queste analisi costa denaro reale. Le letture P2SH e witness applicano lo sconto del BIP141, per cui OP_CHECKMULTISIG preceduto da OP_1 a OP_16 conta da uno a sedici invece delle venti fisse; l'analisi legacy non lo applica mai. A un output multisig semplice due di tre vengono addebitate le venti operazioni complete, ottanta unità di budget, e vengono addebitate alla creazione.
Il tapscript è uscito del tutto dal budget. Il BIP342 ha tolto le operazioni di firma del tapscript dalle 80.000 dell'intero blocco e ha dato a ogni script un proprio margine: 50 unità, più la dimensione serializzata del witness di quell'input, decrementato di 50 ogni volta che un opcode di firma viene eseguito con una firma reale allegata. Cinquanta è quattro milioni di peso diviso ottantamila sigop, il rapporto tra i due tetti.
Dove lo vedi
La politica di relay incontra il limite di sigop per blocco molto prima del consenso, tramite tre costanti di Bitcoin Core più strette della regola della rete.
Una singola transazione non può rivendicare più di un quinto del budget del blocco, 16.000 unità. Un input pay to script hash standard può rivelare un redeem script che contiene al massimo 15 operazioni di firma. Un terzo conteggio legge le operazioni non witness dove possono effettivamente essere eseguite e non dove si trovano, e blocca il relay oltre 2.500 per transazione; legge lo scriptPubKey che viene speso, che il conteggio dell'intero blocco ha già addebitato alla creazione.
Il limite raggiunge anche la tua commissione. L'impostazione bytespersigop di Bitcoin Core, 20 per impostazione predefinita, sostituisce il peso di una transazione con il maggiore tra il suo peso reale e il suo costo in sigop moltiplicato per venti, così una transazione pesante di operazioni di firma per la sua dimensione viene prezzata come più grande di quanto sia. Creare un output multisig semplice è il modo abituale di incapparvi.
I miner incontrano il budget come un secondo vincolo accanto al peso, che il BIP342 indica come sua ragione per togliere il tapscript: due tetti rendono la costruzione di un blocco più difficile di uno solo. Core riserva 400 unità per gli output coinbase prima di riempire un template.
Limite di sigop per blocco vs peso del blocco
Il peso del blocco conta i dati e il limite di sigop per blocco conta il lavoro di verifica, e un blocco è pieno nel momento in cui raggiunge l'uno o l'altro tetto. Il peso è il tetto che un blocco ordinario raggiunge per primo, perché un input P2WPKH costa un'unità e una spesa Taproot non aggiunge nulla, quindi il budget di sigop decide l'esito solo per un blocco carico di script in stile vecchio. Dividendo un tetto per l'altro si ottengono 50 unità di peso per operazione di firma, il rapporto che il BIP342 ha riutilizzato per prezzare il budget del tapscript e la cosa più vicina che il protocollo abbia a un tasso di cambio tra byte e verifiche di firma.