Cool project. btcd is going to make projects like this so much easier in the future, I think.<p>The old school way of doing something like serving notifications over websockets without using a hacky solution like bitcoind's walletnotify to a script, or new, well-engineered solution like btcd, is to create an actual lightweight Bitcoin node in the language of your websocket server. Traditionally, people have used artforz's old Python half-a-node for this purpose[1].<p>I recently updated this old half-a-node, also using code from jeffgarzik's python-bitcoinlib, to run on Python 3's new asyncio instead of the old asyncore. I have then have it tapping into PyZMQ to scale up and serve websockets on multiple Tornado servers. I've open sourced the asyncio part and may open source the rest soon[2]. In the full project, Tornado provides the main event loop for asyncio, but also smoothly integrates the ZMQ event loop using eventloop.ioloop.<p>I used this to create a backend for a realtime Bitcoin POS application, but I'm not convinced there's a real market yet for it, so I've not yet moved forward with it. Fun stuff.<p>1. <a href="https://github.com/jgarzik/pynode/tree/mini-node" rel="nofollow">https://github.com/jgarzik/pynode/tree/mini-node</a><p>2. <a href="https://github.com/esbullington/pynode-asyncio" rel="nofollow">https://github.com/esbullington/pynode-asyncio</a>
I had the luck of working on a Scala-akka project recently, and enjoyed it enough, wouldn't mind playing with it again.<p>It is odd that something based on the actor model could be so overengineered though. This is in spite of the fact that messages are untyped!<p>The library did feel very solid though, our project was deployed on a pretty big network and we had no issues on the akka side concerning messaging, and this was with some extremely heavy traffic message-wise.
The README for the btcwallet library says that it needs to decrypt the root key every time it needs to derive a new address. With hierarchical deterministic keys, you can derive a public-only key, which lets you derive new public keys without needing to enter the password every time.<p>This has the benefit of less time for the unencrypted key to be vulnerable in memory and also ease-of-use since it can automatically search the blockchain for keys generated by the user. For application servers this adds a huge layer of security since you can accept money with the private keys fully airgapped.
nice to see btcd getting more usage, goldmar :)<p>for the related blog entry with some more details, check out<p><a href="http://markgoldenstein.com/building-websocket-client-btcwallet-using-scala-akka/" rel="nofollow">http://markgoldenstein.com/building-websocket-client-btcwall...</a><p>we just recently released a small library that makes using the JSON-RPC much easier, and it should work with both bitcoind and btcd<p><a href="https://github.com/conformal/btcrpcclient" rel="nofollow">https://github.com/conformal/btcrpcclient</a><p>this makes some of the things mark mentioned a bit less painful, e.g. marshal/unmarshaling the JSON, error handling, async replies. it is in go, so it might not be immediately useful to scala devs.