13 ms·
Bitcoin's Academic Pedigree
- cs702 9y agoThis article correctly shows that virtually none of the ideas underpinning Bitcoin are new. They can all be traced to the academic literature going back decades. Cryptographic signatures and public-key cryptography, cryptographic hash functions, cryptographic proof-of-work, time-stamping, Merkle trees, chains of transactions blocks, Byzantine fault tolerance, smart contracts -- all of these ideas were old when Bitcoin was invented. Satoshi Nakamoto's achievement lays in the complex, ingenious way in which he (or she, or they) combined these ideas into a new distributed algorithm.[1] -- [1] For those who don't know, Satoshi Nakamoto's paper, "Bitcoin: A Peer-to-Peer Electronic Cash System" proposed the first known solution to the double-spending problem in a peer-to-peer network (i.e., without centralized control), with Byzantine fault tolerance (i.e., in a manner resistant to fraudulent nodes attempting to game the rules), via a clever application of cryptographic proof-of-work. The paper is available at https://bitcoin.org/bitcoin.pdf https://bitcoin.org/bitcoin.pdf
- colordrops 9y agoIsn't everything built in top of previous work?
- wmf 9y agoMany people don't know this. Bitcoin in particular is often portrayed as coming out of nowhere.
- colordrops 9y agoWhat I'm saying is that nothing comes out of nowhere, and plenty of things are portrayed as coming out of nowhere. Bitcoin isn't anything special. I believe all the hate it receives is simply because all of the extra attention it gets and the unsavory people that surround it, and not because it is any more or less of an achievement than anything else.
- 2_listerine_pls 9y agoNo
- colordrops 9y agoExamples?
- kobeya 9y agoThe very first idea ever.
- mayank 9y agoNone of the ideas in PageRank were new either. We all stand on the shoulders of giants.
- cs702 9y agoI view Bitcoin as a more impressive achievement. As far as I understand it, PageRank reduces to "find the principal eigenvector of a stochastic matrix," in which matrix elements represent the probability of transition from each web page to every other web page. To me PageRank is a successful application of a well-known algorithm. Bitcoin's peer-to-peer protocol, on the other hand, is a new distributed algorithm. Prior to Bitcoin, no distributed algorithm existed capable of maintaining an agreed-upon blockchain of transactions in perpetuity. EDIT: Removed the word "kind of" in response to mayank's and axus's comments below.
- mayank 9y agoIt's actually not a new kind of distributed algorithm: 1. Peer-to-peer algorithms: BitTorrent would like a word with you. 2. Distributed consensus: Paxos would like a word with you. 3. Proof of work: hashcash would like a word with you. That said, I find the Bitcoin paper to be a delightful synthesis of a bunch of well known ideas.
- imnotatwork 9y agoThe total is much more than the sum of the parts in this case. You get whole new dynamics that were unpredictable from the single parts. Like saying that the first calculator was not a new kind of machine because valves existed and people made calculations before.
- cs702 9y agoPrior to Bitcoin, there was NO distributed algorithm capable of maintaining an agreed-upon blockchain of transactions in perpetuity, in a manner resistant to attack by fraudulent nodes. Such an algorithm didn't exist prior to Bitcoin.
- just_one_time_ 9y agoI still want to know why it has taken a better part of a decade for HN to finally stop shitting on Bitcoin and start learning about it finally.
- sillysaurus3 9y agoI've spent a lot of time reviewing the original Bitcoin codebase. It's brilliant code. It's production-grade C++. There's nothing in it that hints at academic origins. Most people are either academics or professional coders -- to be both is a rare exception. The codebase seemed to materialize out of nowhere. One of the earliest commits in the SVN repo contains 36 thousand lines of code. "Satoshi" (or this group of people) must have worked months or a year on this before putting it up on source control. The code also uses irc to find seed nodes, which is amusing. It just connects to #bitcoin and assumes that some of the people in the channel are running bitcoin nodes. That's a cool way around the "What if all the hardcoded seed nodes fail?" problem. I know it's probably a standard tactic, but bitcoin integrates so many standard tactics so well in addition to its academic work. Here it is as one gigantic file: https://gist.github.com/anonymous/b4d5d1ab333c5d6e238fdc2242a428b5 https://gist.github.com/anonymous/b4d5d1ab333c5d6e238fdc2242...
- ChrisClark 9y agoJust clicked to check it out and was reminded about how much I like the base-58 scheme they used for addresses.
- sillysaurus3 9y agoThere's so much like that. I'm going to try to write a blog post highlighting all the gems. My favorite is: IMPLEMENT_SERIALIZE ( READWRITE(prevout); READWRITE(scriptSig); READWRITE(nSequence); ) It's a C++ macro that implements reading and writing member variables to/from disk/network. It uses C++ templates to figure out the sizes of everything, so it winds up packing items efficiently. We used something similar in the gamedev industry, so this was a delightful surprise. Ohh, no, I take it back. This is my favorite: // // Compact size // size < 253 -- 1 byte // size <= USHRT_MAX -- 3 bytes (253 + 2 bytes) // size <= UINT_MAX -- 5 bytes (254 + 4 bytes) // size > UINT_MAX -- 9 bytes (255 + 8 bytes) // inline unsigned int GetSizeOfCompactSize(uint64 nSize) { if (nSize < UCHAR_MAX-2) return sizeof(unsigned char); else if (nSize <= USHRT_MAX) return sizeof(unsigned char) + sizeof(unsigned short); else if (nSize <= UINT_MAX) return sizeof(unsigned char) + sizeof(unsigned int); else return sizeof(unsigned char) + sizeof(uint64); } When encoding an arbitrary value, if it's less than 253, it only uses 1 byte of space. When you read a byte off the network, if it's 253, you know there are two more bytes to read. 254 = 4 bytes, 255 = 8 bytes. Again, it's a small thing -- very standard tactic. But there are dozens of tiny, effective decisions exactly like this all throughout the codebase. There's a secure allocator for wiping your private key so that it doesn't hang out in memory, with hacks to work around MSVC8 problems. Which academics bother with MSVC8 hacks? // // Allocator that clears its contents before deletion // template<typename T> struct secure_allocator : public std::allocator<T> { // MSVC8 default copy constructor is broken typedef std::allocator<T> base; typedef typename base::size_type size_type; typedef typename base::difference_type difference_type; typedef typename base::pointer pointer; typedef typename base::const_pointer const_pointer; typedef typename base::reference reference; typedef typename base::const_reference const_reference; typedef typename base::value_type value_type; secure_allocator() throw() {} secure_allocator(const secure_allocator& a) throw() : base(a) {} ~secure_allocator() throw() {} template<typename _Other> struct rebind { typedef secure_allocator<_Other> other; }; void deallocate(T* p, std::size_t n) { if (p != NULL) memset(p, 0, sizeof(T) * n); allocator<T>::deallocate(p, n); } }; Another gem (note the comments): case OP_EQUAL: case OP_EQUALVERIFY: //case OP_NOTEQUAL: // use OP_NUMNOTEQUAL { // (x1 x2 - bool) if (stack.size() < 2) return false; valtype& vch1 = stacktop(-2); valtype& vch2 = stacktop(-1); bool fEqual = (vch1 == vch2); // OP_NOTEQUAL is disabled because it would be too easy to say // something like n != 1 and have some wiseguy pass in 1 with extra // zero bytes after it (numerically, 0x01 == 0x0001 == 0x000001) //if (opcode == OP_NOTEQUAL) // fEqual = !fEqual; stack.pop_back(); stack.pop_back(); stack.push_back(fEqual ? vchTrue : vchFalse); if (opcode == OP_EQUALVERIFY) { if (fEqual) stack.pop_back(); else pc = pend; } } break; Bitcoin is worth N billion dollars right now, and this codebase really is a billion dollar codebase. Is this really the work of a single person?
- nullnilvoid 9y agoEverything is built on top of previous work which I do not intend to diminish here. But, Satoshi is a total genius. The complexity and ingenuity of Bitcoin are just amazing.
- baddox 9y agoIf that counts as "not a new idea, but just a new combination of existing ideas" then it's hard for me to think of anything that does count as a "new idea."
- bhouston 9y agoThis. True originality doesn't exist if you want to be reductionist. This is a game people use to minimize contributions of others.
- gwern 9y ago> This article correctly shows that virtually none of the ideas underpinning Bitcoin are new. They can all be traced to the academic literature going back decades. Yes, the debts Satoshi owed to others were obvious right from the start. I made pretty much exactly the same argument as OP over 6 years ago in my then-widely-read essay "Bitcoin is Worse is Better" https://www.gwern.net/Bitcoin%20is%20Worse%20is%20Better https://www.gwern.net/Bitcoin%20is%20Worse%20is%20Better - Bitcoin built on many established tools and concepts and its true contribution was putting them together in a way that was conceptually alien and disgusted people immediately on arrival. (Proof of Work still viscerally disgusts many people! _plus ça change, plus c'est la même chose_ eh? Anyone can invent something that everyone wants - everyone wants a cheaper or faster computer, for example - but it takes genius to invent something that everyone hates, thinks is useless, wasteful, evil, or all three simultaneously, and eventually wins grudging acknowledgement that it may actually be a good idea.) It's nice that Arvind & Clark have gone into more detail about the predecessors, though, I suspect that most Bitcoiners these days have little idea about it (although I think they overstate a few of them - Satoshi didn't know about B-money until he was told by Back and so most accounts of Bitcoin's genesis overstate its influence).
- vocatus_gate 9y agoHey gwern, it's you! I remember reading "Bitcoin is Worse is Better" and forwarding to quite a few friends. Great article, really like the pieces you've written over the years. Keep up the good work.
- wslh 9y agoTo be 100% fair you should recognize that Wei Dai was very close.
- decentralised 9y agoThat is known from the very beginning, Bitcoin is the culmination of years of research and prior work done in the fields of economy and cryptography. What makes it special is that it was the first digital money that actually works.
- bhaak 9y agoYou forgot an important word there that's also your username. There were lots of digital money systems that worked but were centralized.
- decentralised 9y ago:-) All money systems are digital money systems. Source: 20 years in FinTech.
- kobeya 9y agoThe economic incentives underlying bitcoin mining, the Nakamoto consensus solution to the Byzantine fault tolerance problem, is new.
- newforice 9y ago> This article correctly shows that virtually none of the ideas underpinning Bitcoin are new. The same can be said for any good or bad idea.
- clu3 9y agoThe genius idea of bitcoin, afaik, is that Satoshi created a brilliant incentive scheme, which was the reason why the nodes decided to join the network. Without this factor it would have been impossible for bitcoin to grow this far.
- toomim 9y agoAfter 12 years as an academic computer scientist, Bitcoin was the most impressive computer science research I saw. And it came from outside the academy.
- xiphias 9y agoIt's more than just science. I believe it changes the world more than anything in the last 30 years. I have been thinking of what the world would be without internet / computers / mobile phones, but having a great liquid store of value. If I had to choose only 1 of these technologies for my life, I would pick Bitcoin.
- omarchowdhury 9y agoYou do realize you need internet / computers for Bitcoin to exist, right?
- tylersmith 9y agoThe p2p network could be implemented over radio and without computers we'd just have a far lower hashrate and probably a different PoW algorithm. I don't see any reasonable way we would have discovered cryptocurrencies before the internet and computers though.
- jhall1468 9y agoBoth of which have been around for more than 30 years. I agree that both were significantly greater inventions, but I wouldn't put Bitcoin far behind them.
- lemonycracket 9y agoTell me more. So interesting. How does it work. What an insightful observation
- xiphias 9y agoYes, I know how things work. I just imagined my life if none of the technologies were invented, except an amazing store of value + great currency at the same time.
- randomwalker 9y agoCoauthor here. Here's some context for how this essay came about. When we released a draft of the Princeton Bitcoin textbook [1], one piece of feedback was that we focused on cryptocurrency technology as it is today, and ignored the juicy and tumultuous history of how the ideas developed over the last few decades. So I invited Jeremy Clark, who's connected to some of this history, to write a preface to the book. If you're interested in the history, you might enjoy that chapter. [2] Jeremy and I then got together to develop the ideas further, resulting in the present article, where we also provide some commentary on the current blockchain hype and draw lessons for practitioners and academics. [1] http://bitcoinbook.cs.princeton.edu/ http://bitcoinbook.cs.princeton.edu/ [2] https://d28rh4a8wq0iu5.cloudfront.net/bitcointech/readings/princeton_bitcoin_book.pdf https://d28rh4a8wq0iu5.cloudfront.net/bitcointech/readings/p...
- cs702 9y agoThank you for writing this, and for posting here. We need more people like you to write about and help demistify Bitcoin, to counter the hype surrounding blockchain technology. I hope you get an opportunity to write about this for a lay audience too, because mainstream media, with few exceptions, has done a poor job at covering the technology.
- gtrubetskoy 9y agoWhen you were researching the ledger part, I'm curious whether you've come across a DAG-based ledger. I've been reading the byteball [1] paper and still can't tell whether it's baloney or really the DAG is a consensus that does not require PoW... I suspect it's neither, there are trade offs, but I could not find much anything good on the subject to read. [1] https://byteball.org/Byteball.pdf https://byteball.org/Byteball.pdf
- CyberDildonics 9y agoThe most fundamental question in any DAG chain is how they address conflicting transactions in two different paths.
- EthanHeilman 9y ago
- aakilfernandes 9y agoIts amazing to me it took 15 years to go from hashcash to Bitcoin. I think it speaks to the strangeness of Bitcoin, and its niche idealogical underpinnings. Bitcoin solved a problem that most of the people never thought about. Yet if you're looking to solve Bitcoin's problem set, calibrated hashcash to secure a ledger seems completely obvious. I also thought that Bitcoin's asic-vulnerability (and thus mining centralization) would be fatal. It turned out to be not fatal (yet), but thats not something which could be determined on paper. It needed real-world use before people knew if it could work or not.
- wmf 9y agoOne of the points of the article is that the field wasn't idle during those 15 years; bit gold, b-money, and Finney's RPOW made incremental improvements on hashcash that led to Bitcoin. Also, Bitcoin is kind of a "dirty" solution to the consensus problem; if all the academics were looking for an elegant solution it's not surprising that they didn't discover it.
- Marazan 9y agoThe repeated claim that Bitcoin came up with a totally new and unknown way of solving the problem always irks me. Everyone keeping a complete history of all actions is, like, consensus 101. Research is based around not having to do that.
- SilasX 9y agoThat wasn't the key insight -- it was the idea that you could get a working solution under the assumption that 50%+1 of the hashing power is from honest nodes as long as those nodes agreed to coordinate on the ledger with the most proven work invested in it.
- lemonycracket 9y agoYou do realize that everything is pretty much re-used and not new? 99.99% of all creation is Synthetic. The other 0.01% is very rare and looks more like abstract art.
- thisisit 9y agoAnyone serious about crypotcurrencies will know at least know two ideas not being Satoshi originals - 1. Ecash, Digicash - author's refer to it in paragraph one as something people are aware of. 2. PoW/Hashcash - Sure people might not be aware of the anti-spam but they are aware of Hashcash and Adam Back. That being the case, I think author's assumption that everyone in the bitcoin space thinks Satoshi as the one inventing everything and hence the article needs to prove otherwise is..well false at best.
- la_fayette 9y agoi completely agree. there is nothing new to somebody a bit involved into bitcoin. there is even a website which is old and widely known (http://nakamotoinstitute.org http://nakamotoinstitute.org) where all the referenced literature is listed...
- nullc 9y ago/me waits for the citation for the prior fault tolerant 'consensus' with O(N) scaling; or for the consensus process that doesn't have approved membership but still achieves some useful security properties
- Hippocrates 9y agoI loved reading this. Bitcoin is truly something worth more than the sum of its parts. I don't feel that the creative combination and implementation of existing ideas diminishes the achievement one bit. (Not that the article made it out this way, just my 2 satoshis)
- davidgerard 9y agoGwern Branwen noted all this ages ago, and should have been cited in this paper. https://www.gwern.net/Bitcoin%20is%20Worse%20is%20Better https://www.gwern.net/Bitcoin%20is%20Worse%20is%20Better
- vocatus_gate 9y agoGwern actually replied elsewhere in this thread mentioning that paper. It's a great read.
- joeblau 9y agoThis was a great read. I've been in a pretty heated debate with one of my friends (As BTC seems to do) about the origins of the technical under pinnings of Bitcoin. I'm relatively new to the cryptocurrency space, but it seems like there is huge political push (Cypherpunk ideology) promoted by a vocal slice of the BTC community. Every time I ask for the history and origins, my friend credits everything to the Cypherpunk community.