Documentation
How each tool works, who can do what, and which file formats they take. Every tool is one contract with no owner, so the rules below are the whole story.
Getting started
- Connect a wallet. Connecting adds Robinhood Chain (id 4663) to it if needed.
- Paste a token address, or pick one. Compare the address: a ticker is not an identity on this chain.
- Fill the form. The side card shows exactly what will be pulled and what the rules will be.
- Approve, then confirm. The approval defaults to the exact amount. Each step is simulated before your wallet opens.
Network gas is the only cost. You do not need $LOCKER for anything. Read the risks first.
Vesting
A stream holds a deposit and releases it to one recipient on a schedule fixed at creation.
| Start | When periods start counting. Empty means now. It cannot be in the past. |
|---|---|
| Cliff | Nothing can be withdrawn before this time. Empty means the start. |
| Cliff amount | Extra tokens that unlock at the cliff. |
| Period and release | A set amount per period, counted from the start. A release of 0 unlocks everything at the cliff. |
| Sender can cancel | Fixed at creation. A cancel leaves what has unlocked for the recipient and returns the rest to the sender. |
| Recipient can transfer | Fixed at creation. The recipient can hand the stream, unwithdrawn balance included, to another wallet. |
The formula: unlocked = cliffAmount + floor((now − start) / period) × perPeriod, from the cliff onward, capped at the deposit. A sender's top-up raises the deposit and leaves the release per period and the start alone. If periods have already elapsed past the old deposit, the added tokens unlock at once, and the form shows how much first. A date or a schedule end more than 100 years ahead is refused.
Batch CSV
Up to 150 rows in one all-or-nothing transaction. A missing column takes the value set in the form.
recipient,amount,start,cliff,cliffamount,periodseconds,perperiod,cancellable,transferable 0x7099…79C8,1200,2027-01-01,2027-04-01,100,2592000,100,yes,no
Dates are ISO dates or unix seconds. A plain address,amount file with no header works too.
Every stream has a page at /stream/<id> with its terms, a chart of its schedule and its events.
Token Lock
A lock holds tokens for one owner until a date. The owner can move the date later and add tokens, and withdraws all or part of it after the date, which helps when a token limits one transfer or an issuer has burned from the contract. No function moves the date earlier. A date more than 100 years ahead is refused.
Pool tokens from a liquidity pair are ordinary ERC-20s and lock the same way. Uniswap v3 and v4 position NFTs are Planned. Every lock has a page at /lock/<id>.
Airdrop
- Paste or upload
address,amountrows, in whole tokens. The tree is built in your browser. - Download the proof file. Recipients need their row to claim.
- Choose instant or vested, when claims open and the claim end, which must be at least a day after the last unlock.
- Fund the drop. The claim page lives at
/drop/<id>. - Share a personal link with each wallet, or publish the proof file at a link and record it with the drop.
A leaf is keccak256(keccak256(abi.encode(index, account, amount))) with sorted pairs. Only the wallet named in a row can claim it. Exactly at the end claims still work, and from the next second the sender can reclaim what is left. A claim larger than what remains is refused whole. The list is the sender's word: a row for the sender can take tokens before the end, so the claim page compares the list with what was funded and flags the sender's rows when it has the list.
Bulk Send
Up to 300 rows in one transaction, of one ERC-20 or native ETH, because the chain caps a transaction at 32,000,000 gas. Any failed row reverts all rows.
- Tokens go straight from your wallet to each recipient. The contract holds none and can only ever spend the caller's own allowance.
- A native send must carry exactly the total of its rows.
- Before you sign: row errors with line numbers, repeated addresses, the total against your balance and allowance, and a simulation.
Staking pools
A team opens a pool for its token and pays in a budget, released in a straight line over a period. Whoever is staked shares it pro rata, second by second.
- Never an annual rate or an estimated return: your share depends on how much others stake.
- The stake lock is stated by the pool and counted from each new stake, or from the start if that is later, and it always ends by the pool's end.
- A pool can set a minimum stake. A wallet must hold at least that much, or nothing. The form suggests a millionth of the token's supply and starts a day ahead, so people can stake first.
- A share can be taken at any time, separately from the stake. A reward token that stops working cannot trap a stake.
- What is released while the pool holds no stake at all can be reclaimed by the named funder after the end. From the first stake on, whoever is staked takes it all, even one small staker alone. Nothing stakers earned can be reclaimed.
Dashboard
The dashboard reads contract events for the connected wallet: what it sends and receives, its locks, drops, batches and pools, with explorer links. An empty group shows —.
Reading the contracts
Addresses and verification are on the contracts page. Every error a contract can give has a plain message in the app. Anyone can call these contracts directly from an explorer without this site.
Planned, not live
- A white-label claim and vesting portal Planned
- An SDK package Planned
- Uniswap v3 and v4 position NFT locks Planned
- $LOCKER utility Planned