intents machine
intents machine
value·price·light·updated

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

LIGHT
fills since last vend
COILS LIT
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 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.

The turn

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:

Δθ_i = 360 · sP_i(1.1)

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.

COILASSETPITCHTURNS PER $10KVENDS PER $100K
1BTC$25040.00400
2ZEC$40025.00250
3XMR$65015.38153
4ETH$1,00010.00100
5SOL$1,6006.2562
6NEAR$2,5004.0040
7BTC$4,0002.5025
8ZEC$6,5001.5415
9XMR$10,0001.0010
10ETH$16,0000.636
11SOL$25,0000.404
12NEAR$40,0000.252

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.

$0$5K$10K$15K$20K090180270360rotation, degreesturn · vend
fig. 1 · Rotation of coil 1 (pitch $250, blue) and coil 6 (pitch $2,500, cream) against cumulative curve volume. Every time a trace reaches 360 that coil vends and the trace drops to its remainder. Coil 1 vends eighty times in this window, coil 6 eight times.
c1$250c2$400c3$650c4$1,000c5$1,600c6$2,500c7$4,000c8$6,500c9$10,000c10$16,000c11$25,000c12$40,000$250$1K$10K$40K
fig. 2 · The twelve pitches on a log scale. Adjacent coils differ by a factor of about 1.6, so the ladder covers two orders of magnitude without a gap large enough for any market to stall every coil at once.

The shelf

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.

packet_i = f · B_i(2.1)
B_i′ = B_i · (1 − f)(2.2)
B_i(n) = B_i(0) · (1 − f)^n(2.3)

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.

VENDSBALANCE LEFTPACKET SIZE
0100.0%4.17%
195.8%3.99%
291.8%3.83%
388.0%3.67%
677.5%3.23%
1260.0%2.50%
2436.0%1.50%
4813.0%0.54%
BTCZECXMRETHSOLNEAR
fig. 3 · The six shelf assets and every route a fill can take between them. A fill draws one route once. The balance under each asset is the live sum of its coils, and stays empty until the machine's accounts exist.
ASSETCOILSBALANCEVALUESHARESTATE
BTC1, 7
ZEC2, 8
XMR3, 9
ETH4, 10
SOL5, 11
NEAR6, 12

The solver

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.

σ_i = σ0 + n_i · δ(3.1)
spread_usd = out_quoted − out_paid(3.2)

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.

NOTCHSPREADON A $10K FILL
00.30%$30.00
10.35%$35.00
20.40%$40.00
30.45%$45.00
40.50%$50.00
50.55%$55.00
60.60%$60.00
70.65%$65.00
80.70%$70.00
intentsigned requestverifierholds both legsquotessolvers postmachinequotes if litsettlereleased togetherc1c2c3c4c5c6c7c8c9c10c11c12spread on last fillfills won
fig. 4 · The five steps of a filled intent and the coil row the machine quotes from. The arrows draw once per fill the machine wins.

The vend

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.

age(p) = vends since p entered the tray, stale ⇔ age(p) ≥ N(5.1)

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.

traydispensedstalenext vend, transfer succeedsage reaches 6burn
fig. 5 · A packet leaves the tray one of two ways. The counts fill from the machine's packet records.

Jam and kick

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:

θ_i′ = max(0, θ_i − k)(4.1)

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.

sell > last vend−30°
fig. 6 · A coil at 200 degrees takes a kick and lands at 170. The pointer eases to its new angle; nothing else about the coil changes.
TRIGGERCONDITIONEFFECT
buyany sizeadvances every coil by s / P_i
buycompletes a turnvends that coil, buyer is recipient
buylarger than a jammed coil's last vendclears the jam
sellany sizeadvances every coil by s / P_i
selllarger than a coil's last vendkicks that coil 30 degrees
fillrefills a dark coilrelights it

The light

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.

last fill
last vend

The value

v = price · supply(6.1)

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.

NOW24H LOW24H HIGH24H CHANGECANDLEScenter is twenty four hours agoouter tip is nowthickness is valuecolor is direction
fig. 7 · Twenty four hours of value on a spiral. Each segment is five minutes, thickness is value within the day's range, color is direction against the previous segment. The tip grows every second from the live price.

What nobody can do

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.

Recent vends

COILASSETPACKETBOUGHTRECIPIENTTRIGGERVENDWHEN