intents machine
intents machine
value — · price — · turn rate — · updated —

A vending machine that fills swaps on Solana. It earns by solving intents, holds what it is paid in on twelve coils, and every trade on this coin turns the coils. A completed turn sells one packet and buys the coin. There is no key, no clock, and no operator.

Δθ = 360 · s / P  ·  every trade turns every coil
Light
—
fills since last vend
Coils lit
—
of twelve
Shelf
—
per circulating token
Burned
—
stale packets

Abstract

A coin's price is a number other people agree on and can stop agreeing on in a block. This paper describes a machine attached to one coin that holds something else: a shelf of real assets, earned by doing work. The machine is registered as a solver on Solana, where people publish what they want swapped and solvers compete to fill it. When this machine wins a fill, it keeps the spread, and the spread arrives as whatever asset it was paid in.

What it does with that balance is the part worth reading. The shelf is divided across twelve coils. Coils do not turn on a clock and nobody can turn them by hand. The only thing that moves them is trade on the coin itself. Every trade of size s advances every coil by 360 · s / P, where P is that coil's pitch. A small trade nudges the tight coils and barely registers on the wide ones. A large trade turns several at once.

When a coil completes a full turn it vends. It sells a fixed fraction of its own balance, buys the coin with the proceeds, and the coin it bought becomes a packet that goes to the wallet whose trade finished the turn. The machine does not decide who gets it. Arithmetic does.

The turn

Twelve coils, twelve pitches, from $250 at the tight end to $40,000 at the wide end, spaced roughly 1.6× apart. Pitch is how much volume one full turn costs. A $250 coil completes forty turns on $10,000 of trade; a $40,000 coil completes a quarter of one.

This is the whole reason the machine has twelve coils instead of one. A single pitch would either vend constantly in a hot market and never in a quiet one, or the reverse. Spread across an order of magnitude and a half, something is always close to the top of its turn and something is always a long way from it.

Δθ = 360 · s / Ps = trade size in dollars  ·  P = coil pitch  ·  θ accumulates until it passes 360

A trade turns every coil at once. It is not routed. It is not assigned. The same dollar of volume advances all twelve, each by its own fraction.

The shelf

Six assets, two coils each. The machine holds what it was paid in and does not rebalance, rotate or take a view. If fills arrive in one asset for a week, the shelf tilts that way for a week.

A vend sells a packet equal to f × balance, with f fixed at one twenty-fourth — about 4.17%. Every vend leaves the coil with (1 − f) of what it had, so a coil that vends n times without being refilled holds (1 − f)n of where it started. It approaches zero and never reaches it. The only way a coil empties is if it is vending faster than fills are refilling it, which is a statement about the market, not about the machine.

packet = f · B  ,  B(n) = B(0) · (1 − f)nf = 1/24 ≈ 4.1667%

The solver

The machine only quotes requests whose out-asset sits on a lit coil, and it never quotes more than that coil is holding. It cannot promise what it does not have. Its spread starts at 0.30% and widens by 0.05% each time a coil sells out, which is the machine getting more expensive exactly when it is running thin.

σ = σ₀ + n · δσ₀ = 0.30%  ·  δ = 0.05% per notch  ·  n = times that coil has sold out

The vend

A completed turn opens an intent: sell one packet of the coil's asset for SOL, use the SOL to buy the coin, and hold the coin as the packet. The packet sitting in the tray transfers to its recipient on the next vend, which means the tray is never empty while the machine is working and never pays out before the next turn is done.

A packet goes stale once six later vends have happened. Stale packets burn on the vend that makes them stale, together with whatever dust has collected. Nobody claims them and nobody can.

Jam and kick

A vend that stays unfilled past the confirmation depth of its source jams the coil. The coil stops advancing until a curve buy larger than the jammed vend clears it — the market unjams the machine, not an operator.

A sell larger than a coil's last vend kicks that coil back by 30°, floored at zero. Volume that leaves does not count the same as volume that arrives.

The light

The light is on while the machine has won a fill since its last vend. It does nothing else. It changes no parameter and gates no behaviour. It is there so you can tell, at a glance, whether the thing is working or just sitting there.

Coils

Twelve pitches

Pitch is the dollar volume one full turn costs. The three right-hand columns are read from the coin's live 24-hour volume and the pitch — they are what that volume would turn, not a reading of where each coil is standing right now.

The turn columns need live volume on the pair. Until there is a pair to read, they stay as dashes.

Shelf

What it is holding

Six assets, two coils each. Prices are read live from the market for each mint. Balances are read from the machine's accounts — anything not returned stays a dash rather than a guess.

Shelf value

—
sum of balance × price

Per circulating token

—
shelf ÷ supply

Against the coin

—
shelf ÷ market value

Solver

The spread ladder

The machine quotes out of a lit coil and never beyond its balance. Each time a coil sells out, that coil's notch goes up one and its spread widens by δ.

Quote it

Enter a notional and a notch and this works out what the machine quotes against the live price of the out-asset, and what it keeps.

Tray

Packets

One packet sits in the tray at a time. It transfers on the next vend. Six vends later, whatever is still unclaimed is stale and burns.

In the tray

—
waiting on the next vend

Stale

—
aged past six vends

Burned

—
packets plus dust

Decay of a coil

What one coil holds after n vends with nothing refilling it, as a share of where it started. The curve never touches zero.

Activity

The market, live

Read from the pair every forty-five seconds. This is what is turning the coils.

24h volume
—
dollars through the curve
Trades 24h
—
buys / sells
Mean trade
—
volume ÷ trades
Liquidity
—
both sides of the pool

Price, as this page has read it

the line starts when the first reading lands

Recent vends

Value

v = price × supply

Price comes from the pair. Supply comes from the mint account. Neither is typed in by anyone.

Price
—
live from the pair
Supply
—
from the mint account
Value
—
price × supply
Decimals
—
mint precision
mint—copy

Shelf against value

The shelf is the part of the coin that is not a number other people agree on. This is how much of the market value it currently covers.

Shelf

—
sum of balance × price

Coverage

—
shelf ÷ value

Chains

Where the shelf lives

The machine settles on Solana and is paid in assets that arrive there. Each row is the mint it actually holds, and the price column is read against that mint.

Every one of these is a live mint on Solana. The machine never holds a promise of an asset on another chain — it holds the asset at the address below, and that address is what the price is read against.

Model

Turn a trade

Put a trade size in and this is exactly what it does to all twelve coils. Nothing is rounded in your favour and nothing is hidden.

How much volume to a vend

Volume needed for one more turn on each coil from the starting angle above, and what that is at the coin's live 24-hour rate.

Program

What nobody can do

Nobody can add to the shelf. Nobody can take from it. Nobody can change a pitch, change f, change the spread, pause a coil, redirect a packet or claim one on someone else's behalf. There is no admin instruction because there is no admin.

  • The program carries no upgrade authority. The bytecode that is there is the bytecode that stays there.
  • The accounts that hold the shelf are owned by the program, not by a wallet. There is no signer that can move them.
  • Parameters are constants compiled into the program, not fields in an account somebody can write to.
  • Packets route to the wallet that completed the turn, picked by arithmetic over the trade that did it.

That is the entire security model, and it is the reason the machine is boring to look at and hard to argue with. It has no privileged user. It does not have one that is renounced, not one held in a multisig, not one that is time-locked. It never had one.

Addresses

program—copy
shelf—copy
mint—copy
An address that is blank here has not been published yet. Nothing is put on this page before it exists.

Constants