INK BROKERS OpenSea

The Ink Exchange

A brokerage that never closes

The Ink Broker Terminal

Clock in, take your tier, get paid a share of every trade

Token 0x1b18889ca21a0de73a8541b12ef2bcdd3d6a24ef

The only contract address. Imitators of this collection already exist on secondary marketplaces — check the address here, on this domain, before buying anything called Ink Brokers.

The Desk

Everything a broker can do, and what is still behind glass.

Full docs →

Ink Brokers is an independent project. Nothing on this page is financial advice or an offer to sell a security. A broker is a collectible smart-contract account; holding one is not a stake in any company and carries no promise of profit. Distribution rounds pay only what the desk actually collects — when it collects nothing, they pay nothing. Contracts are unaudited until an audit is published here. Assume you can lose what you spend.

Tiers

Rarity rank decides the tier. Tier decides the share of every round.

TierTitleShare weightSeatsShare of floor
T0Intern2,75562.0%
T1Analyst88920.0%
T2Associate44410.0%
T3VP20×2676.0%
T4Partner60×892.0%

Seat counts are the real output of the trait roll, not round numbers — every broker is scored on trait rarity, ranked against all 4,444, and cut at these percentiles. Share weight is what a tier earns per round relative to a T0. A broker that never activates earns nothing regardless of tier.

Docs

What a broker is made of, how it gets paid, and where each part can break.

A blocky broker at a terminal on an empty trading floor.
The shift. What follows is the machinery under a broker — and every place it can break.

An ERC-721 token is a number in a mapping. tokenId → owner. It has an owner, it has metadata pointing at a picture, and that is the whole of it. It cannot hold a balance. It cannot sign anything. It cannot be sent a payment.

So when a collection says its NFTs "earn", something else is doing the earning. A separate contract keeps a list of which address held which token at which block, and pays the addresses on that list. The token is a ticket stub. The money never touches it, and the moment the project stops running that list, the token goes back to being a picture.

Ink Brokers is built the other way round. A broker is not a ticket stub — it is a desk with a drawer. It holds its own assets, it signs its own transactions, and when it changes hands the drawer goes with it. This is how that works, and what it costs.

A blocky broker punching a card into a wall-mounted time clock beside a dark, deserted trading floor.
Clocking in. Owning a broker and working one are two different transactions. Only one of them ends with you on the payroll.

The primitiveA broker is an account

The mechanism is ERC-6551, "Non-fungible Token Bound Accounts". It changes nothing about ERC-721 — no new token standard, no migration, nothing a wallet or a marketplace has to learn. It adds one permissionless singleton contract, the registry, which lives at the same address on every chain that has it: 0x000000006551c19487814612e58FE06813775758.

That address is not assigned by anyone. The registry is deployed deterministically — same bytecode, same salt, through the standard deterministic deployment proxy — so it lands on that address on any EVM chain, and anybody can be the one who deploys it. Which means the address is identical everywhere it exists, and absent everywhere nobody has bothered. Check before you assume; a chain without the registry has no token bound accounts on it at all.

Two functions matter.

function createAccount(
    address implementation,
    bytes32 salt,
    uint256 chainId,
    address tokenContract,
    uint256 tokenId
) external returns (address account);

function account(
    address implementation,
    bytes32 salt,
    uint256 chainId,
    address tokenContract,
    uint256 tokenId
) external view returns (address account);

account() computes an address. createAccount() deploys the contract that lives at it. The address comes out of CREATE2, which makes it a pure function of those five inputs — an implementation, a salt, and the token's full identity: chain, contract, id. Feed the same five in and you get the same address, every time, on any chain, whether or not anything has been deployed there yet.

That last clause is the useful part. Because the address is computable before deployment, a broker can receive assets before its account exists. Send tokens to broker #1234's account on day one and deploy the account on day ninety — the funds were sitting the whole time at an address only #1234's holder can ever control. The spec calls these counterfactual accounts, and they are the reason none of this needs a "claim your wallet" step.

TOKEN IDENTITY chainId tokenContract tokenId + implementation, salt REGISTRY 0x0000…6551…758 Holder A controls until transfer Holder B controls after TOKEN BOUND ACCOUNT 0xA1B2…C3D4 holds tokens holds positions holds unclaimed rounds address is fixed by the token, not by whoever holds it CREATE2 derives transfer signs as
Two things happen at once. The registry derives the account address from the token's identity, so the address never moves. Control is derived separately, from current ownership — which is why a sale needs no migration step.

