Insights

The Reserve Was Never a Fee

Three weeks before the earliest ledger anyone can query, rippled's authors deleted the fee that account creation used to burn and replaced it with XRP you keep but cannot send. We read the commits that made that decision, then read every reserve value the network has ever enforced off the ledger itself — including a schedule that lasted three hours in 2013, and a 2021 cut that took seven attempts to stick. It ends with a position — and it is not the one we started with, because we measured the two cuts the network has already made. Dollar cost year by year is in the companion piece What an XRPL Account Has Cost, 2013–2026.

December 13, 2012: the burn becomes a deposit

In late 2012, creating an account meant a Payment carrying a dedicated tfCreateAccount flag and a required fee of 1,000 XRP — destroyed, like every fee. It was cut to 200 XRP on 12 December (94e2affb93), and survived one more day. Then Arthur Britto's “Move from account create fee to reserve XRP” kept the number and changed its nature:

Until 13 Dec 2012
1,000 XRP fee to create an account

Destroyed, like every transaction fee. Existing cost money.

Since 13 Dec 2012
200 XRP reserve — yours, but locked

Never spent. Unlocked in full when the account's objects are deleted.

What was 1,000 XRP worth then? Nothing measurable — in December 2012 no market traded XRP. The earliest price on record is the ledger's own DEX in April 2013, $0.0033 (series), which projects the old fee to roughly $3.30 and the 200 XRP version to $0.67. The burn was an anti-spam unit, not a monetary sum — which is exactly why replacing it with a deposit cost the design nothing.

The new concept's entire definition is one comment:

uint64  FEE_RESERVE;  // Amount of XRP not allowed to send.
Config.h, line 111, at the commit that created reserves — blob/f1735c5cdf/src/cpp/ripple/Config.h#L111

The creation flag was retired the same day with a comment that still reads like a shrug — tfPaymentLegacy // Left here to avoid ledger change (TransactionFormats.h#L64). From then on, any XRP payment of at least the reserve instantiates the destination; below it, the account simply never comes to exist. Hours later Britto split the reserve in two (“Add and use new owner_reserve”): a base per account, an increment per thing the account keeps in the ledger — “Amount of XRP not allowed to send per owner entry” (Config.h#L111-112). The formula has not changed since; only the two numbers have.

The 2012 formula, at today's schedule — drag the objects
1 + 3 × 0.2 = 1.6 XRP ≈ $1.72 locked, refundable
base 1 XRP0.2 XRP per object · scale caps at 5 XRP

Two spam problems, two prices

Over the following week the reserve was wired into everything that writes durable state — trust lines (dc2b1d55ae, with per-side flags deciding which account pays: 1cc4b2a132), DEX offers (a30d065e87, fadf9aa442). Every object class added since inherited the rule. The design keystone is one commit message from David Schwartz (a25a9831f1): “Fee tracking both that scales with load and that doesn't (for the reserve).”

Transaction fee → spam

A transaction consumes CPU once. Its price is tiny, burned, and auto-escalates under load — in the source's own words, “as soon as high levels of traffic appear on the network, fees will grow quickly to extreme levels. This should dissuade malicious users from abusing the system” (FeeEscalation.md).

Reserve → storage

A ledger object is replicated by every server for as long as it exists. Its price is locked, refunded on deletion, and moved only by validator vote — “reserve requirements for each item that occupies storage in the ledger” (misc/README.md).

The official docs keep the same split today (xrpl.org: Transaction Cost · xrpl.org: Reserves). The refund is the half that gets forgotten: the reserve was built to make the ledger self-cleaning, not merely expensive.

Every value the network has ever enforced

Reserves are consensus state, so the history is readable off the chain: we bisected the FeeSettings object across ledgers 32,570 → 106,011,838, then swept every 256-ledger voting boundary around each change. The ledger has held only five lasting schedules — but it took eighteen enforced changes to get there:

EffectiveLedgerBasePer objectNote
1 Jan 201332,570200 XRP50 XRPNo FeeSettings object on-chain — enforced from rippled code defaults.
24 Apr 2013562,17750 XRP12.5 XRPFeeSettings born — the first fee vote, hours after the default changed in code.
5 Dec 20133,721,72920 XRP5 XRPSettled after one same-day revert. Held 7.8 years.
19 Sep 202166,462,46510 XRP2 XRPSettled after six cut-and-revert cycles. XRP $1.0817.
2 Dec 202492,508,4171 XRP0.2 XRPThe only modern cut applied in one clean vote. XRP $2.7262. Current.

Reserve votes ring like a bell

Reserves change through fee voting: every 256th ledger (roughly every 15 minutes) is a flag ledger, where each validator declares the schedule it wants; when a majority of the trusted validators agree on a change, a SetFee pseudo-transaction applies it one ledger later. Mid-upgrade — old defaults voting against new ones — whichever majority materialises at each boundary wins, so the enforced schedule oscillates. Hours after David Schwartz committed the new recommended schedule (9996e4a57e), the December 2013 cut applied, un-applied, and re-applied within a single day:

