Computation
A private witness stays with the prover while PixelVM proves the result described by a public contract.
Confidentiality is one of the three things the proof manifold collapses into verifiable proofs. Every private action states what stays with the prover, what appears in its receipt, and which traffic signals its network policy is designed to blur — a privacy story a user can read and a verifier can check.
A private action can leak through its computation, its receipt, its traffic, its broadcast origin, or a recording kept for a future quantum computer. Astrea assigns one mechanism to each. The sections below use their names constantly, so the definitions come first.
Every registered computation is proved by PixelVM, and the proof shows the rules were followed while private inputs stay with the prover. There is no non-private proof mode to fall back to. The PixelVM page covers how it works; on this page it is the first mechanism.
Every action type declares, in its schema, exactly which fields its receipt makes public — identities, roots, commitments, outputs. Anything not declared public stays out of the public record, so nothing leaks by accident or by relabeling.
Astrea's mix-style routing layer for privacy-sensitive edge traffic. Sphinx-style onion envelopes mean no relay learns both ends of a route; cover traffic makes silence and activity look alike; standard size classes stop any packet from being a fingerprint; release jitter and route rotation break timing and long-term observation.
For actions that are meant to become public, the remaining secret is where they entered the network. Astrea’s answer is Dandelion#, read “sharp”, a hardened version of the public Dandelion++ design: a fresh action first moves down a quiet, onion-encrypted stem, one relay at a time, and a distant relay makes the first broad broadcast, far from the author. Section 08 covers what the # changes.
All of the above runs inside Astrea's paired cryptography — X25519 with ML-KEM-768 for secrets, secp256k1 with ML-DSA-65 for signatures — so recorded traffic cannot be unwrapped later by breaking the classical half alone.
An observer trying to reconstruct a private action has to beat all five at once: read a zero-knowledge computation, widen a fixed schema, match shaped traffic, locate a diffused origin, and break both halves of the cryptography. Weaken one mechanism and the others still hold their own boundaries. The rest of the page takes the mechanisms one at a time, then looks at the crossings where contexts meet.
The route is also how Astrea extends privacy to economies that were never private. The bridge carries an agent's Zcash traffic and its Ethereum traffic through the same PRISM lanes, so a venue sees the bridge's proxy and a network observer sees a shaped mix. Section 10 follows a settlement crossing and names what each chain still shows.
Computation secrecy, deliberate disclosure, and network metadata answer different questions. Astrea keeps them separate so a strong guarantee in one layer never silently stands in for another. A cross-chain action adds a fourth surface, the settlement crossing, covered in section 10.
A private witness stays with the prover while PixelVM proves the result described by a public contract.
The action schema names the identities, roots, commitments, outputs, and structural facts its receipt reveals.
Encryption protects bytes in transit. PRISM and Dandelion# address route, timing, size, and origin linkage.
A sealed envelope can hide the letter. Its form still shows the fields the recipient needs, and the courier still handles an envelope of some size at some time. Astrea treats the letter, the form, and the delivery pattern as three separate privacy problems.
Consider a registered wallet transfer whose note contents stay private. Before approval, the wallet can show the action's public contract: its program or action identity, declared bounds, authorization context, input and output commitments, versioned roots, and the padded access-shape summary required by its profile. The note openings and private memory contents form the witness and never become raw verifier input.
An access shape is the profile-defined footprint of declared memory and state use: which bounded regions are touched and in what visible pattern. It is like seeing the number and order of sealed boxes without seeing their contents. Padding can make that footprint less distinctive, but Astrea does not claim arbitrary oblivious memory or universally hidden access patterns.
Now the mechanisms from the introduction take their turns. PixelVM executes the typed action and produces the zero-knowledge proof package tied to that contract — the first two mechanisms working together. The encrypted content travels the network through PRISM's protected route, so the transfer's traffic shape gives nothing away. If the action body is meant to become public, Dandelion# carries it down the narrow stem before the wide broadcast, hiding which node it came from. And at the end, validators still apply every normal rule — authentication, decoding, proof verification, consensus — before the effect enters authoritative state. Delivery never grants authority by itself.
Encrypted bodies can remain outside the consensus hot path under authenticated manifests, which bind the stored bytes to certified state. A storage host can carry ciphertext without receiving plaintext, while an authorized endpoint can decrypt it. Endpoint logging, copying, or disclosure remains an application and device boundary.
A typed contract gives the verifier one stable question. It identifies the registered action, canonical public inputs, public context, declared result, commitments, and profile. The private witness supplies the secret facts needed to satisfy that contract. PixelVM uses it during proving without handing its raw bytes to the verifier. This is where the first two mechanisms of the introduction lock together: declared disclosure decides the question, and the zero-knowledge receipt answers it without the witness.
The receipt binds what was requested, which public snapshot it used, and which result the verifier is allowed to accept.
Private note contents, openings, object payloads, and private memory contents stay on the proving side of the interface.
These are three different tools. Zero knowledge lets a verifier check a completed computation without receiving the declared witness. Transport encryption hides bytes while they move between endpoints. Fully homomorphic encryption computes on ciphertext; it is a separate technique and does not by itself make a proof transcript simulatable.
PixelVM protects declared private content. Program identity, bounds, public context, roots, commitments, and padded access shape may remain visible. The current public profile does not claim hidden access patterns for arbitrary memory, and the simulator is privacy evidence rather than a substitute receipt. Broader program-structure obfuscation remains experimental and is not the source of PixelVM's zero-knowledge guarantee.
Each registered action defines the fields that cross its privacy boundary. A wallet can display that contract before the user approves it.
| Receipt surface | Why it may be public | What remains private |
|---|---|---|
| Action identity and bounds | The verifier must know which registered rules and resource envelope apply. | Witness-dependent values not declared by that action. |
| Authorization context | Validators need enough public context to decide whether the action is admissible. | Private credentials or note contents represented by commitments. |
| Commitments and digests | Later proofs and updates need stable references to hidden material. | The canonical bytes bound behind those references. |
| Declared result | Applications need the state effect or output they are authorized to observe. | Intermediate private trace values and undeclared outputs. |
| Roots, versions, and access shape | The proof must bind one state snapshot and its declared execution structure. | Private memory contents; the access pattern itself may remain visible. |
The receipt is therefore compact and meaningful rather than blank. It exposes enough to authorize, verify, and bind the action to state while keeping the registered private witness out of public input. The boundary is set by the action’s published schema rather than by whoever happens to run the software.
An authenticated encrypted session protects the payload on that connection. An observer can still measure the connection: which endpoints are active, when packets move, their size class, and how traffic changes after an event. Those signals require their own policy.
Delays, bursts, and response patterns can link events even when every payload is encrypted.
A distinctive packet or batch shape can reveal an action class and connect two observation points.
A direct connection reveals both peers to each other, and a wider observer may see the same path.
Each relay sees its local handoff. A well-positioned or colluding relay set can reduce unlinkability.
These signals defeat real systems, not hypothetical ones. Tramèr, Boneh, and Paterson identified the recipients of shielded Zcash transactions from node response timing in "Remote Side-Channel Attacks on Anonymous Transactions" (USENIX Security 2020), a flaw fixed after disclosure. At the ledger level, Kappos, Yousaf, Maller, and Meiklejohn matched deposits into Zcash's shielded pool with later withdrawals of the same value in "An Empirical Analysis of Anonymity in Zcash" (USENIX Security 2018), shrinking the Sprout-era anonymity set by 69.1 percent without touching a shielded-to-shielded transaction. Möser et al. traced a large share of early Monero spends through decoy-selection patterns in "An Empirical Analysis of Traceability in the Monero Blockchain" (PoPETs 2018). Encrypting the ledger while leaving timing, size, and the crossing exposed is how careful users still get identified. PRISM is built for the first two; the bridge, on the Zcash page, removes the third by taking deposits as shielded transfers.
Astrea's answer borrows the strongest defense family the field has: the mixnet playbook, applied inside the protocol instead of bolted on beside it. Astrea first chooses an ordered relay path with declared role, operator, and network diversity, then gives each relay a Sphinx-style onion envelope containing only the local handoff it needs — no relay learns both the origin and the destination. Real traffic shares the schedule with cover packets, so silence and activity look alike; messages enter declared size classes, so no packet is a fingerprint; release jitter loosens timing correlation; and routes rotate so one fixed neighbor set never accumulates a long-lived view.
This policy layer is called PRISM. It carries privacy-sensitive edge traffic on a route separate from the direct authenticated validator and core lanes. The separation matters: consensus traffic keeps its direct authority path, while PRISM reduces what an observer can link about an edge request. In the combination, this is the mechanism receipts cannot supply: a proof hides content, and only the route can hide traffic.
Role, operator, and network diversity reduce repeated shared observation points between edge and destination.
Messages enter declared classes so one unusual body length is less useful as an end-to-end fingerprint.
Cover packets occupy otherwise revealing gaps, while release jitter loosens the direct timing relationship.
Route policy changes the relay view across epochs instead of exposing one permanent neighborhood.
Key establishment. X25519 and ML-KEM-768 establish the classical and post-quantum halves of validator-session secrets and PRISM onion-hop secrets, including Dandelion# stem layers.
Validator authentication. secp256k1 Schnorr and ML-DSA-65 authenticate each side's transcript-bound, role-specific handshake message.
PRISM frame authentication. secp256k1 ECDSA and ML-DSA-65 authenticate the same canonical frame bytes.
Both applicable companions are required. A missing or invalid companion rejects the handshake message/session or PRISM frame at its boundary. Dandelion# layers receive hybrid key-establishment protection; this does not mean each onion layer carries both signature schemes.
Some actions are meant to become public. Encrypting their journey cannot make the eventual public body secret. The privacy problem is their origin: immediate broad broadcast makes the first broadcaster an obvious clue.
The countermeasure pattern comes from public research: Dandelion, refined into Dandelion++, the two-phase broadcast design Monero has run since 2020. A fresh transaction first travels a quiet stem, one relay at a time, and only the terminal relay fluffs it into normal gossip, so its first broad appearance lands far from its author. Astrea ships a hardened descendant of that design and calls it Dandelion#, read “Dandelion sharp”.
Dandelion++ leaves two gaps. The stem carries the transaction readable, so every stem relay can inspect what it forwards and knows it is holding pre-broadcast material. And the quiet phase is enforced only by good behavior: a dishonest stem relay can broadcast early, from a position near the author, which is exactly the leak the stem exists to close. The design’s own fail-safe leans the same way — a stalled stem fluffs on a timer, trading privacy for liveness.
Dandelion# closes both gaps with the tool PRISM already uses: onion layers. After PRISM carries a fresh action through the private edge to egress, the stem itself is wrapped hop by hop, each layer encrypted to one relay’s hybrid X25519 + ML-KEM keys. A stem relay peels its single layer and learns one fact: the next hop. It cannot read the action, and it cannot tell how far it sits from the origin. The same layering enforces the path, because the readable body exists only after the final layer is decrypted — no relay can cut the stem short and burst early, and the switch to fluff cannot be faked. And where Dandelion++ fluffs a stalled stem, a privacy-sensitive stem in Astrea holds and fails closed. With PRISM covering the journey and Dandelion# covering the entry point, the network stops being the easy way around the cryptography.
Duplicate action identifiers stop nodes from repeatedly forwarding the same gossip item, and an action class that has declared itself liveness-critical may still choose early broad diffusion as a visible tradeoff. None of this claims the public body stays confidential once it fluffs — Dandelion# protects where it entered the network, and nothing else.
The mechanisms so far protect the middle of an action’s life: the computation, the disclosure, the route, the origin. The edges are different. A private computation may begin with a public deposit, call an outside service, or end in a public state change, and an observer who sees both sides can compare public values, identifiers, size classes, and timing. The hidden middle does not erase those boundary facts.
Astrea applies declared shaping at the edges where the application permits it: public values or action sizes can enter common classes, releases can share scheduled windows with other activity, and route policy can avoid one direct endpoint pair. These controls reduce a distinctive match. They do not make two public events impossible to correlate.
Encryption protects payload bytes; size classes, cover, and release jitter reduce simple traffic matching.
The local endpoint pair and surrounding traffic can remain visible.
Per-hop envelopes, path diversity, and rotation limit each relay to its local role and reduce repeated shared views.
Compromised or colluding positions can still correlate observations.
Cover schedules and Dandelion# origin diffusion add ambiguity across several observed links.
Deployment size, traffic volume, timing, and observer reach still matter.
The public contract exposes roots, commitments, declared results, and the profile-defined access shape needed for verification.
The raw private witness stays with the prover.
Authenticated manifests let a host store and serve ciphertext tied to certified state.
Object size and access requests can remain visible; an authorized endpoint controls decryption.
The application sees whatever the action deliberately reveals after decryption and verification.
Endpoint compromise, user disclosure, and application logging sit outside route privacy.
A named receipt or attestation can bind a sensor reading, delivery report, or physical event into an Astrea action.
The proof checks computation relative to that submitted input; the source path establishes who made the outside-world claim, not whether nature made it true.
Astrea's computation and routing policies are engineered and tested against declared adversaries. That evidence does not become a mathematical anonymity theorem, a deployed universal mix network, hidden metadata at every layer, or protection after an endpoint reveals plaintext.
Astrea is engineered for 160-bit post-quantum security in its primary profile, and no supported profile falls below an absolute 128-bit post-quantum floor. Both statements depend on the declared construction, parameters, assumptions, implementation, and deployment boundary. They apply to the cryptographic boundaries that name them; they do not erase traffic metadata or secure a compromised endpoint.
When an agent bridges ZEC into Astrea and acts on an Ethereum venue, three records exist at once: Zcash's public ledger, the venue's public state, and Astrea's certified private state. The computation, the disclosure, and the route each keep the policies above. The crossing adds a fourth surface: what an observer who can read both public chains, or who holds the bridge's keys, can still line up.
The bridge's design answers that surface in three ways. A deposit and a withdrawal are ordinary shielded transfers, and the bridge's reserve stays in Zcash's shielded pool, so Zcash shows no transparent exit and no entry: an observer of the Zcash chain sees a shielded transaction like any other. The venue sees the bridge's proxy account and a manifest of declared fields, so its ledger shows the bridge acting, not an owner. Inside Astrea the ledger is zero-knowledge, so validators verify that a deposit was credited and an action was authorized without learning whose balance moved, and a withdrawal's timing and amount follow the owner's policy rather than the trade.
Sees ordinary shielded activity: commitments, nullifiers, and shielded transfers with encrypted amounts. A deposit to the bridge and a withdrawal from it look like any other shielded transfer, and the bridge's own reserve is shielded too.
Transparent-address activity an owner chooses to make remains public, as it does on Zcash today.
Sees the bridge's proxy account, the manifest fields the action's schema declares, and the receipt that authorizes the action.
The venue's own state change is public on Ethereum. Sizes appear as declared classes where the venue accepts them; otherwise the exact figure is public on the venue.
Reads both public ledgers. Finds no transparent exit from the shield, no entry to the venue by the owner, and no amount or moment on Zcash to pair with a venue action.
Aggregate patterns across many actions, venue-side behavior, and any transparent step an owner takes remain part of the threat model.
Hold shares of the bridge's threshold spending key and its viewing keys. A share is released only for a certified withdrawal. See deposit amounts and times and the memo's commitment.
Does not see who deposited or which Astrea account claimed the deposit; the claim is a zero-knowledge proof of the commitment.
Sees PRISM-shaped traffic for both the Zcash side and the Ethereum side of the action, and a Dandelion# stem for anything that becomes public.
The privacy boundary above applies unchanged: engineered against declared adversaries, not an anonymity theorem.
The bridge is a design being built toward a testnet. Its Zcash spending key is a threshold key across the validators, used only for certified withdrawals, with the signing threshold equal to the consensus threshold. Post-quantum protection covers Astrea's proofs, ledger, sessions, and signatures; Zcash and Ethereum keep their own cryptography at either end, and the bridge checks it as it stands. The Zcash page states the full claim.