Documentation

How NAKAMOTO works

Everything below is enforced by immutable contracts on Ethereum mainnet. The source is public — read it, verify it, don’t trust this page. View on GitHub

Overview

NAKAMOTO is a fixed-rule protocol: an ERC-20 token (NAKA) issued by an exponential bonding curve that lives inside an immutable Uniswap v4 hook. There is no team allocation, no pre-mine, no LP and no admin keys. The hook is the sole minter of the token and holds the ETH treasury; the swap router is a thin entry point that executes buys and sells through Uniswap’s PoolManager.

Two operations exist: buying mints new tokens on the curve and banks the ETH into the treasury; selling burns tokens and redeems a proportional share of that treasury. Nothing else is possible — adding liquidity to the pool reverts by design.

Architecture

Four contracts are involved. Your transaction always enters through the router; the PoolManager routes the swap into the hook, which does all the economic work — pricing on the curve, holding the treasury, minting and burning the token.

YouwalletSwapRouteronly entry pointPoolManagerUniswap v4 coreNakamotoHookbonding curveETH treasuryimmutableNakamotoTokenERC-20 NAKAbuy / sellunlock()swap callbackmint / burn
Every buy and sell follows this path. The hook is the only contract with mint/burn rights and the only holder of the ETH treasury.

Buying

A buy sends ETH through the router and receives freshly minted NAKA priced by the forward curve. The entry fee is 0%: every wei goes into the treasury. Each buy advances the monotonic counter totalMintedFair, which defines the current position on the curve. A single buy is capped at 5 ETH.

ETH inmax 5 ETHper buyTreasury100% banked0% entry feeForward curveminted(eth)advancesNAKA outfreshly mintedto your wallet
A buy has no fee: all ETH is banked, the curve position advances, and the newly minted NAKA is sent to the buyer.

Selling & exit fee

Sells are not priced by the curve. Instead, selling burns your tokens and redeems a pro-rata share of the ETH treasury:

gross = treasury × amountIn / totalSupply
Burn NAKAyour tokensGross redemptiontreasury × amt / supplyseller receives 95%treasury keeps 3%fee receiver gets 2%
95% seller3% retained in treasury2% fee receiver
Exit flow: burning tokens redeems a pro-rata share of the treasury, split three ways by the immutable fee schedule.

A 5% exit fee applies to the gross amount: 3% stays in the treasury (benefiting remaining holders) and 2% goes to the immutable fee receiver. The seller receives 95%. One exception: if a sell burns the entire circulating supply, the retained 3% is waived and the last burner receives 98%.

Burns never move the curve position — totalMintedFair only grows on buys. This means the marginal buy price never decreases, while the redemption value per token can only grow as fees accumulate.

Curve math

The issuance curve is exponential saturation toward the 21M cap:

minted(eth) = 21,000,000 × (1 − e^(−eth / 500))

Its inverse gives the implied ETH position for a minted total:

ethAt(total) = −500 × ln(1 − total / 21,000,000)

And the marginal price per token at any point:

price(eth) = 500 × e^(eth / 500) / 21,000,000
21,000,000 cap (asymptote)010.5M21M05001,0001,5002,0002,5003,000ETH banked in the curveS = 500 ETH → 63.2% minted
Issuance saturates exponentially: the first 500 ETH mints 63.2% of the cap, and near 3,000 ETH the curve is effectively exhausted.

All on-chain math uses UD60x18 fixed-point with floor rounding (implemented in lib/Curve.sol). The scale constant S = 500 ETH means the curve is effectively saturated near 6·S = 3,000 ETH.

Parameters

ParameterValueMeaning
K_SUPPLY21,000,000asymptotic supply cap
S500 ETHcurve scale; saturation near 3,000 ETH
ETH_CAP3,000 ETHself-deprecation threshold on implied curve ETH
MAX_BUY_WEI5 ETHper-buy cap
COOLDOWN_BLOCKS1blocks between your last buy and any sell
Entry fee0%buys bank full ETH into treasury
Exit fee5%3% retained in treasury + 2% to fee receiver
Last-burner fee2%retained 3% waived on full-supply exit
POOL_FEE3000 (0.3%)canonical pool tier; LP fee overridden to 0 on swaps
POOL_TICK_SPACING60canonical tick spacing

Guardrails

MAX_BUY_WEI = 5 ETH limits single-transaction curve jumps. COOLDOWN_BLOCKS = 1 requires at least one block between an address’s last buy and any sell, blocking atomic buy-sell loops. Exact-output swaps are unsupported; liquidity additions to the pool revert. The canonical pool is pinned on first initialization: ETH / NAKA, fee 3000, tick spacing 60, hooks = the NAKAMOTO hook.

Immutability

The token has no owner, pause switch, blacklist or upgrade path — the compile-time marker RESTRICTIONS_FORBIDDEN = true is burned into bytecode. The deployer’s only privilege was calling setMinter once to lock minting rights to the hook, which is now the sole mint/burn authority forever. The hook’s parameters, fee receiver and genesis references are immutables set at construction. The manifesto itself is stored on-chain and readable via philosophy().

Self-deprecation

When the implied curve position reaches ETH_CAP = 3,000 ETH, the hook latches selfDeprecated permanently: buys are disabled forever, while sells (treasury redemption) keep working until the last token is burned. The protocol is designed to end, not to be managed.

Genesisblock 25,395,743Activebuys mint on the curve,sells redeem the treasuryCap reached3,000 ETH banked —buys disabled foreverWind-downsells only, until thelast token is burned
The protocol has exactly one irreversible state transition — reaching the cap — after which it can only wind down.

Contracts

ParameterValueMeaning
NakamotoToken0x73a009551a3bc417DfC4638c825A899ab7F63964ERC-20 “nakamoto” (NAKA)
NakamotoHook0xfc163Bf159a37c786A9b3Aa75B4d20A77b646888curve, treasury, exit fees
NakamotoSwapRouter0xc379376c1D87e28294790BB56eB1fA8aCd8F769Dbuy/sell entry point
PoolManager0x000000000004444c5dc75cB358380D2e3dE08A90Uniswap v4 core
Fee receiver0xd06B87d1CC7986996c2Fd7afb4fDbB4f9d26ac12receives 2% of gross exits

Deployed at block 25,395,743. Verify each address on Etherscan or read the sources on GitHub.

Immutable contracts on Ethereum mainnet. This interface is a viewer — the protocol works without it. Not financial advice.