Overview
the loop
Abstract has ten tokens worth naming and no index that holds them. It also had no gold at all. A10 is both: an index that funds itself out of its own trading volume rather than out of a treasury or a team allocation, and the first source of tokenised gold on the chain.
The loop is short. Trades pay a 3% fee in ETH. The contract accumulates for the length of a round. At close it buys gold and one constituent, and pushes every eligible holder their proportional share of both.
The fee applies to trades against a registered pool, and no pool exists until graduation. During the curve phase nothing is collected, no gold is bought and no rewards go out. Holding A10 before graduation earns nothing, and that is worth knowing before you buy rather than after. If the curve never fills, anyone can open refunds after 30 days and every buyer takes back exactly what they paid.
Rewards are pushed to eligible wallets after each round closes. No claim button, no proof to submit, no page you have to come back to. If the keeper ever stops, a permissionless claim path stays open and needs nothing from us.
The fee
3% · collected in A10, sold for ETH
Every buy and every sell pays 3%, taken in A10 and sent to the Treasury. To fund the gold and index buys it has to be converted, so the Treasury sells that A10 into the same pool, in batches, when a round is funded. That is real sell pressure and it comes from the protocol, not from a holder: worth knowing before you buy rather than after you notice it.
| Wedge | Rate | Goes to |
|---|---|---|
| Gold rewards | 1.20% | Buys gold, distributed to holders in kind |
| Index rewards | 1.20% | Buys one constituent per round, distributed in kind |
| Build & ops | 0.60% | Execution gas, the bridge, the crank, an audit |
| Total | 3.00% | 80% of every fee dollar is holder money |
There is no setter. Not timelocked, not multisig gated: the function does not exist in the contract. Raising the fee later is the classic way a token like this takes your money, so the capability was removed rather than guarded.
Only registered pools are taxed. The registry refuses any address that cannot prove on chain that it reports the expected factory and holds A10 as one of its two sides, so nobody, us included, can mark your wallet a pool.
The round
every eight hours, at the earliest
A round is one full cycle: accumulate, close, buy, distribute. Nothing is held off chain and nothing routes through a personal wallet.
ETH from the fee collects in the contract for the length of the round.
Holder balances are checkpointed in a single block, the snapshot. Balances at any other moment do not count.
Half the holder share buys tokenised gold, capped at 0.25% of the gold pool's reserve.
The other half buys the name whose turn it is, through that name's own venue, capped the same way.
Every eligible holder receives their proportional share of both purchases, pushed to their wallet.
The crank can be called by anyone every eight hours, but it settles only when the accrued fee covers the cost of settling. Measured against live Abstract gas on 2026-08-26, one round costs $1.36 at 200 eligible holders, $5.78 at 1,000 and $16.84 at 3,000. When the fee has not cleared that bar the check passes without closing a round, so the interval is a floor on round length rather than the length itself.
Short rounds when volume is high, longer rounds when it is quiet. A fixed interval regardless would spend a rising share of the rewards on gas as volume fell, which is the opposite of what a holder wants.
Choosing when a round fires is choosing what price everyone receives, so it is deliberately not ours to choose.
Selection
curated, not scored
Ten constituents, bought one per round in fixed order rather than split ten ways. A tenth of a small pot across ten tickers is dust that costs more to deliver than it is worth.
Volume and holder counts are the two obvious ranking signals and neither is readable on chain: a V2 pair does not accumulate volume, and no ERC-20 tracks holders. Both would have to come from an indexer, and both are the cheapest numbers in crypto to fake. Ranking on volume would pay projects to wash trade their way into the index. So the set is chosen, and the choosing is visible.
An addition sits in public for 12 hours before it takes effect, so nobody can add a token and have the protocol buy it in the same breath. A removal is immediate, because a dying name should not have to wait out a timer.
Enforced in the contract. setBasket seeds an empty index once and then
closes, so the delay cannot be sidestepped by replacing the set wholesale.
Every buy is capped at 0.25% of the pool it is buying into. If a pool is drained the cap computes to zero, the round buys nothing, and the whole slice goes to gold instead. No admin transaction is needed for the ordinary case.
Two different questions get confused here, and confusing them cost this index two constituents. A10 itself can only trade through a V2 pair exposing the supporting fee-on-transfer selectors, because A10 is taxed: on Abstract that is Uniswap V2 and Kona V2 and nothing else. Buying a constituent spends ETH for a plain ERC-20 and carries no such requirement, so it can route through any venue that quotes.
So the index buys through four pool shapes: Uniswap V2, Kona V2, Aborean's Solidly-style pools and Uniswap V3 concentrated liquidity. Each constituent is registered with the venue holding its deepest reachable pool, and the engine reads depth and derives its price floor differently for each shape. Applying the taxed-token rule where it did not belong had written off ABX and BURR entirely and had PENGU priced against a pool eight times smaller than its real one.
Eligibility
0.01% of supply
To receive a payout, a wallet must hold at least 0.01% of supply at the snapshot block. On a fixed supply of 1,000,000,000 that is 100,000 A10.
A payout smaller than the gas required to deliver it destroys value: the holder receives dust and everyone else pays for the transfer. The floor keeps a round economic and keeps the eligible set small enough that a round settles in a predictable number of transactions.
Balances are read at the block the round closes. Holding before or after does not count, and neither does the average across the round. Buying immediately after a close and holding to the next one is the behaviour the design rewards.
The threshold is a published parameter, not a secret, and every round records both the threshold it used and the block it read balances at, on chain, at the moment it is published. Both are needed: the threshold alone left the block free to choose, and balances can be replayed to any past block, so a block picked after seeing the distribution would have produced a round that passed every other check. Committing both means an eligible set can be reconstructed and checked by anyone, against numbers we could not revise afterwards.
Enforced. The builder applies the floor at the snapshot block and the contract stamps the floor on the round, so the eligible set can be rebuilt from published inputs and compared against the published root.
Distribution
pushed, in kind
Rewards arrive as the assets themselves, gold and the constituent, not as a claim on them. You do not sign anything, you do not pay gas, and you do not have to be watching when a round fires.
Eligibility is computed from the snapshot, a Merkle root of the payouts is published on chain, and a keeper submits the payouts in batches. Once a root is published it is immutable, so the batches that follow can only pay what it already says: that part is enforced.
What it does not do is constrain the keeper, and an earlier version of this page said otherwise. The keeper is the party that publishes the root, and choosing the root is choosing the recipients, so nothing on chain stops a published round from naming whatever it likes up to the uncommitted balance. The round is sequential and public, the snapshot block and the eligibility floor are both recorded on chain, and the verifier below rebuilds the whole eligible set from those and fails if the payouts do not match. That is the actual protection: it is detection by anyone, after the fact, not prevention. Today the keeper and the owner are the same key, so this is operator trust and is listed as such in the risks.
If the keeper stops, any holder can present their own proof and be paid directly. A reward you can only receive from us is a reward we can withhold, so that path exists from day one rather than as a later addition.
One wallet self-claiming moments before a batch of hundreds must not kill the batch, so an already-paid entry is skipped rather than reverted.
Eligibility is computed off chain, which would be a pure trust step if the only thing published were the answer. So each round ships as a file containing the snapshot block, the total supply it measured the floor against, every eligible wallet with its balance, both payout legs, the remainder rolled forward, and the proofs, along with a written description of exactly how a leaf and a node are hashed. That is enough to redo the arithmetic and rebuild the root from scratch.
verify-round.js in the repo does it and shares no code with the builder
that produced the file, because a checker that calls the same functions as the
producer can only tell you the file was not edited afterwards. It re-derives every
payout, rebuilds the tree, checks each proof, and compares the result against the
root the Distributor is actually paying against. With --replay it also
rebuilds holder balances from Transfer logs at the snapshot block, which is the only
check that catches a wallet being quietly left out.
The verifier tells you a published round is internally honest and matches the chain. It cannot tell you a round was published at all: the schedule is ours to run, and nothing forces a round to fire on time. Rounds are also settled by a keeper we operate: once a root is published the batches cannot deviate from it, but the keeper is also what publishes the root, so a dishonest one would be caught by the verifier rather than blocked by the contract. And none of this has been through an external audit.
The gold rail
bought on Ethereum, wrapped onto Abstract
Gold is PAXG, bought on Ethereum, locked in a vault contract, and minted as a wrapped claim on Abstract against a LayerZero message proving the lock happened. There is no mint function: supply exists only because such a message created it.
A bridge round trip costs roughly $0.32 at current Ethereum gas plus the pool's 0.30% swap fee, and that cost swings with gas. Gold accumulates until buying is worth what buying costs, then it goes. Cheap gas fires it sooner, expensive gas makes it wait. There is no countdown because there is no date.
PAXG's transfer fee is zero today, but Paxos reserves the right to reinstate it. A stock adapter would mint against the requested amount and leave every wrapped token fractionally unbacked with nothing detecting it. This one measures the balance that actually landed.
Abstract accounts are smart contracts, and the identical address on Ethereum is not your wallet, it is an address nobody holds a key for. The contract refuses the specific case of a contract account bridging to its own address, but you must still supply a real Ethereum destination.
Gold you receive is yours to move. The redemption panel on the front page burns your wGOLD on Abstract and releases real PAXG to an Ethereum address you name: connect, paste the address, sign once. You pay the LayerZero fee, currently a fraction of a cent short of thirty cents, plus Ethereum gas. Nothing about it needs our permission, and no allowlist gates the release: the sender allowlist on the vault governs who may LOCK gold, not who may take it back out.
Two limits worth knowing before you use it. Amounts move in whole units of 0.000001 oz, so anything smaller stays where it is. And because you pay a bridge fee plus Ethereum gas, redeeming a very small balance costs more than the gold is worth. There is no wGOLD pool on Abstract to sell into instead, so small balances are best left to accumulate. We would rather write that down than let you discover it at the confirmation screen.
PAXG is a claim on allocated London Good Delivery gold held by Paxos, and it trades deeply on Ethereum, so it can be swapped there for anything else. Turning it into physical metal is a separate matter and Paxos sets those terms: it takes 430 PAXG, roughly one bar, plus a fee.
No third party can. The owner is slowed but not stopped, and the exact shape of that matters more than the reassuring version.
setPeer sits behind a 48 hour delay: a change is
announced on chain, readable by anyone for two days, and only then takes effect. But
LayerZero keeps a second role, the delegate, which can rewrite which verifiers
must sign a message, and whoever chooses the verifiers decides what counts as a genuine
message from the peer. OAppCore.setDelegate is not declared
virtual, so it cannot be overridden and the delay does not reach it. An
audit found this after the delay shipped; the first fix was verified by attempting
setPeer and finding it refused, which tested the door that had just been
locked rather than the one beside it.
So the honest statement is that this is a trusted-operator system with a two day warning on one of its two doors. Closing the other one is an ownership change, not a contract change, and it has not happened yet. Until it does, the protection you should rely on is the hard cap on locked value, which bounds the worst case to a number chosen in advance rather than to everything.
The initial wiring is exempt, because a rail cannot be connected without setting its
first peers and no value is at risk before gold is locked. That phase is closed by a
one-way finishBootstrap() call, made before any gold moved, and the flag
is public. The locked value still carries a hard cap on top of all of it.
Parameters
every number on both pages comes from here
| Parameter | Value | Note |
|---|---|---|
| Graduation target | 15.0 ETH | the curve closes here and seeds the pair |
| Virtual reserve | 8.0 ETH | pricing only, never deposited |
| Settling period | 4 min | immutable constant, no setter |
| Curve supply | 1,000,000,000 | the entire supply; nothing held back |
| Fee, buy | 3.00% | immutable constant, no setter |
| Fee, sell | 3.00% | immutable constant, no setter |
| Holder share | 80.00% | of fee collected |
| Gold portion | 50.00% | of the holder share |
| Constituents | 10 | one bought per round, in fixed order |
| Round length | 8h | a floor, not a schedule |
| Eligibility floor | 0.01% | of supply, at the snapshot block |
| Buy cap per round | 0.25% | of the target pool's reserve, both legs |
| Addition delay | 12h | public before it takes effect |
| Removal delay | none | immediate, by design |
| Peer change delay | 2 days | gold contracts, public before it takes effect |
| LP lock | 365 days | from graduation, extendable only forwards |
| Total supply | 1,000,000,000 | fixed at deploy, no mint function |
Round length and the eligibility floor are the parameters expected to change. Every change is written on chain and visible before the round it applies to.
What it can't do
quantified, in the same type as everything else
Three percent in, three percent out, before the price does anything at all. This is built for holding and it is upfront about who it is bad for.
The fee is the only income. If volume goes to zero, rewards go to zero. That is the failure mode that finished every reflection token before this one, and no amount of design removes it.
They run on a single attention cycle. They can all fall in the same week, and gold can fall with them. Rotation spreads which name you get, not the risk.
Combined reachable depth across the ten is $844,996. One round can spend at most $403.87 on the deepest name and $5.67 on the thinnest, regardless of how much fee was collected. That protects the pools and it is also a hard ceiling on what a single round can deliver.
HERO's deepest reachable pool holds $4,536 of WETH-side depth, which caps a round at about $5.67 into it. It stays listed with the figure showing. The depth cap means a thin pool receives a thin buy rather than a distorting one, and if the pool grows the cap grows with it, with no action from us.
HERO took this slot from BURR on 2026-08-27. BURR's reachable depth was $1,434, a twentieth of the next thinnest name, and it sat on the most complex of the three venue shapes. HERO is three times deeper and trades on Uniswap V2 against the same factory the index already buys ABSTER through. That is an improvement to the weakest slot rather than a fix for it: HERO is still six times shallower than the name above it, and BURR had more daily trades. The figure is published for exactly that reason.
Physical PAXG redemption needs 430 PAXG and a $15,000 fee. You receive wrapped gold you can hold, sell, or bridge back for the underlying PAXG. You are not getting bullion posted to you.
Risks
what an owner key can still do
None. The bridge that holds gold carries a hard cap on locked value, so the worst case is a number chosen in advance rather than everything. That cap rises only when review coverage justifies it, never in response to demand.
The Distributor and the EpochEngine are deployed on Abstract mainnet. The engine has bought real tokens with real ETH on this chain, PENGU through a Uniswap V3 pool and ABSTER through a V2 pair, on the deployment replaced on 2026-09-10. The engine running today is byte-identical to the one that did that; the Distributor is not, because it gained the snapshot-block commitment. Neither has run a round at its current address, and the counter reads zero to say so. The gold rail is on mainnet too and has now run both ways with real metal: 0.0026 oz of PAXG locked on Ethereum, wGOLD minted on Abstract over LayerZero, then burned and the PAXG released again. That was a proving crossing at proving size and it was redeemed in full, so the vault holds nothing today. Until gold is locked and left there, the gold half of every payout is a mechanism that works rather than a balance that exists, and this page will say so.
At graduation the pool position is minted straight into a LiquidityLock with a dated unlock, and the curve has no path to it afterwards. The owner of that lock can push the date further out and can withdraw once it passes, and can do nothing else: the recovery function refuses the locked token at every point in time, so there is no early exit wearing a friendlier name. Before this, the LP went to the deployer unlocked in the same transaction that made the pool tradeable, which on chain looked identical to a launch built to pull.
A dated lock rather than a burn is a deliberate trade. Burning is the stronger promise and it is what template launchpads do, but A10 is unaudited, and burnt liquidity is stranded if a defect ever forces a migration. The recipient is fixed in the curve's constructor either way, so which one was chosen is readable from the deployed contract rather than taken on trust.
Whoever calls graduate() is structurally guaranteed to be the first and
only seller into a pool nobody else has been able to touch, because the pair is sealed
until that moment and the curve stops taking buys once the target is hit. Modelled on
these parameters, an early buyer entering 2.70 ETH could take 6.18 ETH straight back
out in that same transaction and leave the pool at a fraction of the price it opened
at, in the block it was created, with no opportunity for anyone to react.
So for four minutes after graduation, the total that can be sold into the pool is released gradually rather than all at once: nothing in the first block, rising in a straight line to unrestricted at four minutes. Buying is never restricted. The limit is one shared counter across everybody rather than a per-wallet cap, because a per-wallet cap costs nothing to defeat, you simply split the bag across a hundred fresh addresses.
What this does not do. It does not stop anyone selling, and it does not reduce what a determined seller can eventually take out: the pool maths are path-independent, so the same total leaves whether it goes in one transaction or nine hundred. What it removes is the ability to do it atomically and invisibly. It buys roughly nine hundred blocks in which other people can trade, and it makes a large exit something you can watch happen instead of something you read about afterwards.
The four minutes is a constant in the token contract with no setter, so it cannot be extended, shortened, or re-armed by us or anyone else. It applies once, at graduation, and then never again for the life of the token.
A Uniswap pair is permissionless to create and permissionless to send tokens to, which is normally the weak point of launching this way: whoever puts something in the pool first decides its price, and a version of that attack costs a stranger nothing but gas and ends the launch outright.
So the pair is created when the curve opens, before a single A10 exists anywhere else, and sealed. While the seal is on, no A10 can enter or leave that pool except from the curve itself. Nobody can donate to it, mint liquidity in it, or trade against it, because all three are A10 transfers touching a sealed address. The seal lifts in the same transaction that funds the pool and switches the fee on.
Graduation also deposits by minting on the pair directly rather than routing through
addLiquidityETH. The router reads the pool's existing reserves and
refuses when one side is empty, so a single wei of WETH, the one asset we cannot
seal, was enough to block graduation on its own. Minting directly reads what we
deposited instead, so a donation is absorbed into the pool rather than deciding its
price, and the donor simply loses it.
Additions wait 12 hours in public and removals are immediate, but the set is not fixed and the curator is a key. This is a curated index with a named curator, not a trustless one.
Peer configuration on both gold contracts now waits 48 hours in public, so the largest trust assumption in the system has a window attached to it rather than being instant. It is still a single key: the delay buys you time to leave, it does not stop the change. A multisig on top is the next step and is not done.
Every contract uses two-step ownership: a transfer names a successor and the successor must accept before anything moves, so a mistyped address costs nothing. LayerZero also keeps a separate delegate role for endpoint configuration that an ownership transfer does not move, so a complete handover is two actions.
This is not investment advice and there is no promise of return. The mechanism is described here precisely so you can decide for yourself.
A10 · 2026 · v1.0 · figures read from chain 2026-09-10
