Bitcoin Institute

Before the code was done: what Satoshi knew of Hashcash, b-money, Bit Gold and RPOW

A dark navy title card reading "Before the code was done" above a horizontal 2008–2010 timeline, with a gold vertical line marked "Aug 20, 2008, code nearly finished", one gold node for Hashcash before the line and nodes for b-money and MicroMint, the whitepaper, Bit Gold, Bitcoin v0.1, DigiCash and RPOW after it

In the earliest email from him that survives, Satoshi Nakamoto asked Adam Back to check a citation. The entry he sent read “[5] A. Back, ‘Hashcash - a denial of service counter-measure’”, and the next paragraph told Back where the work stood:

Satoshi Nakamoto (email to Adam Back, August 20, 2008, 5:30:39 PM UTC)

I think you would find it interesting, since it finds a new use for hash-based proof-of-work as a way to make e-cash work. You can download a pre-release draft at http://www.upload.ae/file/6157/ecash-pdf.html Feel free to forward it to anyone else you think would be interested. I’m also nearly finished with a C++ implementation to release as open source.

In the paper published on October 31, the same Hashcash entry is [6]. A new [1] stands at the head of the list: Wei Dai’s b-money, which Satoshi had not heard of when he wrote that email. Between those two numbers sits the matter this page tracks one precursor at a time: which of the systems later called Bitcoin’s ancestors were in front of Satoshi while he wrote the code, and which reached him only after.

1. Where the line falls

Satoshi dated the coding himself. On November 17, 2008 he wrote that he had worked through the details “over the last year and a half while coding it”, which puts the start around mid-2007; the self-statements inventory reads that span as running to the v0.1 release on January 8, 2009, and records his own account that the code came first and the paper after it. Inside that span, August 20, 2008 is the one point where he described the state of the code: “nearly finished”. This page uses it as the line. What sits before it was on his desk while most of the code was being written. What sits between it and January 8 arrived while he was finishing, with the design already in a draft he was handing out.

The test for each name is a record, not a guess about when he learned it: his own writing, or a message to him that he demonstrably read because he answered it. The first such record is not the first moment he knew. It is the earliest point at which the surviving record lets anyone say he did.

2. The list

PrecursorEarliest record of it in front of SatoshiSatoshi first names itBefore August 20, 2008?
Hashcash (Adam Back, 1997)Aug 20, 2008 — he cites it himselfAug 20, 2008Yes — cited in the draft he sent with the code nearly finished
Linked timestamping (Haber and Stornetta, 1991–1997)Aug 21, 2008 — “This is instead of Usenet”Oct 31, 2008 (cited in the paper)The technique is in the August 20 abstract; when he read the papers is not on record
b-money (Wei Dai, 1998)Aug 21, 2008 — Back’s replyAug 21, 2008No — “I wasn’t aware of the b-money page”
MicroMint (Rivest and Shamir, 1996)Aug 21, 2008 — Back’s second replyNever by nameNo record before Back’s pointer; not cited in the paper
Bit Gold (Nick Szabo, 1998; posted 2005)Nov 7, 2008 — Hal Finney’s post, which Satoshi answered on Nov 9Jul 20, 2010No record
Chaum’s e-cash / DigiCashNov 9, 2008 — James A. Donald’s “chaumian money”, in a post Satoshi answered on Nov 14Jan 13, 2009No record
e-gold—Jan 25, 2009No record
RPOW (Hal Finney, 2004)Jul 21, 2009 — his own emailJul 21, 2009No record
Crypto++ (Wei Dai’s library)In the v0.1.0 source: SHA code from Crypto++ 5.5.2 (September 24, 2007), headed “modified by Wei Dai”Jul 26, 2010The code, yes; no record that he connected its author with b-money

3. Precursor by precursor

3.1 Hashcash

Hashcash is the only digital-cash precursor that Satoshi brought into the record himself while the code was still being written. The August 20 email does not ask whether Hashcash is relevant. It asks whether the citation is right, and it names what is new: “a new use for hash-based proof-of-work as a way to make e-cash work.” The design-lineage analysis files Hashcash as the one cited reference used during development, and this email is why.

The number is the second piece of evidence. Hashcash was [5] in August and [6] in October, and b-money entered as [1]. A shift of exactly one is what inserting b-money at the head of the list would produce if nothing else ahead of Hashcash changed. That is a reading of the numbers, not a reading of the draft: the draft linked in the email is lost, and Wei Dai, Adam Back and Gregory Maxwell have told Gwern they have no copy, so its first four entries cannot be checked.

The timestamping literature sits in a different place. The August 20 abstract already says the network “timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work”, and the next day Satoshi set his design against the existing practice in four words, “This is instead of Usenet.” The paper says the same thing at length: a proof-of-work system “rather than newspaper or Usenet posts.” He knew the practice of publishing hashes for timestamping by August 21. Whether he had read Haber and Stornetta before he wrote the code, the record does not say.

3.2 b-money and MicroMint

Adam Back pointed to two papers on August 21, both after the code was nearly finished. The first reply, at 12:55 UTC, named b-money. Satoshi answered at 17:59: “Thanks, I wasn’t aware of the b-money page, but my ideas start from exactly that point.” Eighteen minutes later Back named a second paper, Rivest and Shamir’s MicroMint, before he had read the draft at all.

