Segwit moved some transaction data in a new Witness spot. How do old nodes which do not run SegWit agree with the ones that do? They are not aware of the Witness part, how/why do they accept the same transactions as valid without that data?
The answer is here:
When a block containing native segwit transactions is propagated to pre-segwit nodes, the witness scripts that unlock the segwit inputs are not sent; pre-segwit nodes think that segwit inputs are "anyone can spend" utxos, and consequently they don't expect a witness script for transactions that spend them, because no script is needed to unlock an "anyone can spend" utxo.
So if you're running an old node, you're not fully verifying transactions spending from segwit outputs according to segwit consensus rules. Your node assumes anyone could have spent them according to pre-segwit consensus rules. I think this is what made it possible to activate SegWit as a soft-fork.
I have been confused by this for a while, too. This question actually lead to my first post on SN (#57444).
deleted by author
reply