ea4e0aa8c4b0e4eed92b81e6e8b84a3b92232939 ci: Checkout latest merged pulls (MarcoFalke) 48761444e24350c2b74396aa6643fa58cdc05493 ci: reduce runner sizes on various jobs (will) 12eada012b56e6d4018b878c5663f57aeae91d89 ci: remove un-needed lint_run*.sh files (willcl-ark) 189bb3992228240468195abaa1040f2528707f89 ci: fix annoying docker warning (will) e4493b15dfa2267b9d83b67e2e205cc40a742fef ci: add ccache hit-rate warning when < 75% (will) a0b6e2ae6b5c6fd7ca2be164f020cf6385c7f820 doc: Detail configuration of hosted CI runners (will) 1bfe9f56c3213e7c9c38fa065e04fce841779cdd ci: dynamically match makejobs with cores (will) abaa128095e68178c0a1fb213a973f966fbf16cb ci: remove .cirrus.yml (will) 8ab684eeb72590090393be5ebbbb79a421603577 ci: port win64-no_gui job (will) 99411458b4be92bb2107b9a1b73c5530d79fe9d6 ci: port lint (will) 4b3468389be4762aadbd37f97a949ba20a9444ff ci: port msan-depends (will) cf18a500d7742c65f5c45bd5e4504ce03feceb30 ci: port tsan-depends-gui (will) 49ff9d7e6e1395755e8ecd692b6529d7f02e4b1f ci: port tidy (will) c2c69cd6ec90670e290e5cc58f02d6bc3443011c ci: port 32-bit-centos-dash-gui (will) fa259b4e72071a41d0682b87aba7f43b313ce854 ci: port previous-releases-depends-debug (will) 96cd28f1461b461e6cf7823c1d64806ef46a40c1 ci: port fuzzer-address-undefined-integer-nodepends (will) 0fc3fd1eb5b8ee1fb07bffc9ac99a3c14187f387 ci: port i686-multiprocess-DEBUG (will) f61cb6be58d7798ded7441b0076e21bfe887304c ci: port nowallet-libbitcoinkernel (will) 6237cd537d4ed03fbeda5c9702c87a21f6a32c17 ci: port mac-cross-gui-notests (will) 8c9048f4fccb7e48778f5b5134a9e2e18e9e3ba9 ci: force reinstall of kernel headers in asan (will) 61bb5180d512cb1de993ee8bc6b93fb4481b9730 ci: update asan-lsan-ubsan (will) bb455c95940e4548f418d53e0083a060df2a7b14 ci: port arm job (will) 5538ce4f320894fbffed9dcaec574f8a01b12b3b ci: add job to determine runner type (will) 82cfddbc9ae710a1dc135315049b1da5c8344109 ci: add Cirrus cache host (will) 30efc95aecb1602cd01547b1f9dde2382358d5ca ci: have base install run in right dir (will) f6ccd895df85ab6642ef2c5dcc336acc5990f4fd ci: use buildx in ci (will) f8cb31d0647b824190281d1e54c75972272bd025 ci: add configure-docker action (will) 270191c3c0e51cdd75d5b6eaaeeaae0b6e0ed3b9 ci: add REPO_USE_CIRRUS_RUNNERS (will) 8d6d70f5555cd9ac75b499ff031ab8b1410d59f3 ci: add caching actions (will) d8ad667f943b77b42ef28a2f316dc7831c65ccec ci: add configure environment action (will) Pull request description: Backports https://github.com/bitcoin/bitcoin/pull/32989 to the 28.x branch ACKs for top commit: maflcko: lgtm ACK ea4e0aa8c4 🥄 Tree-SHA512: aeb7f3f92f1e18d787a199258c06cff14a7352e3da1d0b546bb39a46ec988e65a4c68083c9ee38fe8a6a60e4ee5a2199c6d255973bff91f0f4aac34fea5fdb28
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.