The next day Satoshi wrote to Wei Dai and proposed a citation that gave b-money’s year as “(2006?)”. The question mark is a small piece of the same evidence: he did not know when b-money had been published, and the answer was 1998. MicroMint got no citation and no reply on record. Its only trace in Satoshi’s writing is the opening line of his launch email to Back on January 10, 2009: “Thanks for the pointers you gave me to Wei Dai’s b-money paper and others.”

3.3 Bit Gold

Bit Gold reached the thread Satoshi was answering on November 7, 2008, a week after the paper went public. Hal Finney wrote that “Nick Szabo wrote many years ago about what he called ‘bit gold’[1] and this could be an implementation of that concept,” with a footnote to Szabo’s December 2005 blog post. Satoshi answered that post on November 9, point by point on transaction propagation and chain selection, and said nothing about bit gold. From November 9, 2008 he had read the name and the link. Nothing earlier puts it in front of him. The “bitgold coins” that James A. Donald and Hal Finney wrote of later that month are the respondents’ own blending of names, traced in the Szabo hypothesis entry, not a sign that Satoshi had used the term.

The one outside account comes from Wei Dai. In the Sunday Times of March 2, 2014, he gave as his first reason for doubting that Szabo was Satoshi that “in Satoshi’s early emails to me he was apparently unaware of Nick Szabo’s ideas.” The reporter then wrote that Satoshi “had been ignorant of Szabo’s bit-gold plan until Wei mentioned it.” The three emails Dai released to support that judgment, Satoshi’s of August 22, 2008, Dai’s undated reply and Satoshi’s of January 10, 2009, do not mention Szabo or bit gold. Dai’s own sentence stands on what those emails lack. The reporter’s goes one step further than any message that has been made public.

Satoshi named bit gold himself on July 20, 2010, while Bitcoin’s Wikipedia article was up for deletion: “Bitcoin is an implementation of Wei Dai’s b-money proposal … and Nick Szabo’s Bitgold proposal.” He linked the same December 2005 address Hal had given.

3.4 DigiCash, Chaum and e-gold

The trusted e-cash companies appear in Satoshi’s writing five days after the release. Writing to Dustin Trammell on January 13, 2009, he explained why so few people were interested: “after more than a decade of failed Trusted Third Party based systems (Digicash, etc), they see it as a lost cause.” On February 12 he answered a question about David Chaum’s money with “That was the Achilles heel of Chaumian systems; when the central company shut down, so did the currency”, and on February 15 he called a group’s plans “the old Chaumian central mint stuff”. The e-gold name arrives on January 25, with spam already riding on it.

The January sentence surveys a decade of failures as something already watched. It speaks of background he brought to the project, not of a discovery made after it. The record cannot date that background. The earliest message in front of him that names Chaum is Donald’s November 9 post proposing “chaumian money” on top of account money built on bitcoins, which Satoshi answered on November 14. Nothing from before August 20 names either.

3.5 RPOW

RPOW enters Satoshi’s writing on July 21, 2009, in an email to Martti Malmi about who could help: “Hal isn’t currently actively involved. … He carried this torch years ago with his Reusable Proof Of Work (RPOW).” By then Hal Finney had defended the design on the cryptography mailing list and tested the first release, as the same email says. No earlier message to or from Satoshi names RPOW. The date is the first mention and nothing more: it is not when he learned of Finney’s 2004 system, and the record does not say when that was.

3.6 Wei Dai’s code, inside v0.1

One of Wei Dai’s works was in Bitcoin before b-money was in the paper. The SHA-256 routine in the v0.1.0 source is extracted from Crypto++ 5.5.2, dated September 24, 2007, and the file’s header reads “sha.cpp - modified by Wei Dai from Steve Reid’s public domain sha1.c.” Satoshi’s August 22 email introduces himself to Dai as a stranger who found b-money through Back and does not mention the library. The record shows Dai’s name in Satoshi’s source. It does not show that Satoshi connected the library’s author with the b-money page.

4. The order of arrival

2008Aug 20 Hashcash cited,code nearly finishedAug 21 Back points tob-money, thenMicroMintOct 31 Paperpublished, b-money asreference 1Nov 7 Hal Finneynames bit gold2009Jan 8 v0.1 releasedJan 13 Satoshi namesDigiCashJul 21 Satoshi namesRPOW2010Jul 20 Satoshi namesbit goldPrecursors in front of Satoshi, earliest record

5. What the record supports

The archive’s standing line, set out in the cypherpunk independent-arrival analysis, is that Satoshi knew Hashcash and did not know b-money while he built Bitcoin. Laid out precursor by precursor, the record holds it, and it adds one thing: no other digital-cash proposal appears anywhere in the record before the code was nearly finished. b-money is the only one whose absence is in his own words. For MicroMint, Bit Gold, DigiCash and RPOW, the record is simply silent before the dates in the table.

That silence has edges. Much of Satoshi’s correspondence with Mike Hearn and Gavin Andresen remains unpublished, Wei Dai’s reply carries no date, and the draft of August 20 is lost. A reader who took in the cypherpunk archives or the 1990s e-cash news quietly would leave no trace at all, which is why the independent-arrival analysis keeps passive reading as an open tier. The table dates arrivals in the record. It does not rule out earlier reading.

The draft of August 20 carried one ancestor that Satoshi chose with his own hand, at a time when he said the code was nearly done. Every other digital-cash precursor on this page was handed to him, or surfaces in his writing, after that. The reference numbered [5] is the clearest line the record draws.