Pages:
Author

Topic: [BOUNTY] 200 BTC for lightweight colored coin client(s) (Read 10684 times)

legendary
Activity: 1022
Merit: 1033
Now that flattr accepting funding through bitcoin have you thought of setting up a flattr profile for the projects.  So that the projects can receive regular funding.  I'd be happy to set up a subscription.

1. Flattr doesn't pay in Bitcoins, as far as I can tell
2. Do you think such funding will be significant?
3. I really don't mind, but I'm not responsible for the web site (I'm responsible for everything else, LOL). So if you want to proceed with this I recommend using 1) contact form on http://www.bitcoinx.org/ 2) new web site is being planned, you can contact Amos in this regard (see mailing list)
legendary
Activity: 1022
Merit: 1033
Our main developer (tumak) disappeared about 1 month ago.

We have quite functional prototype:

code: https://github.com/bitcoinx/webcoinx
demo: http://bitcoinx.github.io/webcoinx/

but it has many deficiencies, so both core and user interface need to be refactored/rewritten.

We are looking for developer(s) willing to take over development of colored coin web client and make it into a solid, stable product. (It won't be cut into multiple bounties, at least not at early stages.)

I'm mainly concerned about core part, i.e. one which implements wallet, coloring, transaction handling etc.

So we are looking mostly for candidates who

  • understand Bitcoin and Bitcoin-related cryptography (hashes, public/private keys, signing etc.)
  • understands security, i.e. is able to prevent problems which can lead to loss
  • has good 'software architect' skills, i.e. can organize code in such a way that parts will work well with each other, but offer great flexibility

Finding front-end developers is of lower priority.

Server side won't be implemented in JS, instead we'll use electrum-server with some colored coin-specific modifications. I'll be responsible for server side.

If you are interested, please contact me so we can discuss details.
legendary
Activity: 1372
Merit: 1003
Now that flattr accepting funding through bitcoin have you thought of setting up a flattr profile for the projects.  So that the projects can receive regular funding.  I'd be happy to set up a subscription.
newbie
Activity: 35
Merit: 0
Just heads up, service is down for the moment, color server @

http://btx.udoidio.info:8080/static/colordefs

seems to be offline. Killerstorm?
newbie
Activity: 35
Merit: 0
Bug seems to be fixed:

https://github.com/katuma/bitcoinjs-server/commit/5bc47f6db270ccdf35026446df4db27164cf4ae6

Thanks to killerstorm for pointing out. At this point the web client seems to be solid, just did couple of dozen transactions without glitches. Cleaned up code for pull to bitcoinx repos & step by step guide how to deploy it will be released soon.
full member
Activity: 211
Merit: 100
"Living the Kewl Life"
I already fixed this one, but I think there is another bug in getAffectedTransactions(): it only returns hashes for one addressm hashes for other addresses are forgotten. (Check how hashes are passed in steps.)

huh, i vaguely remember that issue, but if i recall it was a problem with the exit node (in pubkeys.js), not with the server directly.

to be quite honest, i ran into so many issues with storage.js (or i just couldn't make sense of it) that i ended up re-writting the file from scratch. i'm now using async vs. step.

my development branch is a total mess right now as i'm experimenting with too many different things, however, I can review the code on my prod server and see if anything rings a bell. iirc it was a quick fix
legendary
Activity: 1022
Merit: 1033
take a look at the storage.js file (towards the end)

Code:
hashes.push(key.slice(20));

can be change to:

Code:
var txhash = new Buffer(key.slice(20), 'binary');
hashes.push(txhash);

basically, it was only reading the last input

I already fixed this one, but I think there is another bug in getAffectedTransactions(): it only returns hashes for one addressm hashes for other addresses are forgotten. (Check how hashes are passed in steps.)

full member
Activity: 211
Merit: 100
"Living the Kewl Life"
Some users reported all balances disappearing after transactions get confirmed in a block. This is bug in bitcoinjs (yet to be tracked down) unrelated to bitcoinx. Once this happens, only remedy at the moment is to generate new wallet.

when i first started working with bitcoinjs this was a very troubling bug (lost more than few btc -- back when they were $12). it occurs when the server is restarted and/or when the tx cache is cleared.

take a look at the storage.js file (towards the end)

Code:
hashes.push(key.slice(20));

can be change to:

Code:
var txhash = new Buffer(key.slice(20), 'binary');
hashes.push(txhash);

basically, it was only reading the last input

iirc this will fix that bug and ALL coins will automagically reappear Grin
that is unless you've deleted your wallet from the browser's storage in which case you're sol
even if you created a new wallet, the old one should still be there, just not active
let me know if you need help recovering any coins

edit: oh wait, you're running on testnet. so i guess its not a big deal
newbie
Activity: 35
Merit: 0
Some users reported all balances disappearing after transactions get confirmed in a block. This is bug in bitcoinjs (yet to be tracked down) unrelated to bitcoinx. Once this happens, only remedy at the moment is to generate new wallet.
legendary
Activity: 1022
Merit: 1033
You'll need to use armory to issue yourself a color and add it as /colordefs/.colordef in settings dialog.

It is possible to issue colored coins without ArmoryX:

1. Send coins to yourself, for example, to webcoin wallet from testnet faucet (e.g. http://testnet.mojocoin.com/ )
2. Find transaction hash (in webcoin you can click button  in tx view and it shows you txhash there)
3. Find output index of output which belongs to you. Unfortunately, http://blockexplorer.com/testnet shows transactions only after they are included into blocks, but our own block explorer can show them immediately:
  http://devel.hz.udoidio.info:3334/bexplo.html
  (Ignore color definition form field, paste tx hash and click show. you can find your output by value it is supposed to have. Note that it shows value in satoshis.)
4. Use this form to generate color definition: http://btx.udoidio.info:8080/
    Name is up to your taste,
    unit is number of satoshis per unit of currency, for example 1.
    In textarea write txhash and outindex like this:

    df6b2f7bc5562b1209ba4b42ae2b0925e363bcb62962dfde50d694dc08b7b1d8:1
    Public key is not needed.
5. After you click submit, it will show you color ID and link to color definition file.
6. If you indend to use it for Webcoin, you only need colorid, go to Webcoin (logo)->Settings->Color settings, add it as /colordefs/.colordef
7. You now can see your balance in colored coins are issued. (Use a dropdown menu to switch.)
8. Don't forget that when you send colored coins, recipient should have color definition installed BEFORE he receives them, otherwise coins might get lost.
newbie
Activity: 35
Merit: 0
Demo is running at:

http://webcoinx.tumak.cz/index.html

Chrome only (lots of debug console).

You'll need to use armory to issue yourself a color and add it as /colordefs/.colordef in settings dialog. The web wallet is able to handle the rest (sending, receiving, color balances & tx sheet). Or simply post your testnet address and i'll hook you up Smiley
full member
Activity: 211
Merit: 100
"Living the Kewl Life"
i'll check this out over the weekend.
see if there is anywhere i can contribute.
legendary
Activity: 1022
Merit: 1033
New bounties will be announced via issue tracker.

Updates (fragments of emails from bitcoinX mailing list, sorry); :



Here's it running on testnet: http://devel.hz.udoidio.info:3125/index.html
You can grab testcoins here: http://testnet.mojocoin.com/

"Colorize" button doesn't do anything useful... It simply identifies color of each unspent transaction output in a wallet. If that is successful it alerts 'triumph'.



Here's how to run it:

1. I use nodejs 0.8.9, otherwise there seems to be a problem with building bitcoinjs-server.
    Although if you feel enthusiastic you can try later version of node. Maybe I'm missing something...
2. clone git repos:
git clone https://github.com/killerstorm/bitcoinjs-server.git
git clone https://github.com/killerstorm/bitcoinjs-gui.git --recursive
git clone https://github.com/killerstorm/node-bitcoin-exit.git --recursive
git clone https://github.com/killerstorm/bitcoin-tx-spent-db.git

For bitcoin-tx-spent-db, make sure you're on branch extra, and if you already cloned it before you need to wipe some commits, sorry:

git reset --hard refs/remotes/origin/extra

2. install bitcoinjs-server as described here: https://github.com/bitcoinjs/bitcoinjs-server/wiki/Installation
3. launch bitcoinjs-server:
3.1. launch bitcoind -testnet, it seriously speeds up blockchain download for some reason
3.2. run bitcoinjs run --testnet, once it initializes hit ctrl-c and edit ~/.bitcoinjs/testnet/settings.js:
        add cfg.verifyScripts = false; to the end
        set cfg.jsonrpc.password = "admin"; and cfg.jsonrpc.enable = true;
3.3. copy ~/.bitcoinjs/testnet/settings.js to ~/.bitcoinjs/settings.js
3.4. now you can run bitcoinjs run --tesnet and let it download blockchain

4. copy bitcoinjs-gui/config/config.sample.js to bitcoinjs-gui/config/config.js and edit exitNodeHost
    ln -s ~/bitcoinjs-gui ~/node-bitcoin-exit/public

5. in node-bitcoin-exit:
   npm link bitcoinjs
   npm install

6. stop bitcoinjs, in node-bitcoin-exit run `node server.js --testnet`
7.in bitcoin-tx-spend-db, npm install and then run `node app.js`
8. it should work now, point browser to http://localhost:3125/index.html

Note that even though it is on testnet, it shows mainnet address, so it won't properly.

To fix this, edit 7th line of bitcoinjs-gui/scripts/vendor/bitcoinjs-lib/src/address.js

  this.version = 0x6f;

(Yep, it should be automatic, in theory, but nobody bothered to implement it...
I'm not even sure you can detect whether it is testnet in context of bitcoinjs-lib...)



First, we need a better name... Original author called it webcoin, I like it. But I guess we need to distinguish it...
Maybe WebcoinX?

I'm going to try issue tracker-driven process:

1. tasks will be posted to issue tracker. it includes bounty amount
2. if you want to do it, assign it to yourself
3. write code, commit it to your repo
4. include your bitcoin address in commit's comment
5. notify me
6. after your commit is reviewed and incorporated, bounty will be paid to your address

We are going to try github's issue tracker for the start. Since project is spread over many repositories, it won't be issue tracker associated with a concrete repo, but instead this one:

https://github.com/bitcoinx/colored-coin-tools/issues

Should you use pull requests? Well, I don't see value in them, just write an issue comment, notify me over email or something.
If you are a big fan of pull requests, I don't mind.

Repositories hosted on https://github.com/killerstorm/ account should be considered dev branches
Repositories hosted on https://github.com/bitcoinx/ will be more like a stable branch.

Policy:
We need to develop this software as fast as possible, so it is not acceptable to grab task for a long time and make no progress, as it will slow down progress of a whole project.
So, please, grab an issue right before you start working on it. If it takes a lot of time, or you cannot work on it anymore for some reason, consider releasing it so other can grab. If not sure, write a comment. Release partial code.

If there is anything which doesn't fit to a particular issue, please post a message to this list, or write to me personally.
Discussion of code architecture, refactoring etc. is welcome.

If you think bounty is too low, notify me, I'll bump it upward, no problem.

It is possible to make a special arrangement to take ownership of a part of a code base.
It will make it easier to do refactoring in that area without going through issue tracker.

If github isn't adequate for this stuff we'll try something else.
legendary
Activity: 1022
Merit: 1033
I'm trying to get bitcoinjs-server working under Windows 7. Where is bin/bitcoinjs supposed to find module "step"?

That's brave.

We have a Linux server for development... I can give you ssh access.

Or even set up NX...

 I worked via NX for about a month, until I bought a new laptop which made it unnecessary.
full member
Activity: 154
Merit: 100
I'm trying to get bitcoinjs-server working under Windows 7. Where is bin/bitcoinjs supposed to find module "step"?
in ../node_modules

Code:
npm install bitcoinjs
should pull in everything it needs though.
member
Activity: 86
Merit: 10
I'm trying to get bitcoinjs-server working under Windows 7. Where is bin/bitcoinjs supposed to find module "step"?
full member
Activity: 154
Merit: 100
Fixed a bug (sounds like the one you describe) - check pull request.

Yeah, works now. Thanks.

Your second patch didn't work though: it says no valueToBigInt function, or something like that.
Ah, sorry, the calls to valueToBigInt should have been to Util.valueToBigInt.
legendary
Activity: 1022
Merit: 1033
Fixed a bug (sounds like the one you describe) - check pull request.

Yeah, works now. Thanks.

Your second patch didn't work though: it says no valueToBigInt function, or something like that.
full member
Activity: 154
Merit: 100
color-aware block explorer kinda works now:

http://178.33.22.12:3334/bexplo.html

It is on testnet because there are performance issues with mainnet... Likely need to upgrade server to run it on mainnet... Also fix code, I guess.

Two color definitions are loaded: red and blue. (In future one could just point it to a color definition bundle of his choice.)

Genesis of blue:
b1586cd10b32f78795b86e9a3febe58dcb59189175fad884a7f4a6623b77486e
(loaded at start)

Genesis of red:
8f6c8751f39357cd42af97a67301127d497597ae699ad0670b4f649bd9e39abf

There is a bug: in some cases, colored input might be shows as having color 'none' at first, but when it shows same transaction again (click 'show' button) color is displayed correctly.

E.g. here: bd34141daf5138f62723009666b013e2682ac75a4264f088e75dbd6083fa2dba (4 blue inputs are merged into one).

Code is here: https://github.com/killerstorm/bitcoin-tx-spent-db (branch 'extra')

Fixed a bug (sounds like the one you describe) - check pull request.
full member
Activity: 211
Merit: 100
"Living the Kewl Life"
color-aware block explorer kinda works now:

http://178.33.22.12:3334/bexplo.html

very nice.
-----------------

just need to say that i really appreciate you taking the time recently to answer all of my questions.

since i started with bitcoin back in nov, i feel like i'm back in school doing math problems with paper and pen. when all i really want is a damn calculator.

thanks a million Wink
Pages:
Jump to: