Received: from sog-mx-4.v43.ch3.sourceforge.com ([172.29.43.194] helo=mx.sourceforge.net) by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1XCPNt-0006el-8J for bitcoin-development@lists.sourceforge.net; Wed, 30 Jul 2014 08:37:17 +0000 Received-SPF: pass (sog-mx-4.v43.ch3.sourceforge.com: domain of gmail.com designates 209.85.213.173 as permitted sender) client-ip=209.85.213.173; envelope-from=laanwj@gmail.com; helo=mail-ig0-f173.google.com; Received: from mail-ig0-f173.google.com ([209.85.213.173]) by sog-mx-4.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128) (Exim 4.76) id 1XCPNp-0003zk-4U for bitcoin-development@lists.sourceforge.net; Wed, 30 Jul 2014 08:37:17 +0000 Received: by mail-ig0-f173.google.com with SMTP id h18so6907738igc.0 for ; Wed, 30 Jul 2014 01:37:07 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.42.38.137 with SMTP id c9mr3453809ice.94.1406709427821; Wed, 30 Jul 2014 01:37:07 -0700 (PDT) Received: by 10.64.27.228 with HTTP; Wed, 30 Jul 2014 01:37:07 -0700 (PDT) In-Reply-To: References: Date: Wed, 30 Jul 2014 10:37:07 +0200 Message-ID: From: Wladimir To: Caleb Roger Davis Content-Type: text/plain; charset=UTF-8 X-Spam-Score: -1.6 (-) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. -1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for sender-domain 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (laanwj[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-Headers-End: 1XCPNp-0003zk-4U Cc: Bitcoin Dev Subject: Re: [Bitcoin-development] Bitcoin development (testing & where to get Wallet code) X-BeenThere: bitcoin-development@lists.sourceforge.net X-Mailman-Version: 2.1.9 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jul 2014 08:37:17 -0000 On Wed, Jul 30, 2014 at 12:32 AM, Caleb Roger Davis 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