Ring (RING), 18 decimals, launched through Programmable's router in 0xd96405e9…03d7fc at 02:47:11 UTC on 18 Oct 2026. The launch stamped six components: the token, a Uniswap v4 hook and four more. This record answers one question set by Claus: what reduced RING's supply below 1 billion, and can the token, hook or any of the four extra components mint, change fees or remove launch liquidity?
Every number below was read at one block and can be re-run: the evidence file lists each call and log query with its block bounds and raw result. Verified source is not an audit, and nothing here is a guarantee of safe trading.
0x44ca84cf59183F389Aa20848EE8Ef5c076Bb3cb70xd96405e94a94b9ed9160ff11f457599f5b6c7efc3594fccb77633a7ebf03d7fc0x2ebbe85367bb17a629b22d63cecd08d6249a85099545a8998259b20da006db41), 02:47:11 UTC, status success, sent by the project's agent wallet 0x7d2bcb2efdf831173bdd001fcca5e284e1a4fc09 to Programmable's router ProgrammableLaunchStampRouter24hV10x1027852d3bd5f64c8c2666d1681906f47a882733e6525c1e65007d2e4d5c98f9, 10:05:47 UTC on 18 Oct 20260x44ca84cf59183F389Aa20848EE8Ef5c076Bb3cb7 · stamped kind 1 · verified source, Solidity 0.8.26 · not a proxy0x628133845e244Bbf43c6FAd3ebc596Ebc5D728cc · stamped kind 2 · verified source, Solidity 0.8.26 · not a proxy0xE47bE56DAC5860e4F0F3114d2F7CFd84f0CB2B3C · stamped kind 0 · verified source, Solidity 0.8.26 · not a proxy0xEe09B2Fa7F721fD41a992de41CB71fe349D3e7ad · stamped kind 0 · verified source, Solidity 0.8.26 · not a proxy0x9FC5252eb660cDdDd89a85da5a5b099f5E1fF564 · stamped kind 0 · verified source, Solidity 0.8.26 · not a proxy0x04293558E1905EAaf8f67357668D0b2674340493 · stamped kind 0 · verified source, Solidity 0.8.26 · not a proxy"Verified" means Blockscout holds matching source for the deployed code. "Not a proxy": Blockscout lists no implementation for any of the six, both EIP-1967 slots (implementation and admin) read zero at the observation block, and none of the six sources has an upgrade function. Every conclusion below rests on that deployed code, not on a later implementation.
totalSupply() at block 26,218,737)Two transfers to the zero address exist from the launch block to the observation block, and one mint. Both burns are accounted for:
0xd96405e9…03d7fc. The initializer turns the whole supply into one locked position and burns whatever the pool did not take: if (supply > owed) burn(supply - owed). Who could authorize it: nobody chose it. It runs once, inside initialize, which only Programmable's graph deployer 0xb012…a887 can call, and the initializer can never run again.SomeoneTreasury in 0x8765ecad…663884, block 26,217,838, 07:05:35 UTC. Who could authorize it: only the project's agent, through SomeoneTreasury.execute (onlyAgent, blocked while paused). The agent wallet sent it, and the treasury logged the reason: "first small burn: 100,000 RING of the ~2.14M the treasury holds (~4.7%), done in steps rather than all at once".No automatic burn exists. The token has no fee-on-transfer, no burn schedule and no code that burns by itself. "Done in steps" is the agent's stated intention; any further burn would be another separate, discretionary agent transaction, visible onchain. Any holder may burn their own RING with burn(amount); nobody can burn anyone else's.
The token's only mint is _mint(initializer_, supply_) in its constructor. It has no mint function, no owner (owner() reverts), no proxy and no upgrade path. None of the other five components can create RING. One mint event exists, in the launch transaction.
Normal fees, on every trade: the pool's LP fee is 0, fixed. The hook takes a project fee and a 0.30% platform fee on the ETH side of each trade. The project fee started at 2.70% and the agent can set it from 0 to 4.70% with setProjectFee. Project plus platform can never exceed MAX_TOTAL_PPM = 5%, a constant no role can change. At the observation block lawParams() reads 0 / 27,000 / 3,000 / 50,000 ppm (LP, project, platform, ceiling), and no ProjectFeeSet event exists since launch.
The opening fee was separate and is over: for the first 30 seconds of trading a buy paid up to 99% (99% at second 0, falling linearly to the normal fee at second 30; the developer was exempt). It is fixed in code, nobody can set it, and it ended at 02:47:41 UTC. It is not part of the 5% ceiling, which applies to normal trading after second 30.
The initializer put the entire supply into one RING-only position (ticks −887,220 to 185,220, liquidity 95,104,242,272,170,726,897,300) and holds it itself. Its only pool action adds that position once; it has no function that removes liquidity, no owner and no way to run again. The hook also blocked anyone else from adding liquidity during the first 300 seconds. After that, anyone may add their own positions to the pool and remove them later, as on any Uniswap v4 pool; those later positions are theirs and are separate from the locked launch position.
None of the six is a proxy or has an upgrade function. The hook's bound components (module and both vaults) are set once by the initializer and cannot be changed (AlreadyBound). The only changeable code path is the hook's experiment slot, below.
Two roles in SomeoneMind control everything that can change:
0x7d2bcb2efdf831173bdd001fcca5e284e1a4fc09, an ordinary wallet (no contract code):
setProjectFee);setExperiment);SomeoneSplitter divides fee income. For trading income it is now 5% to the splitter's dev address 0x8e4f…d76a, 25% to holder rewards, 70% to the treasury, set by the agent at block 26,217,456;execute), which is how burn 2 was done. The treasury holds 2,040,284.18 RING at the observation block, so any further burn, sale or transfer of those tokens is the agent's decision.0xed54266b9abeb450addb9859eedc24fd64f7d8aa, an ordinary wallet: pauses or unpauses experiments, rolls the experiment slot back to any earlier version (including "none"), pauses the agent's treasury, splitter and deploy actions, and can replace the agent or itself. No AgentRotated, GuardianChanged or Paused event exists since launch.The experiment slot. If the agent sets it, the hook calls that contract on every swap with at most 300,000 gas. Two different things then apply. A failing experiment call is ignored: its result is dropped and the swap carries on. A separate check after the call can revert the swap: if the fee claims held by the hook or either vault changed during the call, the hook reverts with LawBroken. It has never been used: experiment() is zero, versionCount() is 1 (only "no experiment"), and no ExperimentSet event exists. If it is switched on, the code it points to needs its own review.
0xE47bE56DAC5860e4F0F3114d2F7CFd84f0CB2B3C. Only the graph deployer may call initialize, once. It binds the other components to the hook, refuses an opening valuation under $15,000 using Chainlink's ETH/USD feed (RING opened at $21,740), creates the pool, locks the whole supply as liquidity, burns the rounding remainder, starts trading and makes the developer's initial buy. initialized() is true and every entry point is spent.
0xEe09B2Fa7F721fD41a992de41CB71fe349D3e7ad. For the first 300 seconds, buys must come through Uniswap's Universal Router 0xd92A…446C or the initializer, and each buyer may receive at most 20,000,000 RING (2% of supply), enforced again by the token on every transfer. The developer (the treasury) was exempt from the opening fee only, not the cap. Only the hook can record buys. No admin, no settings.
0x9FC5252eb660cDdDd89a85da5a5b099f5E1fF564. Received the opening fee. Anyone can call flush(), which pays it to Programmable's fixed platform treasury 0xD885…79da. Recorded: 0.0384 ETH; owed now: 0.
0x04293558E1905EAaf8f67357668D0b2674340493. Receives the project fee and the 0.30% platform fee as Uniswap claims. Anyone can flush them: the project share goes to the splitter, the platform share to the same fixed platform treasury. Recorded at the observation block: 3.794 ETH project fees, 0.4216 ETH platform fees (0.00044 ETH platform not yet flushed). Derived, not read: at 2.70% and 0.30% both totals imply about 140.5 ETH traded on the ETH side since launch.
Reproduce it: the evidence file (machine-readable JSON) holds every eth_call used here, each with target, calldata, block 26,218,737 and raw result; the EIP-1967 slot reads; and each eth_getLogs query (address, topics, blocks 26,216,554 to 26,218,737) with its count and transactions: RING transfers to and from the zero address, the hook's ProjectFeeSet, ExperimentSet, ExperimentPaused, RolledBack and ComponentsBound, the splitter's SplitSet, SomeoneMind's AgentRotated, GuardianChanged and Paused, and the treasury's Executed. Source: the Blockscout "code" link on each address above.
Not covered, explicitly: the code behind any future experiment; the payout logic of the holder-rewards contract behind the splitter; the identity of the people behind the agent and guardian wallets; market price, depth and trading outcomes. The 140.5 ETH volume figure is derived, not read. Verified source is not an audit or a guarantee of safe trading. Not financial advice.