Bitcoin development (testing & where to get Wallet code)

Bitcoin development (testing & where to get Wallet code)
2014-07-29 23:12 ` Felipe Micaroni Lalli
  2014-07-30  8:37 ` Wladimir
  
From: Caleb Roger Davis @ 2014-07-29 22:32 UTC (permalink / raw)
  To: bitcoin-development

[-- Attachment #1: Type: text/plain, Size: 1224 bytes --]

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,


-- 
Caleb

[-- Attachment #2: Type: text/html, Size: 1413 bytes --]

 permalink raw reply	[|nested]
2014-07-29 22:32 [Bitcoin-development] Bitcoin development (testing & where to get Wallet code) Caleb Roger Davis

  2014-07-30  7:38   ` Caleb Roger Davis
  2014-07-30  8:37 ` Wladimir
  
From: Felipe Micaroni Lalli @ 2014-07-29 23:12 UTC (permalink / raw)
  To: Caleb Roger Davis, Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 2262 bytes --]

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


[-- Attachment #2: Message signed with OpenPGP using GPGMail --]
[-- Type: application/pgp-signature, Size: 842 bytes --]

 permalink raw reply	[|nested]
2014-07-29 23:12 ` Felipe Micaroni Lalli

  2014-07-30  8:27     ` Andreas Schildbach
  
From: Caleb Roger Davis @ 2014-07-30  7:38 UTC (permalink / raw)
  To: Felipe Micaroni Lalli;  Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 2862 bytes --]

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:

> 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
>
>


-- 
Caleb
M: 801.896.3278
https://plus.google.com/+CalebRogerDavis/about

[-- Attachment #2: Type: text/html, Size: 4075 bytes --]

 permalink raw reply	[|nested]
2014-07-30  7:38   ` Caleb Roger Davis

  
From: Andreas Schildbach @ 2014-07-30  8:27 UTC (permalink / raw)
  To: bitcoin-development

Are you aware of bitcoinj?

http://bitcoinj.github.io/

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:
> 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
> 





 permalink raw reply	[|nested]
2014-07-29 22:32 [Bitcoin-development] Bitcoin development (testing & where to get Wallet code) Caleb Roger Davis
  2014-07-29 23:12 ` Felipe Micaroni Lalli

  
From: Wladimir @ 2014-07-30  8:37 UTC (permalink / raw)
  To: Caleb Roger Davis;  Bitcoin Dev

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



 permalink raw reply	[|nested]