Bitcoin Forum

Bitcoin => Wallet software => Topic started by: ripper234 on August 22, 2012, 10:00:48 PM



Title: What client is easiest to fork?
Post by: ripper234 on August 22, 2012, 10:00:48 PM
A bunch of us are thinking of creating a prototype of Colored Bitcoins (https://bitcointalk.org/index.php?topic=101197) (AKA Mastercoin/Twitcoin). The TL;DR is using the Bitcoin blockchain to represent several different coins, each with its own color.

The color is defined and calculated by the client: I can release a ripper234client that designates a certain address as a "color source", and every transaction originating from this address becomes colored. This client then displays the number of ripper234coins you have.

This thread is not a technical design thread, but rather a question - out of the existing full clients out there, which would be the easiest to fork for the purpose of this experiment? I would have preferred a client based on bitcoinj (Java > C++), but I believe there isn't a real (GUI & batteries included) client written in Java, right?

So out of the known alternatives, which would be the easiest to work with, most documented, has the best organization into modules ... ?


Title: Re: What client is easiest to fork?
Post by: jim618 on August 23, 2012, 05:32:15 AM
The MultiBit client is all written in Java. It uses Java Swing for the GUI and bitcoinj for the backend.
It uses Maven for its build.

There are a few quirks here and there but it would not be too difficult to fork.
The code is at:
 git://github.com/jim618/multibit.git (http://git://github.com/jim618/multibit.git)

The production release is the v0.4 branch and the next release (with encrypted wallets) is the v0.5 branch.

It is all MIT licence so you can do what you like with it.

Edit: There is also an example GUI Mike wrote in the bitcoinj examples called ToyWallet. VanillaWallet is also Java - it is currently closed source but you might be able to talk Nyhm into opening it to you. :-)

Edit2: Also, the protobuf wallets are really nice to extend. You can painlessly add in the data structures you want for, say, declaring the 'spectrum mapping' of colors to different addresses or whatever. The protobuf wallets are also readable in C++ and python (not that anyone has generated the accessor code to do this yet AFAIK).


Title: Re: What client is easiest to fork?
Post by: ripper234 on August 31, 2012, 05:00:19 AM
The MultiBit client is all written in Java. It uses Java Swing for the GUI and bitcoinj for the backend.
It uses Maven for its build.

There are a few quirks here and there but it would not be too difficult to fork.
The code is at:
 git://github.com/jim618/multibit.git (http://git://github.com/jim618/multibit.git)

The production release is the v0.4 branch and the next release (with encrypted wallets) is the v0.5 branch.

It is all MIT licence so you can do what you like with it.

Edit: There is also an example GUI Mike wrote in the bitcoinj examples called ToyWallet. VanillaWallet is also Java - it is currently closed source but you might be able to talk Nyhm into opening it to you. :-)

Edit2: Also, the protobuf wallets are really nice to extend. You can painlessly add in the data structures you want for, say, declaring the 'spectrum mapping' of colors to different addresses or whatever. The protobuf wallets are also readable in C++ and python (not that anyone has generated the accessor code to do this yet AFAIK).

Thanks, we might give it a try.
Anyone else cares to throw in an opinion? (bump)


Title: Re: What client is easiest to fork?
Post by: Mike Hearn on August 31, 2012, 08:56:29 AM
Matt Corallo has done a lot of work on making bitcoinj fully verifying (not only light). That work is only partly merged, it's mostly still sitting in his clone. But you could fork off that branch and make whatever changes you wanted, including the ability to mine on your alt chain.


Title: Re: What client is easiest to fork?
Post by: Mushroomized on November 02, 2012, 02:04:14 AM
The MultiBit client is all written in Java. It uses Java Swing for the GUI and bitcoinj for the backend.
It uses Maven for its build.

There are a few quirks here and there but it would not be too difficult to fork.
The code is at:
 git://github.com/jim618/multibit.git (http://git://github.com/jim618/multibit.git)

The production release is the v0.4 branch and the next release (with encrypted wallets) is the v0.5 branch.

It is all MIT licence so you can do what you like with it.

Edit: There is also an example GUI Mike wrote in the bitcoinj examples called ToyWallet. VanillaWallet is also Java - it is currently closed source but you might be able to talk Nyhm into opening it to you. :-)

Edit2: Also, the protobuf wallets are really nice to extend. You can painlessly add in the data structures you want for, say, declaring the 'spectrum mapping' of colors to different addresses or whatever. The protobuf wallets are also readable in C++ and python (not that anyone has generated the accessor code to do this yet AFAIK).

Slightly off topic, but this means you are totally ok with someone (me) messing around with it and making a new client from it?


Title: Re: What client is easiest to fork?
Post by: jim618 on November 02, 2012, 09:07:54 AM
Hi Mushroomized,

Yes that is absolutely ok to fork the code and make your own client either for your personal use or for other people to use. If you are publishing it for others make sure you start your own 'brand' and call it something other than MultiBit. This is so that people know where to go for help, updates etc.

If anything is unclear in the code just ask (perhaps PM me or use the bitcoin-multibit mailing list as I try to keep the MultiBit thread clear of technical mumbo-jumbo).

There are various improvements planned to bitcoinj/ MultiBit over the next few months so if you structure your code with those in mind you can make it easy to cherry pick the ones you want. If you subscribe to the bitcoinj mailing list you probably know what is coming anyhow. (I would recommend that mailing list to keep up to date on bitcoinj related things).

Also there is a certain amount of code that is in there purely for legacy reasons (eg support for the old serialised wallets). If you are starting a new project you do not need that old code - your code would be cleaner without it.

Look forward to seeing what you create !

Jim


Title: Re: What client is easiest to fork?
Post by: Mushroomized on November 02, 2012, 03:56:59 PM
Hi Mushroomized,

Yes that is absolutely ok to fork the code and make your own client either for your personal use or for other people to use. If you are publishing it for others make sure you start your own 'brand' and call it something other than MultiBit. This is so that people know where to go for help, updates etc.

If anything is unclear in the code just ask (perhaps PM me or use the bitcoin-multibit mailing list as I try to keep the MultiBit thread clear of technical mumbo-jumbo).

There are various improvements planned to bitcoinj/ MultiBit over the next few months so if you structure your code with those in mind you can make it easy to cherry pick the ones you want. If you subscribe to the bitcoinj mailing list you probably know what is coming anyhow. (I would recommend that mailing list to keep up to date on bitcoinj related things).

Also there is a certain amount of code that is in there purely for legacy reasons (eg support for the old serialised wallets). If you are starting a new project you do not need that old code - your code would be cleaner without it.

Look forward to seeing what you create !

Jim
Cool! Thanks, I just want to mess around with adding support for my raspis GPIO ports and maybe make a physical wallet thingie.
I'll be sure to keep you up to date  ;)


Title: Re: What client is easiest to fork?
Post by: Sergio_Demian_Lerner on November 12, 2012, 09:48:46 PM
Both Bitcoinj and BitcoinSharp are very good starting points. BitcoinSharp is outdated and requires some modifications to get it working (I posted the modifications some time ago). I like BitcoinSharp because it does not require you to get involved in Makefiles or Maven. Just use the Microsoft Express IDE.
I've been also doing tests using Bitcoinj using Eclipse IDE for Java without problems.