t0shi.xyz
a specter has returned to ethereum: the specter of code that runs without an operator.
eight hundred eighty-eight toshis, fixed forever. no founder allocation. every buy through the canonical hook leaves a permanent on-chain receipt — a pixel-art seal whose depth tier is derived from when in the sequence the buy landed.
toshi is an erc-20 on ethereum. token name is t0shi.xyz, ticker is toshi, total supply is 888, 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 WBTC. 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 piece minting on buys. the hook never holds value. it cannot mint, take, or redirect. that is what makes it eligible for uniswap's routing API allowlist.
why WBTC
satoshi minted bitcoin. toshi settles in bitcoin. the unit of account matches the lineage. pairing against WBTC instead of ETH is the deliberate choice — it filters the holder base for people who already think in sats, and it denominates the floor in the only credibly fixed-supply reserve asset that exists on-chain.
BTC has a 21,000,000 hard cap. ETH has no cap. when toshi is denominated in the harder asset, the price floor compounds with bitcoin's monetary premium instead of fighting against ether's issuance. 888 toshis traded against the world's only credibly fixed reserve asset — two scarce things meeting on-chain. no inflation on either side of the book.
in risk-off regimes BTC is the asset that holds. an ETH pair tracks ETH-beta and gets liquidated together with the rest of the alt rotation. a WBTC pair tracks BTC-beta. the LP doesn't get rugged by the broader market giving up on the ethereum narrative — it holds the asset that holds.
the pool fee accrues to liquidity providers (uniswap-standard). the hook is not in the fee path. there is no extraction surface, no governance, no upgrade path, no treasury, no team allocation. the deployer's LP-seeding inventory is permanently exempt from piece-minting — the deployer holds bag, not receipts.
receipts
every whole toshi held has a piece. piece-balance equals balanceOf(addr) / 1e18, asserted on every transfer. buy a whole toshi from the WBTC pool and a piece is minted to the buyer's address. sell or send it and a piece is burned (LIFO). the pool itself and the deployer's seeding inventory are exempt — pieces only exist in trader wallets.
this is not a separate NFT contract. there is one address. the ERC-20 balance and the piece 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 toshi balance — pieces are visible to anything that does (OpenSea, Rainbow, custom explorers).
each piece is rendered fully on-chain. tokenURI returns a base64-encoded json metadata document with a base64-encoded svg image inline. there is no IPFS, no off-chain renderer, no external font, no API to break. the figure is a 22×32-pixel hooded silhouette with rim lighting in a per-tier accent colour, drawn straight from the contract's bytecode at 1024×1024.
tier is rolled at mint time from the hook's evolving entropy. the weighted distribution is hardcoded: Surface 60% (bitcoin orange rim), Shallow 25%, Deep 12%, Abyssal 3%. each successive tier removes pixels from the figure until only the wraith remains. within a tier, four chest sigils (₿ ☉ ☾ ◇) cycle by another hash of the seed.
specific pieces 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 pieces. 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. if everyone who shipped this disappeared tonight, the contract would run tomorrow against the same rules, and the same wraith would surface from the same bytecode. that is what we mean by "no operator." that is the only feature.
addresses
deployer: 0x1853F3f77eDD778598aecdb1d2bfd14EF8CDD7ac renderer: 0xA1adD6B616F97f7d73cB128d98958F99b3302FdE token (Toshis): 0x646F9eeA497EF20BeBa7e9e99eA3c3b024d464c9 hook (ToshisHook): 0x3Fc630e0208fBe969f111435DaB1a247067D4440 WBTC pair: 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599 v4 PoolManager: 0x000000000004444c5dc75cB358380D2e3dE08A90
token + hook addresses above are pre-deployment predictions derived from the deployer nonce — they will be the live values if the deployer broadcasts the deploy transactions in sequence with no intervening txs. once deployed, set TOKEN_ADDRESS and HOOK_ADDRESS in the site's server env to override these constants. nft is the same address as token — pieces live inside the token contract.
trade on-chain. read it on-chain.