You might be heading in the right direction. Alice utilizing SIGHASH_ALL | SIGHASH_ANYONECANPAY
permits another consumer so as to add extra inputs to the transaction. Nonetheless, since Alice’s signature dedicated to all outputs (because of the SIGHASH_ALL
half), the extra payers can’t change the outputs of the transaction, and their complete 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
). 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 develop into invalid and be evicted alongside.
Since an enter has to commit to precisely one particular UTXO it’s spending, there aren’t “two decisions of UTXOs to reference” for the descendant transaction. The recipient of the unique/substitute transaction has to recreate the descendant transaction with the brand new enter.
This rule would get an exception if the proposed SIGHASH_ANYPREVOUT
had been activated, which permits to determine UTXOs per their output script somewhat than their outpoint and would enable the recipient to create a descendant transaction that might spend the output of both the unique or the substitute transaction.
Observe-up query: How do nodes know which transaction to drop? Why does the descendant transaction not have two totally different decisions what to make use of as enter?
When the unique transaction is created, it might 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 substitute transaction with extra inputs is created, it has a unique distinctive txid which could be tx_replace
. Its first output would have the outpoint tx_replace:0
. Subsequently, the descendant transaction turns into invalid because of the authentic transaction turning into changed.
Transactions are in battle when at the 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 will be picked, miners decide the one which maximizes their reward. They hereby comply with the replace-by-fee guidelines that require the substitute to exceed each the feerate of the unique transaction and absolutely the charges of all displaced transactions.
¹ In actuality txids created by hashing the transaction knowledge with SHA-256, so they’re normally offered as 64-character hex strings.