Every other redistribution token taxes its own buyers and calls it charity. Sherwood taxes the two parties that actually drain a market — sandwich bots and barons — and pays it out weekly to wallets that held through the epoch. The purse has no owner. No multisig ever touches it.
The fee is read from the seller's own balance at swap time — no list, no admin, no discretion.
Hold a normal position and you trade free forever. The rate is a pure function of one number,
and anyone can call tollBps(address) to check it before they sign.
| Standing | Share of supply | Tokens (of 1B) | Fee on sell |
|---|---|---|---|
| Villager | under 0.05% | under 500,000 | 0.00% |
| Freeman | 0.05% – 0.25% | 0.5M – 2.5M | 1.00% |
| Merchant | 0.25% – 1.00% | 2.5M – 10M | 4.00% |
| Baron | over 1.00% | over 10,000,000 | 9.00% |
A working position. One percent, and the coin goes to the epoch purse, not a team wallet.
Sherwood is not a fee-on-transfer ERC-20 — those break on aggregators, bridges and concentrated liquidity. It is a Uniswap v4 hook. The hook does two jobs on every swap: it applies the Toll, and it runs a per-block priority auction over the pool.
A searcher who wants to sandwich or backrun your trade has to bid for the right, and the bid goes into the purse instead of to the builder. The extraction doesn't stop — it changes who it pays. Every block of volume is revenue the holders keep.
At the close of an epoch a permissionless keeper computes the distribution and posts a Merkle root.
Anyone can be that keeper; the first to post a root matching the on-chain state takes a fixed gas
bounty. Holders then call claim() themselves. At no point does an address controlled
by a human hold the money.
Your claim is the minimum balance you held across the epoch, multiplied by consecutive epochs survived, capped at eight. A wallet minted yesterday earns close to nothing for two months.
World ID or a Gitcoin Passport score unlocks full weight. Unverified wallets still claim — at 25%. No KYC, no names, no document ever touches the contract.
A claim worth less than roughly three dollars of gas doesn't clear. Splitting a position across five hundred wallets to farm your own alms becomes negative-EV by arithmetic.
Three defenses stacked, all enforced in the contract. Farming the alms pool costs more than it pays.
Not as a slogan — as the only structure this idea survives a day of scrutiny under. Every token enters circulation through one 72-hour descending-price auction with a hard per-address cap, so no single buyer can take more than 0.05% of supply.
| Term | Setting | Verifiable by |
|---|---|---|
| Supply | 1,000,000,000 SWD, fixed | no mint function exists |
| Team / insider allocation | 0% | holder list at block zero |
| Distribution | Dutch auction, 72h | auction contract, verified |
| Per-address cap | 0.05% — 500,000 SWD | enforced in bid() |
| Auction proceeds | 100% into liquidity | one tx, before trading |
| LP tokens | burned, permanently | transfer to 0x…dEaD |
| Upgradability | none — no proxy, no owner | renounced at deploy |
| Admin functions | there are none | the ABI, §05 |
This is every external function on the protocol. If a function you were promised isn't on this list, it doesn't exist. Note the caller column: nothing here is restricted to a privileged address, because there isn't one.
| Function | Arguments | Effect | Who may call |
|---|---|---|---|
tollBps | address | Returns the fee in basis points for that holder, right now | anyone · view |
beforeSwap | key, params | Applies the toll, opens the block priority auction | PoolManager only |
afterSwap | key, delta | Settles the winning bid into the purse | PoolManager only |
bidPriority | poolId, amount | Searcher bids for first position in the block | anyone |
settleEpoch | root, epoch | Posts the distribution root, pays the keeper bounty | anyone, after close |
claim | epoch, amount, proof | Pays a holder their alms for a settled epoch | the holder |
voteGrant | proposalId, weight | Quadratic vote over the grants pool | any holder |
burnSurplus | — | Sends the 15% burn tranche to the dead address | anyone |
No allowlist to miss, no seed round already sitting on your exit liquidity, no team wallet waiting to unlock. One auction, one cap, one price for everyone who shows up — and from the first block onward the purse pays the people who stayed.
The contract address appears in the header above the moment liquidity is burned and trading opens.