Friday, September 20, 2024
HomeBitcointransactions - SIGHASH_ANYONECANPAY mediated tx modification

transactions – SIGHASH_ANYONECANPAY mediated tx modification


You’re heading in the right direction. Alice utilizing SIGHASH_ALL | SIGHASH_ANYONECANPAY permits another person so as to add further inputs to the transaction. Nonetheless, since Alice’s signature dedicated to all outputs (because of the 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 price sufficiently to displace the unique transaction together with any potential descendant transactions, it could invalidate the descendant transaction. Inputs decide to a selected UTXO explicitly per the outpoint (txid:vout). For the reason that 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 authentic transaction is dropped from the mempool, the descendant would grow to be invalid and be evicted alongside.

Since an enter has to commit to precisely one particular UTXO it’s spending, there usually are not “two decisions 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 determine UTXOs per their output script slightly than their outpoint and would permit the recipient to create a descendant transaction that might 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 completely different decisions 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 unique distinctive txid which is perhaps tx_replace. Its first output would have the outpoint tx_replace:0. Due to this fact, the descendant transaction turns into invalid because of the authentic transaction changing into changed.

Transactions are in battle when at the very least 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 knowledge with SHA-256, so they’re often offered as 64-character hex strings.

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments