pod2/Cargo.toml
Eduard S. bcaef6c47a
Add table multiplexer (and use it for container, custom pred & PublicKeyOf ops) (#376)
- Extend the `Flattenable` trait to include a `size` method that returns the number of `Target`s the type requires.  This is used in the table to figure out the max length of an array that must fit all entry types.
- Move the circuit methods to precalculate hash states and do hashes started from a precomputed state to a new module
- Introduce `MuxTableTarget` which allows easy multiplexing of tables where each sub-table may have entries of different lengths.  The table access is done via hashing + unhashing automatically (via use of a generator)
- Use the `MuxTableTarget` to access merkle tree claims and custom predicate verification, which where previously in different tables and accessed with independent random accesses each
- Move the public key derivation for the PublicKeyOf operation check to the same multiplexed table.  Now we can choose how many of those operations a circuit supports.

Resolve https://github.com/0xPARC/pod2/issues/357
Resolve https://github.com/0xPARC/pod2/issues/361
2025-08-05 19:09:41 -07:00

67 lines
2 KiB
TOML

[package]
name = "pod2"
version = "0.1.0"
edition = "2021"
build = "build.rs"
[lib]
name = "pod2"
path = "src/lib.rs"
[dependencies]
hex = "0.4.3"
itertools = "0.14.0"
strum = "0.26"
strum_macros = "0.26"
anyhow = "1.0.56"
dyn-clone = "1.0.18"
log = "0.4"
env_logger = "0.11"
lazy_static = "1.5.0"
thiserror = { version = "2.0.12" }
# enabled by features:
plonky2 = { git = "https://github.com/0xPARC/plonky2.git", rev = "3defd60532c8693cf5e9d2e6a8412c77ca58760f", optional = true }
plonky2_u32 = { git = "https://github.com/ax0/plonky2-u32", rev = "e5548e8e4a27d6660b686c65543f0d7d9731aa30" }
serde = "1.0.219"
serde_json = "1.0.140"
base64 = "0.22.1"
bs58 = "0.5.1"
schemars = "0.8.22"
num = { version = "0.4.3", features = ["num-bigint"] }
num-bigint = { version = "0.4.6", features = ["rand"] }
# num-bigint 0.4 requires rand 0.8
rand = "0.8.5"
hashbrown = { version = "0.14.3", default-features = false, features = ["serde"] }
pest = "2.8.0"
pest_derive = "2.8.0"
directories = { version = "6.0.0", optional = true }
minicbor-serde = { version = "0.5.0", features = ["std"], optional = true }
serde_bytes = "0.11"
serde_arrays = "0.2.0"
sha2 = { version = "0.10.9" }
# Uncomment for debugging with https://github.com/ed255/plonky2/ at branch `feat/debug`. The repo directory needs to be checked out next to the pod2 repo directory.
# [patch."https://github.com/0xPARC/plonky2"]
# plonky2 = { path = "../plonky2/plonky2" }
[dev-dependencies]
pretty_assertions = "1.4.1"
# Used only for testing JSON Schema generation and validation.
jsonschema = "0.30.0"
[build-dependencies]
vergen-gitcl = { version = "1.0.0", features = ["build"] }
[features]
default = ["backend_plonky2", "zk", "mem_cache"]
backend_plonky2 = ["plonky2"]
zk = []
metrics = []
time = []
examples = []
disk_cache = ["directories", "minicbor-serde"]
mem_cache = []
# Uncomment in order to enable debug information in the release builds. This allows getting panic backtraces with a performance similar to regular release.
# [profile.release]
# debug = true