delvingbitcoin

Property-based testing for Bitcoin Core

Property-based testing for Bitcoin Core

Original Postby Chris_Stewart_5

Posted on: March 7, 2024 14:50 UTC

In the realm of software testing within the cryptocurrency space, particularly regarding bitcoin-s, an emphasis is placed on direct access to data structures rather than incorporating property-based testing through networking layers.

This approach stems from a consideration of efficiency and the desire to avoid the potential for flaky tests that could arise from testing the entire networking stack. Additionally, there's a recognition of the higher maintenance burden such testing could impose. However, it's noted that this might not be as significant for Bitcoin Core, given the existing test suites in C++ and Python.

A comparison between the Python and C++ testing frameworks reveals a preference for the latter, attributed to its perceived completeness. This perspective is further exemplified by experiences working on specific projects like the 64-bit arithmetic PR, where the Python framework's handling of value correctness was found wanting. Specifically, instances were identified where the Python test framework seemingly assumes the correctness of provided values without thorough validation, raising concerns about its reliability.

The discussion acknowledges the potential need to address these shortcomings to unearth bugs but cautions against the implications of doing so. The concern is that such efforts might inadvertently lead to a secondary consensus implementation in Python, which poses its own set of challenges and considerations. Despite the diverging views on this matter, the discourse underscores the importance of rigorous testing in ensuring the integrity and reliability of cryptocurrency systems.