pull down to refresh
You are correct.
Full nodes only forward blocks they have finished validating. Generally, modern nodes use Compact Block Relay, instead of transferring the full block, they will only send a list of the included transactions and the transactions that they think the peer would not have. Especially, this means that they must send the coinbase transaction, since the coinbase is only created by the miner when they author the block. The receiving node usually has most of the transaction data already (including witness data, which is just part of the transactions). Any missing transactions need to be provided in full (including witness data) for the block to be validated. So, itâs not clear to me how a node would even send a block without witness data to a segwit node for this attack to be feasible.
Assuming a node could send a block âwithout witness dataâ, the receiver would not be able to validate it, and not forward anything. They would still consider the previous block to be the chaintip.
A block without witness data could propagate among non-segwit nodes, because they only process the stripped block. Luckily, since Bitcoin Core has had segwit support since v0.13, there are hardly any nodes that donât understand segwit: Bitnodes shows that 98.27% of all nodes report the NODE_WITNESS service flag.
https://i.imgur.com/AQCyJCF.png
Among listening nodes itâs 99.4% (15429 of 15517), and it appears that the nodes operated by miners also generally support segwitâthe last block that had more than one transaction and did not include segwit transactions was mined in 2020:
https://i.imgur.com/OtTGquD.png
So, while I have not watched the linked video, I suspect that the conclusions are based on misunderstandings of how segwit is implemented in general and how segwit nodes propagate information specifically. Given that the whole attack doesnât make any sense, I donât see how segwit would enable a selfish mining attack.
Thank you for your answer!
Watching the video I was indeed under the impression that it mainly came from a misunderstanding around how SegWit works. Here the video shows a capture from a talk by Peter Rizun where the worlds "extension block" are mentioned. I was not there at the time but I think it was a common misconception regarding SegWit.
The central misconception to a lot of the segwit FUD was that the witness data of all transactions in a block would be some sort of optional second data package next to the block (like an extension block). Once you understand that segwit transactions include their witness data, and the witness data is not actually separate from the block or transaction, most of these mischaracterizations dispel themselves.
thanks
AFAIK any node that updated to SegWit will reject a block without witness data, and hence not relay it, while pre-SegWit nodes won't relay witness data. So I'm not sure a miner could really do this thing where they publish the transaction part of the block first, and then the witness part when another miner finds the same block. Or at least I'm not sure it would really improve block propagation speed and increase the chances of attacker.
If @murch is around maybe he can answer this đ
To the latter question I would answer "no": why would other miners keep on mining the same block if the "cartel" already published a "valid" block stripped of its witness data? Doesn't make sense to me.