Bitcoin development (testing & where to get Wallet code)
5 messages, 29 to 30 Jul 2014. Started by Caleb Roger Davis.
Caleb Roger Davis (2), Felipe Micaroni Lalli, Andreas Schildbach, Wladimir J. van der Laan
I have several Bitcoin contributions I would like to make, mostly for learning purposes to get started:
1. I would like to contribute to unit and/or other types of tests (code), not production code. 2. I would like to understand the Bitcoin code (as much as possible from top to bottom) 3. 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.
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.
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 ).
Is there a separate area (github & mailing list) for core wallet development?
Sincerely,
May I ask you which language? I'd love to implement Bitcoin in Clojure or Scheme.
Sincerely,
Felipe Micaroni Lalli
Walltime: https://walltime.info Bitcoin Paranoid Android developer PGP ID: 0x4c0afccfed5cde14 BTC: 1LipeR1AjHL6gwE7WQECW4a2H4tuqm768N
On 29/07/2014, at 19:32, Caleb Roger Davis <moabtek@gmail•com> wrote:
Quoted text (26 lines)
> 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. > • I would like to understand the Bitcoin code (as much as possible from top to bottom) > • 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. > 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. > > 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 ). > > Is there a separate area (github & mailing list) for core wallet development? > > Sincerely, > > > -- > Caleb > > ------------------------------------------------------------------------------ > Infragistics Professional > Build stunning WinForms apps today! > Reboot your WinForms applications with our WinForms controls. > Build a bridge from your legacy apps to the future. > http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk_______________________________________________ > Bitcoin-development mailing list > Bitcoin-development@lists•sourceforge•net > https://lists.sourceforge.net/lists/listinfo/bitcoin-development
Yes, I was thinking something on the JVM, I have a big interest in Clojure right now (am a long time Java dev, since 1996).
I do not know if I want to tackle writing bitcoin in Clojure, but I want to create a tool kit first to learn more about how it works.
Caleb
On Tue, Jul 29, 2014 at 5:12 PM, Felipe Micaroni Lalli < micaroni@walltime•info> wrote:
Quoted text (65 lines)
> May I ask you which language? I'd love to implement Bitcoin in Clojure or > Scheme. > > Related: > http://bitcoin.stackexchange.com/questions/5344/has-anyone-ported-the-bitcoin-software-to-pure-clojure > > > > > Sincerely, > > > Felipe Micaroni Lalli > > Walltime: https://walltime.info > Bitcoin Paranoid Android developer > PGP ID: 0x4c0afccfed5cde14 > BTC: 1LipeR1AjHL6gwE7WQECW4a2H4tuqm768N > > On 29/07/2014, at 19:32, 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. > > • I would like to understand the Bitcoin code (as much as possible > from top to bottom) > > • 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. > > 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. > > > > 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 ). > > > > Is there a separate area (github & mailing list) for core wallet > development? > > > > Sincerely, > > > > > > -- > > Caleb > > > > > ------------------------------------------------------------------------------ > > Infragistics Professional > > Build stunning WinForms apps today! > > Reboot your WinForms applications with our WinForms controls. > > Build a bridge from your legacy apps to the future. > > > http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk_______________________________________________ > > Bitcoin-development mailing list > > Bitcoin-development@lists•sourceforge•net > > https://lists.sourceforge.net/lists/listinfo/bitcoin-development > >
Are you aware of bitcoinj?
It contains everything to plug together a basic SPV wallet and runs in the JVM.
On 07/30/2014 09:38 AM, Caleb Roger Davis wrote:
Quoted text (101 lines)
> Yes, I was thinking something on the JVM, I have a big interest in > Clojure right now (am a long time Java dev, since 1996). > > I do not know if I want to tackle writing bitcoin in Clojure, but I want > to create a tool kit first to learn more about how it works. > > Caleb > > > On Tue, Jul 29, 2014 at 5:12 PM, Felipe Micaroni Lalli > <micaroni@walltime•info <mailto:micaroni@walltime.info>> wrote: > > May I ask you which language? I'd love to implement Bitcoin in > Clojure or Scheme. > > Related: > http://bitcoin.stackexchange.com/questions/5344/has-anyone-ported-the-bitcoin-software-to-pure-clojure > > > > > Sincerely, > > > Felipe Micaroni Lalli > > Walltime: https://walltime.info > Bitcoin Paranoid Android developer > PGP ID: 0x4c0afccfed5cde14 > BTC: 1LipeR1AjHL6gwE7WQECW4a2H4tuqm768N > > On 29/07/2014, at 19:32, Caleb Roger Davis <moabtek@gmail•com > <mailto: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. > > • I would like to understand the Bitcoin code (as much as > possible from top to bottom) > > • 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. > > 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. > > > > 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 ). > > > > Is there a separate area (github & mailing list) for core wallet > development? > > > > Sincerely, > > > > > > -- > > Caleb > > > > > ------------------------------------------------------------------------------ > > Infragistics Professional > > Build stunning WinForms apps today! > > Reboot your WinForms applications with our WinForms controls. > > Build a bridge from your legacy apps to the future. > > > http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk_______________________________________________ > > Bitcoin-development mailing list > > Bitcoin-development@lists•sourceforge•net > <mailto:Bitcoin-development@lists.sourceforge.net> > > https://lists.sourceforge.net/lists/listinfo/bitcoin-development > > > > > -- > Caleb > M: 801.896.3278 > https://plus.google.com/+CalebRogerDavis/about > > > ------------------------------------------------------------------------------ > Infragistics Professional > Build stunning WinForms apps today! > Reboot your WinForms applications with our WinForms controls. > Build a bridge from your legacy apps to the future. > http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk > > > > _______________________________________________ > Bitcoin-development mailing list > Bitcoin-development@lists•sourceforge•net > https://lists.sourceforge.net/lists/listinfo/bitcoin-development >
On Wed, Jul 30, 2014 at 12:32 AM, Caleb Roger Davis <moabtek@gmail•com> wrote:
Quoted text (5 lines)
> 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).
Quoted text (2 lines)
> I would like to understand the Bitcoin code (as much as possible from top to > bottom)
See https://www.bitcoin.org/en/developer-guide
Quoted text (3 lines)
> 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.
Quoted text (3 lines)
> 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.
Quoted text (7 lines)
> 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