Bitcoin Institute

Satoshi counted in cents: 21 million, CENT, and 0.01 to 1000

A dark navy illustration headed "Satoshi counted in cents": a logarithmic number line with the band from 0.01 to 1000 highlighted in gold, a code card reading "static const int64 CENT = 1000000;", and the amount 1,234.56 followed by six faded hidden digits.

Mike Hearn asked Satoshi to show the working behind the 21 million cap. Satoshi gave him the arithmetic first: 21,000,000 coins at 50 BTC a block, halving every four years, comes out to one block every ten minutes. Then he gave a reason that has nothing to do with arithmetic:

Satoshi Nakamoto (email to Mike Hearn, January 10, 2011, 4:34:00 PM UTC)

I thought about 100 BTC and 42 million, but 42 million seemed high.

I wanted typical amounts to be in a familiar range. If you’re tossing around 100000 units, it doesn’t feel scarce. The brain is better able to work with numbers from 0.01 to 1000.

If it gets really big, the decimal can move two places and cents become the new coins.

The size of the coin was set by how people count, and the range he named has a floor: 0.01, a hundredth, the cent. That floor is not a figure of speech in one email. It is a constant in the first release, the place where the display stops, the unit of the first fees, and a word he used for more than two years without ever reaching for another one. This page follows the cent through the record and then asks what it says about the person doing the counting.

1. The cent across the record

2008Whitepaper - every centin a transfer (Oct 31)Fees - output 1 centless than input (Nov 10)Pre-release code -genesis output 1 CENT(Nov)2009v0.1 - CENT constant,two decimals (Jan 8)Pay a few cents to awebsite (Jan 16)v0.1.5 - minimum feebelow 1 cent (Feb 4)Prices like existingcurrencies - 1 Euroexample (Apr 12)2010Shows 1.00, holds1.00000000 (Feb 6)0.01 fee - proof of worknot wasted (Aug 11)Extra decimals only forfuture use (Sep 23)v0.3.13 - last cent withsub-cent change (Oct1)2011Cents become the newcoins (Jan 10)The cent in Satoshi's record 2008-2011

The first appearance is in the whitepaper itself. Section 9 explains why a transaction has several inputs and outputs: “it would be unwieldy to make a separate transaction for every cent in a transfer.” The unit he reached for, to describe splitting value in a currency that did not exist yet, was a cent.

2. Sizing the coin

The number was settled before the first release and explained only afterwards. The code Satoshi sent Ray Dillinger for review in November 2008 already had the shape: its genesis block paid out 1 CENT, a hundredth of a coin, and its reward of 100 coins halving every 100,000 blocks would have approached 20 million coins in total. The January 2009 release changed the reward to 50 and the interval to 210,000 blocks, and the total became 21 million.

His explanations came when people asked. To Hearn in April 2009: “I wanted to pick something that would make prices similar to existing currencies, but without knowing the future, that’s very hard. I ended up picking something in the middle.” To Hearn again in December 2010: “I wanted something that would be not too low if it was very popular and not too high if it wasn’t.” And in the January 2011 email above, the range itself: 0.01 to 1000.

The three answers point the same way. The cap was not derived from a monetary theory; the analysis of fixed and adjustable supply shows the record never argues for one. It was chosen so that ordinary amounts would look like ordinary prices, and the plan for success was to move the decimal point rather than the cap. He said so twice before 2011, both times with an example: in April 2009, “if 0.001 is worth 1 Euro,” the display could show one bitcoin as 1000; in February 2010, moving the decimal three places would turn 1.00000 into 1,000.00, the same amount of money with the commas and points in different places.

3. What v0.1 counted in

The January 2009 release stored every amount as a 64-bit integer with eight decimal places, and showed the user two of them.

Where in v0.1.0CodeWhat it does
main.hCOIN = 100000000, CENT = 1000000One coin is 10⁸ base units; one CENT is 10⁶, a hundredth of a coin
util.cpp, FormatMoneyn /= CENT, then "%I64d.%02I64d"Divides by CENT and prints exactly two decimals, with a comma every three digits: 1,234.56
util.cpp, ParseMoneynCents, rejected if > 99Accepts exactly two digits after the point; anything finer is refused
main.h, GetMinFee(1 + nBytes / 1000) * CENTWhen a fee is due, the minimum is counted in whole CENTs per kilobyte; with the discount flag set, transactions under 10,000 bytes owe none

