Author

Topic: [BOUNTY] Electrum Firefox Extension (Read 6980 times)

newbie
Activity: 44
Merit: 0
August 25, 2012, 02:52:50 PM
#44
Sent!

Got it, thanks again!
newbie
Activity: 44
Merit: 0
August 25, 2012, 01:57:43 PM
#43
Hey, I'd like to send you a little (0.512 BTC, the most I can afford) donation for your chrome extension. Even though I'm not using it other than for testing, I think you made a great job there?

Where do you want the donation sent? Smiley


Sweet, thanks!

Feel free to send it to 1D2qX2bu7uxKbCbTBvGRrx5ctfwrXYFdDM
legendary
Activity: 1078
Merit: 1016
760930
August 25, 2012, 07:29:44 AM
#42
Thanks for the explanation. I agree the one-time seed stretching delay is reasonable (about 45 seconds on this old laptop).

45 seconds! It's only once, but still, that's stretching it... I'll look into speeding up the SHA256 implementation I'm using, but can't promise anything.

The screenshot helped a ton, thanks! It's the window width: Twitter bootstrap (the UI library I'm using) tries to render a different layout below width 980px that I didn't test, and it breaks everything!

Thanks again for all of the feedback!

Hey, I'd like to send you a little (0.512 BTC, the most I can afford) donation for your chrome extension. Even though I'm not using it other than for testing, I think you made a great job there?

Where do you want the donation sent? Smiley
donator
Activity: 674
Merit: 522
August 16, 2012, 06:02:19 AM
#41
Got it, tnx!
legendary
Activity: 1896
Merit: 1353
August 16, 2012, 03:39:50 AM
#40
I pledge 5btc.


the delay has expired, and nobody proposed an extension that matches the requirements (although a chrome extension has been developed).
I will therefore return your plegde of 5 btc (see PM).
legendary
Activity: 1078
Merit: 1016
760930
August 01, 2012, 04:14:48 AM
#39
I'm surprised this isn't getting more love.
legendary
Activity: 1078
Merit: 1016
760930
legendary
Activity: 1078
Merit: 1016
760930
July 16, 2012, 04:48:23 PM
#37
But... I did just run into another thing Smiley

Suddenly, the seed stretching when creating a new wallet doesn't start at all.
Progress bar stays on 0 and nothing happens. Not sure if this is something
with my browser data or something, I couldn't further investigate yet.

Ah, that was because I got a little too eager deleting code from lib/bitcoinjs. Should be fixed with 0.1.6. I'll go through it (and other parts) more carefully to cut down the size of the package.

Yep, fixed!
I'll be sure to make a small donation when I get some BTC.
newbie
Activity: 44
Merit: 0
July 16, 2012, 04:43:52 PM
#36
But... I did just run into another thing Smiley

Suddenly, the seed stretching when creating a new wallet doesn't start at all.
Progress bar stays on 0 and nothing happens. Not sure if this is something
with my browser data or something, I couldn't further investigate yet.

Ah, that was because I got a little too eager deleting code from lib/bitcoinjs. Should be fixed with 0.1.6. I'll go through it (and other parts) more carefully to cut down the size of the package.
legendary
Activity: 1078
Merit: 1016
760930
July 16, 2012, 04:35:17 PM
#35
Oops, didn't realize I needed to hit "Publish changes" in the developer dashboard for it to go live. Should be upgrading to 0.1.5 now, where it's fixed.


Oh ok Wink v0.1.5 working fine indeed!

But... I did just run into another thing Smiley

Suddenly, the seed stretching when creating a new wallet doesn't start at all.
Progress bar stays on 0 and nothing happens. Not sure if this is something
with my browser data or something, I couldn't further investigate yet.
newbie
Activity: 44
Merit: 0
July 16, 2012, 04:25:03 PM
#34
Oops, didn't realize I needed to hit "Publish changes" in the developer dashboard for it to go live. Should be upgrading to 0.1.5 now, where it's fixed.
legendary
Activity: 1078
Merit: 1016
760930
July 16, 2012, 04:15:58 PM
#33
Also, unless I'm missing something, I guess you can make your package almost 50% smaller
by removing the 'node_modules' folder from bitcoinjs. At first sight, your code doesn't appear
to depend on it.

The jake script which builds lib/bitcoinjs/build/bitcoinjs-min.js depends on it, although the extension doesn't use anything it lib/bitcoinjs except that file. I'll remove it when I make the package, but I'll keep it in github, since I want people to be able to see the code they're running.

