M MACHINES docs
Core concepts / Mechanics

How the MACHINES protocol works

Every 3.5 days, holders vote on a stock. The treasury buys it and puts it inside the Machines. This page describes each step, what it costs, and who is allowed to trigger it.

What this is

A Machine is an NFT that owns a wallet. Anything sent to that wallet belongs to the Machine rather than to whoever is holding it today, so when a Machine is sold, its contents go with it. The protocol spends its income on tokenized stock and puts that stock in those wallets.

The protocol token is written $PRINTER throughout these docs. It has one job: it is what you burn to switch a Machine on, and it is what the market prices. There is no staking contract, no lockup, and no separate governance token.

Check the address, not the name

$PRINTER is the real name and symbol, live on Robinhood Chain. A name is not proof of anything: anyone can deploy a token calling itself the same thing. The contract addresses further down this page are read straight from the deployment record, and the same addresses are readable from the mine contract on chain. Those are the only two places worth trusting. If an address does not match one of them, it is somebody else's token.

The short version

Burn $PRINTER to activate a Machine. Active Machines earn $PRINTER and get a vote. The vote picks a stock. The treasury buys it and sends it to the Machines. Every step after the vote is on chain.

The loop

One epoch is 3.5 days. The same five steps run every epoch, in order.

  1. Open the ballot ballot manager The sixteen desks, in the order they were sealed. There is no shortlist to choose, which is the point: position on the ballot is which Machines get paid, not a preference. A desk only qualifies if its stock has a live price feed and is routable.
  2. Vote holders 48 hours. A Machine votes what it weighs, and votes once.
  3. Finalize permissionless The tally is counted on chain and the epoch’s money is divided across the desks in proportion to what they drew. Nobody gains by being the caller, and nothing is lost if the team is asleep.
  4. Buy permissionless, bounded The treasury buys each desk’s stock in chunks, out of that desk’s own budget. The price floor comes from the oracle, not from the caller.
  5. Distribute permissionless The stock is split across every Machine that was earning for that epoch, by weight and with double out of its own desk’s slice, and pushed into each Machine’s own wallet.
If nobody votes

An epoch with zero votes cannot be finalized, so nothing is bought and the treasury rolls forward to the next epoch. Nothing is lost and nothing is stuck.

Network

Everything runs on Robinhood Chain. The Machines, the token, the stock and the pool are all on the same chain, so no step in the loop crosses a bridge.

FieldMainnetTestnet
Chain ID4663 (0x1237)46630 (0xb626)
EVM versionCancunCancun
Account standardERC-6551, registry 0x000000006551c19487814612e58FE06813775758
VenueUniswap V4, PoolManager 0x8366a39CC670B4001A1121B8F6A443A643e40951
Multicall30xcA11bde05977b3631167028862bE2a173976CA11

Machines

Ten thousand Machines exist already. Each one has a deterministic ERC-6551 account derived from its token id, which means the address is known before the account is deployed and tokens can be sent to it either way.

A Machine is in one of three states:

StateMeaning
DormantNo ink. Earns nothing, cannot vote, receives no stock.
LitInked this epoch. Starts earning next epoch.
EarningActive for a full epoch. Earns, votes, and is counted for the drop.

Everything a Machine has earned belongs to the Machine, not to the wallet holding it. Sell a Machine and the buyer gets its weight, its desk, and every share of stock already inside it.

Ink

Ink is what you burn to switch a Machine on. The tokens are destroyed, nobody receives them, and it never has to be paid again: a Machine switched on stays on for as long as the protocol exists.

Switching one on costs 5,000 $PRINTER, which is exactly what every Machine is airdropped. Of that, 4,250 is burned as ink and 750 is the operating charge, 15% of what you hand over.

The charge is taken out of the payment rather than added on top, and that distinction is the whole launch. Adding 15% to a 5,000 activation would cost 5,750 against an airdrop of 5,000, so all ten thousand holders would arrive short and have to buy tokens before switching on — which is precisely the scramble the airdrop exists to prevent. Inclusive, one airdrop buys one activation exactly.

Burning more raises the Machine’s weight, permanently, on a curve with no top:

weight multiplier = √( ink burned ÷ 4,250 )

Four times the ink doubles your weight. There is no final rung, and that is deliberate. A ladder with a top rung would give the token one job for a few months: everybody activates, the top is reached, and demand stops dead with the protocol still running. Because every payout is a share of a fixed pot, weight is relative, so when somebody else burns your slice thins and there is always a reason to burn again. It cannot drain the supply either, because the same square root works against you: lifting the whole fleet to 2x would cost 200,000,000, which is all of it.

The ceiling

Nobody can climb past what the whole fleet has collectively burned. The curve is unchanged; there is a lid on it that rises as the protocol is used.

CeilingOpens atSupply destroyed
1xalways
2x25,000,000 burned12.5%
3x60,000,00030%
4x100,000,00050%
no lid150,000,00075%

The reason is the opening price. The pool opens at a valuation where a few thousand dollars buys tens of millions of tokens, and weight never decays, so without a lid one modest buyer could set the pecking order for all 10,000 Machines on the first afternoon and keep it forever. The lid makes the top of the ladder something the community reaches together.

Why it is gated on burning and not on valuation

The obvious gate is market cap, and it cannot be used. Market cap is price times supply, and the only price for $PRINTER is the pool you would be buying in, so it can be pushed for a single block with borrowed money. A manipulable gate in front of a permanent reward is worse than no gate at all.

Total ink burned cannot be faked. Every unit of it cost somebody real money, is already destroyed, and the number only goes up.

A burn that would climb past the current ceiling is refused, not quietly capped. Capping would take the tokens, destroy them and hand back nothing, which is a mistake nobody could undo and nobody was warned about. And the ceiling is read before your payment is counted, so a burn large enough to cross a gate cannot authorise itself.

ParameterValueWhy
To switch one on5,000 $PRINTER Fixed in tokens, not in dollars. No oracle to push around, and a supply schedule anybody can work out in advance.
DurationForeverIt does not expire and cannot be topped up late, because there is nothing to top up.
Burned100%Destroyed. Nobody receives it. Supply only ever falls.
WeightRarity × √(ink ÷ 4,250) The sealed rarity class multiplies whatever the ink earns.
Starts earningNext epoch A Machine cannot be paid for the epoch it was inked during, and cannot be inked mid-week to swing a ballot it can already see.
Total ink burned into a MachineIts multiplierCost of the next doubling
5,0001x15,000 more
20,0002x60,000 more
45,0003x135,000 more
80,0004x240,000 more
500,00010x1,500,000 more
Read this before modelling returns

Your return is not paid in $PRINTER and never will be. It is paid in tokenized stock, bought with the fee that people pay when they sell the token. So the yield tracks trading volume, not a schedule, and a quiet week pays little. That is the honest shape of it: this design cannot become insolvent, because it only ever hands out money that has already arrived, but it can be quiet.

Why there is no emission

Nothing mints $PRINTER. The entire supply exists after the deploy transaction, there is no schedule releasing more, and no function anywhere can make another one. The number only falls.

An earlier version of this protocol locked 800,000,000, 80% of supply, in the mine and paid it out on a decaying curve. It is worth saying plainly why that is gone, because it is the single most important decision here.

An emission is a promise to sell your own supply into your own floor on a published timetable, and it is heaviest exactly when the pool is thinnest. Worse, that schedule did not scale with participation: it released the same amount whether ten Machines were on or ten thousand, so at launch, with a few hundred switched on, it would have released more than the entire pool every month and handed it to a few hundred wallets. No floor survives that.

So the yield is not the token. Machines are paid in stock, and the money for it comes from people trading the token rather than from new supply. Sellers pay stayers.

Stock is pushed into each Machine’s own wallet as it is bought. There is nothing to claim, nothing sitting somewhere waiting to be remembered, and nothing that stays behind when a Machine is sold.

The vote

The ballot is open for 48 hours of each epoch and carries up to 32 tickers.

The tally is on chain. It is not a signature site with a multisig reporting the result, because the vote is the headline mechanic and should be the last thing running on trust.

What gets on the ballot

A stock qualifies only if all three hold:

  1. It has a live Chainlink feed, fresh enough for the treasury to accept.
  2. It was deployed by the issuer's own factory. This matters more than it sounds: searching the chain for Apple returns four tokens, one copying the real name character for character. Name and symbol are forgeable. The deployer is not.
  3. There is an honest route to buy it, priced within tolerance of the oracle.

The treasury

Once a ballot is finalized, the treasury buys for each desk that drew a vote, out of that desk's own budget. Anyone can trigger a buy and there is a small bounty for doing so, because a protocol that only works while a particular server is awake is a protocol with a single point of failure.

What the caller controls is timing and route. What the caller cannot touch is the price:

