Network
3 nodes in the set
snapshot() call against the registry rather than a number we typed in. What is in that set today is a demo: three nodes on one machine, staked and paid for real, with loopback endpoints nobody else can route to. Read the endpoints in the table and you can see that for yourself — which is the point of putting the set on chain. A public fleet is a separate thing, and it does not exist yet.Chain 46630, test value only: the spend circuit's trusted setup is reproducible, so anyone can forge a proof against this pool.
Read off chain
Active nodes
3
Keys ever registered
3
Minimum bond
0.0010 ETH
Notes in the pool
4
Epoch
497340
Epoch length
3600 s
Fee denomination
0.0010 ETH
Epoch seed
not recorded yet
| Key | Endpoint | Bond | Operator |
|---|---|---|---|
| 0xf71c77c4…052624 | 127.0.0.1:9000 | 0.0010 ETH | 0xEd166cCc…eD75CA |
| 0xd4beb37e…4b505a | 127.0.0.1:9001 | 0.0010 ETH | 0x628067fF…D6EB22 |
| 0xc00770c2…341840 | 127.0.0.1:9002 | 0.0010 ETH | 0x4fD9fA13…5C61d4 |
Which layer a node lands in is not listed, and not the registry's to decide: every client derives it from the epoch seed and the node's key. Each bond was staked by its own operator, and each of those operators has been paid out of the fee pool by a spend whose payer the chain does not name — mixnet/scripts/testnet-round.sh is the round that did it.
Layers
| Layer | Role | Learns |
|---|---|---|
| Entry | Accepts client packets | Your address |
| Relay | Breaks the entry–exit link | Neither end of the path |
| Exit | Delivers to the destination | The destination and the payload |
Protocol parameters
Packet size
32768 bytes
Identical on every link
Hops per path
3
One node drawn per layer
Mean delay per hop
50 ms
Exponential, chosen by the client
Reply blocks
Single use
Return path independent of the forward path
Replay window
Per node, in memory
Cleared on restart
Layer assignment
Hash of epoch seed and node key
Every client derives the same one
Topology
What has to exist before this set is a network
- Operators who are not us. The registry holds each one's key, endpoint, and bond, so the list is not ours to edit — but three keys we staked from one machine buy no anonymity, whatever the contract says.
- A reason to run a node. The shielded fee pool now pays the operators of a route without naming the payer, but on a trusted setup anyone can reproduce — auditable, and unsafe for real money until a multi-party ceremony replaces it.
- Slashing driven by evidence rather than by an arbiter address, so a node that drops packets or ignores the delay it was handed loses money on proof rather than on judgement.
- Loop probes reported by independent clients, which is the only honest way to measure whether a node is mixing rather than forwarding straight through.
Treat the protocol parameters as constants, not measurements — only the on-chain figures are read live. The measured ones live in the benchmarks.