The six digits below the cent were there from the start and hidden from the start. When a BitcoinTalk user asked in February 2010 whether a bitcoin could be divided, Satoshi answered that “there are another 6 decimal places that aren’t shown, for a total of 8 decimal places internally. It shows 1.00 but internally it’s 1.00000000.” Seven months later, asked how far the divisibility really went, he discouraged using them at all:

Satoshi Nakamoto (BitcoinTalk post, September 23, 2010, 6:39:56 PM UTC)

I would not encourage using the extra decimal places.  They’re only intended for future use.

You are correct that above 0.01 can still have additional precision, but the recipient won’t be able to see it.  The UI will show it rounded down.

The digits existed for the day the decimal would have to move. Until then, the smallest amount a person could see or type was one cent. The decimal point was never moved. In February 2011, two months after Satoshi’s last forum post, users gave the hundred-millionth a name of its own instead, and the name they settled on was his.

4. The fee was a cent

Satoshi’s first public sketch of a transaction fee, on November 10, 2008, named the amount in the same unit: “let the output value from any transaction be 1 cent less than the input value.” The release notes for v0.1.5 in February 2009 “created minimum fee for transactions less than 1 cent.” Through 2010 his forum answers on spam and flooding name the fee as 0.01, and in August he called it a better tool than a per-transaction proof of work: “0.01 is basically a proof of work, but not wasted.” In October the v0.3.13 notes fixed a “problem sending the last cent with sub-cent fractional change.”

The same unit carried the picture of what Bitcoin was for. Replying in the v0.1 release thread on January 16, 2009, a week after launch, he wrote that once it got going there would be “so many applications if you could effortlessly pay a few cents to a website as easily as dropping coins in a vending machine.”

5. Which cent

The cent belongs to many currencies, so the next check is which currency names Satoshi himself wrote. Across his emails, forum posts and code in the archive, leaving out the lines he quoted from others:

CurrencyTimes in his own writingWhose figure it was
Dollar6Twice his own: bandwidth estimates of “$18” (November 2008) and “US$ 0.02” (in answers he compiled for Malmi in May 2009). The other four take up a dollar amount someone else had put on the table: a donation offer, a hosting quote, an accounting example for that donation, and a per-coin cost a forum user had calculated
Euro2Once his own: the “1 Euro” example to Hearn, who was then working for Google in Zurich, where the currency is the franc. Once repeating Martti Malmi’s “euros” back to him
Pound0—
Yen0—
CentThroughoutHis own, from the whitepaper to January 2011

The v0.1.0 source names no currency at all. The only monetary unit in it is CENT.

The cent does not settle the question the nationality analysis leaves open. The dollar has cents, the euro has cents, and so do the currencies of Canada, Australia and many other countries. The record does not narrow it to one of them, and the clock evidence on that page still points at two different time zones.

What the cent does rule on is the profile’s one claim. Japan has had no coin or note below one yen since the end of 1953, when the Act on the Consolidation of Small Currency withdrew the sen and the rin from circulation. They survive as units of calculation, in exchange-rate quotes, but nobody pays in them. Someone who pays for everyday things in yen has no coin to put at 0.01. The floor of Satoshi’s range comes from the habit of someone who carried cents.

The name on the profile was Japanese. The unit in the code was the cent, and in more than two years of his writing it never once turned into a yen. “0.01 to 1000” is the most unguarded sentence about himself that Satoshi wrote: not a claim about where he lived, which he never made except once, but the size of the change he was used to holding.

Reference external source

https://plan99.net/~mike/satoshi-emails/thread3.html
Satoshi's email to Mike Hearn of January 10, 2011, in the correspondence Hearn published in 2017. The v0.1.0 source is read at the pinned commit listed below.

Other external sources

Show 1 more