589827975scripted-diff: various renames for per-utxo consistency (Pieter Wuille)a5e02bc7fIncrease travis unit test timeout (Pieter Wuille)73de2c1ffRename CCoinsCacheEntry::coins to coin (Pieter Wuille)119e552f7Merge CCoinsViewCache's GetOutputFor and AccessCoin (Pieter Wuille)580b02309[MOVEONLY] Move old CCoins class to txdb.cpp (Pieter Wuille)8b25d2c0cUpgrade from per-tx database to per-txout (Pieter Wuille)b2af357f3Reduce reserved memory space for flushing (Pieter Wuille)41aa5b79aPack Coin more tightly (Pieter Wuille)97072d668Remove unused CCoins methods (Pieter Wuille)ce23efaa5Extend coins_tests (Pieter Wuille)508307968Switch CCoinsView and chainstate db from per-txid to per-txout (Pieter Wuille)4ec0d9e79Refactor GetUTXOStats in preparation for per-COutPoint iteration (Pieter Wuille)13870b56fReplace CCoins-based CTxMemPool::pruneSpent with isSpent (Pieter Wuille)05293f3cbRemove ModifyCoins/ModifyNewCoins (Pieter Wuille)961e48397Switch tests from ModifyCoins to AddCoin/SpendCoin (Pieter Wuille)8b3868c1bSwitch CScriptCheck to use Coin instead of CCoins (Pieter Wuille)c87b957a3Only pass things committed to by tx's witness hash to CScriptCheck (Matt Corallo)f68cdfe92Switch from per-tx to per-txout CCoinsViewCache methods in some places (Pieter Wuille)000391132Introduce new per-txout CCoinsViewCache functions (Pieter Wuille)bd83111a0Optimization: Coin&& to ApplyTxInUndo (Pieter Wuille)cb2c7fdacReplace CTxInUndo with Coin (Pieter Wuille)422634e2fIntroduce Coin, a single unspent output (Pieter Wuille)7d991b55dStore/allow tx metadata in all undo records (Pieter Wuille)c3aa0c119Report on-disk size in gettxoutsetinfo (Pieter Wuille)d34242430Remove/ignore tx version in utxo and undo (Pieter Wuille)7e0032290Add specialization of SipHash for 256 + 32 bit data (Pieter Wuille)e484652fcIntroduce CHashVerifier to hash read data (Pieter Wuille)f54580e7eerror() in disconnect for disk corruption, not inconsistency (Pieter Wuille)e66dbde6dAdd SizeEstimate to CDBBatch (Pieter Wuille) Tree-SHA512: ce1fb1e40c77d38915cd02189fab7a8b125c7f44d425c85579d872c3bede3a437760997907c99d7b3017ced1c2de54b2ac7223d99d83a6658fe5ef61edef1de3
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.