Property-based testing for Bitcoin Core

Posted by Chris_Stewart_5

Mar 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.

Link to Raw Post
Bitcoin Logo

TLDR

Join Our Newsletter

We’ll email you summaries of the latest discussions from authoritative bitcoin sources, like bitcoin-dev, lightning-dev, and Delving Bitcoin.

Explore all Products

ChatBTC imageBitcoin searchBitcoin TranscriptsSaving SatoshiBitcoin Transcripts Review
Built with 🧡 by the Bitcoin Dev Project
View our public visitor count

We'd love to hear your feedback on this project?

Give Feedback