Cornell computer scientists, including Emin Gün Sirer, write on distributed systems, Bitcoin, Ethereum, and database fault tolerance.
HN links it for its MongoDB data-loss critique, analysis of the DAO hack, and Bitcoin pieces; commenters call Sirer worth reading and agree with its conclusions.
Again, excellent comments! :D
> The very last section suggests (to me) that despite what value the BTC protocol has, it doesn't "square the triangle."
How so?
> However, recent research blew this entirely out of the water, at least as far as Bitcoin goes[0]. They propose a change to the protocol that makes it a >25% percent problem, but currently it is a >0% problem. That is kind of a big deal. There are some good ideas in the "proof of stake" discussions, but none of the answers appear to lend support to the "triangle is squared" hypothesis.
I was looking for that paper a while ago! Somehow my google-fu failed me and I got distracted by something else, and so, forgot about it for a while.
Thanks to you, I've had a chance to download the paper and read it.
Indeed, at first glance it might seem like they're pointing out a big hole in BTC, but I don't think this is the case, and neither do a lot of other folks over on the BTCtalk forum. [1]
There is one big flaw in their paper that the authors acknowledge (quite poorly IMO) in their followup blog post to the reactions that they received [2], and that is point #9, that they for some reason buried toward the bottom of the blog post:
Our paper does not address what happens when multiple pools employ the
selfish strategy. But if all pools were selfish, the blockchain would
not make forward progress for large periods of time, while selfish
groups hoard their blocks. Then, perhaps, depending on the profit-
…
> Do you know any publicly available recommendation from these regulators against MongoDB?
If there isn't one, there should be.
>Let's assume this is made the top priority, in your opinion, what task immediately follows? Or what former priority does it replace?
Mongo jeopardizes the overall security and reliability of the system, thus exposing Stripe to serious liability, so I'd say replacing it is part of the basic expectation from any production-level computer system. Obviously I don't have a copy of "Important Stripe Person's Priority List", but I'd assume such basic functionality is part of an implicitly-assumed functional baseline, and that Stripe would expect said important people to escalate and develop a plan to handle such a fundamental flaw ASAP.
If we were just tracking people's favorite cat videos or something, it'd be one thing. Attacks targeting malicious data modification and exploitation of races wouldn't really be that much of a concern. It's not great to have that attack surface but not necessarily the end of the world if someone's favorite cat videos get added to their account 1000 times. But when we're dealing with money, this kind of thing needs to be taken seriously, and tacking on a big pile of crap in front of the datastore is not a serious way to address its fundamental shortcomings, at least not when there are many better, proven options on the market.
Just in case someone thinks I'm being an alarmist here, this has already happened; multiple…
Thanks for writing this. I agree with everything you said.
I'd also add the concern of Bitcoin lacking an inflationary mechanism. I can't see it ever becoming a currency without that. If it's lucky, it may be a transactionary vehicle before the next technology displaces it. But, like you pointed out, it doesn't have much of a utility for that purpose anyway - taking transaction fees, security and usability into account.
Emin Gün Sirer wrote [0] an excellent survey of the Mt. Gox scandal, and a measured evaluation of the problems with Bitcoin. I loved this part:
> What Nigerian scams are to your grandfather, Bitcoin exchanges are to the 20-30 semi-tech-savvy libertarian demographic.
He ends by recommending Dogecoin because the community doesn't take itself too seriously.
> If one must pick a cryptocurrency, the lowly dogecoin, of all things, is doing everything right. It's based on economic principles that provide the right incentives for a healthy economy. The community does not take itself seriously. Most importantly, no one pretends that Doge is an investment vehicle, a slayer of Wall Street, or the next Segway. No one would be stupid enough to store their life savings in Dogecoins. And people freely share the shiba goodness by tipping others with Doge. So, young people who are excited about cryptocurrencies and want to get involved: Dogecoin is where the action is at. Much community. So wow.
I just hope the hoardes of Bitcoin speculators don't ruin it for them.
>…
Best estimates are that there are about one million
holders of Bitcoin; 47 individuals hold about 30 percent,
another 900 hold a further 20 percent, the next 10,000
about 25% and another million about 20%, with 5% being
lost. So 1/10th of one percent represent about half the
holdings of Bitcoin and 1 percent close to 80 percent
(http://www.businessinsider.com/927-people-own-half-
of-the-bitcoins-2013-12). The concentration of Litecoin
ownership is similar
(http://litecoin-rich-list.blogspot.com).
Most of the big wallets have been in place from early on,
so sitting back and watching your capital grow has been a
very successful strategy.
The distribution of Bitcoin holdings looks much like the
distribution of wealth in North Korea and makes the
China’s and even the US’ wealth distribution look like
that of a workers’ paradise [1]
Both Bitcoin and Ethereum mining are very centralized,
with the top four miners in Bitcoin and the top three
miners in Ethereum controlling more than 50% of the hash rate. [2]
Even taking a conservative skewed estimate [3] of wealth distribution in Bitcoin, it's about twice as worse than normal capital oligarchy. This is because PoW* style cryptocoins allow anyone with capital to proportionally extract the limited supply of Bitcoins/Cryptocoins/Altcoins/Tokens/Etc - but often significantly worse due to how Satoshi style PoW algorithms produce the majority of the supply in a short time…
I've avoided, with care, the statement that PHP is unsafe. I've not even hinted at the statement that it is impossible to write good software in PHP.
PHP is not unsafe. You can write magnificent software in PHP.
But PHP makes the safe often harder than the unsafe. The community even more so. It direct newbies to write crappy software more than that it guides them to learn about architecture, maintenance, patterns. All the stuff the article we're discussing is promoting.
And yes, mtgox could have been hacked even if it was written in pure functions only (well...). What the exact reason is, is unclear. But researchers have pointed out that the sourcecode (leaked by the hackers), contained self-written elliptic curve cryptography, in PHP, which was flawed[1].
Before you comment 'writing your own cryptography is always dumb, has nothing to do with PHP', please note that 1. PHP lacked any libraries for this at that time (it still does?), 2. someone has to write these libs or bindings and 3. in this case it was written, in a language that is -and certainly back then was- unsuited to write such code in.
It was not the language itself. But PHP is more than a language, it is an ecosystem. And that ecosystem has brilliant code and magnificent contributors. But is overwhelmed with crappy wordpress hacks and similar WordPress "developers". As well as, apparently, frequented by people who think it is wise to write their own crypto libraries in PHP for a Bitcoin Exchange.
[1]…
So far, we have a long way to go to build higher quality code. There's a few reasons:
1. Blockchain smart contracts are often unchangeable, so you can't fix bugs
2. The language is being built as people write code, with some bad design choices that encourage mistakes (slowly being fixed)
3. Libraries are still being developed
4. Tooling is still limited (even basic linting)
5. People are not taking the time to have a beta process.
6. People prematurely optimize gas, at the cost of readability
(For non-Ethereum devs, here's a short tutorial for how the language works: https://learnxinyminutes.com/docs/solidity/ )
My own view is that you have to code expecting that things go wrong, and ensure that your logic survives inevitable mistakes ('resiliency').
There's a lot of great resources on security, for people interested in this space:
Ethereum Safety: https://github.com/ethereum/wiki/wiki/Safety
Decentralized Application Security Project: https://dasp.co/
Consensys Smart Contract Best Practice Guide (I helped coauthor this back in 2016 after the DAO):
https://consensys.github.io/smart-contract-best-practices/
Hacking Distributed is a great blog for blockchain security:
http://hackingdistributed.com/
Emin and Phil Daian are great to follow on Twitter:
https://twitter.com/phildaian
https://twitter.com/el33th4xor
Audit Checklist (written by my team): https://github.com/cryptofinlabs/audit-checklist
(Disclosure: Our team does audits for a few projects:…