Proof-of-Work,
Work is verified. Trust is not required.
21M cap · R₀ = 50 ANVL · H = 210,000 · fee = $0.10 · PI + NCT · dev premine = ∅
scripts/check-supply-math.py verifies the supply identity.
Mining + Protocol LP
Miner rewards are emitted by on-chain PoW, while 10% of each miner reward is minted to protocol-owned liquidity inside the same 21,000,000 ANVL cap. No dev premine, no VC tranche.
Zero Backend
This site is static. The CLI talks directly to your chosen RPC. Nothing else is operated — because there is nothing else.
$0.10 Native Fee
Every mine() attaches a $0.10 fee as msg.value.
Half goes to the immutable dev recipient; half accumulates for
protocol-owned ANVL/WETH liquidity.
PI + NCT Controller
Proportional-Integral timing control combined with the Nakamoto Coefficient Throttle — difficulty tightens when mining centralises. Decentralisation is a built-in equilibrium, not a social norm.
Cascade Keccak-256
Two-pass hash binds each puzzle to live on-chain epoch entropy. Precomputing nonces for a future epoch is structurally impossible — the required value doesn't exist until the previous epoch closes.
Self-Sovereign
No pool, no registry, no telemetry. One wallet, one GPU, your RPC. Each challenge is unique per miner — reordering txs earns attackers nothing.
Keccak-Cascade PoW
The puzzle for epoch n incorporates epoch_entropy —
derived from the block hash of epoch n−1's confirmed transaction.
Since this value is unknowable until n−1 closes on-chain, nonce
precomputation and rainbow tables are structurally impossible,
not just computationally expensive.
κ = keccak256( keccak256(inner ∥ ν) ∥ ε[n] ) ε[n] = H( bn−1 ∥ D[n] ) Nakamoto Coefficient Throttle
A 256-epoch rolling window tracks distinct active miners. When mining centralises — fewer unique addresses producing the same share of work — difficulty tightens automatically. Decentralisation is not enforced by social consensus; it is the Nash equilibrium.
unct = min( 0.1·(256/Cu − 1), 0.3 ) ≥ 0 minimised (= 0) when Cu = 256 (full distribution) Epoch-Native Schedule
All emission and halving parameters are expressed in confirmed
mine() calls — epochs. There are no calendar dates,
block time assumptions, or month projections anywhere in the
protocol. The next halving is "at epoch 210,000", full stop.
R(n) = R₀ · 2−⌊n/H⌋ Sseed + ∑(R + 0.1R) ≤ 21,000,000 ANVL ∑
Miner-only baseline: H × R₀ × 2 ≈ 21,000,000 ANVL.
Actual supply also includes 1 ANVL seed LP and 0.1R(n) POL reserve mints,
all capped by MAX_SUPPLY.
# 1. Clone + build from source
git clone https://github.com/anvil256xyz/anvil256.git
cd anvil256
# 2. Build kernel: default GPU, or CPU fallback
cd kernel
make # NVIDIA CUDA default
# make cpu # CPU-only fallback
cd ../cli
cargo build --release --locked
# 3. Configure
cp .env.example .env
# set BASE_RPC_URL, PRIVATE_KEY, ANVIL256_ADDRESS in .env
# 4. Run
./target/release/anvil256-cli
INFO Anvil256 CLI ready signer=0x... chain=base epoch=0
INFO epoch_entropy fetched entropy=0x00003f... epoch=0
INFO GPU bound index=0 name=NVIDIA RTX 4060 Ti cascade=true
INFO found nonce=0x... reward=50.0 ANVL fee=$0.10 tx=0xabc...