Tuesday, November 5, 2024

transactions – SIGHASH_ANYONECANPAY mediated tx modification

You might be heading in the right direction. Alice utilizing SIGHASH_ALL | SIGHASH_ANYONECANPAY permits every other consumer so as to add further inputs to the transaction. Nevertheless, since Alice’s signature dedicated to all outputs (as a result of SIGHASH_ALL half), the extra payers can not change the outputs of the transaction, and their total enter will solely contribute to the transaction charges.

Assuming that this new transaction will increase the feerate and absolute charge sufficiently to displace the unique transaction together with any potential descendant transactions, it will invalidate the descendant transaction. Inputs decide to a selected UTXO explicitly per the outpoint (txid:vout). Because the addition of an enter would create a brand new transaction that has a brand new TXID, the enter to the unique’s descendant transaction would stop to be anticipated to exist and because the unique transaction is dropped from the mempool, the descendant would change into invalid and be evicted alongside.

Since an enter has to commit to precisely one particular UTXO it’s spending, there usually are not “two selections of UTXOs to reference” for the descendant transaction. The recipient of the unique/alternative transaction has to recreate the descendant transaction with the brand new enter.

This rule would get an exception if the proposed SIGHASH_ANYPREVOUT have been activated, which permits to establish UTXOs per their output script quite than their outpoint and would enable the recipient to create a descendant transaction that would spend the output of both the unique or the alternative transaction.


Comply with-up query: How do nodes know which transaction to drop? Why does the descendant transaction not have two totally different selections what to make use of as enter?

When the unique transaction is created, it may need a txid tx_orig¹. It’s first output (at place 0) then has the outpoint tx_orig:0. The descendant transaction enter spends explicitly spends the UTXO with the outpoint tx_orig:0. When the alternative transaction with further inputs is created, it has a special distinctive txid which is likely to be tx_replace. Its first output would have the outpoint tx_replace:0. Subsequently, the descendant transaction turns into invalid as a result of unique transaction turning into changed.

Transactions are in battle when not less than one UTXO is spent by each transactions. Let’s say there was one other earlier transaction that created tx_ancient:1 and each the tx_orig and tx_replace attempt to spend that UTXO. The UTXO can solely be spent as soon as, so naturally together with both transaction excludes the opposite from ever getting confirmed. Since just one transaction may be picked, miners decide the one which maximizes their reward. They hereby comply with the replace-by-fee guidelines that require the alternative to exceed each the feerate of the unique transaction and absolutely the charges of all displaced transactions.

Transaction graph demonstrating the exclusivity of conflicting transactions.

¹ In actuality txids created by hashing the transaction information with SHA-256, so they’re normally offered as 64-character hex strings.

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles