From a31ccd048377f11cfa328ad476c4cf91787fe719 Mon Sep 17 00:00:00 2001 From: Zhang Zhuo Date: Sat, 14 Sep 2024 14:18:20 +0800 Subject: [PATCH] add bn254 fr tests --- examples/poseidon_bn254/.gitignore | 16 + examples/poseidon_bn254/program/Cargo.lock | 834 +++ examples/poseidon_bn254/program/Cargo.toml | 15 + .../program/elf/riscv32im-succinct-zkvm-elf | Bin 0 -> 173620 bytes examples/poseidon_bn254/program/src/main.rs | 32 + examples/poseidon_bn254/script/Cargo.lock | 5738 +++++++++++++++++ examples/poseidon_bn254/script/Cargo.toml | 11 + examples/poseidon_bn254/script/build.rs | 5 + examples/poseidon_bn254/script/src/main.rs | 26 + tests/bn254-scalar-arith/Cargo.lock | 953 +++ tests/bn254-scalar-arith/Cargo.toml | 9 + .../elf/riscv32im-succinct-zkvm-elf | Bin 0 -> 98036 bytes tests/bn254-scalar-arith/src/main.rs | 30 + 13 files changed, 7669 insertions(+) create mode 100644 examples/poseidon_bn254/.gitignore create mode 100644 examples/poseidon_bn254/program/Cargo.lock create mode 100644 examples/poseidon_bn254/program/Cargo.toml create mode 100755 examples/poseidon_bn254/program/elf/riscv32im-succinct-zkvm-elf create mode 100644 examples/poseidon_bn254/program/src/main.rs create mode 100644 examples/poseidon_bn254/script/Cargo.lock create mode 100644 examples/poseidon_bn254/script/Cargo.toml create mode 100644 examples/poseidon_bn254/script/build.rs create mode 100644 examples/poseidon_bn254/script/src/main.rs create mode 100644 tests/bn254-scalar-arith/Cargo.lock create mode 100644 tests/bn254-scalar-arith/Cargo.toml create mode 100755 tests/bn254-scalar-arith/elf/riscv32im-succinct-zkvm-elf create mode 100644 tests/bn254-scalar-arith/src/main.rs diff --git a/examples/poseidon_bn254/.gitignore b/examples/poseidon_bn254/.gitignore new file mode 100644 index 0000000000..0be6e7269a --- /dev/null +++ b/examples/poseidon_bn254/.gitignore @@ -0,0 +1,16 @@ +# Cargo build +**/target + +# Cargo config +.cargo + +# Profile-guided optimization +/tmp +pgo-data.profdata + +# MacOS nuisances +.DS_Store + +# Proofs +**/proof-with-pis.json +**/proof-with-io.json diff --git a/examples/poseidon_bn254/program/Cargo.lock b/examples/poseidon_bn254/program/Cargo.lock new file mode 100644 index 0000000000..3334760917 --- /dev/null +++ b/examples/poseidon_bn254/program/Cargo.lock @@ -0,0 +1,834 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "anyhow" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "tap", + "zeroize", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "ff" +version = "0.13.0" +source = "git+https://github.com/scroll-tech/ff?branch=feat/sp1#7e94aa6726837138b1b8346ec55b6ce6b593dc96" +dependencies = [ + "bitvec", + "rand_core", + "subtle", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core", + "subtle", +] + +[[package]] +name = "halo2curves" +version = "0.3.3" +source = "git+https://github.com/scroll-tech/halo2curves.git?branch=feat/sp1#366a78b34dbf3ebaed78435f8f16e033a7bcecfa" +dependencies = [ + "ff", + "group", + "lazy_static", + "num-bigint", + "num-traits", + "pasta_curves", + "paste", + "rand", + "rand_core", + "static_assertions", + "subtle", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "k256" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", + "signature", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin", +] + +[[package]] +name = "libc" +version = "0.2.155" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "memchr" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "parity-scale-codec" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +dependencies = [ + "arrayvec", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "pasta_curves" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" +dependencies = [ + "blake2b_simd", + "ff", + "group", + "lazy_static", + "rand", + "static_assertions", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "poseidon-base" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/poseidon-circuit.git?branch=feat/sp1#30d40848eae359cf8086a061a4d3bb81bf458f63" +dependencies = [ + "bitvec", + "halo2curves", + "lazy_static", + "subtle", +] + +[[package]] +name = "poseidon_bn254-program" +version = "0.1.0" +dependencies = [ + "halo2curves", + "hex", + "poseidon-base", + "sp1-zkvm", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "scale-info" +version = "2.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" +dependencies = [ + "cfg-if", + "derive_more", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "serde" +version = "1.0.203" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.203" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core", +] + +[[package]] +name = "snowbridge-amcl" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" +dependencies = [ + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "sp1-precompiles" +version = "0.1.0" +dependencies = [ + "anyhow", + "bincode", + "cfg-if", + "getrandom", + "hex", + "k256", + "num", + "rand", + "serde", + "snowbridge-amcl", +] + +[[package]] +name = "sp1-zkvm" +version = "0.1.0" +dependencies = [ + "bincode", + "cfg-if", + "getrandom", + "k256", + "libm", + "once_cell", + "rand", + "serde", + "sha2", + "sp1-precompiles", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "toml_datetime" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/examples/poseidon_bn254/program/Cargo.toml b/examples/poseidon_bn254/program/Cargo.toml new file mode 100644 index 0000000000..c4894356a4 --- /dev/null +++ b/examples/poseidon_bn254/program/Cargo.toml @@ -0,0 +1,15 @@ +[workspace] +[package] +version = "0.1.0" +name = "poseidon_bn254-program" +edition = "2021" + +[dependencies] +sp1-zkvm = { path = "../../../zkvm/entrypoint" } +hex = "0.4" +halo2curves = { git = "https://github.com/scroll-tech/halo2curves.git", branch = "feat/sp1" } +poseidon_base = { git = "https://github.com/scroll-tech/poseidon-circuit.git", package = "poseidon-base", branch = "feat/sp1" } + +[patch.crates-io] +ff = { git = "https://github.com/scroll-tech/ff", branch = "feat/sp1" } +halo2curves = { git = "https://github.com/scroll-tech/halo2curves.git", branch = "feat/sp1" } diff --git a/examples/poseidon_bn254/program/elf/riscv32im-succinct-zkvm-elf b/examples/poseidon_bn254/program/elf/riscv32im-succinct-zkvm-elf new file mode 100755 index 0000000000000000000000000000000000000000..52442a1ba73bb96c2dee05837287bb8be6ad79fe GIT binary patch literal 173620 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 literal 0 HcmV?d00001 diff --git a/examples/poseidon_bn254/program/src/main.rs b/examples/poseidon_bn254/program/src/main.rs new file mode 100644 index 0000000000..0179f5fbfa --- /dev/null +++ b/examples/poseidon_bn254/program/src/main.rs @@ -0,0 +1,32 @@ +//! A simple program to be proven inside the zkVM. +#![no_main] +sp1_zkvm::entrypoint!(main); + +use halo2curves::bn256::Fr; +use halo2curves::ff::PrimeField; +use poseidon_base::Hashable; + +pub fn main() { + let message = [Fr::from(1), Fr::from(2)]; + + let mut results = Vec::new(); + for _ in 0..20 { + println!("cycle-tracker-start: hash with domain"); + results.push(Fr::hash_with_domain(message, Fr::zero())); + println!("cycle-tracker-end: hash with domain"); + } + // Use the results in some way that the compiler can't optimize away. + let c = if results.len() > 0 { + results[0] + } else { + Fr::zero() + }; + + let mut c_le_bytes = c.to_repr().to_vec(); + c_le_bytes.reverse(); + + assert_eq!( + hex::encode(&c_le_bytes), + "115cc0f5e7d690413df64c6b9662e9cf2a3617f2743245519e19607a4417189a" + ); +} diff --git a/examples/poseidon_bn254/script/Cargo.lock b/examples/poseidon_bn254/script/Cargo.lock new file mode 100644 index 0000000000..0ef079db68 --- /dev/null +++ b/examples/poseidon_bn254/script/Cargo.lock @@ -0,0 +1,5738 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addchain" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" +dependencies = [ + "num-bigint 0.3.3", + "num-integer", + "num-traits", +] + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + +[[package]] +name = "alloy-primitives" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8aa973e647ec336810a9356af8aea787249c9d00b1525359f3db29a68d231b" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more", + "hex-literal", + "itoa", + "k256", + "keccak-asm", + "proptest", + "rand", + "ruint", + "serde", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b155716bab55763c95ba212806cf43d05bcc70e5f35b02bad20cf5ec7fe11fed" +dependencies = [ + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dbd17d67f3e89478c8a634416358e539e577899666c927bc3d2b1328ee9b6ca" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6da95adcf4760bb4b108fefa51d50096c5e5fdd29ee72fed3e86ee414f2e34" +dependencies = [ + "alloy-sol-macro-input", + "const-hex", + "heck 0.4.1", + "indexmap 2.2.6", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.66", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32c8da04c1343871fb6ce5a489218f9c85323c8340a36e9106b5fc98d4dd59d5" +dependencies = [ + "const-hex", + "dunce", + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.66", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-types" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40a64d2d2395c1ac636b62419a7b17ec39031d6b2367e66e9acbf566e6055e9c" +dependencies = [ + "alloy-primitives", + "alloy-sol-macro", + "const-hex", + "serde", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anstream" +version = "0.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" + +[[package]] +name = "anstyle-parse" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint 0.4.5", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint 0.4.5", + "num-traits", + "paste", + "rustc_version 0.4.0", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint 0.4.5", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.5", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint 0.4.5", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "async-trait" +version = "0.1.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "async_io_stream" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +dependencies = [ + "futures", + "pharos", + "rustc_version 0.4.0", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "auto_impl" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "axum" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +dependencies = [ + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.0", + "http-body-util", + "hyper 1.3.1", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper 1.0.1", + "tokio", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.0", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 0.1.2", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "backtrace" +version = "0.3.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "serde", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bindgen" +version = "0.69.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +dependencies = [ + "bitflags 2.5.0", + "cexpr", + "clang-sys", + "itertools 0.12.1", + "lazy_static", + "lazycell", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.66", + "which", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "blake3" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "rayon", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "bls12_381" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3c196a77437e7cc2fb515ce413a6401291578b5afc8ecb29a3c7ab957f05941" +dependencies = [ + "ff 0.12.1", + "group 0.12.1", + "pairing", + "rand_core", + "subtle", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "sha2", + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +dependencies = [ + "serde", +] + +[[package]] +name = "camino" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.23", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cc" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" +dependencies = [ + "jobserver", + "libc", + "once_cell", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-targets 0.52.5", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "4.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "clap_lex" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" + +[[package]] +name = "coins-bip32" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" +dependencies = [ + "bs58", + "coins-core", + "digest 0.10.7", + "hmac", + "k256", + "serde", + "sha2", + "thiserror", +] + +[[package]] +name = "coins-bip39" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" +dependencies = [ + "bitvec", + "coins-bip32", + "hmac", + "once_cell", + "pbkdf2 0.12.2", + "rand", + "sha2", + "thiserror", +] + +[[package]] +name = "coins-core" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" +dependencies = [ + "base64 0.21.7", + "bech32", + "bs58", + "digest 0.10.7", + "generic-array 0.14.7", + "hex", + "ripemd", + "serde", + "serde_derive", + "sha2", + "sha3", + "thiserror", +] + +[[package]] +name = "colorchoice" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" + +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.52.0", +] + +[[package]] +name = "const-hex" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array 0.14.7", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array 0.14.7", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "fiat-crypto", + "platforms", + "rustc_version 0.4.0", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "darling" +version = "0.20.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.66", +] + +[[package]] +name = "darling_macro" +version = "0.20.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.0", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dunce" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "either" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" + +[[package]] +name = "elf" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4445909572dbd556c457c849c4ca58623d84b27c8fff1e74b0b4227d8b90d17b" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff 0.13.0", + "generic-array 0.14.7", + "group 0.13.0", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "encoding_rs" +version = "0.8.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enr" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" +dependencies = [ + "base64 0.21.7", + "bytes", + "hex", + "k256", + "log", + "rand", + "rlp", + "serde", + "sha3", + "zeroize", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "eth-keystore" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" +dependencies = [ + "aes", + "ctr", + "digest 0.10.7", + "hex", + "hmac", + "pbkdf2 0.11.0", + "rand", + "scrypt", + "serde", + "serde_json", + "sha2", + "sha3", + "thiserror", + "uuid", +] + +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3", + "thiserror", + "uint", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "primitive-types", + "scale-info", + "uint", +] + +[[package]] +name = "ethers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" +dependencies = [ + "ethers-addressbook", + "ethers-contract", + "ethers-core", + "ethers-middleware", + "ethers-providers", + "ethers-signers", +] + +[[package]] +name = "ethers-addressbook" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" +dependencies = [ + "ethers-core", + "once_cell", + "serde", + "serde_json", +] + +[[package]] +name = "ethers-contract" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" +dependencies = [ + "const-hex", + "ethers-contract-abigen", + "ethers-contract-derive", + "ethers-core", + "ethers-providers", + "futures-util", + "once_cell", + "pin-project", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "ethers-contract-abigen" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" +dependencies = [ + "Inflector", + "const-hex", + "dunce", + "ethers-core", + "eyre", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "serde", + "serde_json", + "syn 2.0.66", + "toml", + "walkdir", +] + +[[package]] +name = "ethers-contract-derive" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" +dependencies = [ + "Inflector", + "const-hex", + "ethers-contract-abigen", + "ethers-core", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.66", +] + +[[package]] +name = "ethers-core" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" +dependencies = [ + "arrayvec", + "bytes", + "cargo_metadata", + "chrono", + "const-hex", + "elliptic-curve", + "ethabi", + "generic-array 0.14.7", + "k256", + "num_enum 0.7.2", + "once_cell", + "open-fastrlp", + "rand", + "rlp", + "serde", + "serde_json", + "strum", + "syn 2.0.66", + "tempfile", + "thiserror", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "ethers-middleware" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" +dependencies = [ + "async-trait", + "auto_impl", + "ethers-contract", + "ethers-core", + "ethers-providers", + "ethers-signers", + "futures-channel", + "futures-locks", + "futures-util", + "instant", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-futures", + "url", +] + +[[package]] +name = "ethers-providers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" +dependencies = [ + "async-trait", + "auto_impl", + "base64 0.21.7", + "bytes", + "const-hex", + "enr", + "ethers-core", + "futures-core", + "futures-timer", + "futures-util", + "hashers", + "http 0.2.12", + "instant", + "jsonwebtoken", + "once_cell", + "pin-project", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-futures", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "ws_stream_wasm", +] + +[[package]] +name = "ethers-signers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" +dependencies = [ + "async-trait", + "coins-bip32", + "coins-bip39", + "const-hex", + "elliptic-curve", + "eth-keystore", + "ethers-core", + "rand", + "sha2", + "thiserror", + "tracing", +] + +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +dependencies = [ + "bitvec", + "rand_core", + "subtle", +] + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "bitvec", + "byteorder", + "ff_derive", + "rand_core", + "subtle", +] + +[[package]] +name = "ff_derive" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f54704be45ed286151c5e11531316eaef5b8f5af7d597b806fdb8af108d84a" +dependencies = [ + "addchain", + "cfg-if", + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-locks" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" +dependencies = [ + "futures-channel", + "futures-task", +] + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" +dependencies = [ + "gloo-timers", + "send_wrapper 0.4.0", +] + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "generic-array" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe739944a5406424e080edccb6add95685130b9f160d5407c639c7df0c5836b0" +dependencies = [ + "serde", + "typenum", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "git2" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "232e6a7bfe35766bf715e55a88b39a700596c0ccfd88cd3680b4cdb40d66ef70" +dependencies = [ + "bitflags 2.5.0", + "libc", + "libgit2-sys", + "log", + "url", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "group" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +dependencies = [ + "ff 0.12.1", + "memuse", + "rand_core", + "subtle", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff 0.13.0", + "rand_core", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.2.6", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.1.0", + "indexmap 2.2.6", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "halo2" +version = "0.1.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a23c779b38253fe1538102da44ad5bd5378495a61d2c4ee18d64eaa61ae5995" +dependencies = [ + "halo2_proofs", +] + +[[package]] +name = "halo2_proofs" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e925780549adee8364c7f2b685c753f6f3df23bde520c67416e93bf615933760" +dependencies = [ + "blake2b_simd", + "ff 0.12.1", + "group 0.12.1", + "pasta_curves 0.4.1", + "rand_core", + "rayon", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "hashers" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" +dependencies = [ + "fxhash", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http 1.1.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +dependencies = [ + "bytes", + "futures-core", + "http 1.1.0", + "http-body 1.0.0", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.0", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper 1.3.1", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.3.1", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d8d52be92d09acc2e01dddb7fde3ad983fc6489c7db4837e605bc3fca4cb63e" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.0", + "hyper 1.3.1", + "pin-project-lite", + "socket2", + "tokio", + "tower", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", + "serde", +] + +[[package]] +name = "indicatif" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +dependencies = [ + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-width", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jobserver" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "jsonwebtoken" +version = "8.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +dependencies = [ + "base64 0.21.7", + "pem", + "ring 0.16.20", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "jubjub" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a575df5f985fe1cd5b2b05664ff6accfc46559032b954529fd225a2168d27b0f" +dependencies = [ + "bitvec", + "bls12_381", + "ff 0.12.1", + "group 0.12.1", + "rand_core", + "subtle", +] + +[[package]] +name = "k256" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", + "signature", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47a3633291834c4fbebf8673acbc1b04ec9d151418ff9b8e26dcd79129928758" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin 0.5.2", +] + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "libc" +version = "0.2.155" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" + +[[package]] +name = "libgit2-sys" +version = "0.16.2+1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee4126d8b4ee5c9d9ea891dd875cfdc1e9d0950437179104b183d7d8a74d24e8" +dependencies = [ + "cc", + "libc", + "libz-sys", + "pkg-config", +] + +[[package]] +name = "libloading" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +dependencies = [ + "cfg-if", + "windows-targets 0.52.5", +] + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.5.0", + "libc", +] + +[[package]] +name = "libz-sys" +version = "1.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "memchr" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" + +[[package]] +name = "memuse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2145869435ace5ea6ea3d35f59be559317ec9a0d04e1812d5f185a87b6d36f1a" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "native-tls" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint 0.4.5", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint 0.4.5", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive 0.5.11", +] + +[[package]] +name = "num_enum" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +dependencies = [ + "num_enum_derive 0.7.2", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "open-fastrlp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", + "ethereum-types", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "openssl" +version = "0.10.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +dependencies = [ + "bitflags 2.5.0", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "p3-air" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "p3-field", + "p3-matrix", +] + +[[package]] +name = "p3-baby-bear" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "num-bigint 0.4.5", + "p3-field", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "rand", + "serde", +] + +[[package]] +name = "p3-blake3" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "blake3", + "p3-symmetric", +] + +[[package]] +name = "p3-bn254-fr" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "ff 0.13.0", + "num-bigint 0.4.5", + "p3-field", + "p3-poseidon2", + "p3-symmetric", + "rand", + "serde", +] + +[[package]] +name = "p3-challenger" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "p3-field", + "p3-maybe-rayon", + "p3-symmetric", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-commit" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "itertools 0.12.1", + "p3-challenger", + "p3-field", + "p3-matrix", + "p3-util", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "itertools 0.12.1", + "num-bigint 0.4.5", + "num-traits", + "p3-util", + "rand", + "serde", +] + +[[package]] +name = "p3-fri" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "itertools 0.12.1", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-interpolation", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-interpolation" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-util", +] + +[[package]] +name = "p3-keccak" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "p3-symmetric", + "tiny-keccak", +] + +[[package]] +name = "p3-keccak-air" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "p3-air", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "rayon", +] + +[[package]] +name = "p3-mds" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "itertools 0.12.1", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rand", +] + +[[package]] +name = "p3-merkle-tree" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "itertools 0.12.1", + "p3-commit", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-symmetric", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-poseidon2" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "gcd", + "p3-field", + "p3-mds", + "p3-symmetric", + "rand", +] + +[[package]] +name = "p3-symmetric" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "serde", +] + +[[package]] +name = "p3-uni-stark" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "itertools 0.12.1", + "p3-air", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-util" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=3b5265f9d5af36534a46caebf0617595cfb42c5a#3b5265f9d5af36534a46caebf0617595cfb42c5a" +dependencies = [ + "serde", +] + +[[package]] +name = "pairing" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135590d8bdba2b31346f9cd1fb2a912329f5135e832a4f422942eb6ead8b6b3b" +dependencies = [ + "group 0.12.1", +] + +[[package]] +name = "parity-scale-codec" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.5", +] + +[[package]] +name = "pasta_curves" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc65faf8e7313b4b1fbaa9f7ca917a0eed499a9663be71477f87993604341d8" +dependencies = [ + "blake2b_simd", + "ff 0.12.1", + "group 0.12.1", + "lazy_static", + "rand", + "static_assertions", + "subtle", +] + +[[package]] +name = "pasta_curves" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" +dependencies = [ + "blake2b_simd", + "ff 0.13.0", + "group 0.13.0", + "lazy_static", + "rand", + "static_assertions", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac", +] + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version 0.4.0", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "platforms" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7" + +[[package]] +name = "portable-atomic" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + +[[package]] +name = "poseidon_bn254-script" +version = "0.1.0" +dependencies = [ + "sp1-helper", + "sp1-sdk", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "prettyplease" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +dependencies = [ + "proc-macro2", + "syn 2.0.66", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.5.0", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax 0.8.3", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "prost" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" +dependencies = [ + "anyhow", + "itertools 0.12.1", + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "rayon-scan" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f87cc11a0140b4b0da0ffc889885760c61b13672d80a908920b2c0df078fa14" +dependencies = [ + "rayon", +] + +[[package]] +name = "redox_syscall" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +dependencies = [ + "bitflags 2.5.0", +] + +[[package]] +name = "redox_users" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.3", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.29", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration", + "tokio", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg 0.50.0", +] + +[[package]] +name = "reqwest" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.0", + "http-body-util", + "hyper 1.3.1", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-pemfile", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "webpki-roots", + "winreg 0.52.0", +] + +[[package]] +name = "reqwest-middleware" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a45d100244a467870f6cb763c4484d010a6bed6bd610b3676e3825d93fb4cfbd" +dependencies = [ + "anyhow", + "async-trait", + "http 1.1.0", + "reqwest 0.12.4", + "serde", + "thiserror", + "tower-service", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rlp-derive", + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rrs-lib" +version = "0.1.0" +source = "git+https://github.com/GregAC/rrs.git#b23afc16b4e6a1fb5c4a73eb1e337e9400816507" +dependencies = [ + "downcast-rs", + "num_enum 0.5.11", + "paste", +] + +[[package]] +name = "ruint" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f308135fef9fc398342da5472ce7c484529df23743fb7c734e0f3d472971e62" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp", + "num-bigint 0.4.5", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f86854cf50259291520509879a5c294c3c9a4c334e9ff65071c51e42ef1e2343" + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.23", +] + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.5.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +dependencies = [ + "log", + "ring 0.17.8", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +dependencies = [ + "base64 0.22.1", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" + +[[package]] +name = "rustls-webpki" +version = "0.102.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" +dependencies = [ + "ring 0.17.8", + "rustls-pki-types", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scale-info" +version = "2.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" +dependencies = [ + "cfg-if", + "derive_more", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scc" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ad2bbb0ae5100a07b7a6f2ed7ab5fd0045551a4c507989b7a620046ea3efdc" +dependencies = [ + "sdd", +] + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" +dependencies = [ + "hmac", + "pbkdf2 0.11.0", + "salsa20", + "sha2", +] + +[[package]] +name = "sdd" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b84345e4c9bd703274a082fb80caaa99b7612be48dfaa1dd9266577ec412309d" + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array 0.14.7", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "security-framework" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +dependencies = [ + "bitflags 2.5.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + +[[package]] +name = "serde" +version = "1.0.203" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.203" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "serde_json" +version = "1.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.2.6", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "serial_test" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b4b487fe2acf240a021cf57c6b2b4903b1e78ca0ecd862a71b71d2a51fed77d" +dependencies = [ + "futures", + "log", + "once_cell", + "parking_lot", + "scc", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3-asm" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9b57fd861253bff08bb1919e995f90ba8f4889de2726091c8876f3a4e823b40" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core", +] + +[[package]] +name = "simple_asn1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +dependencies = [ + "num-bigint 0.4.5", + "num-traits", + "thiserror", + "time", +] + +[[package]] +name = "size" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fed904c7fb2856d868b92464fc8fa597fce366edea1a9cbfaa8cb5fe080bd6d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "snowbridge-amcl" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" +dependencies = [ + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "sp1-core" +version = "0.1.0" +dependencies = [ + "anyhow", + "arrayref", + "bincode", + "blake3", + "cfg-if", + "curve25519-dalek", + "elf", + "elliptic-curve", + "generic-array 1.0.0", + "hex", + "itertools 0.12.1", + "k256", + "log", + "nohash-hasher", + "num", + "num-bigint 0.4.5", + "num_cpus", + "p3-air", + "p3-baby-bear", + "p3-blake3", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-keccak", + "p3-keccak-air", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-uni-stark", + "p3-util", + "rayon-scan", + "rrs-lib", + "serde", + "serde_with", + "size", + "snowbridge-amcl", + "sp1-derive", + "sp1-primitives", + "strum", + "strum_macros", + "tempfile", + "thiserror", + "tracing", + "tracing-forest", + "tracing-subscriber", + "typenum", + "web-time", +] + +[[package]] +name = "sp1-derive" +version = "0.1.0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp1-helper" +version = "0.1.0" +dependencies = [ + "cargo_metadata", + "chrono", +] + +[[package]] +name = "sp1-primitives" +version = "0.1.0" +dependencies = [ + "itertools 0.12.1", + "lazy_static", + "p3-baby-bear", + "p3-field", + "p3-poseidon2", + "p3-symmetric", +] + +[[package]] +name = "sp1-prover" +version = "0.1.0" +dependencies = [ + "anyhow", + "backtrace", + "bincode", + "clap", + "dirs", + "futures", + "hex", + "indicatif", + "itertools 0.12.1", + "num-bigint 0.4.5", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-field", + "rayon", + "reqwest 0.12.4", + "serde", + "serde_json", + "serial_test", + "sha2", + "size", + "sp1-core", + "sp1-primitives", + "sp1-recursion-circuit", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-recursion-gnark-ffi", + "sp1-recursion-program", + "subtle-encoding", + "tempfile", + "thiserror", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "sp1-recursion-circuit" +version = "0.1.0" +dependencies = [ + "bincode", + "itertools 0.12.1", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-commit", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-util", + "serde", + "sp1-core", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-recursion-derive", + "sp1-recursion-program", +] + +[[package]] +name = "sp1-recursion-compiler" +version = "0.1.0" +dependencies = [ + "backtrace", + "itertools 0.12.1", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-commit", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-poseidon2", + "p3-symmetric", + "p3-util", + "serde", + "sp1-core", + "sp1-recursion-core", + "sp1-recursion-derive", + "tracing", +] + +[[package]] +name = "sp1-recursion-core" +version = "0.1.0" +dependencies = [ + "arrayref", + "backtrace", + "ff 0.13.0", + "hashbrown 0.14.5", + "itertools 0.12.1", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "serde", + "serde_with", + "sp1-core", + "sp1-derive", + "sp1-primitives", + "static_assertions", + "tracing", + "zkhash", +] + +[[package]] +name = "sp1-recursion-derive" +version = "0.1.0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp1-recursion-gnark-ffi" +version = "0.1.0" +dependencies = [ + "bindgen", + "cc", + "cfg-if", + "log", + "num-bigint 0.4.5", + "p3-baby-bear", + "p3-field", + "rand", + "serde", + "serde_json", + "sp1-recursion-compiler", + "tempfile", +] + +[[package]] +name = "sp1-recursion-program" +version = "0.1.0" +dependencies = [ + "itertools 0.12.1", + "p3-air", + "p3-baby-bear", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-util", + "rand", + "serde", + "sp1-core", + "sp1-recursion-compiler", + "sp1-recursion-core", + "tracing", +] + +[[package]] +name = "sp1-sdk" +version = "0.1.0" +dependencies = [ + "alloy-sol-types", + "anyhow", + "async-trait", + "axum", + "bincode", + "cfg-if", + "dirs", + "ethers", + "futures", + "hex", + "indicatif", + "log", + "num-bigint 0.4.5", + "p3-commit", + "p3-field", + "p3-matrix", + "prost", + "reqwest 0.12.4", + "reqwest-middleware", + "serde", + "serde_json", + "sha2", + "sp1-core", + "sp1-prover", + "strum", + "strum_macros", + "tempfile", + "tokio", + "tracing", + "twirp", + "vergen", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.66", +] + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "subtle-encoding" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dcb1ed7b8330c5eed5441052651dd7a12c75e2ed88f2ec024ae1fa3a5e59945" +dependencies = [ + "zeroize", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8db114c44cf843a8bacd37a146e37987a0b823a0e8bc4fdc610c9c72ab397a5" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "thiserror" +version = "1.0.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.14", +] + +[[package]] +name = "toml_datetime" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.2.6", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.2.6", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +dependencies = [ + "indexmap 2.2.6", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.8", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-forest" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee40835db14ddd1e3ba414292272eddde9dad04d3d4b65509656414d1c42592f" +dependencies = [ + "ansi_term", + "smallvec", + "thiserror", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "twirp" +version = "0.3.0" +source = "git+https://github.com/github/twirp-rs.git?rev=c85f31f9c54957374e7dcb3534fc52cff0aa2dc5#c85f31f9c54957374e7dcb3534fc52cff0aa2dc5" +dependencies = [ + "async-trait", + "axum", + "bytes", + "futures", + "http 1.1.0", + "http-body-util", + "hyper 1.3.1", + "prost", + "reqwest 0.12.4", + "serde", + "serde_json", + "thiserror", + "tokio", + "tower", + "url", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-width" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "vergen" +version = "8.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e27d6bdd219887a9eadd19e1c34f32e47fa332301184935c6d9bca26f3cca525" +dependencies = [ + "anyhow", + "cfg-if", + "git2", + "rustversion", + "time", +] + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.66", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "wasm-streams" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +dependencies = [ + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "ws_stream_wasm" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" +dependencies = [ + "async_io_stream", + "futures", + "js-sys", + "log", + "pharos", + "rustc_version 0.4.0", + "send_wrapper 0.6.0", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "zerocopy" +version = "0.7.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "zkhash" +version = "0.2.0" +source = "git+https://github.com/HorizenLabs/poseidon2#bb476b9ca38198cf5092487283c8b8c5d4317c4e" +dependencies = [ + "ark-ff 0.4.2", + "ark-std 0.4.0", + "bitvec", + "blake2", + "bls12_381", + "byteorder", + "cfg-if", + "group 0.12.1", + "group 0.13.0", + "halo2", + "hex", + "jubjub", + "lazy_static", + "pasta_curves 0.5.1", + "rand", + "serde", + "sha2", + "sha3", + "subtle", +] diff --git a/examples/poseidon_bn254/script/Cargo.toml b/examples/poseidon_bn254/script/Cargo.toml new file mode 100644 index 0000000000..712d15d1e1 --- /dev/null +++ b/examples/poseidon_bn254/script/Cargo.toml @@ -0,0 +1,11 @@ +[workspace] +[package] +version = "0.1.0" +name = "poseidon_bn254-script" +edition = "2021" + +[dependencies] +sp1-sdk = { path = "../../../sdk" } + +[build-dependencies] +sp1-helper = { path = "../../../helper" } \ No newline at end of file diff --git a/examples/poseidon_bn254/script/build.rs b/examples/poseidon_bn254/script/build.rs new file mode 100644 index 0000000000..32b99273cd --- /dev/null +++ b/examples/poseidon_bn254/script/build.rs @@ -0,0 +1,5 @@ +use sp1_helper::build_program; + +fn main() { + build_program("../program") +} diff --git a/examples/poseidon_bn254/script/src/main.rs b/examples/poseidon_bn254/script/src/main.rs new file mode 100644 index 0000000000..43a04adfd1 --- /dev/null +++ b/examples/poseidon_bn254/script/src/main.rs @@ -0,0 +1,26 @@ +//! A simple script to generate and verify the proof of a given program. +// use sp1_core::{SP1Prover, SP1Stdin, SP1Verifier}; +use sp1_sdk::{utils, ProverClient, SP1Stdin}; + +const ELF: &[u8] = include_bytes!("../../program/elf/riscv32im-succinct-zkvm-elf"); + +fn main() { + utils::setup_logger(); + + // Generate proof. + let mut stdin = SP1Stdin::new(); + + let client = ProverClient::new(); + let (pk, vk) = client.setup(ELF); + let mut proof = client.prove(&pk, stdin).expect("proving failed"); + + // Verify proof. + client.verify(&proof, &vk).expect("verification failed"); + + // Save proof. + proof + .save("proof-with-io.json") + .expect("saving proof failed"); + + println!("successfully generated and verified proof for the program!") +} diff --git a/tests/bn254-scalar-arith/Cargo.lock b/tests/bn254-scalar-arith/Cargo.lock new file mode 100644 index 0000000000..1824553209 --- /dev/null +++ b/tests/bn254-scalar-arith/Cargo.lock @@ -0,0 +1,953 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "anyhow" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "autocfg" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bn254-scalar-arith-test" +version = "0.1.0" +dependencies = [ + "num", + "sp1-zkvm", +] + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "either" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "tap", + "zeroize", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "bitvec", + "rand_core", + "subtle", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core", + "subtle", +] + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "k256" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", + "signature", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "memchr" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" + +[[package]] +name = "num" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3135b08af27d103b0a51f2ae0f8632117b7b185ccf931445affa8df530576a41" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "p3-baby-bear" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?branch=sp1#056f328a5096049b2b308fb6dc3497249e81d354" +dependencies = [ + "num-bigint", + "p3-field", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "rand", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?branch=sp1#056f328a5096049b2b308fb6dc3497249e81d354" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?branch=sp1#056f328a5096049b2b308fb6dc3497249e81d354" +dependencies = [ + "itertools 0.12.1", + "num-bigint", + "num-traits", + "p3-util", + "rand", + "serde", +] + +[[package]] +name = "p3-matrix" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?branch=sp1#056f328a5096049b2b308fb6dc3497249e81d354" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?branch=sp1#056f328a5096049b2b308fb6dc3497249e81d354" + +[[package]] +name = "p3-mds" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?branch=sp1#056f328a5096049b2b308fb6dc3497249e81d354" +dependencies = [ + "itertools 0.11.0", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rand", +] + +[[package]] +name = "p3-poseidon2" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?branch=sp1#056f328a5096049b2b308fb6dc3497249e81d354" +dependencies = [ + "gcd", + "p3-field", + "p3-mds", + "p3-symmetric", + "rand", +] + +[[package]] +name = "p3-symmetric" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?branch=sp1#056f328a5096049b2b308fb6dc3497249e81d354" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "serde", +] + +[[package]] +name = "p3-util" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?branch=sp1#056f328a5096049b2b308fb6dc3497249e81d354" +dependencies = [ + "serde", +] + +[[package]] +name = "parity-scale-codec" +version = "3.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881331e34fa842a2fb61cc2db9643a8fedc615e47cfcc52597d1af0db9a7e8fe" +dependencies = [ + "arrayvec", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" +dependencies = [ + "proc-macro-crate 2.0.2", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +dependencies = [ + "toml_datetime", + "toml_edit 0.20.2", +] + +[[package]] +name = "proc-macro2" +version = "1.0.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "scale-info" +version = "2.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c453e59a955f81fb62ee5d596b450383d699f152d350e9d23a0db2adb78e4c0" +dependencies = [ + "cfg-if", + "derive_more", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18cf6c6447f813ef19eb450e985bcce6705f9ce7660db221b59093d15c79c4b7" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "serde" +version = "1.0.198" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.198" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core", +] + +[[package]] +name = "snowbridge-amcl" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" +dependencies = [ + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "sp1-precompiles" +version = "0.1.0" +dependencies = [ + "anyhow", + "bincode", + "cfg-if", + "getrandom", + "hex", + "k256", + "num", + "rand", + "serde", + "snowbridge-amcl", +] + +[[package]] +name = "sp1-primitives" +version = "0.1.0" +dependencies = [ + "itertools 0.12.1", + "lazy_static", + "p3-baby-bear", + "p3-field", + "p3-poseidon2", + "p3-symmetric", +] + +[[package]] +name = "sp1-zkvm" +version = "0.1.0" +dependencies = [ + "bincode", + "cfg-if", + "getrandom", + "k256", + "libm", + "once_cell", + "p3-baby-bear", + "p3-field", + "rand", + "serde", + "sha2", + "sp1-precompiles", + "sp1-primitives", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" diff --git a/tests/bn254-scalar-arith/Cargo.toml b/tests/bn254-scalar-arith/Cargo.toml new file mode 100644 index 0000000000..0ff405e930 --- /dev/null +++ b/tests/bn254-scalar-arith/Cargo.toml @@ -0,0 +1,9 @@ +[workspace] +[package] +version = "0.1.0" +name = "bn254-scalar-arith-test" +edition = "2021" + +[dependencies] +sp1-zkvm = { path = "../../zkvm/entrypoint" } +num = { version = "0.4.1", default-features = false } \ No newline at end of file diff --git a/tests/bn254-scalar-arith/elf/riscv32im-succinct-zkvm-elf b/tests/bn254-scalar-arith/elf/riscv32im-succinct-zkvm-elf new file mode 100755 index 0000000000000000000000000000000000000000..b97a2360493a2070b298275cbf97143a5714b0f0 GIT binary patch literal 98036 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 literal 0 HcmV?d00001 diff --git a/tests/bn254-scalar-arith/src/main.rs b/tests/bn254-scalar-arith/src/main.rs new file mode 100644 index 0000000000..6adc9e0cc4 --- /dev/null +++ b/tests/bn254-scalar-arith/src/main.rs @@ -0,0 +1,30 @@ +#![no_main] +sp1_zkvm::entrypoint!(main); + +extern "C" { + fn syscall_bn254_scalar_mul(p: *mut u32, q: *const u32); +} + +fn main() { + let mut p: [u8; 32] = [ + 69, 44, 191, 0, 130, 148, 188, 171, 61, 47, 83, 78, 152, 132, 196, 72, 209, 29, 140, 237, + 126, 75, 223, 58, 115, 139, 235, 236, 200, 47, 2, 28, + ]; + let q: [u8; 32] = [ + 169, 1, 76, 216, 163, 152, 124, 133, 147, 234, 54, 244, 220, 34, 93, 224, 147, 90, 136, + 227, 1, 70, 214, 130, 142, 119, 53, 203, 16, 160, 133, 43, + ]; + + let c: [u8; 32] = [ + 43, 132, 167, 109, 73, 175, 44, 161, 152, 82, 20, 126, 173, 132, 9, 50, 112, 242, 217, 141, + 87, 50, 0, 64, 74, 105, 9, 124, 167, 37, 39, 37, + ]; + + // println!("cycle-tracker-start: bn254_scalar_mul"); + unsafe { + syscall_bn254_scalar_mul(p.as_mut_ptr() as *mut u32, q.as_ptr() as *const u32); + } + // println!("cycle-tracker-end: bn254_scalar_mul"); + + assert_eq!(p, c); +}