The deployed account is an ERC-1167 minimal proxy with the salt, chain id, token contract and token id appended to its bytecode as immutable data. The account knows which token it belongs to, permanently. When something asks whether an address may sign for it, the account looks up who owns that token right now. The spec is blunt about it:

By default, the holder of the non-fungible token the account is bound to MUST be considered a valid signer. ERC-6551 §Account Interface

There is no update step on transfer. No migration, no re-registration, no admin key. Sell the broker and the buyer controls the drawer the moment the transfer confirms — because control was never stored anywhere to begin with. It is recomputed, every call, from ownership.

A blocky broker standing with an open bank-vault door in his chest, coins and ingots glowing inside.
The drawer. Assets sit inside the broker, not in a list held by a contract somewhere that says they belong to it.

ActivationClocking in

A minted broker sits there. It has an account, it has traits, it trades — and it earns nothing, because the desk does not know it exists. Activation is the transaction that puts it on the floor. It does three things: burns tokens, writes the broker into the active set, and fixes the tier.

The burn is worth being precise about. It is not a fee routed to a treasury that promises a buyback later. The tokens go to an address nobody controls, and total supply drops. Every broker that clocks in makes the remaining supply permanently thinner, and there is no function on the other side that mints them back.

That is a design choice with a consequence attached, and it cuts both ways. It means activation is the one lever the project has that costs the project nothing and costs the participant something real — which is exactly why it has to be worth doing on the arithmetic alone. If the rounds do not justify the burn, nobody clocks in, and no amount of announcing changes that.

A blocky broker feeding a stack of paper certificates into a small iron furnace burning with violet flames.
The burn. One-way by construction. There is no mint on the other side of this door.

TiersThe ladder

Tier is the second thing activation fixes, and it is not for sale.

Every broker is scored on the rarity of what it rolled, using standard rarity scoring: for each of the ten trait slots, take the reciprocal of how often that trait occurs across the collection, then sum the ten. Four common traits score low. A 2% headpiece next to a 3% background scores high. All 4,444 are ranked against each other and cut at fixed percentiles.

TierTitleShare weightSeatsShare of floor
T0Intern2,75562.0%
T1Analyst88920.0%
T2Associate44410.0%
T3VP20×2676.0%
T4Partner60×892.0%

Weight is relative, not absolute. A T4 does not receive sixty payouts — it receives sixty shares where a T0 receives one, out of whatever the round actually contains. Sixty times nothing is still nothing.

Two properties fall out of scoring it this way, both intentional. Tier is knowable before you buy: the ranking is a pure function of the collection, so any token's tier can be checked in the generator before a single transaction. And tier is fixed at activation — it does not drift when other people clock in later, so a T3 activated on day one is still a T3 on day four hundred.

Five blocky brokers standing on five stepped platforms of increasing height, each with a grander desk, the highest under a bright spotlight.
The ladder. Five steps, cut at percentiles. What you rolled decides where you stand; nothing you spend afterwards moves you.

DistributionsThe round

Rounds are pull, not push, and that is not a stylistic preference.

The naive design is a loop: iterate every active broker, send each its share. It works at fifty and dies at four thousand. Gas grows with the set until the transaction will not fit in a block, and a single recipient whose contract reverts on receive takes the whole distribution down with it.

So rounds are accounted rather than disbursed. When a round opens, the desk records two numbers: the amount, and the total active weight at that instant. Every broker's share is arithmetic against that snapshot, and the holder claims it whenever they want. Nothing iterates. Nothing can be bricked by one bad recipient. Gas is paid by whoever collects, at the moment they collect.

The consequence you should hear alongside that: a round pays what the desk collected. Not a rate, not a yield, not a projection. If the desk collected nothing that week, the round is zero, and every tier gets its weighted share of zero. No mechanism described here creates money — all of them split fees that were actually paid by someone.

A barred teller window in a dark hall; a clerk pushes a tray of glowing coins out to a queue of waiting brokers.
The window. The desk records what you are owed. You come and get it.

LiquidityThe counter

Selling an NFT normally means waiting for a bid. An NFT AMM removes the wait by pairing the collection against a token in a pool that runs a bonding curve. Deposit tokens, take a broker out. Deposit a broker, take tokens out. The price walks along the curve with every trade — each broker pulled from the pool makes the next one dearer, each one sold back makes the next one cheaper.

What that buys is a bid that is always there and an ask that is always there, quoted by arithmetic instead of by whoever happens to be online at 3am.

