hold kuro, earn weth.
kuro is an erc-20 issued through a bonding-curve hook. you buy from the curve, you sell back to the curve, and 3% of every trade gets routed to whoever's holding kuro at the time, paid in weth. there's no presale, no team allocation and no operator. the contract is locked at deploy and runs on its own.
// curve
price of the next kuro is p(eth) = (S/K) · e^(eth/S) with
S = 500 ether and K = 21,000,000. cumulative
minted supply is the integral, K · (1 − e^(−eth/S)), which
approaches K but never reaches it.
// how it works
issuance is one contract. when weth arrives, the hook mints kuro per the curve and keeps the weth as reserves. when kuro is burned back, the hook returns weth from those reserves at the inverse curve price. the hook is the only minter and the only burner, set at deploy and locked there forever.
a 3% fee is taken on every buy and every sell. it's added to a
cumulative yield index and split across every wallet holding kuro at
the time, weighted by balance. you call claim() when you
want to collect, and it pays out in weth.
three constraints keep the curve hard to game. a single buy is capped at 5 ether, so nobody can vacuum a meaningful share of supply in one transaction. selling in the same block as your last buy reverts, which makes flash-loan arbitrage uneconomic. and because the curve is flat early on by design, the first hundred ether of cumulative buys move the price by less than 25%, meaning early buyers pay nearly the same price as one another. only as the curve approaches the asymptote does the price spike.
when 99% of K has been minted, selfDeprecated flips on
chain and locks. from that point forward kuro can't mint another
token, even if everyone involved wanted it to. issuance ends. the
token doesn't. sells keep working as long as there are reserves, and
holders keep collecting weth from any trade that still hits the curve.
we did not pre-mint and we hold no kuro allocation. the contract is
renounced at launch — no admin, no pause, no parameter changes, no
upgrade path, no migration. you can verify on etherscan that
owner() on both the token and the hook returns the zero
address. once renounced, there is nothing left to extract from the
hook except by selling kuro back through the inverse curve like
anyone else. if everyone who shipped this disappeared tonight, the
contract would run tomorrow against the same rules and the same
prices.
numbers
- asymptote: K = 21,000,000 kuro
- scale: S = 500 ether
- fee: 3% on each side, distributed as weth yield to holders
- buy cap: 5 ether per tx
- sell guard: same-block sell after a buy reverts
- self-deprecates at 99% of K minted
- v4 hook flag bits:
0x88(beforeSwap + beforeSwapReturnsDelta)
// trade
buy kuro
spend weth, mint kuro along the curve. cap is 5 ether per tx.
sell kuro
burn kuro, get weth back at the inverse curve price.
// claim weth
// contracts
kuro token
-
curve hook
-