I've released a fix to the Options page, so that should be all better now.

Thanks for the quick update!

It seems that the issue with the options page is not totally solved, though:
 (items missing in the black menu bar, vertical positioning of the bar)



But if I maximize the window, then I confirm that it shows perfectly indeed.
newbie
Activity: 44
Merit: 0
July 16, 2012, 03:25:31 PM
#32
Also, unless I'm missing something, I guess you can make your package almost 50% smaller
by removing the 'node_modules' folder from bitcoinjs. At first sight, your code doesn't appear
to depend on it.

The jake script which builds lib/bitcoinjs/build/bitcoinjs-min.js depends on it, although the extension doesn't use anything it lib/bitcoinjs except that file. I'll remove it when I make the package, but I'll keep it in github, since I want people to be able to see the code they're running.

I've released a fix to the Options page, so that should be all better now.
legendary
Activity: 1078
Merit: 1016
760930
July 15, 2012, 05:22:15 PM
#31
Thanks for the explanation. I agree the one-time seed stretching delay is reasonable (about 45 seconds on this old laptop).

45 seconds! It's only once, but still, that's stretching it... I'll look into speeding up the SHA256 implementation I'm using, but can't promise anything.

The screenshot helped a ton, thanks! It's the window width: Twitter bootstrap (the UI library I'm using) tries to render a different layout below width 980px that I didn't test, and it breaks everything!

Thanks again for all of the feedback!

Glad I could help!

Also, unless I'm missing something, I guess you can make your package almost 50% smaller
by removing the 'node_modules' folder from bitcoinjs. At first sight, your code doesn't appear
to depend on it.
newbie
Activity: 44
Merit: 0
July 15, 2012, 04:14:21 PM
#30
Thanks for the explanation. I agree the one-time seed stretching delay is reasonable (about 45 seconds on this old laptop).

45 seconds! It's only once, but still, that's stretching it... I'll look into speeding up the SHA256 implementation I'm using, but can't promise anything.

The screenshot helped a ton, thanks! It's the window width: Twitter bootstrap (the UI library I'm using) tries to render a different layout below width 980px that I didn't test, and it breaks everything!

Thanks again for all of the feedback!
legendary
Activity: 1078
Merit: 1016
760930
July 15, 2012, 01:52:37 PM
#29
Now I'm getting the issue with the Options page again.
Here's a screenshot.

legendary
Activity: 1896
Merit: 1353
July 15, 2012, 01:09:31 PM
#28
very nice.
legendary
Activity: 1078
Merit: 1016
760930
July 15, 2012, 01:08:50 PM
#27
Real nice!!
I like the streamlined foolproof GUI.
Great initial version.
 
2 things I've noticed:

