Little Satoshis
3,333 Little Satoshis. fixed-supply ERC-20 paired with ETH on Uniswap v4. every whole TOSHI bought from the canonical pool mints a fully on-chain pixel-art NFT. the object is the thing.
$TOSHIS is an ERC-20 on Ethereum mainnet. token name isLittle Satoshis, ticker is Toshis, total supply is 3,333, decimals are 18. it is an asset. it does not launch and graduate and migrate.
issuance
the entire supply is minted at deployment and seeded into a single Uniswap v4 pool against ETH. that pool is canonical: one fee tier, one tickSpacing, one hook bound at deployment, never changeable. there is no continuous-mint bonding curve. the curve is a univ4 concentrated-liquidity book with a passive hook attached.
the hook does two things and nothing else. on the first LP add it calls token.start(pool) to lift the pre-trade cap. on every swap it re-rolls an internal randomSeed mixing prevrandao, block.number and a counter — the entropy that drives TOSHI NFT minting on buys. the hook never holds value. it cannot mint, take, or redirect.
NFTs (TOSHIs)
every whole TOSHI held has a piece. piece-balance equals balanceOf(addr) / 1e18, asserted on every transfer. buy a whole TOSHI from the ETH/TOSHIS pool and a TOSHI NFT is minted to the buyer's address. sell or send it and a TOSHI NFT is burned (LIFO). the pool itself and the deployer's seeding inventory are exempt — TOSHI NFTs only exist in trader wallets.
this is not a separate NFT contract. there is one address. the ERC-20 balance and the TOSHI NFT registry live on the same Toshis contract, mutating in lockstep. one Etherscan page. one set of approvals. wallets that don't read the piece interface still see the $TOSHIS balance — TOSHI NFTs are visible to anything that does.
each TOSHI is rendered fully on-chain. tokenURI returns a base64-encoded JSON metadata document with a base64-encoded SVG inline. there is no IPFS, no off-chain renderer, no external font, no API to break.
traits
six independent trait dimensions are sampled from the seed via keccak labels. each TOSHI inherits one value per dimension at mint time, locked in forever.
| dimension | variants | values |
|---|---|---|
| tier | 6 | Surface 35% · Reef 25% · Shallow 18% · Deep 12% · Abyss 8% · Void 2% |
| sigil | 10 | btc · sol · luna · salt · eth · doge · xmr · key · anchor · void |
| palette | 6 | deep ocean · twilight · crimson · gold · glacier · plasma |
| eyes | 5 | cyan · amber · violet · blood · white |
| hood | 4 | plain · horned · antlered · crowned |
| aura | 4 | calm · particles · halo · runes |
specific TOSHIs can be moved by id via claimPiece(to, pieceId) to preserve a particular piece across the LIFO burn order of regular transfers. fractional transfers can burn pieces — sending 0.5 TOSHIS from a wallet holding 1.0 leaves both sides with 0 NFTs. to preserve a piece, send a whole TOSHI.
immutability
the hook slot is set once and locked. the renderer is swappable by the deployer for a 1–2 week window post-launch (to fix any wallet-rendering bugs that show up in the wild), then ownership is renounced and the renderer is permanently fixed. start() can only be called once. there is no second pool, no migration target, no graduation event. the canonical pool is the only pool the contract acknowledges.
we did not pre-mint to ourselves beyond the LP seed, which the contract permanently exempts from piece-minting. we hold no admin role after renounce, no pause function, no upgrade path, no fee redirection. the deployer holds bag, not receipts.
addresses
token (Toshis): 0x0000000000000000000000000000000000000000 hook (ToshisHook): 0x0000000000000000000000000000000000000000 v4 PoolManager: 0x000000000004444c5dc75cB358380D2e3dE08A90 pair currency0: 0x0000000000000000000000000000000000000000 (ETH)
token + hook addresses above are placeholders — the contracts have not been deployed yet. once deployed, the operator sets TOKEN_ADDRESS and HOOK_ADDRESS in the site's server env.
trade on-chain. read it on-chain.