Bitcoin is at least one order of magnitude more complex than Tarsnap, or the crypto used in v1 of the Amazon AWS API. We should have seen far more bugs of varying severities if it was a one man band.
Is there any actual analysis to support the claim that it is an order of magnitude more complex than AWS crypto or Tarsnap?
There have been numerous vulnerabilities in the software implementation[1], and there has been (arguably) at least two bug in the algorithm[2][3].
I'd note that both the AWS & Tarsnap problems were implementation bugs, not algorithmic problems. That is a much better record than both the Bittorrent implementation and algorithmic record.
That's impressive, but doesn't seem superhuman.
Bittorrent (which was the work of one person AFAIK), for example has had no real algorithmic changes to the core protocol since it was released[4], and it is much more widely used than Bitcoin. (Yes, I know about trackerless .torrents, but that's more the discovery mechanism than the core transport algorithm).
"Is there any actual analysis to support the claim that it is an order of magnitude more complex than AWS crypto or Tarsnap?"
I don't think so, and I personally disagree with this statement.
As a developer, I find bitcoin 0.1.0's code easy to read and understand (I had requested a tarball of it about 2 years ago from one of the developers, as it was not in source control). And even the number of lines of code is not particularly impressive. Version 0.1.0 has only 13k lines of C++ code (excluding GUI code):
417 ./ui.h
720 ./uibase.h
1806 ./uibase.cpp
3228 ./ui.cpp
6171 total
For comparison, many HN readers who are talented developers would consider 5k LoC of C++ relatively easy to write in a span of 3-5 weeks, as a day job, for a small project that they have a precise idea how to implement. So 13k lines for a
project that apparently spanned a few months of Satoshi's time is absolutely plausible.
I may be wrong, but I thought Satoshi had been working on Bitcoin for 2 years before releasing anything. Granted he worked on the concepts and the white paper alongside the code.
Comments
Bitcoin is at least one order of magnitude more complex than Tarsnap, or the crypto used in v1 of the Amazon AWS API. We should have seen far more bugs of varying severities if it was a one man band.
Is there any actual analysis to support the claim that it is an order of magnitude more complex than AWS crypto or Tarsnap?
There have been numerous vulnerabilities in the software implementation[1], and there has been (arguably) at least two bug in the algorithm[2][3].
I'd note that both the AWS & Tarsnap problems were implementation bugs, not algorithmic problems. That is a much better record than both the Bittorrent implementation and algorithmic record.
That's impressive, but doesn't seem superhuman.
Bittorrent (which was the work of one person AFAIK), for example has had no real algorithmic changes to the core protocol since it was released[4], and it is much more widely used than Bitcoin. (Yes, I know about trackerless .torrents, but that's more the discovery mechanism than the core transport algorithm).
[1] https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposu...
[2] http://sourceforge.net/p/bitcoin/mailman/message/25954806/, https://bitcointalk.org/index.php?topic=822.msg9503#msg9503
[3] http://en.wikipedia.org/wiki/Bitcoin#The_fork_of_March_2013
[4] http://bittorrent.org/beps/bep_0003.html (note the change history are all clarifications)
"Is there any actual analysis to support the claim that it is an order of magnitude more complex than AWS crypto or Tarsnap?"
I don't think so, and I personally disagree with this statement.
As a developer, I find bitcoin 0.1.0's code easy to read and understand (I had requested a tarball of it about 2 years ago from one of the developers, as it was not in source control). And even the number of lines of code is not particularly impressive. Version 0.1.0 has only 13k lines of C++ code (excluding GUI code):
Plus 6k lines of (boilerplate) GUI code: For comparison, many HN readers who are talented developers would consider 5k LoC of C++ relatively easy to write in a span of 3-5 weeks, as a day job, for a small project that they have a precise idea how to implement. So 13k lines for a project that apparently spanned a few months of Satoshi's time is absolutely plausible.I believe Bitcoin was written by one man.
Source: http://www.zorinaq.com/pub/bitcoin-0.1.0.tgz
Hum, I think between you, nl, and nwg, point 1 is looking very shabby... I think I'll revise it shortly.
I may be wrong, but I thought Satoshi had been working on Bitcoin for 2 years before releasing anything. Granted he worked on the concepts and the white paper alongside the code.
DJB still claims that qmail is exploit-free[1] as well as djbdns[2] and I think those are both 1-man shows.
[1] http://cr.yp.to/qmail/guarantee.html
[2] http://cr.yp.to/djbdns/guarantee.html