Skip to Content
Changelog

Changelog

Product updates and new capabilities. wharfnet is pre-1.0 and actively developed — the CLI and library surface may still change between releases.

Filter
July 24, 2026Core

Boot a subset of chains

  • wharfnet up and wharfnet compose now take chain selectors — a kind (evm) or a name (anvil-1), repeatable: wharfnet up evm solana boots just those, and only their images are pulled. -x/--exclude skips chains (up -x bitcoin,litecoin), and $WHARFNET_CHAINS sets a default selection for CI.
  • No selector still boots the whole topology, so the default is unchanged. Selectors reuse the same kind-or-name model as faucet/logs/chain control; unknown terms (or a selection that excludes everything) are rejected with the list of available chains.
July 23, 2026UTXO#32

Litecoin block explorer

  • Litecoin chains now boot an ltc-rpc-explorer by default (up --bare to skip), completing UTXO explorer parity with Bitcoin — a maintained Litecoin fork of btc-rpc-explorer with the same design (straight to litecoind over RPC, no indexer/DB). Its URL is advertised in the status/manifest.
  • The image is pinned by digest (the fork ships only a rolling latest tag) and is amd64-only, so it runs under linux/amd64 — emulated on arm64 hosts (slower to boot; up --bare skips it).
July 23, 2026zkSync#33

zkSync chain

  • A zkSync chain (zksync-1, :8011) now boots by default, running Matter Labs' [anvil-zksync](https://github.com/matter-labs/anvil-zksync) in-memory node (the EraVM analogue of Anvil) from a pinned image, at chain id 260. Selectable via kind = "zksync" in wharfnet.toml.
  • anvil-zksync funds the standard Anvil test-mnemonic accounts (10,000 ETH each), recorded in the manifest. Its image ships no cast, so chain control and the faucet drive the node over a dependency-free JSON-RPC client rather than exec-ing a CLI inside the container. zkSync chains are ephemeral for now — up --resume boots them fresh (persistence is planned).
July 23, 2026zkSync#33

