ZRPF: how ZenoDEX composes proofs into a governed root
A visual, first-principles, evidence-scoped introduction to the Zeno Recursive Proof Fabric, from authenticated Spot leaves and NodeJournalV3 to recursive structure, information flow, data availability, verifier authority, atomic admission, and proof-market design.
Picture an inspection hub at the end of a trading epoch. Sealed packets arrive from different execution lanes. Each packet names its scope, identifies the program that produced it, commits to a state transition, and carries a receipt that a verifier can check. The hub verifies bounded groups of packets and emits new sealed summaries. The process repeats until one root summarizes the tree.
That picture captures the structural idea behind the Zeno Recursive Proof Fabric, abbreviated ZRPF. The exact system is more disciplined than the metaphor:
| Picture | ZRPF object |
|---|---|
| sealed packet | authenticated proof receipt plus exact public journal |
| inspection card | NodeJournalV3 |
| sorting group | canonical bounded child partition |
| higher-level packet | structural aggregate receipt |
| final manifest | recursive root journal |
| admission desk | governed ZenoLedger admission policy |
ZRPF has one central design thesis: recursive proof composition becomes auditable when every level preserves a small governed interface and every additional guarantee remains an explicit obligation. The proof tree, data-availability policy, semantic checks, admission rule, privacy model, and performance model therefore have distinct jobs.
The word fabric captures that systems view. ZRPF is a common composition layer for proof tasks, journals, recursive nodes, proof-system adapters, data-availability evidence, ledger admission, and eventually proof procurement. ZenoDEX is the first application described here. Other applications would need their own governed semantic leaf profiles.
Scope and evidence date
- Evidence snapshot: this tutorial reflects the ZRPF work inspected on July 10, 2026.
- Current evidence: a temporary local RISC0 profile contains four authenticated Spot compatibility leaves, two structural level-one receipts, one structural level-two root, and successful verifier-only replay.
- Evidence caveat: the verifier replay has a recorded source closure. The proving run remains temporary-path evidence, and its executed proving-harness source closure was not attested after a later harness patch.
- Proposed architecture: semantic aggregation, conflict scheduling, verified data availability, durable atomic admission, proof-market operation, and settlement checkpoints remain separate work items.
- Non-claims: this page makes no production-readiness, witness-privacy, full ZenoDEX conservation, measured-throughput, or settlement-authority claim.
ZRPF at a glance
Current evidence
Typed V3 structure, Spot compatibility leaves, exact child-receipt verification, and a four-leaf two-level local proof tree.
Proposed architecture
Semantic composition, conflict scheduling, DA verification, atomic admission, proof procurement, and external checkpoints.
Benchmark target
Capacity and throughput envelopes that still require reproducible latency, cost, memory, network, and adversarial-load measurements.
Companion semantic layer
This page focuses proof composition. The companion ZRM + ZRPF tutorial explains how typed resources, nullifiers, policy, conservation, journal stages, and atomic commit can give a recursive root a scoped state-transition meaning. The integrated architecture remains a future evidence target.
Part I: the problem ZRPF addresses
ZRPF addresses a systems-composition problem. A DEX may execute thousands of operations during one epoch, while its final verifier needs a bounded, well-defined public interface. An unbounded input containing every transaction, asset row, receipt, and cross-lane message would reproduce the scaling problem at the final verification step.
Four artifacts come first
This tutorial follows the first-principles method developed in Jung-Hua Liu’s protocol-design article: write down the information-flow topology, external interfaces, security properties, and performance characteristics as co-equal design artifacts. Applied to ZRPF, the four artifacts are:
| Design artifact | ZRPF question | Current status |
|---|---|---|
| information-flow topology | Which facts reach the prover, guest, host, ledger, DA system, and observer? | Public receipt and journal flow are partly specified. End-to-end privacy is open. |
| external interfaces | Which exact tasks, receipts, journals, image IDs, manifests, and reject reasons cross trust boundaries? | NodeJournalV3 and the sealed RISC0 receipt boundary are implemented in the bounded profile. |
| security properties | Which adversary moves must fail, and which state must remain unchanged after rejection? | Several receipt-binding attacks are exercised. Semantic conservation and atomic admission remain open. |
| performance characteristics | Which limits and measurements constrain proving, verification, DA, memory, and admission? | Structural bounds exist. End-to-end measurements do not. |
This order makes backend selection a consequence of the relation, trust boundaries, and operating point. It also prevents a succinct root from silently inheriting guarantees that were never part of its proved statement.
ZRPF instead aims for a fixed public surface with variable internal scale. A leaf proof authenticates one bounded unit of work. Aggregate proofs verify bounded sets of child receipts and emit the same journal type. A root journal contains commitments and counts rather than an unbounded transcript.
The intended topology is:
application execution
-> canonical task and statement
-> conflict-aware partitioning
-> leaf proofs
-> bounded recursive aggregates
-> epoch root
-> atomic ZenoLedger admission
-> optional Tau or external settlement checkpoint
Who sees what, and who may decide
The current evidence supports only part of the information-flow topology. The following table separates observed interfaces from deployment assumptions:
| Actor or boundary | Information received | Authority after successful checks |
|---|---|---|
| leaf prover | bounded task and the witness supplied by its deployment | may propose a receipt; gains no ledger authority |
| aggregate guest | exact child receipts and their public journals | may authenticate one structural parent journal |
| sealed host verifier | receipt, exact journal bytes, governed image ID, and profile | may expose a verified child descriptor |
| ZenoLedger admission policy | proposed root, governed bindings, DA evidence, and current ledger state | atomic state admission is proposed and unimplemented in this profile |
| network observer | public journals plus possible timing, size, routing, and retry metadata | no current privacy bound is established |
The current structural claim is conditional on the soundness of the pinned RISC0 receipt system, collision resistance of the selected hashes, correct governance of image and profile identifiers, and the recorded source closure. The temporary proving-run source-closure caveat remains in force.
Three costs remain real:
- application execution still has to run;
- leaf and aggregate proofs still have to be produced;
- the underlying data still has to be published or made retrievable under a separate availability policy.
Recursion compresses the final verification interface. It does not make the represented computation free.
Part II: one authenticated leaf
A recursive tree inherits its authority from its leaves. The current compatibility path begins with an existing ZenoDEX Spot V1 proof receipt. A RISC0 adapter guest accepts only the compile-time governed Spot program, profile, and lane. Its authority-bearing order is:
bounded adapter input
-> verify the exact Spot receipt under the pinned Spot image
-> decode the exact authenticated Spot journal
-> derive the compatibility commitments
-> commit one canonical NodeJournalV3 leaf
The ordering closes an important attack surface. Decoding a caller-supplied journal first would allow unverified metadata to influence the proof path. Receipt verification comes first, and the exact authenticated journal becomes the source for every derived field.
What the leaf says
A V3 leaf fixes these structural values by construction:
node_kind = leaf
node_level = 0
immediate_child_count = 0
leaf_count = 1
subtree_node_count = 1
The Spot V1 journal does not disclose how many user transactions produced its transition. The compatibility adapter therefore records:
operation_count = 1
count_unit_id = source_transition_receipt
The value means one authenticated source transition receipt. Reading it as one transaction would strengthen the claim beyond the available evidence.
Why the common journal matters
NodeJournalV3 groups the public statement into five conceptual regions:
- Scope: application, domain, epoch interval, policy, feature suite, and toolchain or dependency locks.
- Counts and partition: node level, child count, leaf count, operation count, count-unit identity, subtree size, and a dense half-open partition.
- Proof identity: task, statement, program, proof profile, manifest, and a verifier ID derived from the program and profile.
- Application commitments: state, inputs, transactions, effects, receipts, write sets, asset deltas, cross-lane messages, schedules, data availability, carry state, and provenance.
- Child roots: ordered commitments to child tasks, claims, journals, programs, profiles, verifiers, statements, manifests, effects, provenance, and DA roots.
Every mandatory commitment is nonzero. A profile uses a domain-separated empty-set hash when a set is empty. Zero cannot quietly mean “unused.” Facts that the Spot V1 adapter cannot establish, such as a verified DA certificate or carry continuity, receive distinct nonzero unsupported sentinels. An admission profile that requires those facts must reject the compatibility leaf.
The common node interface
Part III: how the recursive tree composes
Recursive composition is safe only when a parent authenticates every child and derives one canonical public statement. The current proof-bearing example contains seven receipts:
Spot receipt 0 -> adapter leaf 0 --\
-> structural L1 left --\
Spot receipt 1 -> adapter leaf 1 --/ \
-> structural L2 root
Spot receipt 2 -> adapter leaf 2 --\ /
-> structural L1 right --/
Spot receipt 3 -> adapter leaf 3 --/
Each structural guest verifies every exact child receipt inside the zkVM before decoding the child journal. The level-one guest accepts adapter receipts. The level-two guest accepts level-one structural receipts. The host independently reconstructs the expected parent journals and checks exact equality.
Visual tour of the proof fabric
The locally evidenced tree
Canonical child composition
For child journals c_1, ..., c_n, the structural constructor requires:
1 <= n <= 8
same scope hash
same child level
same operation-count unit
unique immediate task, claim, and journal identities
canonical dense partitions with no internal gap or overlap
checked leaf, operation, subtree, byte, and level bounds
Canonical ordering uses each child partition and task identity. Permuting the same valid child set yields the same parent. Swapping persisted level-one receipts into the wrong expected positions changes the expected journal and is rejected.
Counts are derived with checked arithmetic:
leaf_count(parent) = sum(leaf_count(child_i))
operation_count(parent) = sum(operation_count(child_i))
subtree_nodes(parent) = 1 + sum(subtree_nodes(child_i))
The operation-count equation is meaningful only after every child proves the
same count_unit_id. Transaction counts cannot be added to transition-receipt
counts.
Bounds, tests, and observed proof evidence
| Surface | Current V3 compiled bound | Current receipt evidence | Broader architecture ceiling |
|---|---|---|---|
| immediate children | 8 | 2 per observed aggregate | 16 |
| maximum node level | 2 | 2 | 4 |
| leaves per root | 64 | 4 | 65,536 |
| total nodes | 73 | 7 | profile-dependent |
| operations per leaf | 128 | 1 source transition receipt | 1,024 protocol maximum in the architecture draft |
| node journal bytes | 4,096 | 1,547 in the recorded tree | profile-specific |
Pure constructor tests include a saturated 64-leaf structural tree. The cryptographic receipt evidence currently covers the four-leaf tree shown above. Neither fact supplies a throughput number.
The semantic boundary
The structural aggregate derives field-specific roots over authenticated child commitments. It currently does not verify the ZenoDEX meaning of those roots. The following obligations remain outside the current aggregate relation:
- asset-delta-row conservation;
- complete accepted and rejected receipt semantics;
- descendant-wide receipt, task, message, and write-set uniqueness;
- cross-lane message cancellation;
- conflict-schedule validity;
- carry-queue continuity;
- data-availability certificate policy;
- complete value-flow coverage.
A future semantic aggregate profile must verify disclosures or certificates for those facts before it commits the parent journal.
Part IV: scheduling work without inventing parallelism
Proof parallelism is constrained by state dependence. Recursive trees create parallel proof opportunities only when the underlying state transitions can be separated safely. A proposed scheduler derives read and write sets, builds a conflict graph, and commits the resulting schedule.
Two tasks can run independently when their effects do not conflict. A simple sufficient condition is:
W_i ∩ (R_j ∪ W_j) = ∅
and
W_j ∩ (R_i ∪ W_i) = ∅
Here (R_i) and (W_i) are the read and write sets for task (i). Unknown or unbounded write sets belong in a conservative serial lane.
A popular liquidity pool illustrates the hard case. Two swaps cannot both pretend to start from the same reserve state. The architecture proposes one of four treatments:
- deterministic batch clearing;
- state-delta netting;
- canonical ordered execution;
- a specialized conflict-aware leaf proof.
The current four-leaf structural profile proves dense partition structure. It does not prove a complete conflict-free ZenoDEX schedule.
Part V: a proof root is not a data-availability certificate
Computational integrity and data availability answer different questions. A catalog can prove that a book with a particular digest belongs to a collection. The catalog does not place a readable copy of the book in a reader’s hands. A proof root and data availability have the same separation.
A recursive proof can establish that computation used data committed by a root. Availability needs an independently checked policy, such as full replication, erasure-coded sampling, a committee receipt, public-testnet replay, or a chain-native blob commitment.
Two rails into admission
The proposed admission condition has the shape:
admit(root)
⇒ proof_ok(root)
∧ da_policy_ok(root)
∧ governed_bindings_ok(root)
The conjunction prevents a valid computation proof from silently supplying a missing availability guarantee.
Whole-system privacy remains a separate specification
A proof can limit what its public statement reveals while the surrounding system still leaks information through witness custody, task routing, bid traffic, journal sizes, timing, retries, DA retrieval, or admission logs. A future ZRPF privacy claim therefore needs an explicit network adversary and a fact-by-party leakage table covering the complete path.
The current profile establishes neither witness privacy nor system privacy. Its public journals intentionally reveal scope, counts, partitions, program identity, and commitment structure. The proof-market and DA designs may create additional metadata channels. Those channels require bounded leakage claims and adversarial tests before a privacy label can carry authority.
Part VI: verifiers decide
Authority advances through a sequence of successful checks. ZRPF uses this layered rule:
prover proposes bytes
guest verifies witnesses and exact child receipts
host verifies receipts, exact journals, and program identity
ledger verifies governed policy and state bindings
only then may state or rewards commit
Where authority moves
The sealed receipt boundary
The host-side VerifiedNodeReceiptV3 object keeps its fields private and
enforces this sequence:
verify Succinct receipt under the expected image
-> strict-decode the exact canonical NodeJournalV3 bytes
-> require journal.actual_program_id = verified image ID
-> derive the claim binding locally
-> expose a child descriptor
This construction prevents a caller-selected claim hash or self-reported program label from becoming proof authority.
Falsification controls already exercised
| Attacker move | Expected result | Current local result |
|---|---|---|
| omit a required child assumption | aggregate proof cannot verify the child | rejected |
| substitute one source-journal byte | original receipt no longer authenticates the exact bytes | rejected |
| swap the two persisted level-one receipts | reconstructed root journal differs | rejected |
| present a receipt under the wrong image | program and receipt binding fails | rejected |
| use a cryptographically valid false self-label | outer program-image equality fails | rejected |
The intended reject law is stronger than returning an error message:
reject
⇒ state' = state
∧ replay' = replay
∧ rewards' = rewards
∧ finality' = finality
The current proof profile exercises receipt and journal rejects. The complete state-level no-op law still needs the proposed durable admission layer and its crash-consistency tests.
Part VII: atomic admission and the finality ladder
A valid root becomes authoritative state only through admission. Once a semantic root eventually satisfies its proof, policy, schedule, and DA obligations, ZenoLedger admission must update several records as one atomic transaction:
- application state root;
- authenticated root and journal identity;
- exact-once root, child, receipt, and message replay sets;
- carry-queue state;
- DA certificate root;
- proof-market payouts and slashes;
- finality status.
The proposed atomic bundle
The architecture separates four finality meanings:
| State | Meaning |
|---|---|
EXECUTED |
ZenoLedger ordered and applied the operation. |
PROVEN |
The operation is included in an authenticated recursive root. |
CHECKPOINTED |
The configured settlement anchor accepted the root. |
FINALIZED |
The anchor’s finality policy is satisfied. |
Tau is proposed as a slower checkpoint, policy, and hard-finality layer. The design does not require every trade to execute directly through Tau.
Part VIII: proof-system adapters and the proof market
Proof-system neutrality is a governed-interface property. The common journal and task statement allow different backends to describe the same kind of node, provided that each adapter authenticates its program and emits the standard journal. RISC0 3.0.5 is the current reference backend because the repository already contains a hardened recursive receipt boundary.
Backend choice should follow the shape and rate of change of the proved relation. The following table is a design heuristic, not an implemented ZRPF backend matrix:
| Relation regime | Candidate substrate | Potential fit | Main obligation |
|---|---|---|---|
| fixed, compact, heavily optimized relation | bespoke arithmetic circuit | low constant factors after substantial circuit engineering | prove that every witness value and public input is fully constrained |
| long repeated step computation | folding or incremental verification | amortized step processing with final compression | account for fold seams, relaxed relations, and final compression assumptions |
| evolving, general program | zkVM | ordinary program semantics and faster iteration | trust and test the VM, guest program, continuation logic, and image binding |
| heterogeneous proof fabric | governed adapters over several substrates | assign each relation to a suitable backend | specify and test every adapter seam and shared serialization contract |
The current ZRPF evidence occupies the zkVM row. The other rows describe possible future profiles. Each new profile would need its own governed program identity, canonical codec, cross-implementation vectors, negative controls, and release evidence.
The proposed proof market treats proving as procurement. Its default policy is a commit-reveal reverse auction with explicit assignment:
publish bounded task
-> receive bonded bid commitments
-> reveal price, latency, capacity, and proof-system version
-> assign primary and standby provers under diversity limits
-> verify submitted receipt and exact journal
-> pay only accepted assigned work
Critical roots may require proofs from independently governed implementations. Objective violations, such as equivocation or an unauthorized manifest, can be slashed under an explicit policy. Proof-looking bytes alone earn no reward.
This market remains architectural work. The current temporary structural tree was produced by a local proving harness rather than a deployed permissionless procurement system.
Part IX: reading performance formulas honestly
Capacity formulas describe conditional envelopes. A meaningful performance claim also fixes hardware, software versions, concurrency, proof mode, network conditions, DA policy, workload distribution, and the statistic being reported.
Let:
k = recursive fanout
D = tree depth
B = operations per semantic leaf
E = epoch duration in seconds
P = concurrent leaf-proving capacity
T_leaf = leaf proof latency
T_agg = aggregate latency per level
S_op = available bytes per operation
BW_DA = sustainable DA bandwidth
An architecture envelope is:
architecture_TPS = (B × k^D) / E
Actual throughput is bounded by the slowest required subsystem:
actual_TPS = min(
execution_TPS,
prover_TPS,
architecture_TPS,
DA_TPS,
admission_TPS
)
| Quantity | Status | Honest reading |
|---|---|---|
| four leaves, two levels | current local evidence | four authenticated source-transition receipts in one structural tree |
| fanout 8, level 2, 64 leaves | current compiled bound | bounded construction capacity, with pure saturated-tree tests |
| 819 TPS | initial architecture target | 8^2 leaves, 128 semantic operations per leaf, ten-second epoch, assuming every other bottleneck keeps pace |
| about 104,858 TPS | ambitious scale envelope | 16^3 leaves, 256 operations per leaf, ten-second epoch, requiring a future profile and extensive benchmarks |
The compatibility leaves currently count source transition receipts, so their
operation count cannot be substituted for B in a transaction-throughput
claim. No ZenoDEX TPS, latency, proving cost, RAM, VRAM, or DA bandwidth result
is established by the current proof tree.
Total prover work remains approximately linear in represented computation:
total_work ≈
leaf_count × leaf_work
+ ((leaf_count - 1) / (k - 1)) × aggregate_work
Recursion mainly stabilizes the final proof interface and final verification cost. It does not erase the work performed below the root.
Part X: a compact audit checklist
Eight questions locate the authority boundary of a future ZRPF claim:
- What is the information-flow topology? List each party, each visible fact, each hidden fact, and every residual metadata channel.
- Which external interface crosses each trust boundary? Pin exact codecs, domain separators, identifiers, size bounds, and failure semantics.
- Which adversary and security property are in scope? State the attack game, setup assumptions, and the condition under which acceptance is safe.
- Which typed statement is proved? Scope, count units, profiles, and commitment semantics must be explicit.
- Which program and manifest are governed? A self-reported image or manifest has no authority.
- Which exact receipt authenticates which exact journal? Duplicate host metadata cannot strengthen the authenticated statement.
- Which obligations remain separate? Semantic conservation, conflict freedom, DA, privacy, admission, and finality need their own evidence.
- Which performance claim was measured, and what changes on rejection? Record the cost model and require a no-op across application, replay, reward, carry, and finality state.
The final claim map
Part XI: organize evidence as nested loops
Cryptographic ground truth is expensive. A full proof run may take minutes or hours, while an external review may take weeks. The loop-engineering method in Liu’s article places cheap falsifiable checks before expensive verdicts. For ZRPF, the useful hierarchy is:
| Loop | Typical check | Status in the inspected profile |
|---|---|---|
| specification and vector | canonical hash vectors, codec vectors, field meaning, and bound derivation | present for the V1 adapter and V3 hash construction |
| pure constructor | valid saturated trees plus wrong-level, duplicate, gap, overflow, and noncanonical inputs | present for bounded structural composition |
| sealed receipt | prove or replay, then bind exact receipt, exact journal, governed image, and locally derived claim | present for the four-leaf profile |
| persisted verifier replay | reconstruct both level-one journals and the root from seven saved receipts | present, with the recorded source-closure caveat |
| semantic and admission | conservation, conflict schedule, DA policy, carry continuity, exact-once commit, and reject-is-no-op | future work |
| benchmark and adversarial load | latency distributions, proving cost, memory, bandwidth, crash recovery, and denial-of-service bounds | future work |
| release and independent review | governed manifest, cross-host replay, independent implementation, and external audit | future work |
Each rung supports a bounded claim and gates the next rung. Passing a fast checker supplies evidence for its stated surface. Promotion still depends on the broader semantic, operational, and governance checks appropriate to the claim.
Reproducing the visual assets
The animation and stills are generated from a procedural Blender scene. From the FormalPhilosophy repository root:
scripts/render_zrpf_blender_tutorial.sh --render-stills --render-video
The source generator is scripts/blender/render_zrpf_tutorial.py. It creates:
assets/blender/zrpf-proof-fabric.blend;- seven PNG teaching frames under
assets/images/zrpf/; - the 48-second, 1920×1080 MP4 under
assets/videos/zrpf/; - a render manifest containing Blender version, file sizes, and SHA-256 digests.
The compact machine-readable claim ledger is available at
zrpf_tutorial_claims_20260710.json.
Source posture
The main July 10 source artifacts used for this tutorial are:
- Zeno Recursive Proof Fabric Architecture Specification, version 0.1 draft;
- ZRPF V3 Correct-by-Construction Protocol Specification;
- ZRPF V1 Leaf Adapter Compatibility Specification;
- the public ZRPF RISC0 Structural Proof Profile;
- the V1 Spot adapter and V3 structural-tree temporary local evidence manifests;
- the recorded verifier replay and negative-control transcripts.
Several of those artifacts were still temporary or unpromoted when inspected. Their names identify the evidence basis without implying a release-backed or public-replay status.
Promotion from this bounded profile to production would be a new specification and review exercise. It would need governed release identities, public and cross-host replay, semantic aggregation, DA policy, atomic admission, adversarial load measurements, privacy analysis, and independent review.
References and influences
- Jung-Hua Liu, “Principled Design and Analysis of Zero-Knowledge Protocols for Intent-Centric Private State Machines: From Shielded State Synchronization to Verifiable Resource Machines”, Medium, July 1, 2026. Its first-principles ordering, regime-sensitive proof-system analysis, whole-system privacy framing, and nested evidence loops influenced the organization of this tutorial.
- ZenoDEX,
“ZRPF RISC0 Structural Proof Profile”,
agent/zrpf-v3-structural-cbcbranch, accessed July 10, 2026. This is the public technical anchor for the implemented four-leaf RISC0 profile and its explicit authority boundary.