What it costs is discrimination. The curve does not care which broker you hand it: to the pool, a T4 and a T0 are the same object. Pools like this quote floor, and nothing above floor can be captured by selling into one. That is not a flaw to be fixed — it is the trade. An orderbook marketplace answers the other question, "what is this specific broker worth to a specific person", and the two are meant to coexist.

Worth putting a number on it, because the prose hides how large the gap is. The counter's bid opens at 75,000 tokens for any broker. Hand it one of the 89 Partners — a seat carrying 60× an Intern's share of every round — and it pays exactly what it pays for one of the 2,755 Interns. Nor is the mistake a race somebody might win: buy serves last in, first out, so a rare broker sold into the pool is handed deterministically to the next person watching.

The terminal refuses to let that happen quietly — entering a broker above the base tier on the Sell panel raises a red block naming the tier, its weight and the sum, and the button has to be pressed a second time. But the contract does not know about tiers and never will, so the honest summary is this: the counter is where you sell a broker for the floor, on purpose. If you want more than the floor for a rare one, list it instead.

A lit vending machine full of small broker figurines, one broker inserting a coin while a figurine drops into the glowing tray.
The counter. Always open, never picky. It quotes the floor and nothing above it.

TokenomicsThe token

$INKBROKER has no allocation. There is no claim, no airdrop and no presale; the treasury was issued nothing, and the only way anyone holds a token is by buying it. That is unusual enough to be worth stating before the numbers, because it is what the numbers are shaped around.

Supply is not a round marketing figure. It is the collection priced at the counter's opening bid — 75,000 × 4,444 = 333,300,000 — so one broker is a fixed slice of the supply rather than a number someone picked. Every token had a job before launch:

Where it wentAmountShareReachable by us?
Uniswap v4 position, locked266,640,00080%No — see below
The counter's standing bid66,660,00020%Yes — it is our market maker
Team, treasury, reserve00%

An earlier draft carried a 25% reserve with nothing to do. It was not burned for a headline — it was simply never minted, which is the same outcome with one less step and one less thing to promise about.

The burn is the only sink

Clocking in destroys tokens. The amount is 7,500 + 375 × weight, so it is priced against the share of the flow it buys:

TierBrokersWeightBurnedShare of each round
T0 Intern2,7557,8750.005%
T1 Analyst8898,6250.015%
T2 Associate44410,5000.041%
T3 VP26720×15,0000.102%
T4 Partner8960×30,0000.305%

Share is of a round with the whole collection working (total weight 19,654). With fewer seats active, each one is worth proportionally more.

If every broker clocked in once, that destroys 40,700,250 tokens — 12.21% of supply. And it is recurring rather than one-off: a seat ends when its broker leaves the holder's wallet, so every resale burns again for the next holder. There is no other mechanism that reduces supply, and no mechanism at all that increases it — the mint function does not exist after deployment.

Worth being straight about the shape of that ladder: weight spans 60× from Intern to Partner, while price spans only 3.81×. A Partner is the better deal per token burned, by a wide margin. That is deliberate — the flat part of the cost is what makes the sink large, because most of the collection is T0 — but it is not proportional, and nobody should read it as such.

Where the pay comes from

Not from printing. The pool charges 1.5% on every swap, taken in whichever currency the trade came in as — buying pays in ether, selling pays in tokens — so working brokers are paid in both. The stream is divided at a ratio fixed when the contracts were deployed:

LegOf volumeGoes to
Brokers1.0%Split across working seats by tier weight
Treasury0.5%The project

The splitter has no owner and no setters. Both destinations and the ratio are immutable — not "governed", not "timelocked", simply absent from the contract. Nobody can redirect that stream, including whoever deployed it.

What "locked" means, precisely

The liquidity position lives in a contract with no owner, no pause, no upgrade path and no withdrawal function. The only call it can make into Uniswap is a liquidity decrease of a literal zero — the number is written into the source as a constant, so extraction is impossible rather than merely unauthorised. There is no approve, no transferFrom, and deliberately no signature-verification function, because that last one would let Uniswap's permit flow hand someone authority over the position.

So the principal is unreachable. Fees are the only thing that ever comes out, and they go to the splitter above. This is checkable, not a promise:

ReadWhat it proves
lock.lockedLiquidity()Should read the same forever. A drop means the position was never locked.
lock.beneficiary()Fees land on the splitter and nowhere else.
splitter.deskBps()The 1.0 / 0.5 split, immutable.
desk.circuit(asset)A marked asset can only leave through a seat, and the mark cannot be undone.

