Bitcoin full node and query server

Apr 1, 2023

View in context in the libbitcoin Slack #general mirror.

evoskuil11:22
Spent today tracking down a crash in tx.connect(...) [script validation] at block 307,574. This resulted from optimizations I made in system's elliptic curve wrapper functions. An empty data_slice buffer.data() returns a null pointer (same for std::array and std::vector). This was getting passed into libsecp256k1, resulting in an assert/abort on the null pointer. This is now guarded, as were the other calls. Yesterday I tracked down a regression in the script interpreter, where op_size() was popping vs. peeking. This resulted from my full rewrite of the stack as a variant object processor, vs. serializing all values to/from byte arrays. Neither of these were caught by the full set of bitcoind script tests, which is a strong argument for the value of actual unit testing. The script machine (program, interpreter, stack, and number classes) is now well factored for simple unit testing, but that's not done.
😮 1