]>
Commit | Line | Data |
---|---|---|
9c6546c9 | 1 | Bitcoin Core integration/staging tree |
c8af33aa | 2 | ===================================== |
20d59455 | 3 | |
5a0823a0 | 4 | [![Build Status](https://travis-ci.org/bitcoin/bitcoin.svg?branch=master)](https://travis-ci.org/bitcoin/bitcoin) |
5 | ||
9a6497ed | 6 | https://www.bitcoin.org |
20d59455 | 7 | |
b598581b | 8 | Copyright (c) 2009-2014 Bitcoin Core Developers |
20d59455 CD |
9 | |
10 | What is Bitcoin? | |
11 | ---------------- | |
12 | ||
13 | Bitcoin is an experimental new digital currency that enables instant payments to | |
14 | anyone, anywhere in the world. Bitcoin uses peer-to-peer technology to operate | |
15 | with no central authority: managing transactions and issuing money are carried | |
9c6546c9 | 16 | out collectively by the network. Bitcoin Core is the name of open source |
20d59455 CD |
17 | software which enables the use of this currency. |
18 | ||
19 | For more information, as well as an immediately useable, binary version of | |
9a6497ed | 20 | the Bitcoin Core software, see https://www.bitcoin.org/en/download. |
20d59455 CD |
21 | |
22 | License | |
23 | ------- | |
24 | ||
9c6546c9 | 25 | Bitcoin Core is released under the terms of the MIT license. See [COPYING](COPYING) for more |
20d59455 | 26 | information or see http://opensource.org/licenses/MIT. |
81b2d877 | 27 | |
ae42d69d | 28 | Development process |
20d59455 | 29 | ------------------- |
81b2d877 | 30 | |
20d59455 CD |
31 | Developers work in their own trees, then submit pull requests when they think |
32 | their feature or bug fix is ready. | |
cc558f06 | 33 | |
20d59455 CD |
34 | If it is a simple/trivial/non-controversial change, then one of the Bitcoin |
35 | development team members simply pulls it. | |
cc558f06 | 36 | |
20d59455 CD |
37 | If it is a *more complicated or potentially controversial* change, then the patch |
38 | submitter will be asked to start a discussion (if they haven't already) on the | |
39 | [mailing list](http://sourceforge.net/mailarchive/forum.php?forum_name=bitcoin-development). | |
cba3a174 | 40 | |
20d59455 CD |
41 | The patch will be accepted if there is broad consensus that it is a good thing. |
42 | Developers should expect to rework and resubmit patches if the code doesn't | |
0aa9851b | 43 | match the project's coding conventions (see [doc/coding.md](doc/coding.md)) or are |
20d59455 | 44 | controversial. |
cba3a174 | 45 | |
20d59455 CD |
46 | The `master` branch is regularly built and tested, but is not guaranteed to be |
47 | completely stable. [Tags](https://github.com/bitcoin/bitcoin/tags) are created | |
48 | regularly to indicate new official, stable release versions of Bitcoin. | |
cba3a174 | 49 | |
b67b9e70 | 50 | Testing |
20d59455 CD |
51 | ------- |
52 | ||
53 | Testing and code review is the bottleneck for development; we get more pull | |
4665b1ab WL |
54 | requests than we can review and test on short notice. Please be patient and help out by testing |
55 | other people's pull requests, and remember this is a security-critical project where any mistake might cost people | |
20d59455 CD |
56 | lots of money. |
57 | ||
58 | ### Automated Testing | |
13945b2a | 59 | |
20d59455 | 60 | Developers are strongly encouraged to write unit tests for new code, and to |
0aa9851b | 61 | submit new unit tests for old code. Unit tests can be compiled and run (assuming they weren't disabled in configure) with: `make check` |
b67b9e70 | 62 | |
20d59455 CD |
63 | Every pull request is built for both Windows and Linux on a dedicated server, |
64 | and unit and sanity tests are automatically run. The binaries produced may be | |
da986f79 CLD |
65 | used for manual QA testing — a link to them will appear in a comment on the |
66 | pull request posted by [BitcoinPullTester](https://github.com/BitcoinPullTester). See https://github.com/TheBlueMatt/test-scripts | |
20d59455 | 67 | for the build/test scripts. |
b67b9e70 | 68 | |
20d59455 | 69 | ### Manual Quality Assurance (QA) Testing |
b67b9e70 | 70 | |
20d59455 CD |
71 | Large changes should have a test plan, and should be tested by somebody other |
72 | than the developer who wrote the code. | |
da986f79 | 73 | See https://github.com/bitcoin/QA/ for how to create a test plan. |
15283971 WL |
74 | |
75 | Translations | |
76 | ------------ | |
77 | ||
78 | Changes to translations as well as new translations can be submitted to | |
79 | [Bitcoin Core's Transifex page](https://www.transifex.com/projects/p/bitcoin/). | |
80 | ||
18c7ba8d | 81 | Translations are periodically pulled from Transifex and merged into the git repository. See the |
15283971 WL |
82 | [translation process](doc/translation_process.md) for details on how this works. |
83 | ||
18c7ba8d | 84 | **Important**: We do not accept translation changes as GitHub pull requests because the next |
15283971 | 85 | pull from Transifex would automatically overwrite them again. |
c47f5379 | 86 | |
18c7ba8d MF |
87 | Translators should also subscribe to the [mailing list](https://groups.google.com/forum/#!forum/bitcoin-translators). |
88 | ||
c47f5379 GA |
89 | Development tips and tricks |
90 | --------------------------- | |
91 | ||
92 | **compiling for debugging** | |
93 | ||
94 | Run configure with the --enable-debug option, then make. Or run configure with | |
95 | CXXFLAGS="-g -ggdb -O0" or whatever debug flags you need. | |
96 | ||
97 | **debug.log** | |
98 | ||
99 | If the code is behaving strangely, take a look in the debug.log file in the data directory; | |
2027450d | 100 | error and debugging messages are written there. |
c47f5379 GA |
101 | |
102 | The -debug=... command-line option controls debugging; running with just -debug will turn | |
103 | on all categories (and give you a very large debug.log file). | |
104 | ||
105 | The Qt code routes qDebug() output to debug.log under category "qt": run with -debug=qt | |
106 | to see it. | |
107 | ||
108 | **testnet and regtest modes** | |
109 | ||
110 | Run with the -testnet option to run with "play bitcoins" on the test network, if you | |
111 | are testing multi-machine code that needs to operate across the internet. | |
112 | ||
113 | If you are testing something that can run on one machine, run with the -regtest option. | |
2027450d | 114 | In regression test mode, blocks can be created on-demand; see qa/rpc-tests/ for tests |
b498a949 | 115 | that run in -regtest mode. |
c47f5379 GA |
116 | |
117 | **DEBUG_LOCKORDER** | |
118 | ||
119 | Bitcoin Core is a multithreaded application, and deadlocks or other multithreading bugs | |
120 | can be very difficult to track down. Compiling with -DDEBUG_LOCKORDER (configure | |
2027450d AJ |
121 | CXXFLAGS="-DDEBUG_LOCKORDER -g") inserts run-time checks to keep track of which locks |
122 | are held, and adds warnings to the debug.log file if inconsistencies are detected. |