5 December 2013 — cut, revert, cut (one day)levels: base / per-object XRP
50 / 12.520 / 500:0006:0012:0018:0024:00 UTC
Amber dots are reverts. Settled at ledger 3,721,729, 17:14 UTC — held for the next 7.8 years.
View the 3 SetFee events
LedgerClosed (UTC)Became (base / object)
3,715,0735 Dec 2013, 09:1320 / 5 XRP
3,717,6335 Dec 2013, 12:1450 / 12.5 XRPrevert
3,721,7295 Dec 2013, 17:1420 / 5 XRPheld

September 2021 was the same event at scale — thirteen changes, six full cut-and-revert cycles, before the seventh cut held:

16–19 September 2021 — thirteen changes in 2.5 dayslevels: base / per-object XRP
20 / 510 / 217 Sep18 Sep19 Sep (UTC)
Six full cut-and-revert cycles before the seventh cut held at ledger 66,462,465. During this window a 15 XRP payment to a fresh address either created the account or bounced with tecNO_DST_INSUF_XRP, depending on the last flag ledger.
View all 13 SetFee events
LedgerClosed (UTC)Became (base / object)
66,405,88916 Sep 2021, 21:3510 / 2 XRP
66,406,65716 Sep 2021, 22:2420 / 5 XRPrevert
66,410,75317 Sep 2021, 02:4710 / 2 XRP
66,412,03317 Sep 2021, 04:1020 / 5 XRPrevert
66,416,12917 Sep 2021, 08:3410 / 2 XRP
66,417,66517 Sep 2021, 10:1320 / 5 XRPrevert
66,445,05718 Sep 2021, 15:3010 / 2 XRP
66,446,08118 Sep 2021, 16:3620 / 5 XRPrevert
66,447,61718 Sep 2021, 18:1410 / 2 XRP
66,450,17718 Sep 2021, 20:5720 / 5 XRPrevert
66,452,48118 Sep 2021, 23:2410 / 2 XRP
66,453,50519 Sep 2021, 00:2920 / 5 XRPrevert
66,462,46519 Sep 2021, 10:0510 / 2 XRPheld

Neither episode appears in any published reserve history we can find — each oscillation sits between voting windows a few thousand ledgers apart, invisible to a bisection, which only sees changes that last. By December 2024 the validator community coordinated before flipping: that cut applied once, cleanly. And the other number in the same object — the 10-drop reference fee — has never changed once in thirteen years. The reserve is the only knob validators have ever turned.

Method: ledger_entry on index 4BC50C9B…54A6A651 against s1.ripple.com — 102 bisection queries for the lasting changes, then ~1,000 boundary sweeps around each (the 2021 sweep runs from two days before the first oscillation to a day after the last, stable on both sides). Close times from ledger headers; XRP/USD from our Binance minute closes. At ledger 32,570 the object does not exist — the launch-era 200/50 comes from the rippled defaults of that date, cited above.

Thirteen years on: did the deposit work?

The goal was a ledger every server can afford to replicate forever. After 13.6 years of permissionless use, the full state fits on a consumer NVMe drive:

8.14M
funded accounts
6.86M
trust lines
229K
open DEX offers
13.6 yrs
of permissionless use
XRP locked in reserves, 2013 → 2026log scale · 88 sampled ledgers · amber = reserve vote · grey ticks = feature activations
100k1M10M100M2014201620182020202220242026ChecksTicketsXLS-20 NFTsXLS-30 AMMFirstLedger200→5012k objects50→2099k objects20→105.6M objects10→114.5M objects
Peak lock was 81.6M XRP on 2 December 2024, the day of the last cut, which released nine-tenths of it overnight. Today the same mechanism holds 11.2M XRP against a ledger with 35% more objects than it had then.

Read that curve as what it is: a thirteen-year record of the deterrent being allowed to grow, then reset by vote, four times. Between votes the locked total climbs with usage — 1.2M XRP in 2013, 77.7M by September 2021, 81.6M by December 2024. Each cut then hands most of it back: the December 2024 vote released 73 million XRP overnight without changing a byte of what the ledger stores. The refund half of the design shows in the curve too — the 2022 plateau is trust lines being abandoned as fast as they were opened, each deletion returning its increment.

Does the reserve match what the SSD actually costs? Not remotely — on purpose