zkSync faucet, chain control & forking

  • The unified faucet tops up native ETH additively via the anvil_setBalance cheat (decimal coins, or wei with --raw). There are no bundled test tokens yet — EraVM test tokens are planned — so --token accepts only ETH.
  • anvil-zksync implements the same evm_*/anvil_* cheats as Anvil, so wharfnet zksync mirrors the EVM verb set one-for-one — mine, increase-time, warp, impersonate, and snapshot/revert (which Starknet/Solana have no analogue for). Forking a live zkSync network is supported via fork_url + fork_block (anvil-zksync's fork subcommand).
July 20, 2026UTXO#21

Bitcoin & Litecoin chains

  • Bitcoin (bitcoin-1, :18443) and Litecoin (litecoin-1, :19443) now boot by default, each running its Core daemon in regtest from a pinned image (bitcoin/bitcoin:29, uphold/litecoin-core:0.21). Litecoin is a Bitcoin fork with an identical JSON-RPC, so both are served by one UtxoEngine; selectable via kind = "bitcoin" / "litecoin" in wharfnet.toml.
  • At boot each chain creates a wharfnet wallet and mines 101 blocks to it, so a coinbase matures and the address holds a spendable 50-coin balance — the UTXO analogue of the pre-funded EVM/Solana dev accounts. The RPC is published with fixed dev credentials (wharfnet:wharfnet) embedded in the manifest.
July 20, 2026UTXO#21

Bitcoin & Litecoin faucet & chain control

  • The unified faucet funds native coin from the boot wallet and mines one block to confirm; --raw treats the amount as satoshis. UTXO chains carry no test tokens, so only the native coin (BTC/LTC) is funded.
  • wharfnet bitcoin mine <n> / wharfnet litecoin mine <n> produce blocks on demand (regtest generatetoaddress). Regtest is standalone, so there is no time-travel, snapshot, or forking analogue — fork_url is rejected on load.
July 20, 2026UTXO#21

Bitcoin & Litecoin persistence & explorer

  • up --resume bind-mounts a per-chain datadir under .wharfnet/state/, so the whole chain (blocks, wallets, faucet sends) survives downup --resume; up --reset wipes it, and a plain up stays ephemeral.
  • Bitcoin chains boot a btc-rpc-explorer by default (up --bare to skip) — the UTXO analogue of Otterscan, talking straight to bitcoind over RPC with no indexer. A Litecoin explorer is planned (the published image is Bitcoin-only).
July 18, 2026Core#26

`status --json` for CI and scripts

  • wharfnet status --json emits a stable JSON document instead of the formatted report: a top-level running flag, the project name, and a chains array carrying the exact manifest schema (RPC URLs, chain IDs, accounts, tokens).
  • When nothing is running the output is still valid JSON (running: false, empty chains), so a pipeline can branch on it without special-casing. The default human-readable output is unchanged.
July 16, 2026Solana#14

Solana WebSocket RPC

  • surfpool's WebSocket endpoint is now published on the HTTP RPC port + 1 (solana-1ws://127.0.0.1:8900), so subscriptions (slotSubscribe, logsSubscribe) and confirmTransaction work from the host.
  • Advertised via a new ws field in the status/manifest; clients like @solana/web3.js derive the URL automatically.
July 16, 2026Solana#14

Solana block explorer

  • Every Solana chain now serves surfpool's built-in Studio UI, on by default and skipped by up --bare, published on the chain's RPC port + 10000 (solana-1http://127.0.0.1:18899).
July 12, 2026Solana#14

Solana persistence

  • up --resume / up --reset now cover Solana chains, each persisting to its own session-<chain>.sqlite surfnet database via surfpool’s --db.
  • A resumed chain detects the SPL test tokens are already present and skips re-seeding, so it never clobbers your balances.
July 12, 2026Solana#14

Solana forking

  • fork_url now works on Solana chains, booting them as a copy-on-read fork of a live network via surfpool’s --rpc-url. fork_block is unsupported (surfpool has no fork-at-slot flag) and is rejected on load.
July 12, 2026Solana#14

Solana faucet

  • The unified faucet command funds Solana addresses: native SOL through requestAirdrop, and the SPL test tokens through surfpool’s surfnet_setTokenAccount cheat (the recipient needs no key). Additive, with --raw for exact base units.
July 12, 2026Solana#14

Solana test tokens

  • Every Solana chain boots with standard SPL test tokens (USDC, WBTC) at fixed mint addresses, seeded onto the dev accounts via cheatcodes the moment the RPC is live — no program to deploy.
July 12, 2026Solana#14

Solana chain control

  • wharfnet solana mine | increase-time | warp | pause-clock | resume-clock wrap surfpool’s surfnet_* cheat RPC. mine advances slots, warp is forward-only, and pause-clock/resume-clock give step-by-step slot control.
July 12, 2026Solana#14

Solana chains

  • A surfpool chain (solana-1, :8899) now boots by default alongside the EVM and Starknet chains, with three deterministic dev accounts funded with 10,000 SOL each. Selectable via kind = "solana" in wharfnet.toml.
July 11, 2026Core#13

Faster multi-chain boot

  • up now health-checks every chain concurrently, so boot waits on the slowest chain rather than the sum of them.
July 11, 2026Core#13

Fractional & raw faucet amounts

  • faucet <chain> <address> <amount> takes a decimal amount (e.g. 1.5), scaled by the token’s decimals. Pass --raw to fund an exact base-unit integer.
July 11, 2026Core#13

`logs` command

  • wharfnet logs [chain] [--follow] streams container logs through docker compose logs — all services, or filtered by chain kind or name.
July 10, 2026Starknet#11

Starknet chains

  • A starknet-devnet chain (starknet-1, :5050) boots by default with deterministic predeployed accounts, the ETH/STRK fee tokens, and baked Cairo test tokens (USDC, WBTC, FEE, REB) at fixed addresses.
July 10, 2026Starknet#11

Starknet faucet, forking & control

  • The unified faucet funds ETH/STRK and the Cairo test tokens via signed invokes on JSON-RPC 0.10.
  • fork_url/fork_block mirror a live Starknet network; wharfnet starknet mine | increase-time | warp | impersonate drive a running chain.
July 10, 2026Starknet#11

Starknet persistence & explorer

  • up --resume / up --reset cover Starknet chains via a per-chain replay log.
  • starknet-devnet's built-in web UI explorer is served in-process at /ui on the chain's RPC port, on by default.
July 8, 2026EVM

Mainnet forking

  • Point a chain at a live RPC with fork_url (and optional fork_block) in wharfnet.toml and it boots as a fork via Anvil’s --fork-url. ${VAR} keys are expanded from the environment and never recorded.
July 8, 2026EVM

Canonical contracts & weird tokens

  • Every EVM chain boots with Multicall3, Permit2, and the CREATE2 deployer at their real addresses, plus deliberately non-standard test tokens — fee-on-transfer (FEE), rebasing (REB), and no-return (NRT) — for integration testing.
July 8, 2026EVM

EVM chain control & block explorer

  • wharfnet evm mine | increase-time | warp | impersonate | snapshot | revert wrap Anvil’s cheat RPCs.
  • An Otterscan explorer boots per EVM chain by default (up --bare to skip) — no indexer, thanks to Anvil’s native ots_* API.
July 8, 2026Core

Config file & persistent state

  • wharfnet.toml customises the chain topology (name, port, chain_id, block_time); override the path with --config or WHARFNET_CONFIG.
  • up --resume / up --reset keep or wipe balances, txs, and deployments across down.
July 7, 2026EVM

Faucet & pre-deployed test tokens

  • USDC and WBTC deploy at fixed addresses on every EVM chain, each with a public mint.
  • faucet <chain> <address> [amount] [--token SYMBOL] funds native ETH plus every token, or just one, with no private key.
July 7, 2026EVM

First & second EVM chains

  • up boots a local Anvil chain (anvil-1, :8545, chainId 31337) via Docker Compose and writes an endpoints manifest, with a second chain (anvil-2, :8546) for cross-chain tests.
June 24, 2026Core

CLI scaffold

  • The Rust/clap command surface (up, down, status, compose, faucet) that everything else builds on.
Last updated on