§ 10

§ 10 · Emission

Supply and grains

2.1 billion PRL, counted in 210 quadrillion grains

Pearl’s supply has a hard ceiling: 2.1 billion PRL. No block can push the total past it, because each block may only create what the emission formula allows, and the formula’s total never reaches the ceiling.

Inside the software, nobody counts in PRL. Every amount is a whole number of grains, the smallest unit, and one PRL is 100,000,000 of them.

Try it

Convert between PRL and grains. Try 3,229.64134063 PRL, block 1’s subsidy, and see that it’s a whole number of grains.

PRL ↔ grains

1 PRL = 100,000,000 grains, the smallest unit

The decimal places are grains

1.00000000 PRL = 100,000,000 grains

Each place after the point is worth the grains under it: the 8th place is one grain, 0.00000001 PRL.

Runs in your browser · exact integer math, no rounding src/lib/format.ts

How big is 2.1 billion PRL in grains?

Multiply by a hundred million:

2.1×109 PRL×108 grainsPRL=2.1×1017 grains2.1 \times 10^{9}\ \text{PRL} \times 10^{8}\ \tfrac{\text{grains}}{\text{PRL}} = 2.1 \times 10^{17}\ \text{grains}
210 quadrillion: 210,000,000,000,000,000.

Transactions store each amount as an 8-byte signed integer of grains. The largest such integer is about 9.22 × 10¹⁸, so the whole supply fits about 44 times over. No fractions, no rounding: amounts are exact.

A few grain amounts worth knowing:

1 PRL
100,000,000 grains
Block 1 subsidy
322,964,134,063 grains
3,229.64134063 PRL
Dust limit
333 grains
smaller outputs are not relayed
Minimum relay fee
1 grain per vbyte
Total supply cap
2.1 × 10¹⁷ grains
2.1 billion PRL
MaxGrain
2.1 × 10¹⁸ grains
a sanity bound, not the supply

How much has been issued so far?

The emission curve gives the ceiling after any block h: 2.1 billion × h ÷ (h + 650,226) PRL. At the snapshot taken for this page, block 130,827 on 20 October 2026, that was 351,751,673.70 PRL, 16.75% of the cap. The live figure is 351.8 million PRL.

Two things can make the real supply a little lower than that ceiling:

  • Under-claiming. A miner may pay itself less than the block allows; the difference is never created. (See block reward.)
  • Rounding. Each subsidy is rounded down to a whole grain. Through block 130,827 that dust adds up to 65,271 grains, 0.00065 PRL.

And some PRL, once issued, can never move: anything locked in an OP_RETURN output, for instance. They still count as issued.

Will the supply ever reach 2.1 billion?

No. The fraction h ÷ (h + 650,226) gets ever closer to 1 and never touches it:

Height Years at 194 s (nominal) Issued Subsidy per block
650,226 4 50% 807.41 PRL
1,950,678 12 75% 201.85 PRL
6,502,260 40 90.9% 26.69 PRL
2,147,483,647 about 13,211 99.97% 29,591 grains

The last row is the largest height Pearl’s software can count: heights are 32-bit signed integers, and 2,147,483,647 is the biggest. Even there, a block still creates 29,591 grains, and about 635,667 PRL of the cap would still be unissued (the curve alone leaves 635,656; rounding dust adds about 11 more). The subsidy never reaches zero within the heights the code can represent.

Make a guess

Every subsidy is rounded down to a whole grain. Over the first 650,226 blocks, how much does that rounding leave unissued?

Think of your answer first, then check it.

Answer 325,155 grains: about 0.0033 PRL.

Each block loses less than one grain to rounding, and Pearl’s code adds them up exactly: through block 650,226 the subsidies total 1,049,999,999.99674845 PRL, against exactly 1,050,000,000 on the curve. Dust, but real dust: the cap is a limit, not a target.

What is MaxGrain, then?

Pearl’s code inherits a constant from btcd called MaxGrain:

MaxGrain=21×109 PRL×108=2.1×1018 grains\text{MaxGrain} = 21 \times 10^{9}\ \text{PRL} \times 10^{8} = 2.1 \times 10^{18}\ \text{grains}

It is a sanity bound: no single amount, and no total of a transaction’s outputs, may exceed it. It exists to throw out absurd numbers early. At 21 billion PRL it is ten times the real supply, so it can never be reached by honest coins. It is not the supply, and it doesn’t appear in the emission formula. The supply limit is the formula’s totalSupply, 2.1 billion PRL.

Why grains, and why 100 million of them?

Same reason as Bitcoin’s satoshis: integers are exact, and a hundred million units per coin leaves room for tiny payments. Pearl kept the ratio and changed the name. Explorers and wallets show amounts in PRL with 8 decimals, like 2,238.38373068, which is just the grain count with a decimal point.

Because Pearl’s supply is a hundred times Bitcoin’s in coins, it is also a hundred times Bitcoin’s in smallest units: 2.1 × 10¹⁷ grains against 2.1 × 10¹⁵ satoshis.

Code: the constants

From btcutil/const.go (node/btcutil/const.go:10-16 at v1.5.2, on GitHub):

node/btcutil/const.go Go
// GrainPerPearl is the number of grains in one pearl (1 PRL).
GrainPerPearl = 1e8

// MaxGrain is the maximum transaction amount allowed in grains.
MaxGrain = 21e9 * GrainPerPearl

And the real supply limit, from validate.go (node/blockchain/validate.go:42-44 at v1.5.2, on GitHub):

node/blockchain/validate.go Go
// totalSupply is the maximum supply of tokens 2 billion and 100 million.
// Emission follows the formula: height / (height + emissionConstant) for cumulative supply.
totalSupply = 2100000000 * btcutil.GrainPerPearl

The codex

Suggested

Up and down arrows move through the results, Enter opens one, Escape closes. Anywhere on the site, slash or Command K opens this search, and the square brackets [ and ] go to the previous and next page.