Skip to content

Bonding curve ​

Each launch trades against its own HanokCurve, a constant-product market with a virtual quote reserve. The virtual reserve sets the opening price without anyone depositing ETH up front; it is counted for pricing but never withdrawable.

Pricing ​

Let V be the virtual reserve, q the real ETH collected so far, T the curve's token balance and x the ETH that reaches the curve after fees.

tokensOut = T · x / (V + q + x)

The marginal price is (V + q) / T. Large buys move the price more than small ones, exactly like any pool with limited liquidity.

Default config ​

Launch configs are append-only and immutable. The default testnet config:

ParameterValue
Supply1,000,000,000 tokens
Virtual reserve V0.005 ETH
Graduation target G0.02 ETH of real ETH collected
Reserved for the poolS · V / (V + G) = 20% of supply
Pool tick spacing60
Opening priceV / S = 0.000000000005 ETH per token
Market cap at graduation(V + G)² / V = 0.125 ETH

Reserving S · V / (V + G) tokens is not a separate parameter: it is exactly the token balance at which the curve has collected G, so the ETH target and the token allocation are the same point. That is what makes every graduation identical.

Fees on the curve ​

Fees are charged on the ETH leg in both directions:

  • Buys: the platform fee, the creator tax and any snipe tax come off the ETH input before the curve prices the trade.
  • Sells: the trade is priced first and the platform fee and creator tax come off the ETH output. Sells never pay snipe tax.

See fees for the rates and where each part goes.

Partial fills near graduation ​

A buy that would take the curve past its reserved allocation is not rejected. It is filled up to the allocation, charged only for what it received, and the rest of the ETH is refunded in the same transaction. This matters for the buy that finishes a launch: otherwise anyone could block graduation by slipping a tiny purchase in first.

Because a fill can shrink, minTokensOut bounds the rate, not the quantity. The curve checks that the price you received is no worse than the price implied by your own arguments, so a clamped fill that honours your rate still succeeds.

Selling after sell-out ​

Once the curve sells out it is holding exactly the pool's seed, so sells are closed until graduation completes (normally the same transaction). If graduation cannot complete for seven full days, sells reopen on the curve so no holder is ever trapped. See graduation.

On-chain quotes ​

Unlike many launchpads, the curve exposes exact quotes you can call directly:

solidity
function quoteBuy(uint256 quoteIn, address recipient)
    external view returns (uint256 tokensOut, uint256 quoteSpent, uint256 fee, uint256 tax);

function quoteSell(uint256 tokensIn)
    external view returns (uint256 quoteOut, uint256 fee, uint256 tax);

quoteBuy is keyed on the recipient so the snipe tax exemption of that wallet is applied. See trading and quotes.

Hanok is unaudited testnet software. Tokens can lose all value.