Free until it matters
A transfer is a signature handed over. No block, no confirmation, no consensus round. Taipei to London in 48 milliseconds — propagation and 20 microseconds of signature check, and nothing else.
Settlement is a separate act, bought when the value justifies it.
Anchor transfers — moving a covenant without touching the chain. Seven attacks, four dissolved, and what is left.
| Version | 0.1 · 27 August 2026 |
| Authors | Ma An-Zuo (design) · Claude Opus 5 (document, adversarial pass) |
| Status | Design. Nothing is implemented. Two problems are open |
| Supersedes | — (first version) |
| Provenance | Minted 27 August 2026. TX1 32ed69dbdc40933a2dcad9b4adb484073cbb94a404f9a237171be62ff5735b0a — the content-bearing collection, and the reference target.TX2 (edition token) de034188c144ccd05ac6e4b74388f4fdd7bb62c577cdf7853d4bdc40242319ee |
| Licence | Apache License 2.0 · © 2026 Ma An-Zuo |
Anyone may implement this design, freely, on any chain or none. No permission is needed and none should be asked for.
| What it actually does | |
|---|---|
| Apache §3 — patent grant | A grant from the author to implementers — he can never assert a patent against anyone who built on this. It does not shield implementers from a third party's patent. No licence can |
| Apache §3 — retaliation | Sue over this work and your own licence to it terminates. The reason to prefer Apache over MIT here |
| The BRC-226 mint | This is the actual protection against someone else patenting the idea. A timestamped public disclosure is prior art — it doesn't stop a filing, it makes the resulting patent invalid and dates the evidence |
The mint is the patent defence. Apache is the licence hygiene. Neither substitutes for the other.
And a licence on a document governs copying the text, not implementing the idea — copyright covers expression, never the design. Which is why the implementation grant is stated separately, in plain words, rather than left to be inferred.
Each version is a separate mint, and each names the txid of the one it supersedes — so the document's own history becomes an anchored chain. Which is the thing the document describes, applied to itself.
0.x is design, nothing built. 1.0 is reserved for when it is built and a real spend has been measured — bump on a serialized spend, never on an argument.
BSV holds the value. The jetmora log holds the ownership. Exit to BSV is always available, unilaterally, to whoever holds it now.
Design: Ma An-Zuo. Written up and stress-tested the same day.
┌──────────────────────────────────────────────────────┐
│ BSV — the ANCHOR POINT │
│ a covenant UTXO holding sats, or a token / NFT │
└──────┬───────────────────────────────▲───────────────┘
LOCK│ │UNLOCK
▼ │ (any current holder)
┌──────────────────────────────────────────────────────┐
│ jetmora — the NON-FORKABLE LOG │
│ A ──sign──▶ B ──sign──▶ C ──sign──▶ D ──sign──▶ E │
│ ZERO chain transactions · ZERO fees │
└──────────────────────────────────────────────────────┘
Lock once. Transfer a thousand times for nothing. Unlock once. Chain cost is constant and independent of how often it changes hands.
This design was not reasoned down from first principles about money. It was forced by a game.
grafverse needs items that move: a painted object handed between players, an inventory that travels with a person from one world into another, an asset acquired on the far side of a gate. And the moment you write that requirement down, the chain-per-transfer model is already dead:
| The requirement | What a transaction per transfer does to it |
|---|---|
| A player hands an item to another player | Costs a fee, waits for a block. Nobody does this twice |
| Inventory travels between worlds | Every crossing becomes a settlement event |
| A gate's toll is acquiring the assets on the other side | The toll becomes the fee, not the asset — the opposite of the design |
Three standing laws collide here, and the collision is the brief: play free, touch chain only when it matters — a game that charges to hand someone a sword is not free, whatever the download costs. Inventory is player state, and it travels — so it cannot live in any one world's database. Owned, not claimed — so it cannot be a row in a server either.
Those three together have exactly one shape of answer: the thing must be genuinely owned, must move for nothing, and must remain redeemable on chain at any moment.
That is not a payments requirement that happened to suit a game. It is a game requirement that turned out to describe cash.
Which is also why this paper says what it says about scale. A billion players trading pennies-worth of paint is not a stress test invented to sound impressive — it is the ordinary load, and any design needing a global ledger to carry it has already lost.
Not "a covenant that holds a token". There is no token layer. The covenant is the asset. That deletes a whole tier:
| The usual way | Here |
|---|---|
| Token protocol (issuance, IDs, transfer rules) | Gone. Genesis txid is the asset id |
| An indexer to know who holds what | Gone. The log says who holds it |
| A wrapper contract to lock the token | Gone. Nothing to wrap |
| A standard everyone must implement | Gone. The rules are in the script |
And the asset becomes self-describing. The covenant's Script says what it is and what it may do — and
because it compiled from BASIC, it reads back through unbasic. A buyer
doesn't consult a registry or trust a metadata server. They decompile the thing they're
buying.
Anchor id = genesis txid. Rules = the script. Holder = the log head. Three things, no registry.
It separates two things every other scheme welds together:
| Property | Provided by | Fails how |
|---|---|---|
| Authority — only the rightful holder can move it | the signature chain | forge a signature (can't) |
| Uniqueness — can't hand it to two people | the non-forkable log | the log equivocates |
| Exit — the holder can always get out | the covenant | nothing — it's unilateral |
Authority is cryptographic. Uniqueness is the log's only job. Once you see that, the log needs no custody and no trust beyond never show two successors for one anchor.
The design above says "the log provides uniqueness." It never says which log. That is the whole attack.
┌── log L1 ──▶ D ──▶ E "I sold it to D"
A ──▶ B ──▶ C ──────┤
└── log L2 ──▶ X ──▶ Y "I sold it to X"
(a log C spun up, or
a different network)
Both branches are cryptographically perfect. Every signature verifies, both run back to genesis. The covenant can't tell them apart because nothing is wrong with either one.
No key was stolen and the signature chain didn't break. C had the authority and used it twice, in two places. Authority was never the problem — uniqueness was, and "a log" isn't an answer.
Distributed parties cannot agree which of two valid histories came first without something outside themselves. That's not an engineering gap — it's the impossibility every consensus system exists to solve.
So stop trying. BSV is a total order. That's the one thing it does that this can't do for itself.
1 · The covenant names its anchor chain at genesis, immutably. A transfer anchored anywhere else isn't a transfer of this asset — which settles the different-network attack outright. The system stays chain-agnostic; each asset doesn't.
2 · First anchored wins, by the chain's own ordering. The strongest form makes the anchor a covenant UTXO that must be spent to advance — then uniqueness isn't a policy anyone enforces, it's the UTXO set. Bitcoin has prevented exactly this since 2009.
3 · The buyer waits for the anchor.
| Transfer | free · instant · reversible until anchored |
| Settlement | one anchor over thousands of transfers · irreversible |
The cost amortises. The latency doesn't. And it reframes BSV's job: not storing or securing the asset — supplying the total order, consulted once per anchor rather than once per transfer.
"Use a one-way hash so only jetmora can redeem." Works It kills the attack completely. But look at the price:
| jetmora offline / refuses / seized | every holder's value frozen forever |
| jetmora loses the secret | every asset ever minted is dead |
| jetmora compelled or colluding | redeems to the wrong party |
| Unilateral exit — gone |
That converts this into a statechain — handing back the one advantage it has over the closest prior art, and introducing a custodian.
Keep the fix, keep the property: jetmora or timeout. Don't make jetmora necessary; make jetmora fast.
unlock = jetmora co-signs the current head ← fast path, minutes
OR holder alone, after N blocks ← escape hatch
The timeout is what makes it not custody: jetmora can delay you by N blocks, never take and never trap. But see B1 below — the escape hatch as written is broken.
1 · A hash chain makes ordering physically unforgeable. Commit
H^n(s); reveal H^(n-k)(s) at sequence k. There's exactly one preimage
per link — the log cannot produce two valid values for the same sequence. Not "is punished
for it". Cannot.
2 · An HTLC solves the in-flight sale, atomically — and it's the single mechanism for both open problems:
buyer pays into an HTLC locked to H(x)
seller can ONLY claim it by revealing x
revealing x is WHAT COMMITS the transfer in the log
Neither party can act before the other is safe — the exact shape both problems shared.
Asking "how many transactions per second?" imports a chain assumption: that some node validates everything. Here no such node exists or can. A participant verifies only the anchors they hold or are buying.
| 1 trillion/sec spread over | Each device does | = cores |
|---|---|---|
| 8bn phones | 125 / sec | 0.003 |
| 1bn devices | 1,000 / sec | 0.02 |
| 10m servers | 100,000 / sec | 2 |
A trillion transfers a second across a billion devices is 2% of one core each. "Trillions per second" is the conservative reading, not the bold one.
Say it structurally: "There is no throughput number, because there is no bottleneck to measure. Every participant verifies only what they own." That can't rot and can't be argued down to a benchmark. The chain bounds the doors, not the dancing.
Adversarial pass, ordered by severity. B1 breaks a fix proposed earlier in this same document.
The timeout path verifies only signatures — and the whole attack was that both branches have perfect signatures.
C signs to D → goes in the log, legitimate
C signs to X → parallel log, or no log at all
X waits N blocks, uses THE ESCAPE HATCH — which by
definition does not consult the log.
The covenant sees a flawless chain A→B→C→X and pays out.
Anyone ever offered a signed transfer — a failed negotiation, a cancelled sale, a test — can wait N blocks and steal the asset. It doesn't weaken the log's guarantee; it bypasses it.
It can't be patched with "longest chain wins" — both branches fork at C, so both are the same length. Nothing in the signature data discriminates.
Fix: the escape hatch must exit to the LAST ANCHORED STATE, never to a signature chain. Every transfer after that anchor is void. Unilateral exit survives, the double-spend dies — and the honest cost is that unanchored transfers are lost on escape.
That promotes anchor frequency from a tuning knob to a safety parameter.
B2 log-binding vs distribution · B3 split-view attack · B4 bonds can't cover appreciation · B7 public ownership record.
All four attack the log operator — and the next section removes that component entirely.
Verification needs the chain. If the seller withholds it, a buyer can't verify an asset the covenant would happily redeem. Once there's no log service, this is the whole game — see below.
B6 · Immutable rules mean unfixable bugs. "The covenant is the token" removes the registry — and removes the ability to ever fix anything. Fine for a game item; not obviously fine for anything valuable.
"The secret to scaling is not for this to run on a central server but on each user's device. Each user is responsible for the custody."
This isn't a deployment note. It removes the component that every break above attacks.
| What it was | What it becomes |
|---|---|
| A log service ordering transfers | Each holder's own local signature chain |
| An operator's signed root | The anchor UTXO on BSV |
| A bond against equivocation | Nothing to bond — nobody is trusted |
The buyer never had to trust a log. They had to check one thing the seller cannot control — and that thing was always on chain.
| Break | Verdict |
|---|---|
| B2 · log-binding | Dissolved — no log key exists to bind |
| B3 · split-view | Dissolved — anchor is a public UTXO, one view by construction |
| B4 · bond sizing | Dissolved — no operator, no bond |
| B7 · privacy | Partly improved — see "the anchor chain is walkable" |
| B1 · escape to last anchor | Unchanged, still required |
| B5 · data availability | Sharpened — now the central risk |
Four of seven gone, and the two hardest among them. The design got smaller and stronger at once.
Lose your chain, lose your proof. That isn't a flaw to engineer away — it's exactly what "each user is responsible for the custody" means, and it's the same bargain as holding your own keys. The answer to "custody is hard" is better UX, never a custodian.
So: the seller must hand over full history before payment — bind it into the HTLC — and backup is a first-class feature, not an afterthought.
C sells to D. C also sells to X.
Both hold perfect chains. Neither is anchored.
⇒ Whoever anchors FIRST owns it.
The answer isn't to prevent the race — it's to never pay before winning it. The buyer's payment sits in an HTLC released only when the transfer is anchored. Atomic and final in one step.
Which means the buyer pays for one anchor when it matters, and nothing for the thousand transfers that don't. Finality is a thing you buy, per transfer, only when the value justifies it — and the scale claim survives because most transfers never anchor.
A buyer must confirm the anchor they're shown is the current one. Verifying walks backwards
and is free; finding the tip needs an index. Walking /spent until it 404s
works for one asset and does not obviously survive a billion. This is now on the
critical path, where before it was a convenience.
Mostly. Say the precise version — it's stronger and can't be laughed off.
"We define an electronic coin as a chain of digital signatures. Each owner
transfers the coin to the next by digitally signing a hash of the previous transaction and the public
key of the next owner."
— Bitcoin whitepaper, §2
That is this design, line for line. A coin is the chain of signatures, held by its owner, passed forward by signing. "The covenant is the token" is that sentence said in Script — and in this one respect it's more faithful to §2 than the modern UTXO model.
But §2's very next paragraph is where it diverges: "the payee can't verify that one of the owners did not double-spend… The only way to confirm the absence of a transaction is to be aware of all transactions." Satoshi's answer was to announce every transaction to everybody.
| Bitcoin | Here | |
|---|---|---|
| Double-spend prevented by | everyone sees everything | the payee anchors before accepting |
| Who must act | nobody | the payee |
| Cost | every transaction, forever | only transfers needing finality |
| Ceiling | what all nodes can see | none |
"It is the whitepaper's §2 coin, with the double-spend solved by anchoring instead of universal broadcast — which is what removes the scaling ceiling."
"I've got coins I can't split and notes I can't cut in half — because if I did, they'd be worthless."
Cash has never been divisible — it is denominated. Nobody has ever cut a note in half. They make change.
And the hardest problem in this document disappears with it. The objection was that splitting forks the signature chain and every branch needs its own uniqueness guarantee. If nothing ever splits, that problem does not exist. An anchor is minted at a denomination and keeps it for life — its chain is linear forever, which is what every mechanism here already assumed.
pay 17: hand over a 20-anchor
receive back a 2-anchor and a 1-anchor
⇒ THREE independent transfers, each a linear chain
Exactly what the design already does well, three times, in parallel. No new mechanism at all.
| Denominations | Mint at 1 · 2 · 5 · 10 · 20 · 50 · 100 — the pattern the world already uses |
| Making change | The payee draws on their own float, like every merchant on earth |
| Re-denomination | Unlock a 100 on chain, mint five 20s. Costs one transaction |
That last row maps to real behaviour with uncanny fidelity: you spend the notes you have, and occasionally go to the bank to break a big one. The chain is the bank you visit rarely, not the till you use hourly.
You can't always make exact change. "Have you got anything smaller?" Physical cash has this problem and the world runs on it anyway.
A merchant holds a float of small anchors. A real cost of doing business — and a thoroughly solved one. Not a research problem.
Fungibility. Two 10-anchors have different genesis txids and histories. Notes have serial numbers and nobody checks — but here history is partly public at anchor points, so taint-based discrimination is technically possible. Same question as "private between anchors", not a new one.
With Bitcoin you receive a payment and the network protects you. Here an unanchored payment is provisional, and the payee chooses when to finalise. A genuine UX difference — the wallet must make "safe" the default and "provisional" the deliberate choice.
Which is, again, exactly how people treat cash: a tenner between friends is provisional; a car changes hands at a bank.
With denomination replacing divisibility, "peer-to-peer electronic cash" is essentially earned. What remains is a UX obligation, not a missing property.
"One user must spend the tip to push it forward to another. There needs to be a way to prevent them from keeping a copy and using it before the other party does."
A secret cannot be handed over. It can only be shared. If transfer meant "give the recipient my key", the sender always keeps a copy and this would be unsolvable.
C does NOT give D anything secret.
D generates D's own keypair. D keeps the private key.
C never sees it. C merely SIGNS: "the next owner is D's pubkey."
C never possessed D's key, so there is no copy to retain. The attack isn't copying — it's C signing a SECOND time, naming X instead of D. A different problem, and unlike copying, solvable.
1 · Structural — nothing secret moves, so the whole problem reduces to double-signing.
2 · Settlement — the anchor UTXO is consumed when spent. Bitcoin has made that impossible to do twice since 2009. Absolute prevention, at the cost of one transaction. Paired with the HTLC, the buyer's money releases only on anchor — so they never pay into a race they haven't already won.
3 · Punishment — make signing twice mathematically self-destructive. This is real cryptography, not a policy:
ECDSA leaks the private key if one nonce signs two different
messages.
k = (h₁ − h₂)/(s₁ − s₂) then d = (s₁k − h₁)/r
Full key recovery, by arithmetic, from the two signatures alone.
C pre-commits a one-time nonce point R = k·G for this transfer.
The covenant honours only a transfer signed with THAT R.
sign once → fine, nothing leaks
sign twice → both signatures share k
→ ANYONE holding both recovers C's private key
→ C's bond is claimable by anyone. Instantly.
| Self-executing | Not merely "detectable" — no court, no operator, no vote |
| Permissionless | Anyone can claim the bond; the victim needn't be watching |
| Pure arithmetic | The proof is the two signatures. Verified on real secp256k1 |
You cannot stop C signing twice. You can make it cost C more than the asset is worth, with no trusted party anywhere in the mechanism.
| Mechanism | Cost | |
|---|---|---|
| Prevention | anchor the transfer (UTXO consumed) | one chain transaction |
| Punishment | one-time nonce + forfeitable bond | free |
Prevention costs a transaction. Punishment is free. Choose per transfer, by value. A game item moves on punishment alone. A house anchors. That's the same choice every settlement system in the world makes — put in the user's hands rather than a bank's.
1. Prefer a separate bond covenant that anyone may spend by presenting two signatures sharing an R — far less Script than verifying the nonce commitment inside the main covenant.
2. Bond sizing returns, but it's now the sender's own bond, per transfer. A buyer refuses a bond below the asset's value. Market, not governance.
3. The nonce commitment must be verifiable before the buyer accepts — otherwise C commits R and signs with a different k anyway.
Cash — essentially earned. Cash is denominated, not divisible. What remains is a UX obligation, not a missing property.
Private — only between anchors. See the section below: the anchor points form a walkable chain, not isolated dots.
"The log tip once anchored can be read back to the previous anchor through the anchor Merkle path."
The anchors are not isolated dots. They are a linked list.
The anchor advances by spending the previous anchor UTXO — that is the entire uniqueness mechanism. And a spend chain is, by construction, a linked list:
genesis ──▶ anchor 1 ──▶ anchor 2 ──▶ anchor 3 ──▶ … ──▶ tip
each one SPENDS the last. Public. Permanent. Walkable by
anyone, in either direction, with nothing but a block explorer.
This is our own tip-discovery walk pointed back at us. The property that makes the tip findable is the property that makes the ownership history readable. You cannot have one without the other.
| Private | Transfers between anchors — a holder who receives and passes on without ever anchoring never appears |
| Public | Every holder who was current at an anchor point |
| Public | That those holders form one continuous chain, genesis to tip |
And the trade is exactly backwards from what anyone would want: the more you anchor for safety, the more of your ownership history you publish. A high-value asset anchored at every transfer ends up with a complete public ownership record. Privacy and safety are directly opposed.
Commit to a hash of the holder, not the holder's key.
anchor commits: H(holder_pubkey ‖ salt) ← not the pubkey itself
| Uniqueness survives | Still exactly one leaf per sequence — the anchor's only job |
| The buyer still verifies | They hold the chain, so they recompute the hash and match it |
| An outsider learns | "Someone owned it at this point" — not who |
The shape — how many times it changed hands, and when. And at exit the covenant must pay a real address, so the final holder is revealed at that moment. One moment rather than the whole history — a large improvement, not a clean one.
Fungibility is unchanged: anchors stay individually identifiable by genesis txid, so an asset's shape is a fingerprint even when the names are hashed.
"Transfers between anchors are private. The anchor points are a public, walkable chain — and hashing the holder hides who, but not how often."
Long, and every clause is load-bearing. Any shorter version is false.
"Everyone has been trying to incorporate a token or coin in every sidechain attempt — reproducing the same bottleneck they're trying to avoid."
It isn't having a token that costs them. It's that a token forces a shared ledger, a shared ledger forces consensus, and consensus is the bottleneck.
| Accounting model | What a spend depends on |
|---|---|
| A balance | Everything that ever touched that account — irreducibly global |
| A chain of signatures for one asset | That asset's own history. Nothing else. Ever. |
A balance cannot be validated locally. To know whether Alice may spend 5 you need Alice's balance, which depends on every transaction she was ever party to. The moment your design has balances you've signed up for global state, and everything after that is damage control.
| What it built | Outcome | |
|---|---|---|
| Sidechains (Liquid, RSK) | Own consensus, own blocks | Global ordering rebuilt from scratch |
| Rollups | Batched txs, one shared state root | The sequencer is the bottleneck |
| Lightning | Per-channel state, no shared ledger | Escaped it — but 2-party, and routing became the new bottleneck |
| Statechains | Per-asset off-chain transfer | Very close — but a trusted operator |
| RGB / single-use seals | Per-asset client-side validation | Escaped it properly |
This design was not built from any of the systems above, and the author was not aware of them. They are listed because they are adjacent and a reader will want the comparison — not because they were inputs.
Convergence is worth noting in its own right: several people reaching similar structure from different starting points is evidence the structure is natural, not evidence anyone copied.
RGB and statechains also escaped the shared ledger. The observation here isn't that the escape is unknown — it's that the mainstream didn't take it, and the reason was commercial rather than technical.
This design was arrived at independently of both — see "Related work".
The mainstream went the shared-ledger route for a reason that was never technical. A sidechain needs a token to fund itself: to raise the money, reward validators, give the thing a price. And the moment you need a token to have a price, you need a ledger of balances — and you have rebuilt the bottleneck you launched to escape.
The architecture was chosen by the funding model, not by the engineering.
Which is exactly why this project can go the other way. Never needing a token to raise money is what leaves the design free to have no shared ledger at all — the constraint that looked like poverty is what kept the architecture clean.
They made ordering global because the token forced it. Here, ordering is per-asset — so there is nothing global left to be a bottleneck.
Recorded precisely, because this document is going on chain for provenance — and because a night spent on unattributed code is a poor night to be vague about attribution.
Every idea here is his, and the sequence matters, because each one made the design smaller:
| The mechanism | Anchors lock sats or NFTs; a non-forkable log moves the covenant by signing it forward; any holder returns it to the anchor to unlock |
| "The covenant IS the token" | Deleted the token layer, the indexer and the registry |
| "It runs on each user's device" | Dissolved four of the seven attacks at once — including the two hardest |
| The parallel-log attack | Found the biggest hole — in the version I had just written and called sound |
| "Prevent them keeping a copy" | Named the last remaining problem exactly |
| "Notes I can't cut in half" | Killed the final research problem by correcting me: cash is denominated, never divisible |
| The token-bottleneck diagnosis | Why this wasn't built before |
R, so signing
twice leaks the key by arithmetic. Verified numerically on real secp256k1 before being written down.Every correction tonight ran the same direction: he made it simpler, I made it survive contact. No claim of co-invention is made or implied — the design is Ma An-Zuo's, in full. The byline records who wrote the paper.
compileState; measure by serializing a real spend.