[Bitcoin-development] Bitcoin development (testing & where to get Wallet code)

Wladimir laanwj at gmail.com
Wed Jul 30 08:37:07 UTC 2014


On Wed, Jul 30, 2014 at 12:32 AM, Caleb Roger Davis <moabtek at gmail.com> wrote:
> I have several Bitcoin contributions I would like to make, mostly for
> learning purposes to get started:
>
> I would like to contribute to unit and/or other types of tests (code), not
> production code.

Low-level unit tests are in `src/test`. These use the boost
unit-testing framework. You can run them with 'make check' or
`src/test/test_bitcoin`.

High-level RPC tests are in `qa/rpc-tests`. These are Python scripts
that can be invoked manually, and are based on our own simple
framework.

There is also a java-based 'comparison tool' that tests high-level
behavior with regard to the block chain. It is based on bitcoinj and
acts as an external node. This is not part of the github bitcoin
repository itself, but of bitcoinj (AFAIK).

> I would like to understand the Bitcoin code (as much as possible from top to
> bottom)

See https://www.bitcoin.org/en/developer-guide

> I would like to write a Bitcoin wallet in another language (so would like to
> know where to get the "Bitcoin - Core Wallet" code, but not sure where it
> resides.

All of the wallet code is in `src/wallet.cpp` and `src/walletdb.cpp`.
If the purpose is just studying, the bitcoin core wallet is not the
most readable wallet code around, and also hard to port as it relies
on a full node in the same process. It's better to look at SPV
wallets, for example the bitcoinj-based ones.

> I am a seasoned software developer, but I do need direction on where to get
> started.  If there is a wiki doc for new developers that would reduce my
> searching and experimentation that would be great.

Something like that would be useful, yes.

> For each of the three items above, I would like to know the tools and
> frameworks I would need to understand and initially work on tests ( how to
> run the existing tests to get code coverage and find where coverage is
> needed, what is the preferred IDE and full development stack etc ), and also
> where to get started looking at the bitcoin core code and also the wallet
> code (where is the initial starting point and then I could trace from there
> ).

If you want to work on Bitcoin Core, a Linux box (or VM) is the best
development environment. Getting started building on WIndows or Mac is
harder (but possible). There is work in progress to make building the
dependencies easier for those.

Wladimir




More information about the bitcoin-dev mailing list