GuardEffect
Oracle price floor Minimum output is derived on chain from Chainlink feeds. A caller-supplied minimum is not a slippage guard, it is a request to be trusted.
Slippage capA fill more than the configured tolerance away from the oracle reverts. Hard capped at 5%.
ChunkingOne buy spends a bounded share of the treasury, so a single transaction cannot move the market or drain the balance.
PacingA minimum interval between chunks.
Router allowlistOnly approved venues. The caller cannot point the treasury at a contract of their own.
Feed freshnessA stale feed is refused rather than trusted.
BountyCapped at 1%, and set well below that.

Together these bound what a hostile or bribed caller can extract to a fraction of a percent of one chunk, and they do it without anybody needing to be trusted.

Distribution

When the epoch closes, the stock the treasury bought is handed to the distributor, which divides it across every Machine that was earning for that epoch and pushes it into each Machine’s ERC-6551 account.

Not evenly. A Machine takes a share proportional to its weight, and double out of the slice bought for its own desk. Eligibility and weight are read at the epoch the drop is for, not at the moment it settles, so a drop pushed a week late still pays what was actually earned and nobody can burn their way into a payout that has already happened.

Push, not claim. There is nothing to race for and nothing expires. Settlement runs in batches so ten thousand Machines clear in a manageable number of transactions, and it is idempotent: a batch can be retried or overlapped and nothing is ever paid twice.

Why it lands in the Machine and not in your wallet

The Machine is not a claim ticket. The stock is inside it. That is what makes a Machine worth something on the secondary market beyond the art.

The token

$PRINTER is live on Robinhood Chain. Every address below is readable from the mine contract on chain as well as from this page, and those are the only two places worth trusting for them. Anything offered anywhere else is not this token.

ContractAddress
Loading from the deployment record…

Fixed supply, minted once in the deploy transaction, and only ever destroyed. No mint function, no owner, no pause, no upgrade path, no blacklist.

AllocationShareAmountPurpose
Liquidity60%120,000,000The launch pool
Airdrop25%50,000,000Exactly 5,000 for each of the 10,000 Machines, which is exactly what switching one on costs
Operations10%20,000,000Keeper gas, hosting, building it
Founders5%10,000,000
Max supply200,000,000Falls from here, never rises

There is deliberately no transfer tax. A fee on transfer breaks Uniswap V3's swap callback, forces an exemption list covering every router and aggregator route where one missed route is a reverting swap, and makes the token something every scanner flags. The fee is collected by the venue instead.

The starting ink airdrop

Every Machine is sent its starting ink before trading opens, straight to its own wallet. This is an anti-sniping measure as much as a giveaway: holders who arrive at an open market with no ink would have to buy some before switching a Machine on, and that is a gas war the bots win. It is pushed, not claimed, so there is nothing to race for.

Sell fee

A Uniswap V4 hook on the $PRINTER pool charges a fee on sells. Buying and plain transfers are untouched, and there is no exemption registry to maintain or get wrong.

ParameterValue
Opening rate90%
Resting rate5% at launch, adjustable 0% to 10%
Hard ceiling10%, a constant, no function raises it
RampLinear over the first 30 minutes of trading
Split80% buys stock for Machines, 20% runs the protocol
Charged onSells only

Nothing trades until trading is opened. The pool can hold liquidity for days before anyone can swap against it, because every swap reverts until a single one way switch is thrown. That is deliberate: liquidity goes in early so it can be checked, and the market starts when it is meant to rather than the moment the pool exists.

The ramp starts at that switch, not at a date chosen when the contract was deployed. Its shape is immutable and nothing can change it, including the owner, so it can be checked before launch and believed during it. It ramps rather than steps, because a step creates one exact second everybody races for. There is no way to close trading again.

The resting rate is a dial, between 0% and 10%. Once the ramp is over, the owner can move the fee anywhere in that range. The ceiling is a constant in the contract rather than a promise on a page: an uncapped sell fee is the mechanism of a honeypot, where buyers can buy and never sell, and a limit written in code is the only version of "we would not do that" worth anything. There is no function to raise the cap, and no pause and no blacklist.

The split can also be moved, and the operating share cannot exceed half of any fee. The rest always buys stock. It starts at 20%, which pays the keeper gas, the hosting and the building, and leaves 80% reaching holders.

A round trip inside the first minute returns about a tenth of what went in, which prices out flipping the launch entirely. Be clear about what it does not do: the fee is charged on the way out, so a buyer who waits out the thirty minutes leaves paying the permanent 5% like anyone else. It deters the flip, not the accumulation.

