Petri Nets as ZK Containers

Model state machines visually. Generate ZK proofs and Solidity contracts. Every transition firing produces a cryptographic proof of valid state change.

Model → Prove → Deploy

One Petri net flows through the entire stack.

Model

Draw places, transitions, and arcs in the visual editor. The model is a directed bipartite graph stored as JSON-LD with content-addressed identity.

Prove

Guards become arithmetic constraints. Arc weights become balance checks. Invariants become circuit assertions. Groth16 proofs from net topology.

Deploy

Generate Solidity contracts from ERC templates. Each token standard is a Petri net — the same model that produced the proof produces the contract.

ZK Container Templates

Start from a token standard. Customize the Petri net. Generate everything.

ERC-20

Fungible Token

Transfer, approve, mint, burn — five transitions, three places, conservation law built in.

ERC-721

Non-Fungible Token

Ownership tracking, approval, safe transfer — each token ID is a unique state.

ERC-1155

Multi Token

Fungible and non-fungible in one contract. Batch operations, operator approvals.

ERC-4626

Tokenized Vault

Deposit, withdraw, yield distribution — share accounting as token flow.

Two Angles, One Abstraction

Model → Proof

Petri net structure maps directly to ZK circuit constraints. Guards become arithmetic checks, arc weights become balance checks, invariants become assertions. The model is the specification.

Verifiable Execution

Run a Petri net state machine where each transition firing produces a Groth16 proof. The proof attests that the state change was valid without revealing the full state. The model becomes its own audit trail.