- Options page is blank for me, not sure why... (I only see the "Options" heading and that's it)

- Initial seed stretching is much slower than in Python... I was hoping that Chrome's awesome JS engine would be faster at this, but well.  Or perhaps you're generating more than 5 addresses?

Thanks!

I'm saw the Options page show up blank once as well when testing on my older laptop (with SC2 running in the background for slowness). Not sure what's causing it, but I'll refactor the JS on the Options page to fix it ASAP.


Hmm... Can't post a screenshot as it's now working fine, after uninstalling / re-installing the extension! Very nice and clearly laid-out option page, by the way.


Quote
The initial stretching doesn't include generation of the addresses (which is relatively quick). It's applying SHA256 to the seed 100k times to get the master private key (which is used to generate the private keys of addresses). I think this is slower because Python uses SHA256 implemented in a C library, whereas the extension uses a JS implementation. I don't think there's anything I can do to speed it up, since I want to be compatible with the Electrum client, so I tried to make the UI as clear as possible. Since this only needs to be done once when a wallet is set up, I think I'm satisfied with the current implementation.

Thanks for the explanation. I agree the one-time seed stretching delay is reasonable (about 45 seconds on this old laptop).
newbie
Activity: 44
Merit: 0
July 15, 2012, 05:59:16 AM
#26
Real nice!!
I like the streamlined foolproof GUI.
Great initial version.
 
2 things I've noticed:

- Options page is blank for me, not sure why... (I only see the "Options" heading and that's it)

- Initial seed stretching is much slower than in Python... I was hoping that Chrome's awesome JS engine would be faster at this, but well.  Or perhaps you're generating more than 5 addresses?

Thanks!

I'm saw the Options page show up blank once as well when testing on my older laptop (with SC2 running in the background for slowness). Not sure what's causing it, but I'll refactor the JS on the Options page to fix it ASAP.

The initial stretching doesn't include generation of the addresses (which is relatively quick). It's applying SHA256 to the seed 100k times to get the master private key (which is used to generate the private keys of addresses). I think this is slower because Python uses SHA256 implemented in a C library, whereas the extension uses a JS implementation. I don't think there's anything I can do to speed it up, since I want to be compatible with the Electrum client, so I tried to make the UI as clear as possible. Since this only needs to be done once when a wallet is set up, I think I'm satisfied with the current implementation.
legendary
Activity: 1078
Merit: 1016
760930
July 15, 2012, 05:16:34 AM
#25
Real nice!!
I like the streamlined foolproof GUI.
Great initial version.
 
2 things I've noticed:

- Options page is blank for me, not sure why... (I only see the "Options" heading and that's it)

- Initial seed stretching is much slower than in Python... I was hoping that Chrome's awesome JS engine would be faster at this, but well.  Or perhaps you're generating more than 5 addresses?
ffe
sr. member
Activity: 308
Merit: 250
July 15, 2012, 04:42:49 AM
#24
...Perhaps I should also add a way of opening the Options page from the popup?

No need. Everything is there and intuitive once I knew to look for options. Thanks.
newbie
Activity: 44
Merit: 0
July 15, 2012, 01:40:17 AM
#23
Thanks!

- I like the naming of receive keys. (Wish I could figure out how to retrieve a receive key by name at a later time.)
 - Was not clear if I had to save the initial randomness to restore a wallet or if it can be regenerated from the password.
 - Not clear what server it is using to handle the blockchain.
 - Send is taking a while - I think because I'm playing with tiny amounts of coin. Wish I could add a miner fee to speed things up.

If you right-click on the extension icon and click "Options", it should open up a tab that addresses these. Perhaps I should also add a way of opening the Options page from the popup?

- Was not clear if I had to save the initial randomness to restore a wallet or if it can be regenerated from the password.

The initial randomness (the seed) is crypto-random, and optionally encrypted with AES using a passphrase, so yes, you need both the characters you see and the password (you can see them again in the Seed tab of the Options page).
ffe
sr. member
Activity: 308
Merit: 250
July 15, 2012, 12:57:23 AM
#22
Hi all,

I've published an initial release of a Chrome Extension to manage a bitcoin wallet in most ways similar to the Electrum client. So far I've been the only one testing it, so I'd appreciate some initial feedback. The extension is available here:

https://chrome.google.com/webstore/detail/hfdeddmpdncodjalbadbanlcombfeoll/

The code is on github here: https://github.com/andreyf/electrum-wallet-chrome-extension. I haven't decided on a license, but it'll probably be GPLv3.

I would appreciate any criticism/feedback you might have. Feel free to e-mail me at [email protected].

Cheers,
Andrey

Just tried it. Receive worked. Currently waiting on a send. Very bare-bones but I like it.
Comments:
 - I like the naming of receive keys. (Wish I could figure out how to retrieve a receive key by name at a later time.)
 - I like the password requirement to send.
 - Was not clear if I had to save the initial randomness to restore a wallet or if it can be regenerated from the password.
 - Not clear what server it is using to handle the blockchain.
 - Send is taking a while - I think because I'm playing with tiny amounts of coin. Wish I could add a miner fee to speed things up.

Very nicely done!
newbie
Activity: 44
Merit: 0
July 14, 2012, 07:49:09 PM
#21
Hi all,

I've published an initial release of a Chrome Extension to manage a bitcoin wallet in most ways similar to the Electrum client. So far I've been the only one testing it, so I'd appreciate some initial feedback. The extension is available here:

https://chrome.google.com/webstore/detail/hfdeddmpdncodjalbadbanlcombfeoll/

The code is on github here: https://github.com/andreyf/electrum-wallet-chrome-extension. I haven't decided on a license, but it'll probably be GPLv3.

I would appreciate any criticism/feedback you might have. Feel free to reply here or e-mail me at [email protected].

Cheers,
Andrey
newbie
Activity: 44
Merit: 0
June 14, 2012, 10:37:25 PM
#20
(note: it is also possible to export the wallet as a json object; it is trivial to adapt the python client to read json)

ThomasV: could you implement import/export via JSON in the next version of the Electrum client? As you say, it shouldn't be too hard...
newbie
Activity: 44
Merit: 0
June 14, 2012, 06:29:58 PM
#19
Note that a big part of the work has already been done by Joric (see http://brainwallet.org/) : his brainwallet code can generate Electrum addresses and sign transactions. What needs to be done is the jsonrpc communication with Electrum servers, packaging the whole thing as a Firefox extension.

To anyone working on this, I cleaned up the address generation code to be a bit easier to understand. You can get it here: https://gist.github.com/2933373
legendary
Activity: 1896
Merit: 1353
June 10, 2012, 06:25:41 AM
#18
one month has elapsed! two more months to go..

several developers have expressed interest in this project.
it is still time to add a donation and increase the bounty!
legendary
Activity: 1896
Merit: 1353
June 03, 2012, 02:07:27 AM
#17
- the client should use the Electrum deterministic address generation and mnemonics. It must be able to read/write the wallet on disk, using the same file format.

Could you explain the reasoning behind this? Will you be editing or accessing the wallet file directly on the filesystem? Browser extensions usually don't write to the filesystem, and actually can't in any browser but Firefox, where it gets a bit hairy since paths are platform-dependent. Would it be acceptable to write the file to localStorage (which is saved on the filesystem)?

yes it is acceptable to use localstorage.
the idea is that users should not be stuck with the extension;
the "restore from seed" procedure should be identical, and users should be able to export their wallet in a format that is read by the python client.

(note: it is also possible to export the wallet as a json object; it is trivial to adapt the python client to read json)
newbie
Activity: 44
Merit: 0
June 03, 2012, 02:01:12 AM
#16
- the client should use the Electrum deterministic address generation and mnemonics. It must be able to read/write the wallet on disk, using the same file format.

Could you explain the reasoning behind this? Will you be editing or accessing the wallet file directly on the filesystem? Browser extensions usually don't write to the filesystem, and actually can't in any browser but Firefox, where it gets a bit hairy since paths are platform-dependent. Would it be acceptable to write the file to localStorage (which is saved on the filesystem)?
donator
Activity: 2772
Merit: 1019
June 01, 2012, 03:56:51 PM
#15
will the packages be signed? by who?

it depends on how the extension is distributed.
note that we currently have the same problem with windows builds.


yes,... and android, I guess, right?

It's still unclear (as talked about on irc quite a while back) to me as to how package trust can be established. Surely you can't oversee / facilitate production of the packages for all the platforms and you're currently not the producer of the windows binaries, right? There also are no android packages as of now, correct?

sorry to have veered a little off-topic, bit this issue is nagging in the back of my head.

No problem, it is indeed an important issue.
Note that the problem is a bit different for source code and compiled versions.

For the bitcoin-qt client, binaries are compiled independently by several developers, and they check that they get the same result (they publish a hash of the compiled file). It would be nice to have that kind of check for the Windows binaries of Electrum.

That's not a bad idea. You need at least 2 packagers per platform for that to work and some mechanism by which a rogue packager can be prevented to distribute his "alternative version". I doubt you'll get the users to compare hashes from different sources, so there has to be some instance or collaborative effort to do that?

In addition, it would be good if the hashes would be published on a different website than the sitethat distributes the packages or binaries. (in case the site gets hacked)

maybe put them in the blockchain somehow?
legendary
Activity: 1896
Merit: 1353
June 01, 2012, 01:57:08 PM
#14
will the packages be signed? by who?

it depends on how the extension is distributed.
note that we currently have the same problem with windows builds.


yes,... and android, I guess, right?

It's still unclear (as talked about on irc quite a while back) to me as to how package trust can be established. Surely you can't oversee / facilitate production of the packages for all the platforms and you're currently not the producer of the windows binaries, right? There also are no android packages as of now, correct?

sorry to have veered a little off-topic, bit this issue is nagging in the back of my head.

No problem, it is indeed an important issue.
Note that the problem is a bit different for source code and compiled versions.

For the bitcoin-qt client, binaries are compiled independently by several developers, and they check that they get the same result (they publish a hash of the compiled file). It would be nice to have that kind of check for the Windows binaries of Electrum.

In addition, it would be good if the hashes would be published on a different website than the sitethat distributes the packages or binaries. (in case the site gets hacked)
donator
Activity: 2772
Merit: 1019
June 01, 2012, 01:36:54 PM
#13
will the packages be signed? by who?

it depends on how the extension is distributed.
note that we currently have the same problem with windows builds.


yes,... and android, I guess, right?

It's still unclear (as talked about on irc quite a while back) to me as to how package trust can be established. Surely you can't oversee / facilitate production of the packages for all the platforms and you're currently not the producer of the windows binaries, right? There also are no android packages as of now, correct?

sorry to have veered a little off-topic, bit this issue is nagging in the back of my head.
legendary
Activity: 1896
Merit: 1353
June 01, 2012, 09:36:46 AM
#12
will the packages be signed? by who?

it depends on how the extension is distributed.
note that we currently have the same problem with windows builds.
donator
Activity: 2772
Merit: 1019
June 01, 2012, 09:25:43 AM
#11
will the packages be signed? by who?
legendary
Activity: 980
Merit: 1003
I'm not just any shaman, I'm a Sha256man
May 26, 2012, 06:25:18 PM
#10
interesting.....
ffe
sr. member
Activity: 308
Merit: 250
May 21, 2012, 06:05:29 PM
#9
track
legendary
Activity: 1896
Merit: 1353
May 21, 2012, 11:59:08 AM
#8
I applaud this effort, so much so I am willing to make add a 10 BTC bounty for a Google Chrome 'app' in the same style as the Firefox one.

Edit: To claim this bounty, the FF one must be first claimed to ThomasV's satisfaction.

I join this with a pledge of 5BTC generally, and add an extra 10BTC to the pledge if this is implemented for Safebit.

Safebit is currently a Chrome app, does this work for you, da2ce7? Smiley

I am not sure to understand what you mean...
Safebit is currently a chrome frontend to bitcoind.
Are you proposing to extend it so that it works with an Electrum server? that would be terrific
Eli
full member
Activity: 128
Merit: 100
May 21, 2012, 11:45:10 AM
#7
I applaud this effort, so much so I am willing to make add a 10 BTC bounty for a Google Chrome 'app' in the same style as the Firefox one.

Edit: To claim this bounty, the FF one must be first claimed to ThomasV's satisfaction.

I join this with a pledge of 5BTC generally, and add an extra 10BTC to the pledge if this is implemented for Safebit.

Safebit is currently a Chrome app, does this work for you, da2ce7? Smiley
legendary
Activity: 1896
Merit: 1353
May 21, 2012, 08:50:20 AM
#6
Clarification:

the extension has to read/write the wallet on disk.
this does not mean that the wallet has to reside on the path used by other clients; it can be in your .firefox directory


legendary
Activity: 1896
Merit: 1353
May 14, 2012, 02:47:01 PM
#5
bump again!
please participate!

A Firefox wallet addon would be as easy to use as a web wallet, with the security and availability of Electrum!
legendary
Activity: 1896
Merit: 1353
May 12, 2012, 08:40:19 AM
#4
bumping this. 25 btc have been pledged so far.
donator
Activity: 674
Merit: 522
May 11, 2012, 05:49:58 AM
#3
I pledge 5btc.
legendary
Activity: 1222
Merit: 1016
Live and Let Live
May 11, 2012, 12:40:17 AM
#2
I applaud this effort, so much so I am willing to make add a 10 BTC bounty for a Google Chrome 'app' in the same style as the Firefox one.

Edit: To claim this bounty, the FF one must be first claimed to ThomasV's satisfaction.
legendary
Activity: 1896
Merit: 1353
May 10, 2012, 02:10:33 PM
#1
I want a Firefox extension that implements an Electrum client in javascript, and that users can install in one click.
I have no experience writing Firefox extensions, so I guess it is better to find someone else who can do that.

Here is what needs to be done in order to claim the bounty:
 - the client should be able to generate addresses, send and receive coins, show the transaction history.
 - the client should use the Electrum deterministic address generation and mnemonics. It must be able to read/write the wallet on disk, using the same file format.
 - the client should synchronize its wallet with the server (eg using a timer)
 - javascript. The code should be entirely included in the extension. No code should be downloaded by the extension.
 - the extension should detect bitcoin: URIs

Note that a big part of the work has already been done by Joric (see http://brainwallet.org/) : his brainwallet code can generate Electrum addresses and sign transactions. What needs to be done is the jsonrpc communication with Electrum servers, packaging the whole thing as a Firefox extension.

I am pledging 10 BTC for this task.
If you want to increase the bounty, please send your pledges to:  bitcoin:1NiiYDMxHgfUH2nFcu5A6z6rix8Yc4cgVs

If the bounty has not been claimed within 3 months (august 11th), plegdes will be returned to their originators (the first input address of the transaction).


Update (august 16, 2012): the bounty campaign was not successful. Pledge returned.
Jump to: