Bitcoin full node and query server

Apr 7, 2023

View in context in the libbitcoin Slack #general mirror.

evoskuil10:04
Humming along now past 500k. Had an issue with is_locked() validation, which was a result of non-populating prevout metadata. That prompted me to work off some code debt, organizing the validation functions a little more. This is because validation is split between database-optimized functions for confirmation, and check/accept/connect functions on the chain objects. Previously, and traditionally, confirmability is mixed in with validation. But our parallelism model performs these independently, because they are different concurrency constraints. So now we have check/accept/connect/confirm functions on the chain::header/block/transaction/input classes, where confirm is new. And we don't use the confirm function (which contains is_locked, since it depends on the confirmation height/mtp of the previous output) and instead node performs these checks in the database. To the extent there is any logic in the confirm functions, that is exposed via static methods on the chain classes.