A trust line serializes to 211 bytes (measured with ledger_entry against our own node). Replicated across the 415 publicly visible rippled servers that is ~88 KB of NVMe, and consumer NVMe runs $60–90 per terabyte in 2026 (the tracker's Gen 4 average on 1 August 2026: $76/TB, held flat by AI demand for NAND). One-time hardware cost: about six millionths of a dollar.

One trust line, network-wide, one-time (USD, log scale)
$0.000001$0.0001$0.01$1≈ 10,000–35,000× the disk it occupies$0.000006SSD: 211 B × 415 nodes~$0.00002with tree + store overhead$0.21the reserve (0.2 XRP)

A disk-priced reserve would be an invitation, not a fee: at $0.000006 per object, $100 buys ~16 million trust lines — an attacker could double the ledger's entire 13-year accumulated state for the price of lunch, and every future node would carry it forever. The sane comparison is carry cost, because the reserve is a lock, not a spend: 0.2 XRP idle at a 5% opportunity rate is about a cent a year, within an order of magnitude or two of the network's amortized hardware cost per object once RAM caching, history amplification (history-keeping nodes store a fresh copy of an object every time it changes) and node churn are counted. The margin above physical cost is the spam deterrent — storage was the resource being protected, never the bill being recovered. Even the proposed 0.01 XRP per object stays ~1,000× above disk; nobody proposes disk parity, because disk parity was never the design.

Same reserve, very different bytes

Do different objects at least weigh differently? Yes — by 25× — and the reserve ignores it entirely. We sampled 614,400 live state entries in binary off our node (a hash-ordered walk is a uniform random sample; its shares independently predict 6.90M trust lines and 30.0k AMMs against the 6.86M and 30.1k that actually exist):

What the reserve buys, per object type
median size
object B
+ free index
XRP per KB
NFTokenPage
holds 32 NFTs
2,037
none
0.101
AMM
333
0.615
RippleState (trust line)
211
+143
0.971
Offer
183
+144
1.12
PayChannel
163
1.26
Check
162
+141
1.26
DirectoryNode
charged nothing
162
free
SignerList
150
1.37
NFTokenOffer
150
1.37
Escrow
114
+143
1.80
AccountRoot
1 XRP base
87
11.77
Ticket
83
+136
2.47
The right column is the deterrent's density: XRP locked per kilobyte — a 25× spread from a Ticket (2.47) to a median NFT page (0.110). The middle column is what nobody pays for: every reserved object except an NFT page creates ~136–144 bytes of DirectoryNode index alongside itself (measured on testnet, 27 fresh accounts per type, new index page at object #1 and again at #33). So a trust line really costs the ledger 354 bytes, not 211 — and NFT pages, which are keyed by NFT id rather than indexed in the owner directory, are the only reserved object that carries none.
View sample data (614,400 objects)
TypeSampledMin BMedian BMax BXRP/KB
NFTokenPage6,619832,0375,8650.101
AMM9542753335480.615
RippleState (trust line)220,9462112112230.971
Offer5,8601831832281.12
PayChannel801581631831.26
Check2291221621961.26
DirectoryNode101,424661621,222free
SignerList5,105961503611.37
NFTokenOffer10,2101281501901.37
Escrow4961141142261.80
AccountRoot260,562878725511.77
Ticket1,7818383832.47

An 83-byte Ticket and a 2 KB NFT page pay the identical 0.2 XRP — and the NFT page holds up to 32 NFTs on that one increment, making NFTs the cheapest bytes on the ledger per reserve XRP. Meanwhile one in six state entries is a DirectoryNode — the index pages the ledger creates as a side-effect of owned objects — and those pay no reserve at all. Both are further proof the reserve was never a storage price: it is a flat per-object deterrent. Scaling the sample up, the entire XRP Ledger state is ~19 million entries averaging ~180 bytes — about 3.5 GB of raw objects, or roughly a quarter's worth of NVMe per node after thirteen years.

Where the ledger's ~3.5 GB of live state sits, by bytes
3.5GB total
type
bytes on disk
objects
RippleState
trust lines
1.46 GB41.7%
6.91M36.0%
DirectoryNodeno reserve
owner/offer indexes
0.80 GB22.8%
3.17M16.5%
AccountRoot
the accounts themselves
0.72 GB20.5%
8.15M42.4%
NFTokenPage10.2× its object share
up to 32 NFTs each
0.38 GB11.0%
0.21M1.1%
Everything else
offers, escrows, checks, AMMs…
0.14 GB4.0%
0.78M4.0%
Whole ledger state
3.49 GB
19.21M

Trust lines are the single largest thing on the XRP Ledger: 6.91 million of them, 1.46 GB, 41.7% of all state bytes — more than the accounts that own them. They are also the honest case, sitting almost exactly on their weight (36.0% of objects → 41.7% of bytes, a ratio of 1.16), and our own independent mirror holds 6.86M of them, agreeing with this ledger-derived estimate to within 0.6%. Accounts take a fifth of the bytes but pay the 1 XRP base; DirectoryNodes — the index pages the ledger builds for each owner — take almost a quarter and pay nothing. And then the outlier: NFT pages are 1.08% of objects and 11.0% of the bytes — 10.2× their object share, the largest disproportion of any reserved type on the ledger. That is not an anomaly; it is the pricing rule working exactly as written.

The flat design's weakest corner: NFT pages

The reserve is charged per page, not per NFT. rippled demands more reserve only when OwnerCount rises (NFTokenMint.cpp#L339), and a mint raises it only when it opens a new 32-slot page (Protocol.h#L68, kDirMaxTokensPerPage = 32):

One NFT page — which mint pays the reserve
Mint #1 — 0.2 XRP
opens the page, OwnerCount rises
Mints #2–32 — 12 drops
no new object, so no reserve at all
Mint #33 — 0.2 XRP again
next page opens; repeat forever

So the deterrent is paid once per thirty-two mints. We filled a page to all 32 slots with maximum-length URIs on testnet: 9,458 bytes for a single 0.2 XRP unit, and no index page, against a trust line's 354 bytes all-in — a 26.7× per-byte discount. A gigabyte of permanent state that way locks about 21,200 XRP (~$22,800) against ~565,000 XRP (~$607k) for a gigabyte of trust lines. Nor does speed help the defender: that gigabyte is 3.4 million mints, which at a deliberately unremarkable ten mints per ledger takes about two weeks and burns roughly 41 XRP (~$44) in fees in total. Fee escalation answers bursts, not a patient drip — a slow miner pays the 12-drop floor forever, so the locked capital is the entire defence.

And the deposit does not come back the way it does elsewhere. We burned 20 of 32 NFTs from a full page: that page shrank from 9,424 to 3,564 bytes, but OwnerCount did not move and no reserve was refunded — a page is released only when its last NFT is burned. Every other object type in this article returns its increment the moment it is deleted, which is the self-cleaning behaviour the 2021 trust-line collapse shows at scale. NFT pages are the one place that behaviour does not apply.

This is the one place the article's own argument runs thinnest, so it is worth being exact about what the reserve still buys: $22,800 of capital frozen for as long as the spam exists is a real barrier, and the bytes per NFT are bounded whatever the attacker does. But the asymmetry is the point — and it cuts against the 0.1 / 0.01 proposal harder than anything else here. At 0.01 XRP per object that same gigabyte locks ~1,060 XRP: about $1,100 to permanently enlarge every node's state by a third, and none of it refundable until each page is emptied one NFT at a time. Whatever the right base reserve is, the per-object increment is the half that should not be cut twice as deep.

Lower further, or hold? Where the evidence points

A live proposal cuts base 1 → 0.1 XRP and per-object 0.2 → 0.01 (analysed here). The historical frame says hold — today's deterrent already sits at the floor of everything the network has ever chosen — and the arguments below all point that way. Then we measured the two cuts the network has already made, and the measurements sent us somewhere else. The case is laid out in that order deliberately: precedent first, evidence last, because that is the order in which it changed our answer.

What the base reserve was worth when validators cut it (USD, log scale)
every post-cut landing: $0.17 – $10.82$0.1$1$10$50Apr 2013 · 200 → 50 XRP$0.17$0.67Dec 2013 · 50 → 20 XRP$0.96$2.41Sep 2021 · 20 → 10 XRP$10.82$21.63Dec 2024 · 10 → 1 XRP$2.73$27.26Today · 1 XRP$1.07Proposed · 0.1 XRP$0.11beforeafter
Prices: our Binance minute closes at the cut ledgers (2021, 2024); the ledger's own DEX for 2013 (series); oracle median for today. The proposed 0.1 XRP would land below every level the network has ever chosen.

1. Every cut was a thermostat correction

April 2013 came as XRP first acquired a price; December 2013 as the ledger's own DEX — its on-chain order book, trading XRP against gateway USD before major exchanges listed it — priced XRP fifteen times above April; September 2021 at $1.08 after that year's run; December 2024 at $2.73, five weeks after XRP traded at $0.51. Validators cut when appreciation pushed the real value of the deterrent far above intent — restoring it, exactly what the April 2013 voting code was built for. A cut at today's ~$1 XRP would be the first in thirteen years with no price run to correct.

2. The deterrent is at its floor, not its ceiling

About a dollar per account, 21 cents per object — the bottom of the range ever enforced. And the cost falls on almost no one: honest users get the deposit back. The parties for whom a 10× cut is a real 10× saving create accounts in bulk and walk away — our blocklist flags 587 accounts, 575 of them wallet drainers, and disposable-wallet fleets are exactly the input those operations consume (payment-drain tracker). The base reserve is the only per-identity cost a sybil fleet pays.

3. The risk is asymmetric

A too-high reserve is fixed by one vote — the record shows five. A too-low one writes state that a later vote cannot un-write: raising the reserve does not shrink a ledger that already bloated. (This is the argument the measurements further down qualify most sharply — refundable state, it turns out, does get cleaned up.) And at 0.01 XRP per object the deletion refund stops being worth a transaction, quietly killing the self-cleaning behaviour. A deposit that rounds to zero is not a smaller version of the 2012 design; it is the absence of it.

The strongest case against holding — steelmanned

The pro-cut side has real arguments, and a position piece owes them their best form.

The onboarding-subsidy claim

A wallet or app that onboards users must fund each new account's base reserve: 100,000 users = 100,000 XRP (~$107k). And for a non-custodial app that money is not parked — it is gone: the reserve lands behind the user's keys, only the user's signature can ever move it again (even AccountDelete pays out only where the account's owner signs it to), and there is no opt-out — the protocol will not create the account for less.

Concede what's true: the deterrent is identity-blind by construction, and the asymmetry actually runs against the honest side: a drainer fleet keeps its own keys, so its $107k is recoverable capital — a non-custodial app gives the keys away, so its $107k is spend. What keeps it survivable is scale: ~$1 gifted per user sits far below what consumer apps pay to acquire one, and the XRP is not destroyed — it becomes the user's. But as a per-user cost it is real, and a cut relieves the attacker and the onboarder by the same factor.

The tipping / micropayment claim

You cannot tip 0.05 XRP to someone who doesn't have an account yet — the payment bounces with tecNO_DST_INSUF_XRP, the exact code path this article traced. “Anyone can receive any amount” is not true on XRPL: the first payment to a fresh address must clear the base reserve.

Concede what's true: sub-dollar first-contact payments are genuinely impossible. But only the first payment: an existing account can receive one drop. The refused tip is the anti-dust design working — the alternative is Bitcoin's answer, where sub-dust outputs are stored by every node forever. The threshold has also fallen 200× since launch; at ~$1 the complaint is precisely “you cannot tip a stranger less than a dollar, once” — and apps solve it today by pre-funding or receiving custodially before graduating users to self-custody.

Both claims survive scrutiny, and both are about the base reserve specifically: the onboarding subsidy is a genuine ~$1-per-user spend for a non-custodial app, and the tipping barrier is the base reserve refusing the first payment. Neither is an argument about the per-object increment. Hold that thought — the measurements in the next section land on exactly that split.

“But hardware is ten times better now” — measured

The last serious pro-cut argument: drives improved so much since 2012 that the deterrent should fall with them. Measure it. Consumer SSDs sold at $0.82–0.98/GB in mid-2012 against $76/TB today — 12× cheaper per byte, and ~23× faster (SATA III's 0.6 GB/s cap vs Gen 5 NVMe's ~14). But DRAM — where a validator's hot state actually lives — went the other way: ~$3–5/GB in 2012 vs $11.75–18/GB in August 2026, after the AI build-out's 5× spike. Memory per byte costs more than it did when reserves were designed.

What actually changed, 2012 → 2026 (log scale)
÷100÷10unchanged×10÷200–250the reserve, in XRP÷12SSD $ per byte≈ flatthe reserve, in USD×3.5 — up, not downDRAM $ per byte×23drive throughput

Set those curves beside the reserve's own: in XRP terms it already fell 200–250× — outpacing the fastest hardware curve by a factor of twenty. In dollar terms it held roughly flat while NAND got 12× cheaper, which is why the deterrent-to-disk multiple drifted from roughly 3,000–14,000× in 2013 to 10,000–35,000× today — a hardware dividend of about 10% a year, small enough to absorb by making the next price-run cut slightly deeper. What the technology argument cannot carry is a 10× cut now: the resource that binds a validator is hot-state DRAM plus replication across every future node, and neither followed the NAND curve. Better drives are a reason reserves could drift down over decades; they are not a reason to abandon the floor in one vote.

Then we tested it — and it changed our answer

Precedent is an argument; evidence is better. The network has already run this experiment twice, so we measured both. Sampling real state at ~30 historical ledgers on a full-history node gives the rate at which permanent objects were created before and after each cut:

PeriodReserveAll objects / dayTrust lines / dayNFT pages / day
Jan 2020 – Jun 202120 / 5+890 → +4,700+60 → +400
Sep 2021 cut20/5 → 10/2 XRP
Oct 2021 – Jan 2022the burst10 / 2+115,278+92,7780
Apr 2022 – Oct 2022and the undo10 / 2−16,490 → −13,098−18,278 → −12,8410
Jan 2023 – Oct 2024net shrinking10 / 2−3,400 → 0−4,600 → −1,000+37 → +117
Dec 2024 cut10/2 → 1/0.2 XRP
Dec 2024 – Jan 20251 / 0.2+26,519+13,191+155
Apr 2025 – Jul 2026sustained, account-led1 / 0.2+4,700 → +6,500−600 → +1,800−116 → +152

Those are net figures over months. Zoom into a single week and a different fact dominates: the ledger is not accumulating state so much as renting it out and taking it back.

Ledger objects created per day
today · 1 / 0.2 XRP
today
Nov 2024 · 10 / 2
Offer
495k
779k
DirectoryNode
441k
710k
Ticket
182k
201k
NFTokenOffer
53k
2k
RippleState (trust lines)
4k
58k
AccountRoot
2k
6k
NFTokenPage
274
2k
Gross creation only. The net of two ~500k/day flows cannot be measured this way — sampling 0.1% of ledgers puts the daily net well inside its own error bar (DirectoryNodes: −77 ± 81 observed), which is why short-window “the ledger grew/shrank today” claims are not meaningful. Net growth here is taken from direct state-size measurement instead.

The XRP Ledger performs roughly 1.5 million object creations and deletions every day to net about 8,130 — a 185:1 churn-to-net ratio. Almost everything built is torn down again, and every teardown refunds its deposit. That is the clearest proof the 2012 design works as intended, and it is the mechanism a 20× cut to the increment would blunt: bots recycle tickets because holding one costs 0.2 XRP, and the largest ticket creator we found had made about 200,000 in three days while holding 89. At 0.01 XRP the reason to hand them back mostly disappears.

Both cuts moved the ledger from flat-or-shrinking to growing, so cuts do coincide with state creation — but the two things that grew have different shapes. Accounts rose steadily, +2.5 million over twenty-one months, with no spike: that is sustained adoption. Trust lines, by contrast, spiked hard in December 2024 and January 2025 and then fell away — and that spike has an owner, discussed below. The spam vectors never moved at all: NFT pages grew ~50/day on a base of 100,000. Total state went 2.44 → 3.20 GB in twenty-one months — across all 415 public nodes, about $24 of NVMe.

The 2021 cut is the more instructive one, because its burst was enormous and then undid itself. Trust lines were created at 92,800/day for a quarter — roughly 8 million of them — and then 2022 ran the film backwards at −13,000 to −18,000/day as the same lines were closed and their reserves refunded. That is the 2012 design's self-cleaning half, visible at scale: speculative state that stops being worth 2 XRP gets deleted, and the ledger shrinks again.

Now the honest part, because it is the weakest link in every causal claim above: December 2024 has at least three causes running at once. The reserve was cut on the 2nd; XRP ran from $0.51 to $2.73 in five weeks; and the FirstLedger launchpad had opened on 15 October, seven weeks before the cut. That launchpad issued 13,521 tokens carrying 685,000 trust lines in its first four months — 82% of every token it has ever launched — peaking in the exact window the cut lands in. So the trust-line spike is launchpad mania, not the reserve; it began before the cut and it decayed to ~60 tokens a month by 2026 while the reserve stayed cheap. Cheaper trust lines plausibly amplified it, but they cannot have started it.

What survives that unpicking is narrower and more useful. The spike is explained away. The sustained account growth — 2.5 million over twenty-one months, still running at ~2,300/day with no launchpad boom and no bull run to carry it — is not, and account creation is precisely what the base reserve prices. And under three simultaneously spam-favourable conditions, the junk still never arrived.

The floor nobody priced: reserves below the cost of reclaiming them

Everything above assumes a deleted object hands its deposit back. For accounts that is only true while the deposit is worth the trouble of asking. rippled charges one owner reserve to run AccountDelete “The fee required for AccountDelete is one owner reserve” (AccountDelete.cpp#L60) — so closing an account returns the base and burns the increment:

Reserve erarecovereddelete feenet to the owneraccounts actually deleted
Pre-Dec 2024 10 / 210 XRP2 XRP+8.00 XRP $21.8122.7%
Today 1 / 0.21 XRP0.2 XRP+0.80 XRP $0.8611.8%
Proposed 0.1 / 0.010.1 XRP0.01 XRP+0.09 XRP $0.10never

This is not a projection. Measured on-chain over matched seven-day windows, account deletions as a share of creations halved after the December 2024 cut — 22.7% to 11.8%. The reserve got ten times cheaper and reclaiming it stopped being worth doing, exactly as the arithmetic predicts. At the proposed 0.1 XRP the net recovery is nine hundredths of an XRP, about ten cents, and note that cutting the increment alongside it does not help: the ratio stays 10:1 either way. What matters is the absolute number, because the threshold is not set by the protocol — it is set by what a human's attention or a bot's transaction slot is worth. Below that floor, accounts are simply never closed, and every account ever created becomes permanent at roughly 751,000 a year. Raising the reserve later does not make them deletable; it only makes them look cheaper in hindsight.

Solana already ran this experiment — and is about to run it again

One chain has spent years at the price XRPL is contemplating. Solana charges rent per byte(128 + data_size) × lamports_per_byte (rent explainer) — where XRPL charges a flat amount per object. A minimal Solana account costs about $0.07 against an XRPL account's $1.08: 16.5× cheaper.

XRP Ledger
Solana
delta
Cost of one account
$1.08
$0.07
16.5× cheaper on Solana
Priced by
object count
bytes
flat vs proportional
Accounts
8.15M
500M+
61×
Live state
3.49 GB
~500 GB
143×
Validator RAM
consumer hardware
384–512 GB ECC
state lives in memory
Automatic cleanup
AccountDelete only
removed (SIMD-0084)
neither reclaims by decay
Validator revenue
none — zero
~6–7% APY
the asymmetry that matters

Solana also removed automatic cleanup: SIMD-0084 disabled rent collection, so accounts are no longer reclaimed by decay and are permanent unless explicitly closed — the same end state XRPL reaches if AccountDelete stops being worth running. Their dust problem is named and unfixed: a large share of stake accounts hold under one SOL and carry “significant account overhead without adding meaningful economic weight,” and any remedy would grandfather the existing ones. The engineering answer now under discussion is archival — moving live state from ~500 GB down to 50–100 GB — which is a large project to undo a pricing decision.

And here is the part that should give the XRPL debate pause. SIMD-0436 proposes halving Solana's minimum right now, and its argument is the same one being made here almost word for word: an “arbitrary constant set years ago” that rose in real terms with the token price and makes the chain “less competitive.” It names state growth as the only risk, calls it “unlikely,” and contains no account counts, no state-size figures and no growth projection. Its mitigation is that rent can be raised back later — the same move that does not work, because a higher price never un-writes the state written at the lower one.

The one idea worth taking from Solana is the pricing basis. Per-byte rent would dissolve the NFT-page asymmetry entirely: the 9,458-byte page that costs $0.22 here would cost $4.88 under Solana's formula. XRPL's flat-per-object rule is what makes a 2 KB page and an 83-byte ticket cost the same, and it is the root of every asymmetry measured in this article.

But the comparison ends with a difference that runs the other way, and it is the most important line in the table. Solana validators are paid and XRPL validators are not. A Solana validator earns roughly 6–7% a year from inflation, priority fees and MEV (Figment's breakdown), which is what makes a ~$60k-a-year machine a business decision. On the XRP Ledger the transaction fee is destroyed ctx_.destroyXRP(fee) in Transactor.cpp, with the comment noting the ledger header merely accounts for it — there are no block rewards, and XRP was never inflated. Validators receive nothing, deliberately, so that payment cannot warp their behaviour (xrpl.org FAQ). They run at pure cost, for reputation, governance and their own infrastructure.

That inverts the lesson. Solana's 384–512 GB hardware bar produces centralisation pressure, but its economics at least fund the machine; rising state is a cost the protocol pays for. XRPL has no such budget. Every byte added to state is an unfunded obligation on volunteers, and the network is currently secured by a 36-validator UNL and about 415 publicly visible servers — a small set with no revenue to absorb a rising floor. That obligation is cheap today: a top-ranked dUNL node runs on roughly $80 a month, as the operator evidence further down shows. This is a claim about who bears future cost, not a claim that the floor is biting now. State growth on XRPL is not paid for by anyone; it is simply endured until someone stops. Cheap reserves are therefore more dangerous here than on a chain that pays for its own replication, not less — which is the precise opposite of how the “Solana is cheaper, so we can be too” comparison is usually deployed.

What an actual validator operator measured — and where it corrects us

The strongest counter-evidence in this debate did not come from a model. Daniel Keller — who operates dUNL validator nHU2k8Po…KBvcpVji, a key we confirmed is on our own node's trusted list — published instrumented results from his machine and opened by naming the problem with the debate: “A lower reserve is a threat to validator performance — is it though? The current debate… is unfortunately still driven more by emotional doomsday vibes than by verifiable evidence from the opposing side.”

His node is a six-year-old Xeon E-2236 with 32 GiB of RAM and two NVMe drives in RAID 1, costing about $80 a month. It runs RocksDB rather than NuDB — the slower option — on a near-stock config, with debug and analytics scripts looping and log levels at debug. Under those deliberately unfavourable conditions it ranked 4th of ~101 observed validators by median arrival percentile, at a 390 ms median lag. His summary is the part that should be conceded rather than argued with: “Not in a lab. Not under perfect conditions. In the real world, under deliberately bad conditions… There is a meaningful difference between knowing something because you actually do it, and repeating second-hand claims.”

That corrects something in this article. We wrote that state growth is an unfunded obligation on volunteers and implied a rising hardware floor threatens a 36-validator UNL. At $80 a month on 2020 hardware, that framing was too dramatic for the ledger we actually have. Consensus performance today is not remotely constrained by state size, and anyone arguing that a reserve cut endangers validator performance right now is contradicted by the one participant who instrumented his own machine.

Our own measurements point the same way from the other direction. If account creation tracks price rather than reserve cost — and the table below says it does — then a cut cannot produce a flood of accounts either. The spam-doomsday case is weak, and our data says so as plainly as his does.

What that test cannot settle is what it was not built to settle. Arrival percentile measures consensus latency, not state capacity — a node can post excellent timing while its state grows, right up until it cannot. It measures the ledger we have, 3.49 GB, not the one a cut would produce, and no measurement of the present can answer that. And the proposal is 0.1 base and 0.01 per object, while the hardware argument is about accounts.

The sharpest technical point in that whole thread came from a reply, not either headline. @ShortTheFOMO: “Most people relate performance down to the disk, that's not the part that has the issue… The objects and the active memory tree is the ‘performance’ part,” and then, decisively, “Fees should protect the size of the ledger in memory on the nodes.”

That is right, and it is the same structure we found in Solana's AccountsDB — account data on disk, the index driving memory. It also reframes the whole argument correctly: the reserve is not buying SSD, which is why 3.8 GB of Solana's empty accounts costs 29 cents. It is buying memory-resident tree and per-object index cost. Which makes it an argument for holding the increment specifically — the number the hardware debate never reaches.

The question we left open — now answered on-chain

Everything above left one thing unresolved, and it was the load-bearing one: does a cheaper reserve actually cause adoption, or did December 2024 just coincide with a price run? The confounds looked fatal. They are not, because the ledger contains all four cells of a natural experiment — and the decisive cell is November 2024, when XRP tripled while the reserve was still 10 XRP.

PeriodXRP priceReserveAccounts / dayRegime
2023-06 → 12$0.52→$0.6110 XRP
1,178
flat price
2023-12 → 2024-06$0.61→$0.5210 XRP
1,746
flat price
2024-06 → 10$0.52→$0.6110 XRP
867
flat price
2024-11-10 → 11-30$0.56→$1.8110 XRP
5,540
PRICE RUN, reserve untouched
2024-11-30 → 12-20$1.81→$2.25cut
10,755
price run + cut + launchpad
2024-12-20 → 2025-01$2.25→$2.951 XRP
8,510
price run, cheap reserve
2025-01 → 07$2.95→$2.241 XRP
3,984
price falling
2025-07 → 12$2.24→$2.161 XRP
4,641
price flat
2025-12 → 2026-03$2.16→$1.381 XRP
3,608
price falling
2026-03 → 07$1.38→$1.041 XRP
2,395
cheapest reserve ever

Read the fifth row. With the reserve untouched at 10 XRP — $27 an account, the most expensive it had ever been in dollars — account creation jumped from a ~1,264/day baseline to 5,540/day. A 4.4× increase, before the cut, from price alone.

Now read the last row. Today the reserve is 1 XRP — about $1.10, twenty-five times cheaper in real terms — and account creation is 2,395/day, less than half the rate achieved when an account cost twenty-seven dollars. If the price of an account were the binding constraint on adoption, that ordering is impossible.

The honest conclusion is that account creation on the XRP Ledger tracks price momentum, not reserve cost. The reserve's independent effect is somewhere between small and undetectable in this data. It is not nothing — the December spike to 10,755/day exceeded what price alone had been producing — but it decayed within months while the reserve stayed cheap, which is the signature of a sentiment cycle, not a lowered barrier. Caveats, stated plainly: these are different eras with different secular trends, November 2024 was an exceptional macro event, and account creation is only one measure of adoption. But the direction is unambiguous and it runs against the cut.

So we changed our mind — asymmetrically

We changed our answer twice writing this. First the two natural experiments pushed us off “hold both” and toward cutting the base — the last base cut produced users, not junk. Then measuring reclamation pushed us back, because a base reserve below the cost of recovering it quietly converts every account into permanent state, and Solana shows where that road ends. The goal is safe adoption, not a defended position, so here is where the evidence actually leaves it:

Base: the adoption case did not survive measurement

We argued for cutting this, then measured it. In November 2024 the reserve cost $27 an account and creation still hit 5,540/day on price alone; today at $1.10 it runs 2,395/day. Adoption tracks price, not price-of-entry. And at 0.1 XRP closing an account nets ten cents, so nothing is ever closed — deletions already halved after the last cut. The case for cutting the base is now weak on both sides: little measurable upside, a permanent-state cost, and no reclamation path.

Hold the increment — measured risk

The per-object reserve is where the one measured asymmetry lives. On testnet, max-URI NFT minting put a full 32-slot page at 9,458 bytes for one 0.2 XRP unit, against a trust line's 354 — its 211 plus the 143-byte index it drags along — 26.7×. Cutting the increment 20× takes a gigabyte of page-spam from $22,800 to about $1,100. And burning NFTs does not release the page: the reserve only returns when the last one goes. That is the half with a measured exploit, a one-way ratchet, and no evidence behind cutting it.

So: hold both. That is where this article started, on precedent — but it is not why it ends there. The increment has a measured exploit, a one-way ratchet and the recycling pressure that keeps churn at 185:1. The base has an adoption case that did not survive the on-chain test and a reclamation floor beneath it. Cutting either buys something we could not detect and costs something we could measure. If the network wants cheaper onboarding, the lever that would actually work isreclamation — make closing an account worth doing — not a lower price of entry that the evidence says nobody was waiting on.

Three things would change this answer again, and all are measurable rather than rhetorical. If NFT-page creation ever inflects the way trust lines did in 2021, the increment needs to go up, not down — or pages need pricing by byte rather than by page, which is the one idea Solana got right. If account deletions keep falling as a share of creations, the cleanup problem is already here and the base should not move until it is fixed. And if a base cut does not move account creation, it bought nothing and the deterrent should be left alone. Reserves were built to be voted, in both directions, on evidence like this — which is also the strongest argument against copying a proposal that ships without any.

The reserve was never a fee, and it was never meant to be a wall either. It is a refundable deposit whose only job is to make permanent state cost something, set by a number the founders deliberately made votable so it could follow the world. Two of those votes are now measurable, and they say the deposit can come down a long way on the account without the ledger filling with junk. The measurements also say the per-object half is where the one real exploit lives. Safe adoption is not a choice between those two findings — it is doing both: make the account nearly free, keep the object honestly priced, and keep voting on evidence rather than on precedent.

Related reading