Glossario / Indirizzi e chiavi
Multisig P2SH
- Che cos'è il multisig P2SH?
- Il multisig P2SH nasconde un redeem script m di n dietro un indirizzo 3, e il limite di 520 byte dello script lo circoscrive a quindici chiavi pubbliche.
Specificato nel BIP-16.
Un redeem script 2 di 3 occupa 105 byte: un opcode per 2, tre chiavi compresse da 33 byte con i rispettivi prefissi di push, un opcode per 3 e OP_CHECKMULTISIG. Spendere un input costa circa 297 vbyte, all'incirca il triplo di un input SegWit nativo a chiave singola. È stata la configurazione standard di custodia condivisa dal 2012 fino a quando i dati witness hanno ottenuto il loro sconto.
Come funziona
Un redeem script multisig P2SH elenca il quorum direttamente: il numero di firme richieste, poi ogni chiave pubblica partecipante, poi il numero totale di chiavi, poi OP_CHECKMULTISIG. Nessuno lo vede finché i bitcoin restano non spesi, perché l'output si impegna solo al suo hash di 20 byte.
Il tetto di quindici chiavi è aritmetica, non una scelta di policy. Quindici chiavi compresse da 34 byte ciascuna, contando il prefisso di push, arrivano a 510 byte; aggiungendo i due opcode di conteggio e OP_CHECKMULTISIG si arriva a 513, che sta dentro il limite di 520 byte per un singolo elemento dello stack. Una sedicesima chiave non ci sta. Le regole di consenso di Bitcoin consentono OP_CHECKMULTISIG fino a 20 chiavi, ma un redeem script P2SH fisicamente non può portarne altrettante.
C'è una vecchia stranezza nel percorso di spesa. OP_CHECKMULTISIG preleva dallo stack un elemento in più rispetto a quelli che usa, un bug dell'implementazione originale che non si è mai potuto rimuovere senza un hard fork. I firmatari lo aggirano inserendo prima un elemento fittizio, e il BIP-147 ha reso obbligatorio che quell'elemento sia vuoto, disposizione attivata insieme a SegWit al blocco 481.824. Un input completato quindi si legge così: push vuoto, firma, firma, script di riscatto.
Dove lo vedi
Le tesorerie aziendali, le disposizioni per l'eredità e la conservazione offline degli exchange costruite tra il 2013 e il 2018 sono in gran parte multisig P2SH. Il deposito a garanzia nei vecchi marketplace peer-to-peer usava 2 di 3 con la piattaforma che deteneva la terza chiave, ed è così che si poteva risolvere una controversia senza che nessuno dei due operatori avesse il controllo esclusivo dei bitcoin.
L'obbligo di backup coglie di sorpresa molte persone. Ogni cofirmatario ha bisogno delle chiavi pubbliche estese di tutti gli altri cofirmatari, o di un descriptor che le registri, perché il redeem script non si può ricostruire da una sola frase di recupero. Avere due delle tre chiavi private e nessuna delle chiavi pubbliche ti lascia nell'impossibilità di spendere. Annota il descriptor insieme ai backup della frase di recupero e prova un ripristino prima che la configurazione contenga qualcosa che ti importa.
Oggi i nuovi quorum si costruiscono con P2WSH o Taproot, perché la stessa policy costa molto meno da spendere e non è limitata a quindici chiavi. Le casseforti P2SH esistenti funzionano esattamente come prima e non c'è alcuna migrazione forzata.
Multisig P2SH vs multisig
Il multisig è la regola di spesa e il multisig P2SH è un modo di scriverla. Lo stesso requisito 2 di 3 può risiedere in un output multisig semplice delle prime regole di bitcoin, in un redeem script P2SH, in uno script witness P2WSH o, con Taproot, dentro un'unica chiave aggregata che si spende come un pagamento ordinario e non rivela alcun quorum. Scegliere P2SH è una decisione sulle commissioni, sul tetto di quindici chiavi e sul fatto che tutta la tua configurazione di firma diventa di dominio pubblico la prima volta che muovi bitcoin.