Bitcoin Forum
November 09, 2024, 03:53:09 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: What client is easiest to fork?  (Read 1952 times)
ripper234 (OP)
Legendary
*
Offline Offline

Activity: 1358
Merit: 1003


Ron Gross


View Profile WWW
August 22, 2012, 10:00:48 PM
 #1

A bunch of us are thinking of creating a prototype of Colored Bitcoins (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 ... ?

Please do not pm me, use ron@bitcoin.org.il instead
Mastercoin Executive Director
Co-founder of the Israeli Bitcoin Association
jim618
Legendary
*
Offline Offline

Activity: 1708
Merit: 1066



View Profile WWW
August 23, 2012, 05:32:15 AM
Last edit: August 23, 2012, 06:05:09 AM by jim618
 #2

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

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

MultiBit HD   Lightweight desktop client.                    Bitcoin Solutions Ltd   Bespoke software. Consultancy.
ripper234 (OP)
Legendary
*
Offline Offline

Activity: 1358
Merit: 1003


Ron Gross


View Profile WWW
August 31, 2012, 05:00:19 AM
 #3

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

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)

Please do not pm me, use ron@bitcoin.org.il instead
Mastercoin Executive Director
Co-founder of the Israeli Bitcoin Association
Mike Hearn
Legendary
*
Offline Offline

Activity: 1526
Merit: 1134


View Profile
August 31, 2012, 08:56:29 AM
 #4

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.
Mushroomized
Legendary
*
Offline Offline

Activity: 1470
Merit: 1002


Hello!


View Profile
November 02, 2012, 02:04:14 AM
 #5

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

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?

hi
jim618
Legendary
*
Offline Offline

Activity: 1708
Merit: 1066



View Profile WWW
November 02, 2012, 09:07:54 AM
Last edit: November 02, 2012, 09:19:28 AM by jim618
 #6

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

MultiBit HD   Lightweight desktop client.                    Bitcoin Solutions Ltd   Bespoke software. Consultancy.
Mushroomized
Legendary
*
Offline Offline

Activity: 1470
Merit: 1002


Hello!


View Profile
November 02, 2012, 03:56:59 PM
 #7

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  Wink

hi
Sergio_Demian_Lerner
Hero Member
*****
Offline Offline

Activity: 555
Merit: 654


View Profile WWW
November 12, 2012, 09:48:46 PM
 #8

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.


Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!