KeySpend

Difficoltà: avanzato

Argomento: tecnologia


DEFINIZIONE

Gli output (UTXO) Taproot si possono spendere in due modi: KeySpend e ScriptSpend. Con KeySpend si deve fornire la chiave, o meglio una firma bip-schnorr per la chiave pubblica nell'output.

Contrariamente ai precedenti formati delle transazioni Bitcoin, l'output di Taproot non distingue tra un public KeySpend path e uno ScriptSpend path. È sempre come un public key path: scriptPubKey contiene un programma testimone composto da due elementi:

  • SegWit version: 1
  • 32-byte witness program, chiave pubblica TapRoot codificata secondo le regole BIP340

Quindi ogni transazione TapRoot è una transazione P2TR Pay-to-TapRoot.

Se c'è un solo soggetto che controlla un'output TapRoot, si può utilizzare un Public KeySpend Path. Questo è il modo più semplice per spendere l'output di TapRoot.

Un altro caso di Public KeySpend Path è un accordo di collaborazione reciproca tra tutte le parti controllanti. In questo caso, tutte le parti creano in modo collaborativo la firma aggregata della transazione utilizzando le loro chiavi private indipendenti, che sono state precedentemente utilizzate per creare la chiave pubblica aggregata, definita nel programma witness dell'output.

Indipendentemente dalla possibilità di utilizzare il public key path per spendere l'output di P2TR, ci può essere un altro modo per spendere: uno script path. Può essere utilizzato come caso di ripiego quando la spesa collaborativa è impossibile. Un singolo script o molti script organizzati nel Merkle tree possono essere utilizzati per coprire molti scenari diversi.

La differenza principale delle transazioni Taproot rispetto alle transazioni Bitcoin convenzionali è che gli script che controllano le monete sono contenuti all'interno di una struttura ad albero chiamata ramo tapScript che è impegnata privatamente nella transazione. Questi script non hanno bisogno di essere rivelati se il percorso (path) KeySpend viene utilizzato per spostare le monete. Mentre una transazione convenzionale richiede che l'intero script sia rivelato, una transazione Taproot può essere spesa con una chiave che evita di rivelare gli script e se il percorso KeySpend non è fattibile, solo la parte eseguita dello script viene rivelata sulla blockchain. Tutti gli altri percorsi degli script possono rimanere privati, o essere rivelati selettivamente off-chain.


aggiornato il 2022-10-21