This is the only inflow to the treasury and the one that needs no human involvement at all: it arrives already denominated in the currency the treasury spends.

What the fee does not do

It is charged by the pool, not by the token. A Uniswap V4 pool is identified by the hash of its two currencies, fee, tick spacing and hook, so a pool with no hook is a different pool and anybody can create one. What keeps trading in the pool that charges the fee is depth: selling into a market a tenth the size costs more in price impact than the 5% being avoided.

The pool

A single Uniswap V4 pool against a stablecoin quote, initialized and funded in one transaction so it cannot sit half seeded. The hook address is mined with CREATE2, because V4 encodes hook permissions in the low bits of the hook's own address and an address without the right bits is not a valid hook.

Swapping goes through a thin adapter that settles directly against the PoolManager on a plain ERC-20 approval. The stock router settles through Permit2, which ignores a plain allowance, and the treasury pattern is approve-and-call.

The ladder

The liquidity is not one flat position. A single full-range position at this valuation would let a few thousand dollars take fifteen per cent of everything, and the answer to that is not to forbid it but to price it.

So 16,000,000 tokens sit at spot against $3,000 and set the opening price, and the remaining 104,000,000 sit above it in 30 tranches rising 15% each, plus one wide tail so there is never a price with no ask at all. Those tranches hold token and no stablecoin, which is what makes them free to place: a position entirely on one side of the current price is funded entirely from that side. They are resting asks, and they only convert to sold tokens if somebody buys through them.

Nothing here is on a schedule. There is no date on which supply appears whether or not anyone wants it, which is the whole advantage over vesting. The corollary is honest too: in a market with no net buying the ladder never releases at all.

BuyingAgainst one flat positionAgainst the ladder
2% of supply~$103$773
5%~$273$1,986
15%~$1,000$7,716

Measured against the real Uniswap V4 singleton on a fork, with no hook attached, so these are the pool's own prices before any fee. A buyer at open pays more. All 32 positions are locked for 30 days and the lock can only ever be extended.

The first thirty minutes

Both sides of the market pay the same 90% fee when trading opens, decaying to 5% over thirty minutes. On a sale that fee is permanent at its resting rate; on a purchase it exists only during the ramp and then stops entirely.

A buy-side fee is unusual and the reason is narrow: without one, the cheapest moment to buy the entire ladder is the first block, and the ramp exists to make the first block the most expensive moment rather than the cheapest. The fee is charged in the stablecoin going in, so it arrives as money the treasury can spend, and it splits the same way every other fee does — 80% buys stock for the Machines, 20% runs the protocol. A sniper pays the holders they were taking from.

Attributes

Sealed before they could pay anybody

Both traits were committed on chain and frozen before any of this decided a payout, which is the only order that makes them worth trusting now. Nobody could have farmed a byte that was already set.

They decide two different things. Rarity is how much: it multiplies whatever the ink earns, so the 37 Machines in the 10x class earn ten times what a plain one does at the same burn. The desk is what: it is the ticker the Machine prefers on the ballot, and the slice it takes double from.

Every Machine has two traits that were frozen on the NFT contract at mint and pinned to IPFS. Its headwear sets its rarity weight, and its body puts it on a sector desk. Both are committed on chain as one byte per Machine, high nibble for the desk, low nibble for the weight.

Weight classes

Seven classes, fixed forever in that order. The counts below are the collection as it actually is, not a plan:

ClassMachinesShare of the collection
1x7,13171.3%
1.5x4074.1%
2x1,35613.6%
3x5595.6%
4x4294.3%
6x810.8%
10x370.4%
Total weight14,702.5 shares across 10,000 Machines

Sector desks

Sixteen desks, one per ticker the collection was drawn around:

DeskMachinesDeskMachines
AAPL1,322GME661
NVDA1,245TSLA562
AMD1,239SPCX532
AMZN911COST514
RDDT888ETH111
MSFT886SLV78
GOOGL876PLTR66
USDG56
USAR53

Why it is sealed before it is used

The full ten thousand byte blob is committed as a hash in the constructor, before any of it is written. Sealing recomputes the hash over what was actually stored and reverts unless it matches, and after that nothing can be written again. So the attributes are provably the ones published at deploy rather than whatever was uploaded afterwards.

