A second client
One codebase is one point of failure: a bug in it halts or forks every node at once. This page says what exists toward a second, independent implementation, and what one would need. Master Prompt 15 §3.
What exists
Section titled “What exists”- A written spec,
spec/, with rule IDs for encoding, transactions, the transfer state transition, the state root and the fee rules. - Conformance vectors,
spec/tests/, generated by a reference implementation (crates/spec-ref) that shares no code with the node. - An independent verifier,
spec/verifier-ts/verify.ts: TypeScript, its own BLAKE3, replays every vector and checks roots, ids, addresses and fees. It is a second opinion, not a node: it trusts each vector’s signature flag.
What a full second client needs
Section titled “What a full second client needs”| Area | Needed | Available to build from |
|---|---|---|
| Encoding | all wire versions (5–8), blocks, headers | spec/01, node code for 6–8 |
| Signatures | ML-DSA-65 and SLH-DSA-SHA2-128s from an independent library | FIPS 204/205 and their ACVP vectors |
| State | every state layer, not only accounts | spec/03 ROOT-5 is a gap: node code only |
| End-of-block passes | sealed swaps, trading, oracle, governance, invariant guard | node code only |
| VM | WASM execution with the same fuel metering | node code only; Pulley/Cranelift gas equality is tested |
| Consensus | today PoW + most-work; target DAG-BFT | spec/05 (gaps), crates/dag-bft |
| Networking | libp2p + Noise + ML-KEM handshake, gossip topics | spec/07 |
| Storage, sync | any; must reproduce roots | crates/state-sync protocol |
The honest gap: sections 3 (layers beyond accounts), 5 and the VM are specified by code today. A second team would be reading Rust, which is the failure mode a spec exists to avoid. Closing those spec gaps comes before funding a client, or the second client inherits the first one’s ambiguities.
Language and team
Section titled “Language and team”Go or TypeScript for the verifier path already started; a full node is more likely Go or C++ for performance. The team must not include people who wrote the first client’s consensus code, or both inherit the same misreadings.
Funding
Section titled “Funding”After launch, from the treasury by governance grant (crates/governance
proposal types): milestone-based, paid on vectors passing, with the
conformance suite as the acceptance test. Nothing is allocated today; no
treasury exists on any live network.