commitment transaction
transazione di impegno
commitment transaction
transazione di impegno
Difficoltà: avanzato
Argomento: tecnologia
DEFINIZIONE
Una commitment transaction, in italiano traducibile in transazione di impegno, è una transazione Bitcoin firmata da entrambi i partner di un canale Lightning Network, che rappresenta l'ultimo saldo del canale, che viene scambiata tra i partnon e viene immediatamente salvata sulla blockchain on-chain.
Ogni volta che viene effettuato o inoltrato un nuovo pagamento utilizzando il canale Lightning, il saldo del canale si aggiorna e viene firmata una nuova commitment transaction con due output spendibili, uno per ogni partner.
Le commitment transaction garantiscono che non sia necessario fidarsi del proprio partner del canale per recuperare il balance del canale in caso di problemi.
Nel caso di un canale tra Alice e Bob, entrambi i partecipanti mantengono una copia della commitment transaction firmata da entrambi.
La chiusura normale di un canale viene effettuata tramite una closing transaction firmata in accordo da entrambi i partner. Tuttavia, sia Alice che Bob possono unilateralmente chiudere il canale in qualsiasi momento inviando una commitment transaction alla blockchain Bitcoin.
La rete non è in grado di distinguere se la commitment transaction trasmessa sia la più recente o una più vecchia, ma l'invio di una versione più vecchia e quindi obsoleta della transazione è considerato un comportamento scorretto e può essere sanzionato dall'altro partner attraverso una penalty transaction o transazione di penalità, che gli permette di rivendicare tutti i fondi del canale per sé.
Spesa ritardata (Timelocked) verso se stessi
Le commitment transaction sono asimmetriche nel modo in cui gestiscono i fondi in caso di chiusura forzata di un canale Lightning. Se una delle parti tenta di chiudere il canale trasmettendo una vecchia versione della transazione, il partner onesto ha la possibilità di contestare questa azione. In questo scenario:
- I fondi del partner che ha avviato la chiusura forzata (e che ha tentato di trasmettere una transazione obsoleta) vengono indirizzati verso un contratto di arbitrato. Questo contratto impone un periodo di attesa, permettendo al partner onesto di presentare una prova di illecito.
- I fondi del partner onesto vengono invece inviati immediatamente al suo wallet.
Questa asimmetria concede al partner onesto il tempo necessario per confutare la transazione illecita e rivendicare i propri fondi, fornendo così un meccanismo di sicurezza contro comportamenti fraudolenti.
Le fee della commitment transaction vengono impostate durante la negoziazione della transazione, e non possono essere modificate senza entrambe le firme; poiché non si possono conoscere quali saranno le fee in futuro per consentire di confermare la transazione in tempo, possono essere impostate con un importo significativamente più alto, fino a cinque volte, rispetto alle stime al momento della negoziazione.
La commitment transaction include output aggiuntivi per eventuali HTLC in sospeso, rendendola più grande in termini di byte rispetto a una closing transaction di chiusura reciproca.
Di solito questo non sarebbe troppo grave.
Ma se c'è un congestionamento della rete, con molti HTLC in attesa che devono essere inclusi nella transazione, la transazione può avere delle dimensioni tali che con un mercato di fee molto alto potrebbero portare ad avere delle fee superiori all'intero balance del canale.
I due output sono chiamati:
- to_local
- to_remote
Questo il codice script del primo output (to_local) di una commitment transaction:
OP_IF
# Penalty transaction
<revocationpubkey>
OP_ELSE
`to_self_delay`
OP_CHECKSEQUENCEVERIFY
OP_DROP
<local_delayedpubkey>
OP_ENDIF
OP_CHECKSIG
Questo script ha 2 condizioni, e l'importo può essere speso se viene soddisfatta una delle due possibili condizioni:
- firmare la revocationpubkey
- firmare la local_delayedpubkey dopo un numero di blocchi specificati in to_self_delay
- Vedi anche
- closing transaction
- commitment
- force close chiusura forzata
- Funding Transaction
- Lightning Channel Canale Lightning
- Lightning Network
- penalty transaction
- TX (Transaction) Transazione
aggiornato il 2025-03-27