Coinpunk is a project to build the first fully open source, self-hosted DIY Bitcoin wallet service you can run on your own server.

Earlier this year, I started Coinpunk with a basic implementation that managed wallets on the server side. Since then, I have spent the summer rebuilding it from scratch to support a hybrid-wallet design that moves the encryption to your web browser, where the server can't touch it. It wasn't the easy route (the original server-based implementation only took a week), and there's plenty of new problems (HTML5 is.. still pretty wild west), but it was the route I thought was right for the project, and also for the future of Bitcoin. We need web wallet solutions that are simple and easy to use, but also build upon Bitcoin's biggest strength: decentralization.

I believe strongly in the notion that you should be able to truly control your own money. Not corporations, not banks (central or private), you. That means you control your private keys, and can run the wallet on your own server if you choose to.

I'm feeling pretty good about the state of the code now, so I'm announcing that Coinpunk is now in beta. It works, and I've never lost money using it in production. But because it's dealing with real money, I need developer help to test it. I'm asking for developers (especially those proficient with client-side HTML5/JS and node.js) to start playing with it, so we can make sure we've stamped out the bugs, code smells, and potential issues before doing a formal release. It defaults to Testnet Mode by default, so you can try it out without losing real Bitcoins!

I also want to announce that I am offering 3 bounties of 0.20 BTC each (~$40) for anyone that finds and fixes (via pull request) any bugs/code issues that potentially cause wallet data loss, are a major security bug in the Coinpunk wallet code (coinpunk/models/wallet.js), bitcoinjs-lib, or in the random number generation code. If you would like help add more bounties for developers, you can send donations to this address, and I will use them to make bounties for Coinpunk development: 13PQxWUfjo1z1Y2PTL7STodBZ5V6ZsLb9M

Going forward, I have many other features I want to add. I want to provide better mobile support, build an internationalization framework, and put together an API for developers. But it's useful today as-is, so I'm going to defer these features to a future release so developers can start getting their feet wet.

I want to thank everyone at the Bitcoin Foundation for providing me with a grant to allow me to work on this full time for the summer. I also want to thank TorGuard, the Bitcoin Development Fund, and the many others that have contributed to the project. I also want to thank the many developers that wrote the open source code that this project would not have been possible without, especially Stefan Thomas for his work on BitcoinJS, the great team at BitPay, Stephen Pair, Jeff Garzik, Pieter Wuille and many others.