491bb14c0c
build: test for timingsafe_bcmp (fanquake) Pull request description: Code introduced in #15649 added usage of [`timingsafe_bcmp()`](https://man.openbsd.org/timingsafe_bcmp.3), if available, otherwise falling back to our own implementation. However the relevant build system check was never added, so currently, we'll always just use our implementation, as `HAVE_TIMINGSAFE_BCMP` will never be defined. Add the check for `timingsafe_bcmp`. Note that as far as I'm aware, it's only available on OpenBSD.c3daa321f9/src/crypto/chacha_poly_aead.cpp (L16-L28)
Guix Build (x86_64): ```bash 0a890839e3de040e084d4df6aeabd924f6c6b04e724d7d2a87ef366d5493ac94 guix-build-491bb14c0c9c/output/aarch64-linux-gnu/SHA256SUMS.part fd5e1c4531f1739d63e8d552495c24c044ce9ddd34a424d6da1317830e625527 guix-build-491bb14c0c9c/output/aarch64-linux-gnu/bitcoin-491bb14c0c9c-aarch64-linux-gnu-debug.tar.gz 551f58234ba5acf5c5125df85fccb49f8536399d2a1b7126848e4709b7edb61e guix-build-491bb14c0c9c/output/aarch64-linux-gnu/bitcoin-491bb14c0c9c-aarch64-linux-gnu.tar.gz 5a6f7630d36af7e4317f660232c52a5c8c983b1999f57e176a628d83a5eb7b4a guix-build-491bb14c0c9c/output/arm-linux-gnueabihf/SHA256SUMS.part d1eba598d69498e899663cfcba295747ac5808218157adaca79d45459aac8ecf guix-build-491bb14c0c9c/output/arm-linux-gnueabihf/bitcoin-491bb14c0c9c-arm-linux-gnueabihf-debug.tar.gz 1e2559a99b89770501308416edc6cfeec94bfea9e9cadb6b64a4df7a487350d1 guix-build-491bb14c0c9c/output/arm-linux-gnueabihf/bitcoin-491bb14c0c9c-arm-linux-gnueabihf.tar.gz bc961b8b930df8123a6cad1c55f250658ea600d4a617ec4fceec2bfc28ec779f guix-build-491bb14c0c9c/output/arm64-apple-darwin/SHA256SUMS.part f65118d324a8c1a3d80190dc0a80a2175b116a5ef5b0d977e8ffeaa7a8114851 guix-build-491bb14c0c9c/output/arm64-apple-darwin/bitcoin-491bb14c0c9c-arm64-apple-darwin-unsigned.dmg d27cd6193b1b5ecdab50d1fe2b4c3d0bfba04813506ecf63e27a6e9edb32913e guix-build-491bb14c0c9c/output/arm64-apple-darwin/bitcoin-491bb14c0c9c-arm64-apple-darwin-unsigned.tar.gz 76fc93a9c11909a826c9bd310ae4a70dc2083b96540c875d9cfb3b31bb86dd3e guix-build-491bb14c0c9c/output/arm64-apple-darwin/bitcoin-491bb14c0c9c-arm64-apple-darwin.tar.gz 43f157994432c16cfd481de2ce4894f7c241a0b87ce3797ffc492e219ed00c19 guix-build-491bb14c0c9c/output/dist-archive/bitcoin-491bb14c0c9c.tar.gz d04bc01a7b207e2d9e833ef4399d5daa789f5d7476df3915f426ea1c71578cb5 guix-build-491bb14c0c9c/output/powerpc64-linux-gnu/SHA256SUMS.part d815ab7157ca87a51c0c08907ba76f6bcec11cf9c0db77c2fd2885bf78796f97 guix-build-491bb14c0c9c/output/powerpc64-linux-gnu/bitcoin-491bb14c0c9c-powerpc64-linux-gnu-debug.tar.gz 9f912bedf53d6921cf10f48569fb74ef4f42c8571fb976b50e67a64f6754833c guix-build-491bb14c0c9c/output/powerpc64-linux-gnu/bitcoin-491bb14c0c9c-powerpc64-linux-gnu.tar.gz 0651ed89f9a7cd4a4a196a48b330aec82f6ca1df5d842e6da863a87ae69f57f4 guix-build-491bb14c0c9c/output/powerpc64le-linux-gnu/SHA256SUMS.part 4c5f1ea788580a99318dc91cb3ac51f11829163a5821a01d90459911b0ff791d guix-build-491bb14c0c9c/output/powerpc64le-linux-gnu/bitcoin-491bb14c0c9c-powerpc64le-linux-gnu-debug.tar.gz 61c91db6b7f34d43292b6e0c0a1e4bd5f6e2d532df835410daca337cf94c66af guix-build-491bb14c0c9c/output/powerpc64le-linux-gnu/bitcoin-491bb14c0c9c-powerpc64le-linux-gnu.tar.gz be4d94e812c02a3955343d7a92a26deff9ced37aada049fd328118e01a8e3c53 guix-build-491bb14c0c9c/output/riscv64-linux-gnu/SHA256SUMS.part d73589e28311c8b442bb873d233181988f79d728965ccef395b19683b78203e9 guix-build-491bb14c0c9c/output/riscv64-linux-gnu/bitcoin-491bb14c0c9c-riscv64-linux-gnu-debug.tar.gz a1b15c96fcc936928aa183e7b06552c68a2dd5d178122394c3ed2cbd3f07ab2f guix-build-491bb14c0c9c/output/riscv64-linux-gnu/bitcoin-491bb14c0c9c-riscv64-linux-gnu.tar.gz 2d608c6b79be12cdc179e5e6414ea21d06d8b2816e098fbdb4e929b8f9338fa5 guix-build-491bb14c0c9c/output/x86_64-apple-darwin/SHA256SUMS.part ce11298ab92f388bd43ff2c6cb8c07c777dab44f0f6ea93b909805552bafd20d guix-build-491bb14c0c9c/output/x86_64-apple-darwin/bitcoin-491bb14c0c9c-x86_64-apple-darwin-unsigned.dmg 5d0626fc72d473157376efe0736f4d2b5836a5394a4869368bc65bf9d264d238 guix-build-491bb14c0c9c/output/x86_64-apple-darwin/bitcoin-491bb14c0c9c-x86_64-apple-darwin-unsigned.tar.gz d9f250bb45c4663f8160b7d22c1ccde8f1abad62dc6667e01fe71d577f00e9f9 guix-build-491bb14c0c9c/output/x86_64-apple-darwin/bitcoin-491bb14c0c9c-x86_64-apple-darwin.tar.gz 72b3afe2d6124598eddbeed8d0799a8bd23536b4a3e4611162094601c75b923e guix-build-491bb14c0c9c/output/x86_64-linux-gnu/SHA256SUMS.part eef6c0928762c77a23b485b55c350660b111ffdf3446825648d7da05e5e681eb guix-build-491bb14c0c9c/output/x86_64-linux-gnu/bitcoin-491bb14c0c9c-x86_64-linux-gnu-debug.tar.gz a130d87e851f0192bf89dd5ecbe52d63231ce5dbbf584d1e4fb33a36ebb8bf7a guix-build-491bb14c0c9c/output/x86_64-linux-gnu/bitcoin-491bb14c0c9c-x86_64-linux-gnu.tar.gz 0f00372e30ea12ca9d16d70c4905b6b8492464987bb6b272ed4f9a945941d6b9 guix-build-491bb14c0c9c/output/x86_64-w64-mingw32/SHA256SUMS.part 2852dff8d38ef6eee759bf9fe717a4288db46c300f061acb3212cd1499607d8d guix-build-491bb14c0c9c/output/x86_64-w64-mingw32/bitcoin-491bb14c0c9c-win64-debug.zip ef087e9d6160e183f6ef6d64f9141b499e893d88705be5d1426ced6c49531c18 guix-build-491bb14c0c9c/output/x86_64-w64-mingw32/bitcoin-491bb14c0c9c-win64-setup-unsigned.exe 79392686b9f5781275e346badf8d7166baa0b4f2c0037ddd6df0b4bc23eaedf6 guix-build-491bb14c0c9c/output/x86_64-w64-mingw32/bitcoin-491bb14c0c9c-win64-unsigned.tar.gz da8c9f6922bdab660dfbd757ec89ce7a2493bf1d02e32172b77c1a21b09daaa9 guix-build-491bb14c0c9c/output/x86_64-w64-mingw32/bitcoin-491bb14c0c9c-win64.zip ``` Guix Build (arm64): ```bash ff7afe1f43ac18df89cf1932568b0713f6f22fd2b449a4a87f9aebf404449897 guix-build-491bb14c0c9c/output/arm-linux-gnueabihf/SHA256SUMS.part 5e727cc3273615e6f75c6e15bc004946ab7494ee169ecf830f23290cf6f5c3de guix-build-491bb14c0c9c/output/arm-linux-gnueabihf/bitcoin-491bb14c0c9c-arm-linux-gnueabihf-debug.tar.gz 4aff5487b129dc483780646994246890a5917c8956980ec52682accfe5a0d02e guix-build-491bb14c0c9c/output/arm-linux-gnueabihf/bitcoin-491bb14c0c9c-arm-linux-gnueabihf.tar.gz cabfeb29771017dfde35a1c8f08c7066255ad84a05d6d565cfcf852a5d869d16 guix-build-491bb14c0c9c/output/arm64-apple-darwin/SHA256SUMS.part 99360c7135967e1d9709830abcc8f5b6ebc7bc37c5be0eac1ddebe0ce5dbe344 guix-build-491bb14c0c9c/output/arm64-apple-darwin/bitcoin-491bb14c0c9c-arm64-apple-darwin-unsigned.dmg 9caa58d1efe18c7ad68fec2a71455ade61939f32ae2da0b0457b459204227046 guix-build-491bb14c0c9c/output/arm64-apple-darwin/bitcoin-491bb14c0c9c-arm64-apple-darwin-unsigned.tar.gz d9b0ad26346869aa6a4229aa77796535f68880fc50f8b7b7a4297f2e14d2e3ad guix-build-491bb14c0c9c/output/arm64-apple-darwin/bitcoin-491bb14c0c9c-arm64-apple-darwin.tar.gz 43f157994432c16cfd481de2ce4894f7c241a0b87ce3797ffc492e219ed00c19 guix-build-491bb14c0c9c/output/dist-archive/bitcoin-491bb14c0c9c.tar.gz e2f95f50ae973cef815731485be6b917f39eea92ef4e93fa63aa1ad6cb52a3c9 guix-build-491bb14c0c9c/output/powerpc64-linux-gnu/SHA256SUMS.part 452f3091a1e841920e958f14f1650e94b3a61cb430cb99930fb5941d8a8aad3d guix-build-491bb14c0c9c/output/powerpc64-linux-gnu/bitcoin-491bb14c0c9c-powerpc64-linux-gnu-debug.tar.gz a371cee3dae3d5cf5ca792b58a1bb492a6a6147e0b515e69869d3543edbeaea5 guix-build-491bb14c0c9c/output/powerpc64-linux-gnu/bitcoin-491bb14c0c9c-powerpc64-linux-gnu.tar.gz 89153f4b6a3bc6d47787c4d63b57e1dade8116822abb547fc1759c84e6ff6fa2 guix-build-491bb14c0c9c/output/powerpc64le-linux-gnu/SHA256SUMS.part 9f51353abe7b6154a48da5db3fce29d2dac1dbe9a6c78aade1b9e1b6b12370fa guix-build-491bb14c0c9c/output/powerpc64le-linux-gnu/bitcoin-491bb14c0c9c-powerpc64le-linux-gnu-debug.tar.gz 25b21eb2d8e3982dac5e1510b78339b7c4bddf164b986c929036369e403ddadd guix-build-491bb14c0c9c/output/powerpc64le-linux-gnu/bitcoin-491bb14c0c9c-powerpc64le-linux-gnu.tar.gz 92c4c404f7355897bca4ba7e38a908828da73617cac7b0fbd89952ce20859d83 guix-build-491bb14c0c9c/output/riscv64-linux-gnu/SHA256SUMS.part 230361b5a493b3ac17780b3d5496cc10a37d3345b96874b04092c06aab36cb0d guix-build-491bb14c0c9c/output/riscv64-linux-gnu/bitcoin-491bb14c0c9c-riscv64-linux-gnu-debug.tar.gz d8110e6d738a40ccd076cbd286557931b2a433e27c8defcc496ac56f60fe5327 guix-build-491bb14c0c9c/output/riscv64-linux-gnu/bitcoin-491bb14c0c9c-riscv64-linux-gnu.tar.gz 2d608c6b79be12cdc179e5e6414ea21d06d8b2816e098fbdb4e929b8f9338fa5 guix-build-491bb14c0c9c/output/x86_64-apple-darwin/SHA256SUMS.part ce11298ab92f388bd43ff2c6cb8c07c777dab44f0f6ea93b909805552bafd20d guix-build-491bb14c0c9c/output/x86_64-apple-darwin/bitcoin-491bb14c0c9c-x86_64-apple-darwin-unsigned.dmg 5d0626fc72d473157376efe0736f4d2b5836a5394a4869368bc65bf9d264d238 guix-build-491bb14c0c9c/output/x86_64-apple-darwin/bitcoin-491bb14c0c9c-x86_64-apple-darwin-unsigned.tar.gz d9f250bb45c4663f8160b7d22c1ccde8f1abad62dc6667e01fe71d577f00e9f9 guix-build-491bb14c0c9c/output/x86_64-apple-darwin/bitcoin-491bb14c0c9c-x86_64-apple-darwin.tar.gz de7a52a67f243b6db1086c2ab2cc3f01784d38b43b7aaf795b7713c33799ab62 guix-build-491bb14c0c9c/output/x86_64-linux-gnu/SHA256SUMS.part 88228ef3007e81ade481d0c3fa757ac3ae86bda50aeef2631335c5d54fb4194c guix-build-491bb14c0c9c/output/x86_64-linux-gnu/bitcoin-491bb14c0c9c-x86_64-linux-gnu-debug.tar.gz b1f2ddf50658f4d1bd0667cc16502f9a45d9e0eef4c1d103cd7780cebfc2766d guix-build-491bb14c0c9c/output/x86_64-linux-gnu/bitcoin-491bb14c0c9c-x86_64-linux-gnu.tar.gz f0cc08231ed964fcb4f2c5a697c52160dad8ed374f8d9537eb7f2ca9f47e7b2c guix-build-491bb14c0c9c/output/x86_64-w64-mingw32/SHA256SUMS.part d9c49c031bde4f80e63955fdeb14a7fb8f74a27d09bcf01881648917df10a836 guix-build-491bb14c0c9c/output/x86_64-w64-mingw32/bitcoin-491bb14c0c9c-win64-debug.zip ef087e9d6160e183f6ef6d64f9141b499e893d88705be5d1426ced6c49531c18 guix-build-491bb14c0c9c/output/x86_64-w64-mingw32/bitcoin-491bb14c0c9c-win64-setup-unsigned.exe 79392686b9f5781275e346badf8d7166baa0b4f2c0037ddd6df0b4bc23eaedf6 guix-build-491bb14c0c9c/output/x86_64-w64-mingw32/bitcoin-491bb14c0c9c-win64-unsigned.tar.gz 1d76ceae8c3feef573d4e60fe6c7be5f3bea4afd3994ddc16759d8b381767015 guix-build-491bb14c0c9c/output/x86_64-w64-mingw32/bitcoin-491bb14c0c9c-win64.zip ``` ACKs for top commit: laanwj: Code review ACK491bb14c0c
theStack: ACK491bb14c0c
Tree-SHA512: 50d273706e92016783f6a9d552f56b703c3c26ec2f0fafb9a0d1c1047456eee7c08e76ebc57077d2ecf95aaf5a3804c88a629a2e02a48c8be91b87ffa44cdb3e
Bitcoin Core integration/staging tree
For an immediately usable, binary version of the Bitcoin Core software, see https://bitcoincore.org/en/download/.
What is Bitcoin Core?
Bitcoin Core connects to the Bitcoin peer-to-peer network to download and fully validate blocks and transactions. It also includes a wallet and graphical user interface, which can be optionally built.
Further information about Bitcoin Core is available in the doc folder.
License
Bitcoin Core is released under the terms of the MIT license. See COPYING for more information or see https://opensource.org/licenses/MIT.
Development Process
The master
branch is regularly built (see doc/build-*.md
for instructions) and tested, but it is not guaranteed to be
completely stable. Tags are created
regularly from release branches to indicate new official, stable release versions of Bitcoin Core.
The https://github.com/bitcoin-core/gui repository is used exclusively for the development of the GUI. Its master branch is identical in all monotree repositories. Release branches and tags do not exist, so please do not fork that repository unless it is for development reasons.
The contribution workflow is described in CONTRIBUTING.md and useful hints for developers can be found in doc/developer-notes.md.
Testing
Testing and code review is the bottleneck for development; we get more pull requests than we can review and test on short notice. Please be patient and help out by testing other people's pull requests, and remember this is a security-critical project where any mistake might cost people lots of money.
Automated Testing
Developers are strongly encouraged to write unit tests for new code, and to
submit new unit tests for old code. Unit tests can be compiled and run
(assuming they weren't disabled in configure) with: make check
. Further details on running
and extending unit tests can be found in /src/test/README.md.
There are also regression and integration tests, written
in Python.
These tests can be run (if the test dependencies are installed) with: test/functional/test_runner.py
The CI (Continuous Integration) systems make sure that every pull request is built for Windows, Linux, and macOS, and that unit/sanity tests are run automatically.
Manual Quality Assurance (QA) Testing
Changes should be tested by somebody other than the developer who wrote the code. This is especially important for large or high-risk changes. It is useful to add a test plan to the pull request description if testing the changes is not straightforward.
Translations
Changes to translations as well as new translations can be submitted to Bitcoin Core's Transifex page.
Translations are periodically pulled from Transifex and merged into the git repository. See the translation process for details on how this works.
Important: We do not accept translation changes as GitHub pull requests because the next pull from Transifex would automatically overwrite them again.