--key ed25519://<seed>
Inspect the statements and compare to the pinned digests above
cat mynode.anchor.txt
Reconcile against a published anchor (example with boot1)
julian node reconcile ./logs/mynode boot1.anchor.txt 2
julian node reconcile ./logs/boot1 boot2.anchor.txt 2 julian node reconcile ./logs/boot2 boot1.anchor.txt 2
Interactive proof techniques underpin cutting-edge cryptographic protocols and blockchain consensus. This crate distills those advanced concepts into a standalone laboratory for experimentation, formal verification, and pedagogy. It emulates the essential features of the sum-check protocol, exhibits a rudimentary Byzantine consensus mechanism, and now powers the JULIAN Protocol—a proof-transparent ledger that anchors folding transcripts into verifiable consensus states.
-
Finite Field Arithmetic: A lean yet robust implementation of arithmetic modulo a prime, essential for homomorphic operations and algebraic proofs.
-
Sum-Check Protocol Demo: Illustrates how a prover can succinctly certify a polynomial’s evaluation over a Boolean hypercube, while the verifier checks integrity with negligible soundness error.
-
Deterministic PRNG: A compact linear-congruential generator serving as a deterministic source of challenge derivation, thereby eliminating external entropy dependencies.
-
Generalized Multilinear Sum-Check: The
MultilinearPolynomial,Transcript, andGeneralSumClaimtypes enable non-interactive proofs for arbitrary multilinear polynomials—still without any external crates. -
Transcript & Chaining Toolkit: Capture Fiat–Shamir challenges, per-round sums, and final evaluations, then chain proofs together or feed them directly into the ALIEN ledger scaffold for deterministic auditing.
-
Streaming Proof Generation: Build massive sum-checks via streaming evaluators (no full hypercube allocation), with per-round timing exported by the benchmarking CLI.
-
Ledger Transcript Logging with Integrity Hashes: Persist proofs as ASCII dossiers tagged with built-in hash digests so transcripts remain self-authenticating without external crates. Ledger anchors are append-only commitments to those transcripts; a ledger state is valid iff every anchor agrees on the statement string and ordered hash list.
-
Quorum Finality for the JULIAN Protocol:
reconcile_anchors_with_quorumformalises finality: once ≥ q nodes publish matching anchors, the JULIAN ledger state is final. Divergent anchors are immediately pinpointed by re-runningverify_logs. -
Consensus Primitive: Demonstrates quorum-based agreement logic reflective of Byzantine fault tolerance in distributed systems.
-
ALIEN Ledger Blueprint: A scaffold for integrating proofs, consensus, and randomness into a unified verification ledger, pointing toward PSPACE-level expressive power and quantum-assisted extensions.
The julian binary exposes both local ledger tooling and the optional JROC-NET networking stack.
These commands are always available and require only the standard library:
julian node run <node_id> <log_dir> <output>– recomputes transcript hashes from<log_dir>, prepends the JULIAN genesis anchor, and writes a machine-readable anchor file.julian node anchor <log_dir>– prints a formatted ledger anchor derived from the logs.julian node reconcile <log_dir> <peer_anchor> <quorum>– recomputes the local anchor, loads a peer’s anchor file, and checks quorum finality.
End-to-end anchor example (after running cargo run --example hash_pipeline):
# Prepare node log directories.
# Produce anchors and reach quorum.
The networking subcommands pull in optional dependencies (libp2p, ed25519-dalek, tokio). Build with the feature enabled:
# or, for local runs
Supported commands:
julian net start --node-id <id> --log-dir <path> --listen <multiaddr> --bootstrap <multiaddr>... --broadcast-interval <ms> --quorum <q> [--key <spec>]--keyacceptsed25519://deterministic-seed, or a path to raw/hex/base64 secret key bytes; omitted ⇒ fresh key.--identityloads an encrypted identity file (XOR of the secret key withSHA-512(passphrase)); the CLI prompts for the passphrase.--metrics [:port]exposes Prometheus metrics (defaults to0.0.0.0:<port>when prefixed with a colon).
julian net anchor --log-dir <path> [--node-id <id>] [--quorum <q>]emits a machine-readable JSON anchor.julian net verify-envelope --file <path> --log-dir <path> [--quorum <q>]validates a signed envelope, decodes the anchor payload, and performs the quorum check against local logs.
Example session with two local nodes and deterministic keys:
# Terminal 1 – nodeA
# Terminal 2 – nodeB
Each node recomputes anchors from its log directory, signs them, broadcasts envelopes over Gossipsub, and logs finality events once the quorum predicate succeeds.
Run scripts/smoke_net.sh to exercise the two-node quorum workflow locally; the script boots nodes on ports 7211/7212, waits for signed anchor broadcasts, confirms finality, and exits non-zero on failure.
Validation steps: ensure the schema matches, base64-decode the payload, verify the ed25519 signature, parse the embedded anchor JSON, then reconcile with the local ledger.
-
Topics & networking
- Gossip topics:
jrocnet/anchors/v1, optionaljrocnet/ping/v1,jrocnet/peers/v1. - Bootstrap multiaddrs:
/ip4/<BOOT>/tcp/7001/p2p/<PEER_ID>defined per public node.
- Gossip topics:
-
Anchor schema – Machine-readable anchors follow
jrocnet.anchor.v1as shown above. -
Signed envelopes –
jrocnet.envelope.v1ensures tamper-evident broadcasts (ed25519 signatures over the raw anchor JSON). -
CLI flags –
julian net startaccepts--bootstrap,--key,--broadcast-interval,--quorum, mirroring the launch playbook;julian net anchor/verify-envelopecover audit tooling. -
Libp2p behaviour – TCP + Noise + Yamux transports, Gossipsub for anchor gossip, Kademlia for peer discovery, Identify for metadata.
-
Security hygiene – Message-id cache (SHA256 payload hash), strict validation, per-topic rate limiting, and schema/network checks before reconciliation.
-
Observability – Console summaries plus the optional
--metricsPrometheus endpoint exportinganchors_received_total,anchors_verified_total,invalid_envelopes_total,lrucache_evictions_total,finality_events_total, andgossipsub_rejects_total.- Import
contrib/grafana/jroc_net_dashboard.jsoninto Grafana for a starter dashboard.
- Import
-
Launch playbook – Run at least two bootstrap nodes, publish their multiaddrs, then let community nodes join via:
Bootstrap multiaddrs (A2 testnet reference):
/dns4/boot1.jrocnet.com/tcp/7001/p2p/12D3KooWLASw1JVBdDFNATYDJMbAn69CeWieTBLxAKaN9eLEkh3q/dns4/boot2.jrocnet.com/tcp/7002/p2p/12D3KooWRLM7PJrtjRM6NZPX8vmdu4YGJa9D6aPoEnLcE1o6aKCd
The testnet keeps every transcript, proof, and anchor transparent so auditors can replay history end-to-end.
use ;
let field = new;
let claim = prove_demo;
assert!;
Run the executable variant to see the non-interactive sum-check in action:
The program exits with a non-zero status if verification ever fails, making it easy to embed inside scripts or CI checks.
The crt_chain example threads three large primes through a deterministic LCG, combines the outputs
with the Chinese Remainder Theorem, and emits transcript digests derived from the Field arithmetic:
It prints a 12-round trace with reproducible totals and hash pairs, highlighting how Power-House components compose into a heavier protocol.
use ;
let field = new;
let poly = from_evaluations;
let claim = prove;
assert!;
Re-run it interactively with:
The example exercises the Fiat–Shamir transcript helper and the generalized sum-check prover/verifier against a three-variable polynomial.
Transcript outputs include deterministic Fiat–Shamir challenges; when logged via the ledger, each record carries a 64-bit integrity hash for tamper-evident storage.
This walkthrough builds 10-variable polynomials, records per-round timings, and chains multiple proofs together before handing them off to the ALIEN ledger scaffold.
Prints a timing table for increasing numbers of variables, helping you profile how multilinear proofs scale as the hypercube size grows.
Set POWER_HOUSE_SCALE_OUT=/path/to/results.csv to emit machine-readable timing data alongside the console output.
Replays ledger log files, recomputes their integrity hashes, and prints a pass/fail summary so archived transcripts remain tamper-evident.
Streams per-proof hashes into constant-time anchors, aggregates them (mode selectable via POWER_HOUSE_HASH_MODE=xor|sum), and reconciles the anchors across multiple ledgers while emitting tamper-evident logs. This example is the reference JULIAN Protocol pipeline: nodes replay transcript logs, exchange LedgerAnchor structures, and call reconcile_anchors_with_quorum to reach finality.
The full JULIAN Protocol write-up lives in JULIAN_PROTOCOL.md.
These commands replay transcript logs, derive JULIAN anchors, and check quorum finality using nothing beyond the Rust standard library.