public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
From: Wladimir <laanwj@gmail•com>
To: Caleb Roger Davis <moabtek@gmail•com>
Cc: Bitcoin Dev <bitcoin-development@lists•sourceforge.net>
Subject: Re: [Bitcoin-development] Bitcoin development (testing & where to get Wallet code)
Date: Wed, 30 Jul 2014 10:37:07 +0200	[thread overview]
Message-ID: <CA+s+GJAksf9NorY0gF4YTjeh+JJtO+LM0foyuLHi0gUux6ZL8w@mail.gmail.com> (raw)
In-Reply-To: <CALEpF5ab+T6k+QXK-AujQQcYPq_PyoaxB3KDGctRe1KicZpfWA@mail.gmail.com>

On Wed, Jul 30, 2014 at 12:32 AM, Caleb Roger Davis <moabtek@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



      parent reply	other threads:[~2014-07-30  8:37 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-29 22:32 Caleb Roger Davis
2014-07-29 23:12 ` Felipe Micaroni Lalli
2014-07-30  7:38   ` Caleb Roger Davis
2014-07-30  8:27     ` Andreas Schildbach
2014-07-30  8:37 ` Wladimir [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CA+s+GJAksf9NorY0gF4YTjeh+JJtO+LM0foyuLHi0gUux6ZL8w@mail.gmail.com \
    --to=laanwj@gmail$(echo .)com \
    --cc=bitcoin-development@lists$(echo .)sourceforge.net \
    --cc=moabtek@gmail$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox