Roadmap: everything a complete chain needs
Status legend: [x] done and tested, [~] in progress, [ ] not started.
Phase 1 — Consensus core (consensus)
- Specification (docs/SPEC.md)
- Canonical encoding, tagged hashes, checked money arithmetic
- Header, transaction, block structures and strict decoders
- Merkle tree (promote-odd, domain separated)
- Argon2id proof of work, canonical compact targets; mainnet floor 2^18 hashes
- ASERT difficulty, median time past
- Sighash, Schnorr verification, UTXO overlay with undo
- Transaction and block validation (stateless + stateful)
- Test suite covering every rule and every Bitcoin-pitfall row in SPEC §9
- Genesis blocks mined for mainnet/testnet/regtest (
cmd/genesis,-timefor launch) - Fuzz tests for every decoder
- Benchmark Argon2id parameters on phones; freeze memory size
- Reuse Argon2id working memory per thread (the stock library allocates 8 MiB per hash); measure throughput per thread count and pick the default
Phase 1b — Assets (consensus, 2026-10-26)
- Version-2 transactions: 32-byte asset id per output, at most one issuance per transaction signed by the issuer key, per-asset conservation, ARG-only fees and coinbase, version-1 software cannot spend asset coins (SPEC §3.5). Existing blocks and genesis unchanged. Tests: issue, transfer, over-spend, burn, wrong issuer, coinbase misuse, encoding and sighash separation; coin storage round trip
- Wallet, explorer and app support for holding and showing assets per id (today they ignore asset outputs and only count ARG)
- uARG issuance and redemption by the bridge guardians (docs/TOKENS.md)
Phase 2 — Full node (chain, mempool, p2p, rpc, cmd/argonmined)
- Block index + chain state on LevelDB; O(1) main-chain height index; tx index
- Reorgs with undo data, fork choice by work, rollback of invalid branches, header-only side chains with on-demand bodies
- Storage errors separated from consensus verdicts
- Headers-first sync, bounded in-flight downloads, request timeouts, parked blocks, orphan cache with PoW check and expiry
- Eclipse resistance: unverified height claims dropped, announcements fetched during sync, per-IP inbound cap, routable-only gossip with "tried" preference
- P2P wire protocol with raw block relay, byte-bounded send queues, forward-compatible unknown messages
- DNS seeds + hardcoded seeds (lists empty until the domain exists)
- Mempool: fee-before-signature ordering, RBF by fee rate, replacement caps, reject cache, amortised eviction
- JSON-RPC with token auth; spent-output details on every input
- Node binary, regtest end-to-end tests, two-node testnet smoke tests
- Compact block relay / bandwidth optimisations
- Encrypted P2P transport
- Re-add transactions from disconnected blocks to the mempool on reorg
Phase 3 — Wallet (wallet, cmd/argonmine-wallet)
- bech32m addresses, BIP-39/32 keys, encrypted store (Argon2id + XChaCha20-Poly1305)
- UTXO tracking via node RPC, reorg-safe rescan, coin selection, exact fees, change, single and multi-recipient sends
- History, pending-spend locks, restore with lookahead, command-line wallet
- Watch mempool for incoming unconfirmed payments
- Labels, CSV export, multiple accounts
Phase 4 — Mining (miner, workclient, apps)
- Solo miner on the node; block assembly from a remote template
- Solo work protocol for miners without a node (
workclient/, served by the explorer at/api/work): block templates paying the miner's own address, solved blocks submitted straight to the node. Pool mining was removed on 2026-10-26 by product decision; the pool code is kept under_attic/ - Mining app
cmd/argonmine-app: node + wallet + solo miner, persisted settings, autostart, local web interface - Shared design system (
ui/) across the apps and the explorer: light/dark, tabular numerals, icons, charts, empty/loading/error states - Per-user installers with shortcuts (Windows, macOS, Linux) and cross-platform release packaging with checksums
- Native window shell / signed installers (code signing certificates needed)
- Android APK (needs Android Studio; the Go core already cross-compiles)
- Battery/thermal-aware throttling on mobile
Phase 5 — Ecosystem and launch
- Block explorer with address index, search, four charts (hashrate, difficulty, block interval, supply), latest blocks and transactions, block pages with per-transaction fees, target and work, transaction pages with fee rate and decoded memos, address pages with QR code, mined-block count, first and last seen and paging, mempool, API page. The rich list was removed by decision
- Browser miner runs in a Web Worker and yields to the event loop, so the app never freezes while hashing
- Every page of the app, explorer, docs and bridge verified at 390px with an automated overflow check; app screens use real paths (/mine, /wallet, /history, /settings)
- Referrals: invite links (
?ref=), referral share paid inside the coinbase by the work server (default 5%, operator flag), referral rewards flagged by the explorer index and shown in the app and explorer - App redesign (third pass): onboarding screen, balance card with Receive, Send and Mine, Assets and Activity tabs, mining screen with one control and live chart, grouped history with filters and totals, grouped settings with a profile header, bottom tab bar on phones
- Website (
cmd/argonmine-web): landing with product visual and live network figures, rendered docs, static export; responsive from 320px up, no decorative status indicators anywhere in the stack. No public downloads page by decision (unsigned binaries trigger OS warnings; release archives stay for node operators) - Browser app on its own host (
-app https://app.domain.com -site https://domain.com) with the same shell as the desktop app: Mine, Wallet (balance, maturing, blocks mined, receive), History (from the explorer address API), Settings, and sidebar links to docs, explorer and bridge. The landing page was removed by decision;/redirects to the app and/docsstays - Explorer
GET /api/address/{address}: balance, spendable, maturing, totals and history with a coinbase flag (index format 2, rebuilt automatically) - Desktop app sidebar links to docs, explorer and bridge (
-docs-url,-explorer-url,-bridge-url) - Browser wallet (2026-10-27): package
litewallet(one key, the first receive key; pure functions that build, check and sign payments and swap quotes; the 24 words sealed under the password with Argon2id and XChaCha20-Poly1305, bound to the address) built into the WebAssembly worker, which keeps the unlocked key and locks itself after 15 idle minutes. The app: create with password, restore from 24 words, add the words to an address-only wallet, Send ARG, uARG and wARG, Swap between ARG, wARG and uARG through the swap service (the same quote check as the other wallets,swap/quote), Swap out to USDC or USDT through the payout's swap address (computed in the worker,swapaddr, compared with the bridge's), Swap in by connecting an EVM wallet or by deposit address, a fee paid by the smallest swap to ARG when a wallet holds no ARG, show the words again after the password, lock now, payments waiting for a block in Activity. Explorer: coin index per address (format 5, undone on reorg),GET /api/utxos/{address}with the mempool's view,POST /api/txrefusing replacements. Tested against a node (every payment kind accepted, previews equal to the signed payment), against the real maker (every pair), and in a browser on regtest. The phone-to-desktop hand-off code is no longer used by the app - Browser miner (WebAssembly solo miner,
cmd/argonmine-webminer) - First-time flow on the mine page: create a wallet in the browser (24-word phrase shown once, same derivation path as the desktop app, only the address is kept) or paste an address
- Federated bridge, first version (ARG out to an EVM chain as wrapped ARG): retired on 2026-10-26 by decision, code kept in
_attic/ - Inbound bridge (2026-10-26): Vault contract (USDC in, threshold-signed release; 7/7 Foundry tests), guardian daemon that issues uARG through the consensus asset layer with MuSig2 n-of-n signing and pays out burns with threshold ECDSA, swap-style bridge page with a browser-wallet deposit flow and a redeem memo, Go end-to-end test (deposit → issue → confirm → burn → release) and a live run on anvil
- uARG in the wallets (2026-10-26): the wallet package tracks asset coins separately from ARG (per-asset balances, history with net asset movements,
SendAsset,BurnAssetwith memo; fees always in ARG); the explorer indexes assets (format 3: per-address holdings, asset registry with supply,/asset/{id}pages,/api/addressassets and history deltas,/api/asset,/api/assets); the desktop app has an Assets card, a coin selector in Send and a "Redeem uARG for USDC" form; the CLI wallet hasassets,send-assetandredeem; the browser app lists held assets and labels asset movements in Activity (read-only, as spending from the browser is not built) - Wallet backup check (2026-10-26): after a new wallet shows its 24 words, four words at random positions must be typed back before the wallet is used (desktop and browser apps). In the desktop app the phrase can be shown again from Wallet, Backup and security, after confirming the password; it hides itself after two minutes. The browser app never stores the phrase, so it offers "Verify your recovery phrase" instead of a reveal
- Bridge on Railway, prepared (2026-10-26):
bridgerole in the Railway image, three guardian services with volumes and variables, Sepolia deployment script and a test-USDC faucet button on the page (-token-mint). Waiting on the one human step: Sepolia ETH for the leader's address, then contract deployment andrailway up(deploy/railway/README.md) - Bridge live on Ethereum Sepolia (2026-10-26): contracts deployed from the leader's key, guardians on Railway, first deposit issued and confirmed on the public testnet
- Multi-chain, multi-token bridge (2026-10-26): one multi-token vault per EVM chain holding USDC and USDT (USDT-tolerant transfers, 20 Foundry tests), guardian daemon configured by a chains document (
-chains), per-chain scanning and gas errors, cross-chain batched issuance, BRG2 redemption memo naming chain and token, amount math in 8-decimal units with per-token decimals, page with chain and token selectors and wallet network switching, desktop app and CLI redeem with chain and token;deploy/railway/bridge-chain.shdeploys a chain's contracts andchains.shbuilds the document - Bridge on four testnets (2026-10-26): Ethereum Sepolia, Base Sepolia, BNB Chain testnet (18-decimal USDT), Arbitrum Sepolia, each with its own fee vault, mock USDC and USDT, served by the same three guardians; Polygon Amoy waits for gas; mainnets with real USDC and USDT after the audit
- Bridge fee (2026-10-26): 1 percent on deposits and 1 percent on redemptions, enforced by the vault (
setFees, capped at 10 percent), kept as surplus above the obligations that back uARG; only the vault owner can withdraw surplus (withdrawSurplus); the daemon issues the net amount and shows fees, obligations and surplus per token; 33 Foundry tests - Bridge page redesign (2026-10-26): one trade card (chain and token chips, net amount with fee and timing, one button that steps through connect, switch, approve, deposit, confirmations), a Redeem view with the payout estimate and memo, and a details sheet with reserves (backing vs fees), recent activity, tracking and on-chain facts; zero overflow from 360px up
- P2P: a node announces its mempool to every newly connected peer, so a restarted node or a joining miner picks up unconfirmed transactions at once (2026-10-26; found when a restarted miner could not see the guardians' issuance)
- Docs and apps state plainly that a bare node earns nothing and that every desktop miner is a full node (FAQ, Overview, Mine screen)
- Phone-to-desktop hand-off (2026-10-26): the browser app's Send button prepares a uARG transfer to an Argonmine address or a redemption to USDC/USDT on a chosen chain, shows a review, and gets a six-digit code from the bridge (
/api/handoff, 15 minutes, nothing secret); the desktop app's Code from your phone field fills the Send or Redeem form and signs after the usual confirmation - Bridge progress in both wallets (2026-10-26): deposits to the wallet's addresses and the payouts of its own burns, with confirmation counts and explorer links (bridge
/api/deposits?to=,/api/redemptions?txids=, per-chainhead,l1_height); a live strip on the phone's balance card - Dialogs (2026-10-26): every payment is confirmed first; success and failure each get a clear result dialog with the transaction id or the reason and Try again; no browser alert or confirm boxes anywhere
- Bridge wallet connection (2026-10-26): installed wallets are discovered with EIP-6963 and offered in a chooser (the choice is remembered), wallet errors are reported by their code instead of a catch-all, and phones without a wallet get links that open the page in MetaMask, Trust Wallet or Coinbase Wallet; a balance line with 25/50/75 percent and All under the amount
- WalletConnect (QR pairing for mobile wallets from a desktop browser): needs a project id from WalletConnect Cloud
- Bridge: FROST threshold signing for releases (replace n-of-n), external audit of contract and daemon
- Seed-node deployment kit (Docker, compose, systemd, operations guide)
- Internal security review of consensus, chain, mempool and P2P: 15 findings, all fixed (docs/SECURITY-REVIEW.md)
- Review package and disclosure policy for an external audit firm (docs/SECURITY-REVIEW.md, SECURITY.md)
- Launch runbook (docs/LAUNCH.md) and brand/domain research (docs/BRAND.md)
- Name chosen (Argonmine, ARG, argonmine.com); HRP, binaries and user agents renamed
- Register argonmine.com and the companion domains (human step)
- Deploy at least three public seed nodes; fill in DNS and hardcoded seeds
- Public testnet with faucet
- External security audit (a human procurement step)
- Mainnet genesis mined for 2026-10-25 00:00 UTC (nonce 690531, hash e85ad1e8…3c985f); release 0.1.0 archives built for seven targets
- Release signing (code-signing certificates needed)
Later candidates (product decisions, see SPEC §12)
- Shorter block interval, larger blocks, privacy features, predicate-based smart contracts, light-client proofs.