It is plain storage rather than merkle proofs. Ten thousand bytes is 313 slots, which costs about a dollar to write once on this chain. Paying that once removes a proof argument from every claim, removes any off-chain data the protocol has to trust, and lets anybody read the allocation straight off the contract forever.

What a later phase could do with it

The contract can already answer "what is this Machine worth if the winning stock is on its desk", with the multiplier supplied by the caller rather than baked in, so the policy would live in the distribution contract and this one stays a record of the artwork. Nothing calls it.

Switching that on changes who gets paid what, so it is a separate module and a public decision, not a flag somebody can flip. Until that happens, the honest description of attributes is: they are art, they are provably fixed, and they pay nothing.

The keeper

The keeper is a stateless state machine. It reads the chain, decides what is due, does one thing, and reads again. It holds no state between runs, so stopping it, restarting it, or running it after a crash all behave the same way.

SYNC -> OPEN_BALLOT -> FINALIZE -> BUY -> HAND_OFF -> SETTLE

It paces itself from the epoch length, so the same binary is correct on a 3.5 day epoch and on a short rehearsal epoch.

The keeper is a convenience, not a dependency. Four of the six steps are permissionless, which means the loop can be driven by anybody if the keeper stops.

Who can do what

ActionWhoIf nobody does it
Burn inkMachine ownersThe Machine stays dormant and earns nothing
Open a ballotBallot managerNo vote that epoch, the fees roll forward
VoteMachine ownersNothing is bought and the money waits
FinalizeAnyoneThe result is already fixed by the tally
BuyAnyone, for a bountyThe balance rolls forward
Hand offOwnerStock waits in the treasury
SettleAnyoneStock waits in the distributor

Nothing in the table can mint $PRINTER. That is not permissioned, it does not exist: the token has no owner and no upgrade path, so there is no address anywhere that can do it.

The sell fee is different and worth being exact about. The owner can move the resting rate, but only between 0% and 10%, because the ceiling is a constant in a contract that cannot be replaced. So the fee can change and it cannot be used to trap you.

Upgrades

Four contracts can be replaced by their owner: the mine, the vote, the treasury and the distributor. They hold the operating logic, and a bug in accrual or settlement needs a way to be fixed.

Being honest about what that means, because it is the price of the feature. The owner of those four could change what ink buys, change how the vote is counted, or change where a drop is sent. Upgrading is not a way to mint supply or raise the sell fee, since neither of those lives in an upgradeable contract, but it is real power and worth pricing in.

ContractUpgradeableWhy
MachineMineyesThe ink ledger and the weight curve
MachineVoteyesBallot and counting rules
TreasurySwapperyesRouting and price guards, which track venues that change
RWADistributoryesSettlement, which walks the whole collection
ProtocolTokennoAn upgradeable token is a token with a mint function. Fixed supply has to mean fixed.
SellFeeHooknoNot replaceable. The rate is a bounded dial inside it, hard capped at 10%, and the launch ramp is fixed.
MachineTraitsnoThe seal is the point. Replaceable attributes are not sealed attributes.

They are UUPS proxies, so the upgrade function lives in the implementation behind an owner check, and every implementation is deployed locked so nobody can claim one and point a proxy at it. Upgrade authority is a single owner key today. Moving it to a multisig with a timelock, so a change is announced before it can land, is on the pre-launch list.

Numbers at a glance

ParameterValue
Epoch3.5 days
Vote window48 hours
Tickers per ballot16, one per sealed desk
Ink durationForever
To switch a Machine on5,000 $PRINTER — 4,250 burned, 750 charge
Ink burned100% of the ink. The 15% charge is separate and is not burned.
Weightsealed rarity × √(ink ÷ 4,250)
Own-desk bonus2x on the slice bought for your desk
Ceiling1x, then 2x / 3x / 4x at 25M / 60M / 100M burned, no lid past 150M
Max supply200,000,000 $PRINTER
EmissionNone. Nothing mints, ever.
Sell fee90% at open, 30 minute ramp, resting 5% adjustable 0 to 10%
Sell fee split80% buys stock, 20% runs the protocol
Machines10,000
Starting ink5,000 $PRINTER per Machine
Ink charge15% of the payment, inside it, to the founder wallet
Buy feeSame 90% ramp, first 30 minutes only, then nothing
Buy fee split80% buys stock, 20% runs the protocol
Liquidity120,000,000 across 32 positions, locked 30 days
Opening price1.875e-4 USDG, a $37,500 FDV

Everything described here is enforced by contracts on Robinhood Chain and can be read from the chain rather than taken on trust.