The counter is a different thing and is not locked. It is our own market maker: the owner can withdraw its float and any brokers it has taken in. Saying "the liquidity is locked" without that sentence would be misleading, so here it is. The locked claim describes the Uniswap position, and only that.

What this does not promise

Rounds pay what the desk collected. Quiet trading pays little; no trading pays nothing. No tier weight multiplies an empty round into a full one, and there is no yield here that does not come out of somebody else's trade. The burn reduces supply, but 12.21% across the whole collection is a sink, not an engine — what moves this is volume, and volume is not something we can promise.

CreditKeeping the seat Soon

Soon

The pawn is written and it has been through the same audit rounds as everything else — it was run end to end on a testnet, including a real default and a real liquidation. It is not deployed yet and nothing below is live.

Two reasons it waits. It lends ether, so the loan pool is funded out of pocket rather than by the market. And taking collateral runs a descending auction, which needs a second bidder to be worth anything — with only the borrower bidding, an abandoned loan returns the pool nothing. Both are solvable and neither is solved by shipping it early.

Selling a broker to raise cash means giving up the tier and every round that comes after it. A loan against the broker is the alternative: the token moves into an escrow contract as collateral, the borrower takes liquidity out, and the position stays intact while the loan is open.

The honest framing is that this is a leveraged position, not free money. If the collateral's value falls under the threshold the loan was written at, the broker is liquidated. And unlike a sale, which you time, liquidation arrives at the worst possible moment by construction — the trigger is the price falling. A loan is the right instrument when you are confident in the seat and need cash for something unrelated to it. It is the wrong instrument for buying more seats.

A blocky broker seated at his desk sliding a glowing badge across a barred pawnshop counter while a money bag comes back the other way.
The pawn counter. The chair stays on your side. So does the risk.

Failure modesWhat can go wrong

Every mechanism above has a way to hurt you. Describing something clearly does not make it safe, so here is the list without the marketing voice.

Read this part twice

Contracts are unaudited
Until an audit is published and linked, treat everything here as unreviewed code holding real money. Clarity of documentation is not a security property.
The empty-drawer problem
ERC-6551's own security notes flag this one: an account's value sits inside it, and the seller controls that account right up to the block the sale settles in. Nothing stops a seller from emptying the drawer immediately before the trade. Buying a broker for what is in its account requires a marketplace that checks the contents atomically with the transfer — or checking yourself, in the same breath as signing.
Ownership cycles are permanent
The spec's other warning. Send a broker into its own token bound account and everything inside becomes unreachable forever; there is no recovery function and no admin who can undo it. Front-ends should refuse the transfer. The chain will not.
Rounds can be zero
Distributions split collected fees. Fees depend on activity, activity is not guaranteed, and no tier weight multiplies an empty round into a full one.
A curve price is not a valuation
A pool that always quotes is also a pool that can be moved by whoever brings the most capital. Floor is a number the curve produces, not a statement about what a broker is worth.
The seat dies when the broker moves
The collection has no transfer hook, so a seat is valid only while the broker sits with the holder who activated it. Sell it, transfer it, or list it somewhere that moves the token, and the shift ends — the burn that paid for it is not refunded, and the next holder burns again. This is the design, not a bug, but it surprises people once.
The counter can be arbitraged empty
Its bid is a fixed number of tokens, so what that bid is worth in ether rides on the token price. If $INKBROKER rises far enough against the secondary floor, buying brokers elsewhere and selling them into the counter becomes profitable until its float is spent. The pool ends up holding the brokers, which is the counter doing its job — but the float is finite and it is not a promise to bid forever.
The counter is not locked liquidity
The Uniswap position is. The counter is our own market maker and its float and inventory can be withdrawn by the owner. Do not read the two as one thing.
Liquidation is not optional — when the pawn ships
Not live yet. When the pawn ships: collateralised seats are sold by the protocol when the threshold breaks, at the moment prices are worst. That is the deal you sign, not an edge case.

In closingThe shift

None of the above is exotic. Token bound accounts are a two-function registry. Rarity ranking is a sum of reciprocals. Pull-based distribution is the oldest fix in Solidity for a loop that does not scale. A bonding curve is arithmetic.

What is unusual is putting them in one place and having the thing that holds the money be the same thing you can look at. A broker is not a receipt for a position kept somewhere else. It is the position. That is the entire argument, and everything above is the plumbing that makes it true.

The floor opens on Ink. The bell never rings.