8195cb0d7rpc: further constrain the libevent workaround (Cory Fields)34153a7e4rpc: work-around an upstream libevent bug (Cory Fields)fc308a6cdAdd unit test for stale tip checking (Suhas Daftuar)2ed0647acAdd CConnmanTest to mutate g_connman in tests (João Barbosa)a607a95d8Connect to an extra outbound peer if our tip is stale (Suhas Daftuar)459f2db42Track tip update time and last new block announcement from each peer (Suhas Daftuar)49bf09018net: Allow connecting to extra outbound peers (Suhas Daftuar)bb83fe190Add release notes describing blockmaxweight deprecation (Matt Corallo)4c82cea99Use a sensible default for blockmaxweight (Matt Corallo)7871a7d3bDeprecate confusing blockmaxsize, fix getmininginfo output (Matt Corallo)6baa317b5Fix minchainwork test for 0.15 backport (Suhas Daftuar)55b7abfa8Make p2p-acceptablock not an extended test (Matt Corallo)5bec7744d[qa] test that invalid blocks on an invalid chain get a disconnect (Matt Corallo)92d6105c4Reject headers building on invalid chains by tracking invalidity (Matt Corallo)51001d684Accept unrequested blocks with work equal to our tip (Matt Corallo)c6e4d0ce8Stop always storing blocks from whitelisted peers (Matt Corallo)e976c36ddRewrite p2p-acceptblock in preparation for slight behavior changes (Matt Corallo)ec8dedff4net: Add missing lock in ProcessHeadersMessage(...) (practicalswift)59b210d9aDisconnect outbound peers relaying invalid headers (Suhas Daftuar)fc966bbd2moveonly: factor out headers processing into separate function (Suhas Daftuar)e3272242eAdd unit test for outbound peer eviction (Suhas Daftuar)9961abf9ePermit disconnection of outbound peers on bad/slow chains (Suhas Daftuar)bf191a718Disconnecting from bad outbound peers in IBD (Suhas Daftuar)d570aa429Fix uninitialized g_connman crash in Shutdown() (MeshCollider)0a5477c7enet: stop both net/net_processing before destroying them (Cory Fields)b4136f21cnet: drop unused connman param (Cory Fields)dc897e53dnet: use an interface class rather than signals for message processing (Cory Fields)8aee55af3net: pass CConnman via pointer rather than reference (Cory Fields)6f279652bRename fAddnode to a more-descriptive "manual_connection" (Matt Corallo)ffb6ea4e5Add comment explaining forced processing of compact blocks (Suhas Daftuar)2df65eeb9qa: add test for minchainwork use in acceptblock (Suhas Daftuar)3acec3878Don't process unrequested, low-work blocks (Suhas Daftuar)0e9d04bf0[qa] Test nMinimumChainWork (Suhas Daftuar)da4908c3aAllow setting nMinimumChainWork on command line (Suhas Daftuar)41088795dqa: Remove never used return value of sync_with_ping (MarcoFalke)f3457d0e8qa: Make tmpdir option an absolute path (MarcoFalke)9c8006dc3Avoid opening copied wallet databases simultaneously (Russell Yanofsky)de7053f11[wallet] Fix leak in CDB constructor (João Barbosa)fd79ed6b2Ensure backupwallet fails when attempting to backup to source file (Tomas van der Wansem)d94fc336cscripted-diff: rename assert_raises_jsonrpc to assert_raises_rpc error (John Newbery)623de0acb[tests] do not allow assert_raises_message to be called with JSONRPCException (John Newbery)5b728c8e9[tests] remove direct testing on JSONRPCException from individual test cases (John Newbery) Pull request description: Tree-SHA512: 9fdb5c47844a899271023d8d445f7fc728e3ad71916490cd9783464684967594b07cda05dd644b722bfcea9fade74d06cfc501e1a68abf118d6d03fbbf7d7707
Bitcoin Core integration/staging tree
What is Bitcoin?
Bitcoin is an experimental digital currency that enables instant payments to anyone, anywhere in the world. Bitcoin uses peer-to-peer technology to operate with no central authority: managing transactions and issuing money are carried out collectively by the network. Bitcoin Core is the name of open source software which enables the use of this currency.
For more information, as well as an immediately useable, binary version of the Bitcoin Core software, see https://bitcoin.org/en/download, or read the original whitepaper.
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 and tested, but is not guaranteed to be
completely stable. Tags are created
regularly to indicate new official, stable release versions of Bitcoin Core.
The contribution workflow is described in CONTRIBUTING.md.
The developer mailing list should be used to discuss complicated or controversial changes before working on a patch set.
Developer IRC can be found on Freenode at #bitcoin-core-dev.
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, that are run automatically on the build server.
These tests can be run (if the test dependencies are installed) with: test/functional/test_runner.py
The Travis CI system makes sure that every pull request is built for Windows, Linux, and OS X, 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.
Translators should also subscribe to the mailing list.