As a side project, I've been reimplementing a large chunk of Ethereum PoC-5 in Haskell. Given all the stuff that's going on in that ecosystem, though, I've basically stopped development.<p>Bitcoin is held together by a delicate balance of cryptography, software design, and community involvement. Most altcoins are very conservative about the changes they introduce, keeping them as close as possible to successful designs and carefully monitoring the blockchain for stability. Ethereum, meanwhile, no longer bears much resemblance to the projects that inspired it. Even if Ethereum's core algorithms are sound -- and it's becoming difficult for anyone outside the project to evaluate that at this point -- there's no concrete evidence that it will be stable in practice, and they're already building many layers of code on an uncertain foundation.<p>I'd love for Ethereum to succeed; I've always been more interested in Bitcoin as a distributed system than as a currency, so it's great to see people pushing it in that direction. But it's gone past the point where I can evaluate all the new stuff that's happening, and I feel weird devoting time to a project when I can't see where it's headed. We'll see what happens once the dust settles...
Determining if that algorithm is secure against attacks which steal value is going to be tough. Even if the algorithm is secure, the implementation may not be. Building a general-purpose interpreter into a money system may not be a great idea from a security perspective. Could someone put hostile code in the block chain? Cause overflows? I don't know.<p>This is a really complicated consistent-eventually system. It's possible for parts of the network to be out of sync, possibly due to attacks. Eventually, the inconsistency is discovered when two out-of-sync subnets communicate. Then there's a complex dispute-resolution strategy which ultimately results in some blocks being invalidated. It's not clear how long this takes. Since the application is money transfer, a substantial delay may offer the opportunity to take the money and run, which is almost standard practice in the Bitcoin world.<p>(A long, long time ago I looked at a similar problem - keeping routing tables in sync in the presence of bogus data insertion. I never had a really airtight solution; the best I was able to do was to come up with a way to detect attacks. If there's now a good solution to that problem, perhaps it should go into a successor to Border Gateway Protocol, which has route forgery problems.)<p>Checking out the security of this thing looks like a PhD thesis sized project, with a really good crypto advisor.