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.
$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.
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.
- 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.
- Vote holders 48 hours. A Machine votes what it weighs, and votes once.
- 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.
- 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.
- 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.
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.
| Field | Mainnet | Testnet |
|---|---|---|
| Chain ID | 4663 (0x1237) | 46630 (0xb626) |
| EVM version | Cancun | Cancun |
| Account standard | ERC-6551, registry 0x000000006551c19487814612e58FE06813775758 | |
| Venue | Uniswap V4, PoolManager 0x8366a39CC670B4001A1121B8F6A443A643e40951 | |
| Multicall3 | 0xcA11bde05977b3631167028862bE2a173976CA11 | |
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:
| State | Meaning |
|---|---|
| Dormant | No ink. Earns nothing, cannot vote, receives no stock. |
| Lit | Inked this epoch. Starts earning next epoch. |
| Earning | Active 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.
| Ceiling | Opens at | Supply destroyed |
|---|---|---|
| 1x | always | — |
| 2x | 25,000,000 burned | 12.5% |
| 3x | 60,000,000 | 30% |
| 4x | 100,000,000 | 50% |
| no lid | 150,000,000 | 75% |
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.
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.
| Parameter | Value | Why |
|---|---|---|
| To switch one on | 5,000 $PRINTER |
Fixed in tokens, not in dollars. No oracle to push around, and a supply schedule anybody can work out in advance. |
| Duration | Forever | It does not expire and cannot be topped up late, because there is nothing to top up. |
| Burned | 100% | Destroyed. Nobody receives it. Supply only ever falls. |
| Weight | Rarity × √(ink ÷ 4,250) | The sealed rarity class multiplies whatever the ink earns. |
| Starts earning | Next 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 Machine | Its multiplier | Cost of the next doubling |
|---|---|---|
| 5,000 | 1x | 15,000 more |
| 20,000 | 2x | 60,000 more |
| 45,000 | 3x | 135,000 more |
| 80,000 | 4x | 240,000 more |
| 500,000 | 10x | 1,500,000 more |
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.
- One active Machine, one vote. Hold a hundred Machines and you have a hundred votes, which is the same rule for everybody.
- A Machine votes once per epoch. Recorded against the token id, so selling a Machine after voting does not produce a second vote.
- Only Machines active at the start of the epoch may vote. You cannot ink after seeing the ballot and vote in it.
- Ties break to the lower address, so the order the tickers were listed in cannot sway the result.
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:
- It has a live Chainlink feed, fresh enough for the treasury to accept.
- 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.
- 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:
| Guard | Effect |
|---|---|
| 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 cap | A fill more than the configured tolerance away from the oracle reverts. Hard capped at 5%. |
| Chunking | One buy spends a bounded share of the treasury, so a single transaction cannot move the market or drain the balance. |
| Pacing | A minimum interval between chunks. |
| Router allowlist | Only approved venues. The caller cannot point the treasury at a contract of their own. |
| Feed freshness | A stale feed is refused rather than trusted. |
| Bounty | Capped 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.
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.
| Contract | Address |
|---|---|
| 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.
| Allocation | Share | Amount | Purpose |
|---|---|---|---|
| Liquidity | 60% | 120,000,000 | The launch pool |
| Airdrop | 25% | 50,000,000 | Exactly 5,000 for each of the 10,000 Machines, which is exactly what switching one on costs |
| Operations | 10% | 20,000,000 | Keeper gas, hosting, building it |
| Founders | 5% | 10,000,000 | |
| Max supply | 200,000,000 | Falls 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.
| Parameter | Value |
|---|---|
| Opening rate | 90% |
| Resting rate | 5% at launch, adjustable 0% to 10% |
| Hard ceiling | 10%, a constant, no function raises it |
| Ramp | Linear over the first 30 minutes of trading |
| Split | 80% buys stock for Machines, 20% runs the protocol |
| Charged on | Sells 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.
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.
| Buying | Against one flat position | Against 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
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:
| Class | Machines | Share of the collection |
|---|---|---|
| 1x | 7,131 | 71.3% |
| 1.5x | 407 | 4.1% |
| 2x | 1,356 | 13.6% |
| 3x | 559 | 5.6% |
| 4x | 429 | 4.3% |
| 6x | 81 | 0.8% |
| 10x | 37 | 0.4% |
| Total weight | 14,702.5 shares across 10,000 Machines | |
Sector desks
Sixteen desks, one per ticker the collection was drawn around:
| Desk | Machines | Desk | Machines |
|---|---|---|---|
| AAPL | 1,322 | GME | 661 |
| NVDA | 1,245 | TSLA | 562 |
| AMD | 1,239 | SPCX | 532 |
| AMZN | 911 | COST | 514 |
| RDDT | 888 | ETH | 111 |
| MSFT | 886 | SLV | 78 |
| GOOGL | 876 | PLTR | 66 |
| USDG | 56 | ||
| USAR | 53 |
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
| Action | Who | If nobody does it |
|---|---|---|
| Burn ink | Machine owners | The Machine stays dormant and earns nothing |
| Open a ballot | Ballot manager | No vote that epoch, the fees roll forward |
| Vote | Machine owners | Nothing is bought and the money waits |
| Finalize | Anyone | The result is already fixed by the tally |
| Buy | Anyone, for a bounty | The balance rolls forward |
| Hand off | Owner | Stock waits in the treasury |
| Settle | Anyone | Stock 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.
| Contract | Upgradeable | Why |
|---|---|---|
| MachineMine | yes | The ink ledger and the weight curve |
| MachineVote | yes | Ballot and counting rules |
| TreasurySwapper | yes | Routing and price guards, which track venues that change |
| RWADistributor | yes | Settlement, which walks the whole collection |
| ProtocolToken | no | An upgradeable token is a token with a mint function. Fixed supply has to mean fixed. |
| SellFeeHook | no | Not replaceable. The rate is a bounded dial inside it, hard capped at 10%, and the launch ramp is fixed. |
| MachineTraits | no | The 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
| Parameter | Value |
|---|---|
| Epoch | 3.5 days |
| Vote window | 48 hours |
| Tickers per ballot | 16, one per sealed desk |
| Ink duration | Forever |
| To switch a Machine on | 5,000 $PRINTER — 4,250 burned, 750 charge |
| Ink burned | 100% of the ink. The 15% charge is separate and is not burned. |
| Weight | sealed rarity × √(ink ÷ 4,250) |
| Own-desk bonus | 2x on the slice bought for your desk |
| Ceiling | 1x, then 2x / 3x / 4x at 25M / 60M / 100M burned, no lid past 150M |
| Max supply | 200,000,000 $PRINTER |
| Emission | None. Nothing mints, ever. |
| Sell fee | 90% at open, 30 minute ramp, resting 5% adjustable 0 to 10% |
| Sell fee split | 80% buys stock, 20% runs the protocol |
| Machines | 10,000 |
| Starting ink | 5,000 $PRINTER per Machine |
| Ink charge | 15% of the payment, inside it, to the founder wallet |
| Buy fee | Same 90% ramp, first 30 minutes only, then nothing |
| Buy fee split | 80% buys stock, 20% runs the protocol |
| Liquidity | 120,000,000 across 32 positions, locked 30 days |
| Opening price | 1.875e-4 USDG, a $37,500 FDV |