Why Not Witnessless Nodes
Kalle Rosenbaum initiated a discussion on the bitcoin-dev mailing list regarding the feasibility of witnessless nodes. Bitcoin Core v0.14.0 introduced a new feature called assumevalid which allows a node to skip verification of all the blocks. Why not take it a step further? Let’s begin by reviewing what happens when a new nodes comes online:
When new nodes comes online for the first time it has to complete peer discovery. DNS Seeds are queried to find full nodes that accept new incoming connections.
After DNS responds with a list of A records for peers the new node then attempts to connect to the peers via a version messages. Before a connected node can validate unconfirmed transactions or blocks, it must download and validate all blocks starting at block 1. This is called the Initial Block Download IBD or the initial sync.
Fast forward to v0.14.0 and the addition of assumevalid option. The assumevalid option allows a node to skip block validation up to a certain known-valid block number. The basis of Kalle’s question was if a node is going to assume the validity of previous nodes, why download the witness data at all?
This question has come up before and it closely resembles the idea of SPV clients. SPV clients only download the block headers and do not validate the entire blockchain. However the point of assumevalid is not to skip all validation, but only to assume that certain blocks are valid in order to speed along the IBD validating. After the IBD all blocks still have their signatures checked normally. As of Bitcoin Core v0.14.0 the default assumed valid block was #453354
Support us and the authors of this article by donating to the following address:3QW6ZZESTiesYjA7pehnWh8qa1Se7csDYC