Generate a keypair in your browser, fund it from the faucet, then scan and send. Seed stays on this device.
Testnet wallet
Generate a keypair in your browser, fund it from the public faucet, then scan and send. Seed never leaves this device.
Chain age
23h 27m 43s
since launch 2026-07-14T03:01:02Z
Tip height
…
Tip id
…
User transactions
…
Validators
…
Mempool
…
P2P peers / sessions
…
Last refreshed — · via observer proxy
Aggregate chain posture only — no addresses, amounts, or ring indices. Every dot below is a decoy candidate; the real spend is indistinguishable.
Ring-16 anonymity set
Which member is the real signer? The chain will not tell you.
Sampling ring shapes…
Uniform ring-16
Every spend hides among 16 ring members — consensus rejects smaller rings.
CLSAG only
Ring signatures without legacy LSAG in production binaries.
Stealth outputs
One-time addresses — no reusable account graph on-chain.
Encrypted amounts
Bulletproof range proofs; values are not transparent like Ethereum.
View tags (v2)
~256× faster wallet scan without revealing balances publicly.
MFER endowment proofs
Upload surplus range proofs bind permanence pricing without opening amounts.
Public economics and integrity signals — treasury totals, checkpoint digests, and storage anchors. Nothing here deanonymizes wallet users.
Treasury
…
Protocol-owned pool (fees + subsidies)
Fee → treasury
…
User fee share credited on-chain
Subsidy → treasury
…
Block subsidy tail split
Storage anchors
…
Permanence commitments on-chain
Mempool pending
…
Awaiting inclusion — ids only, no graph
Fraud contests
…
P2P-verified invalid-block challenges
P2P diversity
…
Distinct IPv4 /16 prefixes (observer mesh health)
Quorum stake
…
BFT finality threshold
Min replication
…
SPoRA permanence floor
Pin these values. Genesis JSON must be byte-identical to upstream mfn-node/testdata/public_devnet_v1.json.
Validator mesh P2P listen addresses only. Do not open HTTP to these ports. There is no published community read-RPC by default.
5.161.201.73:190015.161.201.73:190025.161.201.73:19003Static join path — works with zero backend. mfnd JSON-RPC is newline-delimited TCP; browsers need an HTTP proxy for live stats only.
Minimum join
Build and sync an observer. Seed nodes auto-dial from the manifest beside genesis; optional explicit dials below.
git clone https://github.com/shanecloonan/permawrite.git
cd permawrite
cargo build -p mfn-node --release --bin mfnd
cargo build -p mfn-cli --release --bin mfn-climfnd --data-dir ./observer-data \
--genesis mfn-node/testdata/public_devnet_v1.json \
--store fs \
--rpc-listen 127.0.0.1:18734 \
--p2p-listen 127.0.0.1:0 \
serve# optional: --p2p-dial 5.161.201.73:19001 # optional: --p2p-dial 5.161.201.73:19002 # optional: --p2p-dial 5.161.201.73:19003
mfn-cli --rpc 127.0.0.1:18734 status
mfn-cli --rpc 127.0.0.1:18734 tipExpect matching genesis_id and rising tip_height.
Browser or CLI
Prefer the testnet wallet at the top for faucet / balance / send. Or use the CLI against a local observer — keep the seed / wallet JSON private forever.
mfn-cli --rpc 127.0.0.1:18734 --wallet ./alice.json wallet new
mfn-cli --rpc 127.0.0.1:18734 --wallet ./alice.json wallet addressmfn-cli --rpc 127.0.0.1:18734 --wallet ./alice.json wallet scan
mfn-cli --rpc 127.0.0.1:18734 --wallet ./alice.json wallet balancemfn-cli --rpc 127.0.0.1:18734 --wallet ./alice.json wallet upload ./sample.txt --jsonOptional
Build mfn-storage-operator; point it at a synced local observer RPC. No validator keys required. Details in upstream OPERATORS.md.
Ring signatures, stealth outputs, and encrypted amounts mean this is not a transparent ledger. This page shows chain-wide pulse only: tip cadence, aggregate tx shapes, treasury, permanence anchors, and checkpoint digests. It never surfaces balances by address, ring indices, or decrypted amounts.