Bitcoin full node and query server

Nov 22, 2025

View in context in the libbitcoin Slack #general mirror.

evoskuil00:36
Trying to think of what rabbit comes out of the hat next year to keep us under 60 minutes on my 2.3 Gbps connection. The most likely target is reduction of the deserialization and deallocation costs, by denormalizing the wire deserialization for milestone runs. We don't need the full block object model for milestone, all we need is tx and header hashing. That already comes directly off of the wire (before object deserialization). That should knock at least 10% off of total milestone time, and blocks 900,001-950,000 should be roughly 10% of the total chain at that point.
(edited)
3 replies · evoskuil · last Nov 23, 2025
evoskuil14:22
I took a look at this last night. This can also be implemented for full validation by just moving block.check() to the block validator (vs downloader). At that point the downloader is the same as for milestone, which is sufficient given that validation will perform the checks. That would materially reduce validation cost. As significantly more memory would be available for validation, and CPU and alloc/free costs for download would drop to near zero.
evoskuil14:36
This requires a new block and tx parser to pull the necessary database fields from the wire stream, and to write them to the store. We use a “skip parser” to pull out both witness and non-witness hashes from the wire stream. This uses a fast stream that allows forward and reverse movement with the stream. This same technique can be used to avoid any allocations at all when moving a block/txs from the wire buffer to the store. We can literally just make a store::writer that operates over a store::stream and writes directly to tables, and a block::writer that operates over the incoming wire fast stream, and then just have the the writer write the reader. The writer flush just closes out the two phase commit.
evoskuil14:39
So we just drive scripts and witnesses directly into the store with nothing but length parse. The rest is just bookkeeping trivia.