<p>As someone that has implemented a small eWallet, I suppose I can answer this question from my perspective.</p>

<p>An implementation of an eWallet is fairly simple. Using the <a href="https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list" rel="nofollow">official API</a> makes everything come down to issuing correct JSON RPC calls. You generally have a bitcoind instance running on a server, along with your website front. The main problem is making sure that your site can distinguish between various people and make sure they can't access each other's money. In practice, it's fairly simple.</p>

<p>There are a few implementation roads you can take with eWallets:</p>

<ul>
<li>You can have one account per person, so as long as you can distinguish between people your website can be "stateless", as in not keeping any data at all. I have implemented that and it wasn't hard.</li>
<li>You can let each person have as many accounts as they wish. This requires some additional info to be stored on your website and to ensure your naming is unique. Also, not much of a problem, I have done it.</li>
<li>You can move everyone's money into a shared pool and keep track of how much does each person have. Your website server needs to have a separate database of balances. A bit more tricky, you have to keep in mind such problems like double-spends and so forth not to credit scammers. As far as I know this is the most popular model for eWallets.</li>
<li>Focus mainly on keeping user's private keys. This is an option used for example by <a href="https://www.strongcoin.com/" rel="nofollow">StrongCoin</a>. The website can fetch your balances from such services as <a href="http://blockexplorer.com/" rel="nofollow">Block Explorer</a>, decrypt your keys on your computer and let you create transactions there as well. An interesting model as it doesn't store all the private keys in one easily accessible wallet.dat to steal.</li>
</ul>

<p>There are a lot of concerns one needs to keep in mind when implementing an eWallet - mainly safety of your funds and so forth, but that's a topic for another question.</p>

<p>As for why they aren't open source, well, I personally want to earn some money from my work, so I keep the source code for myself and anyone that commissions me for creating one for them. Other reasons not to go open source can be to avoid competition, or not to expose some potential security flaws in one's system.</p>

CC BY-SA 3.0
2012-11-08T08:00:52.470Z
2012-11-08T08:00:52.470Z
ThePiachu
<p>If someone wishes to share their work with me, I am grateful.  But I do not expect that others are obligated to share their work.</p>

CC BY-SA 3.0
2012-11-08T05:08:39.697Z
2012-11-08T05:08:39.697Z
Stephen Gornick
<p>How are popular online bitcoin wallets, like blockchaininfo's implemented? Why aren't they open-source?</p>

CC BY-SA 3.0
2013-02-02T09:08:46.230Z
-1 for asking why they aren't open source (just silly). You may remove that side-question, though.
o0'.
CC BY-SA 3.0
2012-11-08T02:48:27.163Z
This is too vague to be reasonably answerable, if you are asking for details of all "popular online wallets". Can you rephrase the question to something specific and answerable, such as just "How is the blockchaininfo eWallet system implemented?"? If not, I suspect this question will be closed
Highly Irregular
CC BY-SA 3.0
2012-11-08T05:09:20.397Z
The client-side wallet code (e.g., Javascript) is open source.  The server-side is not.
Stephen Gornick
<wallet><e-wallet><blockchain-wallet-app>
How are popular bitcoin wallets implemented?
Kinnard Hockenhull
# How are popular bitcoin wallets implemented?

(Asked by: username_0 on 2012-11-08)

How are popular online bitcoin wallets, like blockchaininfo's implemented? Why aren't they open-source?

**Tags:** wallet, e-wallet, blockchain-wallet-app

> **Comments:**
> **username_2**: This is too vague to be reasonably answerable, if you are asking for details of all "popular online wallets". Can you rephrase the question to something specific and answerable, such as just "How is the blockchaininfo eWallet system implemented?"? If not, I suspect this question will be closed  
> **username_3**: The client-side wallet code (e.g., Javascript) is open source.  The server-side is not.  
> **username_1**: -1 for asking why they aren't open source (just silly). You may remove that side-question, though.  

---

## 2 answers

### Answer by username_4 on 2012-11-08. Score: 3

As someone that has implemented a small eWallet, I suppose I can answer this question from my perspective.

An implementation of an eWallet is fairly simple. Using the [official API](https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list) makes everything come down to issuing correct JSON RPC calls. You generally have a bitcoind instance running on a server, along with your website front. The main problem is making sure that your site can distinguish between various people and make sure they can't access each other's money. In practice, it's fairly simple.

There are a few implementation roads you can take with eWallets:

* You can have one account per person, so as long as you can distinguish between people your website can be "stateless", as in not keeping any data at all. I have implemented that and it wasn't hard.
* You can let each person have as many accounts as they wish. This requires some additional info to be stored on your website and to ensure your naming is unique. Also, not much of a problem, I have done it.
* You can move everyone's money into a shared pool and keep track of how much does each person have. Your website server needs to have a separate database of balances. A bit more tricky, you have to keep in mind such problems like double-spends and so forth not to credit scammers. As far as I know this is the most popular model for eWallets.
* Focus mainly on keeping user's private keys. This is an option used for example by [StrongCoin](https://www.strongcoin.com/). The website can fetch your balances from such services as [Block Explorer](http://blockexplorer.com/), decrypt your keys on your computer and let you create transactions there as well. An interesting model as it doesn't store all the private keys in one easily accessible wallet.dat to steal.

There are a lot of concerns one needs to keep in mind when implementing an eWallet - mainly safety of your funds and so forth, but that's a topic for another question.

As for why they aren't open source, well, I personally want to earn some money from my work, so I keep the source code for myself and anyone that commissions me for creating one for them. Other reasons not to go open source can be to avoid competition, or not to expose some potential security flaws in one's system.


---

### Answer by username_3 on 2012-11-08. Score: 1

If someone wishes to share their work with me, I am grateful. But I do not expect that others are obligated to share their work.


---

