
A vending machine that fills swaps. It earns by solving NEAR 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.
s / P · 360 · every trade turns every coil
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 other chains' assets, earned by doing work. The machine is registered as a solver on NEAR Intents, where people publish signed requests to end up with one asset on one chain starting from another asset on another chain, and solvers compete to fulfil them. The machine quotes a fixed spread on any request whose out leg it holds, and when it wins, the in leg lands on one of its twelve coils and the out leg leaves another. Trades on this coin's curve are the only thing that turns the coils. Each trade advances every coil by its dollar size over that coil's pitch, in turns, and a coil that completes a turn vends: it sells one twenty fourth of its balance through an intent of its own, buys this coin with the proceeds, and hands the packet to the wallet whose trade finished the turn. Packets nobody can receive go stale after six further vends and burn. Nothing runs on a clock. We give the parameters, the turn arithmetic, the shelf dynamics, the quoting rule, the dispense and burn rule, the jam and kick rule, and the invariants the program cannot break.
Every coin on a curve throws off trades. This machine listens to all of them. A trade of s dollars, buy or sell, advances every coil:
Twelve coils, twelve pitches. The pitches are fixed at deploy and spaced so that a tight coil completes a turn on a few hundred dollars of volume and a loose coil needs tens of thousands. In any market some coils are turning fast and some barely at all, which is what keeps the machine's buying continuous rather than lumpy.
| COIL | ASSET | PITCH | TURNS PER $10K | VENDS PER $100K |
|---|---|---|---|---|
| 1 | BTC | $250 | 40.00 | 400 |
| 2 | ZEC | $400 | 25.00 | 250 |
| 3 | XMR | $650 | 15.38 | 153 |
| 4 | ETH | $1,000 | 10.00 | 100 |
| 5 | SOL | $1,600 | 6.25 | 62 |
| 6 | NEAR | $2,500 | 4.00 | 40 |
| 7 | BTC | $4,000 | 2.50 | 25 |
| 8 | ZEC | $6,500 | 1.54 | 15 |
| 9 | XMR | $10,000 | 1.00 | 10 |
| 10 | ETH | $16,000 | 0.63 | 6 |
| 11 | SOL | $25,000 | 0.40 | 4 |
| 12 | NEAR | $40,000 | 0.25 | 2 |
Read the last column. One hundred thousand dollars of curve volume fires the tightest coil four hundred times and the loosest coil twice. The machine's buy pressure is spread across twelve rates at once.
The machine holds six assets. Each coil carries one, and the assignment is fixed at deploy: coils 1 and 7 hold Bitcoin, 2 and 8 Zcash, 3 and 9 Monero, 4 and 10 Ethereum, 5 and 11 SOL, 6 and 12 NEAR. A coil's balance is the real balance of that asset in the machine's intents account for that coil. Balances change in two ways only. A solver fill moves the in asset onto one coil and the out asset off another. A vend sells a packet from the coil that turned.
A coil never empties by vending alone, because each vend takes a fixed fraction of what is left. It empties when fills drain it faster than fills refill it, which happens when the network keeps asking for the asset it holds and nobody is paying in that asset. An empty coil goes dark.
| VENDS | BALANCE LEFT | PACKET SIZE |
|---|---|---|
| 0 | 100.0% | 4.17% |
| 1 | 95.8% | 3.99% |
| 2 | 91.8% | 3.83% |
| 3 | 88.0% | 3.67% |
| 6 | 77.5% | 3.23% |
| 12 | 60.0% | 2.50% |
| 24 | 36.0% | 1.50% |
| 48 | 13.0% | 0.54% |
| ASSET | COILS | BALANCE | VALUE | SHARE | STATE |
|---|---|---|---|---|---|
| BTC | 1, 7 | ||||
| ZEC | 2, 8 | ||||
| XMR | 3, 9 | ||||
| ETH | 4, 10 | ||||
| SOL | 5, 11 | ||||
| NEAR | 6, 12 |
A NEAR intent is a signed request for an outcome. It names the asset and chain the requester starts with and the asset and chain they want to end up on, and nothing about the route. Solvers read open intents and post quotes. The intents verifier contract on NEAR holds both legs and releases them together against the winning quote. The requester never learns who filled them. Most solvers are market making firms. This machine is a solver with no firm behind it, and its quoting rule is three lines:
· it quotes a request only when the out asset sits on a lit coil,
· it never quotes a size larger than that coil's balance,
· it prices at the verifier's reference rate plus the coil's spread.
The spread starts at three tenths of a percent on every coil and rises by five hundredths of a percent each time that coil sells out. Coils the network drains often become dearer to draw from. There is no other pricing input, no model, and no discretion.
| NOTCH | SPREAD | ON A $10K FILL |
|---|---|---|
| 0 | 0.30% | $30.00 |
| 1 | 0.35% | $35.00 |
| 2 | 0.40% | $40.00 |
| 3 | 0.45% | $45.00 |
| 4 | 0.50% | $50.00 |
| 5 | 0.55% | $55.00 |
| 6 | 0.60% | $60.00 |
| 7 | 0.65% | $65.00 |
| 8 | 0.70% | $70.00 |
When a coil's rotation crosses 360 it vends and keeps the remainder. The vend is itself an intent: the machine publishes a request to end up with SOL on Solana starting from one packet of the coil's asset, and other solvers fill it. The SOL is spent buying this coin on the curve from the machine's Solana account. The bought coin is the packet and it enters the tray.
The recipient of a packet is the wallet whose curve trade completed the turn. On the next vend, from any coil, the previous packet is transferred to its recipient. The recipient does nothing. There is no claim, no registration, and no action on this site.
A packet that is still in the tray after six later vends is stale. Stale packets burn on the vend that made them stale, together with the dust the tray holds at that moment. Dust is rounding from intents settlement plus the positive spread from fills, kept in SOL, converted on burn into this coin by a curve buy and burned in the same transaction. The machine keeps no change.
A vend's intent can sit unfilled. If it sits past the confirmation depth of the asset's source chain, which is a block count and not a time, the coil is jammed and stops advancing. It clears on the next curve buy larger than that coil's last vend. Separately, a sell larger than a coil's last vend kicks the coil back:
Thirty degrees is one twelfth of a turn. A kick never puts a coil below zero and never cancels a vend that already fired. Dumps slow the machine down. They do not stop it, because every sell also advances every coil like a buy does. Volume is volume.
| TRIGGER | CONDITION | EFFECT |
|---|---|---|
| buy | any size | advances every coil by s / P_i |
| buy | completes a turn | vends that coil, buyer is recipient |
| buy | larger than a jammed coil's last vend | clears the jam |
| sell | any size | advances every coil by s / P_i |
| sell | larger than a coil's last vend | kicks that coil 30 degrees |
| fill | refills a dark coil | relights it |
The light is on while the machine has won at least one fill since its last vend, and off otherwise. It changes nothing. It is the honest readout of whether the intents network is currently routing through the machine. If the light stays off the machine is not buying this coin, and nothing on this site will suggest otherwise.
The value is the live Birdeye price of this coin times its circulating supply. It refreshes every second. The figure below is the last twenty four hours of it, read from the center outward.
Nobody can add to the shelf except by being filled. Nobody can remove from the shelf. Nobody can change a pitch, the packet fraction, a spread, a depth, or an asset assignment. Nobody can pause the machine, restart it, direct a packet, or claim one. The Solana program has no upgrade authority. The NEAR contract has no owner method. The machine's Solana account is derived by NEAR chain signatures from the machine's NEAR account, so no private key for it exists on any machine, and the NEAR contract only requests signatures for the transactions the program emits.
| COIL | ASSET | PACKET | BOUGHT | RECIPIENT | TRIGGER | VEND | WHEN |
|---|---|---|---|---|---|---|---|