From 270ad74ac9322242b84631bd59b164fa9ab1a833 Mon Sep 17 00:00:00 2001 From: Yuwen Zhang Date: Thu, 10 Oct 2024 13:38:41 -0700 Subject: [PATCH] feat: solana smart contract example (#3) --- .gitignore | 12 +- Cargo.lock | 6930 +++++++++++++++-- Cargo.toml | 8 +- README.md | 6 +- example/README.md | 92 +- example/binaries/is-prime_proof.bin | Bin 1441 -> 0 bytes example/binaries/sha2_proof.bin | Bin 1425 -> 0 bytes example/binaries/tendermint_proof.bin | Bin 1425 -> 0 bytes .../fibonacci-riscv32im-succinct-zkvm-elf | Bin 130836 -> 0 bytes .../elfs/isprime-riscv32im-succinct-zkvm-elf | Bin 130396 -> 0 bytes example/elfs/sha2-riscv32im-succinct-zkvm-elf | Bin 110364 -> 0 bytes .../tendermint-riscv32im-succinct-zkvm-elf | Bin 909852 -> 0 bytes example/script/Cargo.lock | 363 +- example/script/Cargo.toml | 19 +- example/script/build.rs | 6 - example/script/src/main.rs | 151 +- example/solana/package.json | 29 + example/solana/pnpm-lock.yaml | 1346 ++++ example/solana/program/Cargo.lock | 1636 ++++ example/solana/program/Cargo.toml | 18 + example/solana/program/src/lib.rs | 26 + example/solana/tests/tsconfig.test.json | 10 + example/solana/tests/verifier.test.ts | 67 + example/sp1-program/Cargo.toml | 8 + .../elf/riscv32im-succinct-zkvm-elf | Bin 0 -> 131392 bytes example/sp1-program/src/main.rs | 37 + proof-fixtures/fibonacci_fixture.bin | 1 + proof-fixtures/fibonacci_fixture_bad.bin | Bin 0 -> 396 bytes .../binaries => proofs}/fibonacci_proof.bin | Bin verifier/Cargo.toml | 20 +- verifier/src/fixture.rs | 151 + verifier/src/lib.rs | 117 +- .../vk/groth16_vk.bin | Bin 33 files changed, 9945 insertions(+), 1108 deletions(-) delete mode 100644 example/binaries/is-prime_proof.bin delete mode 100644 example/binaries/sha2_proof.bin delete mode 100644 example/binaries/tendermint_proof.bin delete mode 100755 example/elfs/fibonacci-riscv32im-succinct-zkvm-elf delete mode 100644 example/elfs/isprime-riscv32im-succinct-zkvm-elf delete mode 100644 example/elfs/sha2-riscv32im-succinct-zkvm-elf delete mode 100644 example/elfs/tendermint-riscv32im-succinct-zkvm-elf delete mode 100644 example/script/build.rs create mode 100644 example/solana/package.json create mode 100644 example/solana/pnpm-lock.yaml create mode 100644 example/solana/program/Cargo.lock create mode 100644 example/solana/program/Cargo.toml create mode 100644 example/solana/program/src/lib.rs create mode 100644 example/solana/tests/tsconfig.test.json create mode 100644 example/solana/tests/verifier.test.ts create mode 100644 example/sp1-program/Cargo.toml create mode 100755 example/sp1-program/elf/riscv32im-succinct-zkvm-elf create mode 100644 example/sp1-program/src/main.rs create mode 100644 proof-fixtures/fibonacci_fixture.bin create mode 100644 proof-fixtures/fibonacci_fixture_bad.bin rename {example/binaries => proofs}/fibonacci_proof.bin (100%) create mode 100644 verifier/src/fixture.rs rename example/vk/groth16_v2.0.0.bin => verifier/vk/groth16_vk.bin (100%) diff --git a/.gitignore b/.gitignore index 9f97022..3994d02 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,11 @@ -target/ \ No newline at end of file +# Build output +target/ + +# Node modules +**/*/node_modules + +# Test fixtures +**/*/tests/fixtures + +test_serialized_fixture.bin + diff --git a/Cargo.lock b/Cargo.lock index 084d84b..3724ac1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,53 @@ # 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.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[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" @@ -14,6 +61,191 @@ dependencies = [ "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.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccb3ead547f4532bc8af961649942f0b9c16ee9226e26caa3f38420651cc0bf4" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more", + "hex-literal", + "itoa", + "k256", + "keccak-asm", + "proptest", + "rand 0.8.5", + "ruint", + "serde", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" +dependencies = [ + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b40397ddcdcc266f59f959770f601ce1280e699a91fc1862f29cef91707cd09" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "867a5469d61480fea08c7333ffeca52d5b621f5ca2e44f271b117ec1fc9a0525" +dependencies = [ + "alloy-sol-macro-input", + "const-hex", + "heck", + "indexmap 2.6.0", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.79", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e482dc33a32b6fadbc0f599adea520bd3aaa585c141a80b404d0a3e3fa72528" +dependencies = [ + "const-hex", + "dunce", + "heck", + "proc-macro2", + "quote", + "syn 2.0.79", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-types" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a91ca40fa20793ae9c3841b83e74569d1cc9af29a2f5237314fd3452d51e38c7" +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.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" + +[[package]] +name = "anstyle-parse" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" + [[package]] name = "ark-bn254" version = "0.4.0" @@ -21,8 +253,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" dependencies = [ "ark-ec", - "ark-ff", - "ark-std", + "ark-ff 0.4.2", + "ark-std 0.4.0", ] [[package]] @@ -31,14 +263,32 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ - "ark-ff", + "ark-ff 0.4.2", "ark-poly", - "ark-serialize", - "ark-std", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", - "itertools", + "itertools 0.10.5", + "num-traits", + "zeroize", +] + +[[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.6", "num-traits", + "paste", + "rustc_version 0.3.3", "zeroize", ] @@ -48,20 +298,30 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "ark-ff-asm", - "ark-ff-macros", - "ark-serialize", - "ark-std", + "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", - "num-bigint", + "itertools 0.10.5", + "num-bigint 0.4.6", "num-traits", "paste", - "rustc_version", + "rustc_version 0.4.1", "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" @@ -72,13 +332,25 @@ dependencies = [ "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.6", + "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", + "num-bigint 0.4.6", "num-traits", "proc-macro2", "quote", @@ -91,13 +363,23 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", ] +[[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" @@ -105,9 +387,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-serialize-derive", - "ark-std", + "ark-std 0.4.0", "digest 0.10.7", - "num-bigint", + "num-bigint 0.4.6", ] [[package]] @@ -121,6 +403,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + [[package]] name = "ark-std" version = "0.4.0" @@ -144,295 +436,352 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] -name = "autocfg" -version = "1.3.0" +name = "async-trait" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] [[package]] -name = "base64" -version = "0.12.3" +name = "async_io_stream" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +dependencies = [ + "futures", + "pharos", + "rustc_version 0.4.1", +] [[package]] -name = "base64" -version = "0.22.1" +name = "atomic-waker" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] -name = "bincode" -version = "1.3.3" +name = "auto_impl" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ - "serde", + "proc-macro2", + "quote", + "syn 2.0.79", ] [[package]] -name = "bitflags" -version = "2.6.0" +name = "autocfg" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] -name = "blake3" -version = "1.5.1" +name = "axum" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" +checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" dependencies = [ - "arrayref", - "arrayvec", - "cc", - "cfg-if", - "constant_time_eq", - "digest 0.10.7", + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.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 0.5.1", + "tower-layer", + "tower-service", + "tracing", ] [[package]] -name = "block-buffer" -version = "0.9.0" +name = "axum-core" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ - "generic-array", + "async-trait", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 1.0.1", + "tower-layer", + "tower-service", + "tracing", ] [[package]] -name = "block-buffer" -version = "0.10.4" +name = "backtrace" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ - "generic-array", + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "serde", + "windows-targets 0.52.6", ] [[package]] -name = "borsh" -version = "0.10.3" +name = "base16ct" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" -dependencies = [ - "borsh-derive 0.10.3", - "hashbrown 0.13.2", -] +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" [[package]] -name = "borsh" -version = "1.5.1" +name = "base64" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" -dependencies = [ - "borsh-derive 1.5.1", - "cfg_aliases", -] +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" [[package]] -name = "borsh-derive" -version = "0.10.3" +name = "base64" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" -dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", - "proc-macro-crate 0.1.5", - "proc-macro2", - "syn 1.0.109", -] +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] -name = "borsh-derive" -version = "1.5.1" +name = "base64" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" -dependencies = [ - "once_cell", - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.77", - "syn_derive", -] +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] -name = "borsh-derive-internal" -version = "0.10.3" +name = "base64" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] -name = "borsh-schema-derive-internal" -version = "0.10.3" +name = "base64ct" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "bs58" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" -dependencies = [ - "tinyvec", -] +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] -name = "bumpalo" -version = "3.16.0" +name = "bech32" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" [[package]] -name = "bv" -version = "0.11.1" +name = "bincode" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ - "feature-probe", "serde", ] [[package]] -name = "bytemuck" -version = "1.18.0" +name = "bindgen" +version = "0.69.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" dependencies = [ - "bytemuck_derive", + "bitflags 2.6.0", + "cexpr", + "clang-sys", + "itertools 0.12.1", + "lazy_static", + "lazycell", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.79", + "which", ] [[package]] -name = "bytemuck_derive" -version = "1.7.1" +name = "bit-set" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", + "bit-vec", ] [[package]] -name = "byteorder" -version = "1.5.0" +name = "bit-vec" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" [[package]] -name = "cc" -version = "1.1.21" +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "bitvec" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07b1695e2c7e8fc85310cde85aeaab7e3097f593c91d209d3f9df76c928100f0" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ - "shlex", + "funty", + "radium", + "tap", + "wyz", ] [[package]] -name = "cfg-if" -version = "1.0.0" +name = "blake2" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] [[package]] -name = "cfg_aliases" -version = "0.2.1" +name = "blake2b_simd" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] [[package]] -name = "console_error_panic_hook" -version = "0.1.7" +name = "blake3" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" dependencies = [ + "arrayref", + "arrayvec", + "cc", "cfg-if", - "wasm-bindgen", + "constant_time_eq", + "digest 0.10.7", + "rayon-core", ] [[package]] -name = "console_log" -version = "0.2.2" +name = "block-buffer" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ - "log", - "web-sys", + "generic-array 0.14.7", ] [[package]] -name = "constant_time_eq" -version = "0.3.1" +name = "block-buffer" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array 0.14.7", +] [[package]] -name = "cpufeatures" -version = "0.2.14" +name = "bls12_381" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "a3c196a77437e7cc2fb515ce413a6401291578b5afc8ecb29a3c7ab957f05941" dependencies = [ - "libc", + "ff 0.12.1", + "group 0.12.1", + "pairing", + "rand_core 0.6.4", + "subtle", ] [[package]] -name = "crunchy" -version = "0.2.2" +name = "borsh" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" +dependencies = [ + "borsh-derive 0.10.4", + "hashbrown 0.13.2", +] [[package]] -name = "crypto-common" -version = "0.1.6" +name = "borsh" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" dependencies = [ - "generic-array", - "typenum", + "borsh-derive 1.5.1", + "cfg_aliases", ] [[package]] -name = "curve25519-dalek" -version = "4.1.3" +name = "borsh-derive" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "831213f80d9423998dd696e2c5345aba6be7a0bd8cd19e31c5243e13df1cef89" dependencies = [ - "cfg-if", - "cpufeatures", - "curve25519-dalek-derive", - "digest 0.10.7", - "fiat-crypto", - "rand_core 0.6.4", - "rustc_version", - "subtle", - "zeroize", + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", ] [[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" +name = "borsh-derive" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" dependencies = [ + "once_cell", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", + "syn_derive", ] [[package]] -name = "derivative" -version = "2.2.0" +name = "borsh-derive-internal" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +checksum = "65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3" dependencies = [ "proc-macro2", "quote", @@ -440,940 +789,5757 @@ dependencies = [ ] [[package]] -name = "digest" -version = "0.9.0" +name = "borsh-schema-derive-internal" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +checksum = "276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4" dependencies = [ - "generic-array", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "digest" -version = "0.10.7" +name = "bs58" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" dependencies = [ - "block-buffer 0.10.4", - "crypto-common", - "subtle", + "sha2 0.10.8", + "tinyvec", ] [[package]] -name = "either" -version = "1.13.0" +name = "bumpalo" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] -name = "equivalent" -version = "1.0.1" +name = "bv" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" +dependencies = [ + "feature-probe", + "serde", +] [[package]] -name = "feature-probe" -version = "0.1.1" +name = "byte-slice-cast" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] -name = "fiat-crypto" -version = "0.2.9" +name = "bytemuck" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +dependencies = [ + "bytemuck_derive", +] [[package]] -name = "generic-array" -version = "0.14.7" +name = "bytemuck_derive" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ - "typenum", - "version_check", + "proc-macro2", + "quote", + "syn 2.0.79", ] [[package]] -name = "getrandom" -version = "0.1.16" +name = "byteorder" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" dependencies = [ - "cfg-if", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", + "serde", ] [[package]] -name = "getrandom" -version = "0.2.15" +name = "camino" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", + "serde", ] [[package]] -name = "groth16-solana" -version = "0.0.3" -source = "git+https://github.com/sp1-patches/groth16-solana?branch=patch-v0.0.3#db82addc31e22e8146b8dd81166f87e4053a7044" +name = "cargo-platform" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" dependencies = [ - "ark-bn254", - "ark-ec", - "ark-ff", - "ark-serialize", - "num-bigint", - "solana-bn254", - "solana-program", - "thiserror", + "serde", ] [[package]] -name = "groth16-solana" -version = "0.1.0" +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ - "ark-bn254", - "ark-ff", - "ark-serialize", - "borsh 1.5.1", - "groth16-solana 0.0.3", - "solana-bn254", + "camino", + "cargo-platform", + "semver 1.0.23", + "serde", + "serde_json", "thiserror", ] [[package]] -name = "hashbrown" -version = "0.13.2" +name = "cc" +version = "1.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1" dependencies = [ - "ahash", + "jobserver", + "libc", + "shlex", ] [[package]] -name = "hashbrown" -version = "0.14.5" +name = "cexpr" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] [[package]] -name = "indexmap" -version = "2.5.0" +name = "cfg-if" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" -dependencies = [ - "equivalent", - "hashbrown 0.14.5", -] +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] -name = "itertools" -version = "0.10.5" +name = "cfg_aliases" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] -name = "js-sys" -version = "0.3.70" +name = "chrono" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ - "wasm-bindgen", + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-targets 0.52.6", ] [[package]] -name = "keccak" -version = "0.1.5" +name = "cipher" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "cpufeatures", + "crypto-common", + "inout", ] [[package]] -name = "lazy_static" -version = "1.5.0" +name = "clang-sys" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] [[package]] -name = "libc" -version = "0.2.158" +name = "clap" +version = "4.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "7be5744db7978a28d9df86a214130d106a89ce49644cbc4e3f0c22c3fba30615" +dependencies = [ + "clap_builder", + "clap_derive", +] [[package]] -name = "libsecp256k1" -version = "0.6.0" +name = "clap_builder" +version = "4.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" +checksum = "a5fbc17d3ef8278f55b282b2a2e75ae6f6c7d4bb70ed3d0382375104bfafdb4b" dependencies = [ - "arrayref", - "base64 0.12.3", - "digest 0.9.0", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", - "rand 0.7.3", - "serde", - "sha2 0.9.9", + "anstream", + "anstyle", + "clap_lex", + "strsim", ] [[package]] -name = "libsecp256k1-core" -version = "0.2.2" +name = "clap_derive" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ - "crunchy", - "digest 0.9.0", - "subtle", + "heck", + "proc-macro2", + "quote", + "syn 2.0.79", ] [[package]] -name = "libsecp256k1-gen-ecmult" -version = "0.2.1" +name = "clap_lex" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" -dependencies = [ - "libsecp256k1-core", -] +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] -name = "libsecp256k1-gen-genmult" -version = "0.2.1" +name = "cobs" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" -dependencies = [ - "libsecp256k1-core", -] +checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" [[package]] -name = "lock_api" -version = "0.4.12" +name = "coins-bip32" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" dependencies = [ - "autocfg", - "scopeguard", + "bs58", + "coins-core", + "digest 0.10.7", + "hmac", + "k256", + "serde", + "sha2 0.10.8", + "thiserror", ] [[package]] -name = "log" -version = "0.4.22" +name = "coins-bip39" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" +dependencies = [ + "bitvec", + "coins-bip32", + "hmac", + "once_cell", + "pbkdf2 0.12.2", + "rand 0.8.5", + "sha2 0.10.8", + "thiserror", +] [[package]] -name = "memchr" -version = "2.7.4" +name = "coins-core" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" +dependencies = [ + "base64 0.21.7", + "bech32", + "bs58", + "digest 0.10.7", + "generic-array 0.14.7", + "hex", + "ripemd", + "serde", + "serde_derive", + "sha2 0.10.8", + "sha3", + "thiserror", +] [[package]] -name = "memoffset" -version = "0.9.1" +name = "colorchoice" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] -name = "num-bigint" -version = "0.4.6" +name = "console" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" dependencies = [ - "num-integer", - "num-traits", + "encode_unicode", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.52.0", ] [[package]] -name = "num-derive" -version = "0.4.2" +name = "console_error_panic_hook" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", + "cfg-if", + "wasm-bindgen", ] [[package]] -name = "num-integer" -version = "0.1.46" +name = "console_log" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" dependencies = [ - "num-traits", + "log", + "web-sys", ] [[package]] -name = "num-traits" -version = "0.2.19" +name = "const-hex" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +checksum = "0121754e84117e65f9d90648ee6aa4882a6e63110307ab73967a4c5e7e69e586" dependencies = [ - "autocfg", + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", ] [[package]] -name = "once_cell" -version = "1.19.0" +name = "const-oid" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] -name = "opaque-debug" +name = "constant_time_eq" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] -name = "parking_lot" -version = "0.12.3" +name = "convert_case" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" -dependencies = [ - "lock_api", - "parking_lot_core", -] +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] -name = "parking_lot_core" -version = "0.9.10" +name = "core-foundation" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ - "cfg-if", + "core-foundation-sys", "libc", - "redox_syscall", - "smallvec", - "windows-targets", ] [[package]] -name = "paste" -version = "1.0.15" +name = "core-foundation-sys" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] -name = "ppv-lite86" -version = "0.2.20" +name = "cpufeatures" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ - "zerocopy", + "libc", ] [[package]] -name = "proc-macro-crate" -version = "0.1.5" +name = "crossbeam-deque" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "toml", + "crossbeam-epoch", + "crossbeam-utils", ] [[package]] -name = "proc-macro-crate" -version = "3.2.0" +name = "crossbeam-epoch" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "toml_edit", + "crossbeam-utils", ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "crossbeam-utils" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "version_check", -] +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "crunchy" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] -name = "proc-macro2" -version = "1.0.86" +name = "crypto-bigint" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ - "unicode-ident", + "generic-array 0.14.7", + "rand_core 0.6.4", + "subtle", + "zeroize", ] [[package]] -name = "quote" -version = "1.0.37" +name = "crypto-common" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "proc-macro2", + "generic-array 0.14.7", + "typenum", ] [[package]] -name = "rand" -version = "0.7.3" +name = "ctr" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", + "cipher", ] [[package]] -name = "rand" -version = "0.8.5" +name = "curve25519-dalek" +version = "4.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ - "libc", - "rand_chacha 0.3.1", + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", "rand_core 0.6.4", + "rustc_version 0.4.1", + "subtle", + "zeroize", ] [[package]] -name = "rand_chacha" -version = "0.2.2" +name = "curve25519-dalek-derive" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", + "proc-macro2", + "quote", + "syn 2.0.79", ] [[package]] -name = "rand_chacha" -version = "0.3.1" +name = "darling" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", + "darling_core", + "darling_macro", ] [[package]] -name = "rand_core" -version = "0.5.1" +name = "darling_core" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ - "getrandom 0.1.16", + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.79", ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "darling_macro" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ - "getrandom 0.2.15", + "darling_core", + "quote", + "syn 2.0.79", ] [[package]] -name = "rand_hc" -version = "0.2.0" +name = "dashu" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +checksum = "85b3e5ac1e23ff1995ef05b912e2b012a8784506987a2651552db2c73fb3d7e0" dependencies = [ - "rand_core 0.5.1", + "dashu-base", + "dashu-float", + "dashu-int", + "dashu-macros", + "dashu-ratio", + "rustversion", ] [[package]] -name = "redox_syscall" -version = "0.5.4" +name = "dashu-base" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b80bf6b85aa68c58ffea2ddb040109943049ce3fbdf4385d0380aef08ef289" + +[[package]] +name = "dashu-float" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853" +checksum = "85078445a8dbd2e1bd21f04a816f352db8d333643f0c9b78ca7c3d1df71063e7" dependencies = [ - "bitflags", + "dashu-base", + "dashu-int", + "num-modular", + "num-order", + "rustversion", + "static_assertions", ] [[package]] -name = "rustc_version" +name = "dashu-int" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +checksum = "ee99d08031ca34a4d044efbbb21dff9b8c54bb9d8c82a189187c0651ffdb9fbf" dependencies = [ - "semver", + "cfg-if", + "dashu-base", + "num-modular", + "num-order", + "rustversion", + "static_assertions", ] [[package]] -name = "scopeguard" -version = "1.2.0" +name = "dashu-macros" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +checksum = "93381c3ef6366766f6e9ed9cf09e4ef9dec69499baf04f0c60e70d653cf0ab10" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "dashu-ratio", + "paste", + "proc-macro2", + "quote", + "rustversion", +] [[package]] -name = "semver" -version = "1.0.23" +name = "dashu-ratio" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "47e33b04dd7ce1ccf8a02a69d3419e354f2bbfdf4eb911a0b7465487248764c9" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "num-modular", + "num-order", + "rustversion", +] [[package]] -name = "serde" -version = "1.0.210" +name = "der" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ - "serde_derive", + "const-oid", + "zeroize", ] [[package]] -name = "serde_bytes" -version = "0.11.15" +name = "deranged" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ + "powerfmt", "serde", ] [[package]] -name = "serde_derive" -version = "1.0.210" +name = "derivative" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 1.0.109", ] [[package]] -name = "sha2" -version = "0.9.9" +name = "derive_more" +version = "0.99.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.1", + "syn 2.0.79", ] [[package]] -name = "sha2" -version = "0.10.8" +name = "digest" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", + "generic-array 0.14.7", ] [[package]] -name = "sha3" -version = "0.10.8" +name = "digest" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "digest 0.10.7", - "keccak", + "block-buffer 0.10.4", + "const-oid", + "crypto-common", + "subtle", ] [[package]] -name = "shlex" -version = "1.3.0" +name = "dirs" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] [[package]] -name = "smallvec" -version = "1.13.2" +name = "dirs-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "solana-atomic-u64" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ - "parking_lot", + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", ] [[package]] -name = "solana-bn254" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ - "ark-bn254", - "ark-ec", - "ark-ff", - "ark-serialize", - "bytemuck", - "solana-program", - "thiserror", + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "spki", ] [[package]] -name = "solana-clock" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[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 = [ - "serde", - "serde_derive", - "solana-sdk-macro", + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff 0.13.0", + "generic-array 0.14.7", + "group 0.13.0", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", ] [[package]] -name = "solana-decode-error" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + +[[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 = [ - "num-traits", + "cfg-if", ] [[package]] -name = "solana-define-syscall" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +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 0.8.5", + "rlp", + "serde", + "sha3", + "zeroize", +] [[package]] -name = "solana-hash" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" dependencies = [ - "borsh 1.5.1", - "bs58", - "bytemuck", - "bytemuck_derive", - "js-sys", + "enum-map-derive", "serde", - "serde_derive", - "solana-atomic-u64", - "solana-sanitize", - "wasm-bindgen", ] [[package]] -name = "solana-instruction" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ - "bincode", - "borsh 1.5.1", - "getrandom 0.2.15", - "js-sys", - "num-traits", - "serde", - "serde_derive", - "solana-define-syscall", - "solana-pubkey", - "wasm-bindgen", + "proc-macro2", + "quote", + "syn 2.0.79", ] [[package]] -name = "solana-msg" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +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 = [ - "solana-define-syscall", + "libc", + "windows-sys 0.52.0", ] [[package]] -name = "solana-program" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +name = "eth-keystore" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" dependencies = [ - "base64 0.22.1", - "bincode", - "bitflags", - "blake3", - "borsh 0.10.3", - "borsh 1.5.1", - "bs58", - "bv", - "bytemuck", - "bytemuck_derive", - "console_error_panic_hook", - "console_log", - "curve25519-dalek", - "getrandom 0.2.15", - "js-sys", - "lazy_static", - "log", - "memoffset", - "num-bigint", - "num-derive", - "num-traits", - "parking_lot", + "aes", + "ctr", + "digest 0.10.7", + "hex", + "hmac", + "pbkdf2 0.11.0", "rand 0.8.5", + "scrypt", "serde", - "serde_bytes", - "serde_derive", + "serde_json", "sha2 0.10.8", "sha3", - "solana-atomic-u64", - "solana-clock", - "solana-decode-error", - "solana-define-syscall", - "solana-hash", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-program-memory", - "solana-program-option", - "solana-pubkey", - "solana-sanitize", - "solana-sdk-macro", - "solana-secp256k1-recover", - "solana-serde-varint", - "solana-sha256-hasher", - "solana-short-vec", "thiserror", - "wasm-bindgen", + "uuid", ] [[package]] -name = "solana-program-error" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" dependencies = [ - "borsh 1.5.1", - "num-traits", + "ethereum-types", + "hex", + "once_cell", + "regex", "serde", - "serde_derive", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-pubkey", + "serde_json", + "sha3", + "thiserror", + "uint", ] [[package]] -name = "solana-program-memory" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" dependencies = [ - "num-traits", - "solana-define-syscall", + "crunchy", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "tiny-keccak", ] [[package]] -name = "solana-program-option" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +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 = "solana-pubkey" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +name = "ethers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" dependencies = [ - "borsh 0.10.3", - "borsh 1.5.1", - "bs58", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek", - "getrandom 0.2.15", - "js-sys", - "num-traits", + "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_derive", - "solana-atomic-u64", - "solana-decode-error", - "solana-define-syscall", - "solana-sanitize", - "solana-sha256-hasher", - "wasm-bindgen", + "serde_json", ] [[package]] -name = "solana-sanitize" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +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 = "solana-sdk-macro" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +name = "ethers-contract-abigen" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" dependencies = [ - "bs58", + "Inflector", + "const-hex", + "dunce", + "ethers-core", + "eyre", + "prettyplease", "proc-macro2", "quote", - "syn 2.0.77", + "regex", + "serde", + "serde_json", + "syn 2.0.79", + "toml 0.8.19", + "walkdir", ] [[package]] -name = "solana-secp256k1-recover" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +name = "ethers-contract-derive" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" dependencies = [ - "libsecp256k1", - "solana-define-syscall", + "Inflector", + "const-hex", + "ethers-contract-abigen", + "ethers-core", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.79", +] + +[[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.3", + "once_cell", + "open-fastrlp", + "rand 0.8.5", + "rlp", + "serde", + "serde_json", + "strum", + "syn 2.0.79", + "tempfile", "thiserror", + "tiny-keccak", + "unicode-xid", ] [[package]] -name = "solana-serde-varint" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +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 = "solana-sha256-hasher" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +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 0.8.5", "sha2 0.10.8", - "solana-define-syscall", - "solana-hash", + "thiserror", + "tracing", ] [[package]] -name = "solana-short-vec" -version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#037838a156b433c53d28be8fd5405f520b23a8cd" +name = "example-script" +version = "0.1.0" +dependencies = [ + "borsh 1.5.1", + "clap", + "sp1-helper", + "sp1-sdk", + "sp1-solana", +] + +[[package]] +name = "example-solana-contract" +version = "0.1.0" +dependencies = [ + "borsh 1.5.1", + "solana-program", + "sp1-solana", +] + +[[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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" + +[[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 = "feature-probe" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" + +[[package]] +name = "ff" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +dependencies = [ + "bitvec", + "rand_core 0.6.4", + "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 0.6.4", + "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 0.8.5", + "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.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[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.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[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.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +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.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96512db27971c2c3eece70a1e106fbe6c87760234e31e8f7e5634912fe52794a" dependencies = [ "serde", + "typenum", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", ] [[package]] -name = "subtle" -version = "2.6.1" +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "git2" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" +dependencies = [ + "bitflags 2.6.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 = "groth16-solana" +version = "0.0.3" +source = "git+https://github.com/sp1-patches/groth16-solana?branch=patch-v0.0.3#db82addc31e22e8146b8dd81166f87e4053a7044" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "num-bigint 0.4.6", + "solana-bn254", + "solana-program", + "thiserror", +] + +[[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 0.6.4", + "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 0.6.4", + "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.6.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.1.0", + "indexmap 2.6.0", + "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 0.6.4", + "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.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", + "serde", +] + +[[package]] +name = "hashbrown" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" + +[[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.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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.1.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" + +[[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.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +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.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.6", + "http 1.1.0", + "http-body 1.0.1", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper 1.4.1", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots", +] + +[[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.4.1", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "hyper 1.4.1", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +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.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +dependencies = [ + "equivalent", + "hashbrown 0.15.0", + "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.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[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 = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +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.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +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 0.6.4", + "subtle", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2 0.10.8", + "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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin 0.9.8", +] + +[[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.159" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" + +[[package]] +name = "libgit2-sys" +version = "0.17.0+1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" +dependencies = [ + "cc", + "libc", + "libz-sys", + "pkg-config", +] + +[[package]] +name = "libloading" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +dependencies = [ + "cfg-if", + "windows-targets 0.52.6", +] + +[[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.6.0", + "libc", +] + +[[package]] +name = "libsecp256k1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" +dependencies = [ + "arrayref", + "base64 0.12.3", + "digest 0.9.0", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.7.3", + "serde", + "sha2 0.9.9", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libz-sys" +version = "1.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" +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.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[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.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +dependencies = [ + "hermit-abi", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.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 = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[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.6", + "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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +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-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[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-modular" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f" + +[[package]] +name = "num-order" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6" +dependencies = [ + "num-modular", +] + +[[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.6", + "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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive 0.7.3", +] + +[[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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[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.36.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "oneshot" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e296cf87e61c9cfc1a61c3c63a0f7f286ed4554e0e22be84e8a38e1d264a2a29" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[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.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +dependencies = [ + "bitflags 2.6.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.79", +] + +[[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.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +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.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45e909ef66fa5d77ff0fd3cb5af4b33b27fa6fb68d02b9b1e70edbc29383e565" +dependencies = [ + "p3-field", + "p3-matrix", +] + +[[package]] +name = "p3-baby-bear" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46965470aac1cddfe52f535424b59d52f2fffef0fdeb9dbed19da39b1d8f048a" +dependencies = [ + "num-bigint 0.4.6", + "p3-field", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-blake3" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36ef32d6ea21dd5cf9fec8a31bf0c64e6ceee8901dbf50966b83a443093c2aba" +dependencies = [ + "blake3", + "p3-symmetric", +] + +[[package]] +name = "p3-bn254-fr" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3edfca6be3b3109adf8e3330baec30c3fc5f9f4d63d27aaec1b471ca51ed67" +dependencies = [ + "ff 0.13.0", + "num-bigint 0.4.6", + "p3-field", + "p3-poseidon2", + "p3-symmetric", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-challenger" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6662ea899a5d848b60c699944491d72757873b5e1fd46798e4712f90a03a4e9" +dependencies = [ + "p3-field", + "p3-maybe-rayon", + "p3-symmetric", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-commit" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc3563918b5cc44ef5280bf9b51753e70dc78802de25e3fb81ed6c94617ccb6e" +dependencies = [ + "itertools 0.12.1", + "p3-challenger", + "p3-field", + "p3-matrix", + "p3-util", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "510095701819d83c9509fe825bbf1ebfe50426ae75149df5fe1dcfd18261323a" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f1977a0a65789f719aa824119c332c4676b000bdbfe94d312fb6244a70d601" +dependencies = [ + "itertools 0.12.1", + "num-bigint 0.4.6", + "num-traits", + "p3-util", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-fri" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22ddb958f200d9289cc73ff68847b0167ca0c14557b791dd9e318f98c2d1b28" +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.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d032cda212f6b408d7d5b0b9a8270a9455acb93742fe55a0880d82be8e90e500" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-util", +] + +[[package]] +name = "p3-keccak" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c56abdd5a8a780049d2f8e92cea1df57b55a2ef50a40d1103f2732f7a00e4b1" +dependencies = [ + "p3-symmetric", + "tiny-keccak", +] + +[[package]] +name = "p3-keccak-air" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8398f1694ccc38513df0b8cab5f9ef7325423f27cd9e4fa20bdc77d5079cf1b" +dependencies = [ + "p3-air", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", + "tracing-forest", + "tracing-subscriber", +] + +[[package]] +name = "p3-matrix" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d548ee0b834f8e2ebc5037073acd101a3b0ca41a2d1d28a15ba0ccd9059495b0" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand 0.8.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55f5575d3d61bedb3e05681abb0f36b8bb339d65aa395d50756bfa64e9cd3f46" +dependencies = [ + "rayon", +] + +[[package]] +name = "p3-mds" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6e57ed310d59245f93e24ee805ea7aa16fc9c505551b76a15f5e50f29d177e" +dependencies = [ + "itertools 0.12.1", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rand 0.8.5", +] + +[[package]] +name = "p3-merkle-tree" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af46b41cba75d483ec8a553cbab1d2d794935ae3403d75394acfa4fb2c977cce" +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.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adaba6f14c197203530e233badce0ca1126ba3bf3c9ff766505b497bdad0bee1" +dependencies = [ + "gcd", + "p3-field", + "p3-mds", + "p3-symmetric", + "rand 0.8.5", +] + +[[package]] +name = "p3-symmetric" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57ecc4282566eb14f48be7707f6745c4dff6be664984d59ec0fb1849cd82b5c2" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "serde", +] + +[[package]] +name = "p3-uni-stark" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1af5c038b22b058bf1d49fb1ea3dd6c240a3e46c3278fde5c444e0034f7ffe37" +dependencies = [ + "itertools 0.12.1", + "p3-air", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "postcard", + "serde", + "tracing", + "tracing-forest", + "tracing-subscriber", +] + +[[package]] +name = "p3-util" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79f3fef0e00d9d7246385e758c4cd39b4efcbbcea31752471491ab502631385e" +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.2.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.6", +] + +[[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 0.8.5", + "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 0.8.5", + "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.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" +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.1", +] + +[[package]] +name = "pin-project" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[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.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "portable-atomic" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" + +[[package]] +name = "postcard" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7f0a8d620d71c457dd1d47df76bb18960378da56af4527aaa10f515eee732e" +dependencies = [ + "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "serde", +] + +[[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.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +dependencies = [ + "proc-macro2", + "syn 2.0.79", +] + +[[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 = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml 0.5.11", +] + +[[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.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit 0.22.22", +] + +[[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.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.6.0", + "lazy_static", + "num-traits", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_xorshift", + "regex-syntax 0.8.5", + "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.79", +] + +[[package]] +name = "psm" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" +dependencies = [ + "cc", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quinn" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.0.0", + "rustls", + "socket2", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +dependencies = [ + "bytes", + "rand 0.8.5", + "ring 0.17.8", + "rustc-hash 2.0.0", + "rustls", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +dependencies = [ + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +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.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[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 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] + +[[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.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.15", + "libredox", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", +] + +[[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.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[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.30", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", + "tokio", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "reqwest" +version = "0.12.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.4.6", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pemfile", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.1", + "system-configuration 0.6.1", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "webpki-roots", + "windows-registry", +] + +[[package]] +name = "reqwest-middleware" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562ceb5a604d3f7c885a792d42c199fd8af239d0a51b2fa6a78aafa092452b04" +dependencies = [ + "anyhow", + "async-trait", + "http 1.1.0", + "reqwest 0.12.8", + "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 0.2.15", + "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-succinct" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3372685893a9f67d18e98e792d690017287fd17379a83d798d958e517d380fa9" +dependencies = [ + "downcast-rs", + "num_enum 0.5.11", + "paste", +] + +[[package]] +name = "ruint" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp", + "num-bigint 0.4.6", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand 0.8.5", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[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-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + +[[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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.23", +] + +[[package]] +name = "rustix" +version = "0.38.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.23.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "415d9944693cb90382053259f89fbb077ea730ad7273047ec63b19bc9b160ba8" +dependencies = [ + "once_cell", + "ring 0.17.8", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +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.2.0", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scc" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "836f1e0f4963ef5288b539b643b35e043e76a32d0f4e47e67febf69576527f50" +dependencies = [ + "sdd", +] + +[[package]] +name = "schannel" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" +dependencies = [ + "windows-sys 0.59.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 0.10.8", +] + +[[package]] +name = "sdd" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a7b59a5d9b0099720b417b6325d91a52cbf5b3dcb5041d864be53eefa58abc" + +[[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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" +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.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "serde_json" +version = "1.0.128" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +dependencies = [ + "itoa", + "memchr", + "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.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +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.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.6.0", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[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.79", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +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 0.6.4", +] + +[[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.6", + "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 = "solana-account-info" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "bincode", + "serde", + "solana-program-error", + "solana-program-memory", + "solana-pubkey", +] + +[[package]] +name = "solana-atomic-u64" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "solana-bn254" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "bytemuck", + "solana-program", + "thiserror", +] + +[[package]] +name = "solana-clock" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-macro", +] + +[[package]] +name = "solana-decode-error" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "num-traits", +] + +[[package]] +name = "solana-define-syscall" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" + +[[package]] +name = "solana-hash" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "borsh 1.5.1", + "bs58", + "bytemuck", + "bytemuck_derive", + "js-sys", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-sanitize", + "wasm-bindgen", +] + +[[package]] +name = "solana-instruction" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "bincode", + "borsh 1.5.1", + "getrandom 0.2.15", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-define-syscall", + "solana-pubkey", + "wasm-bindgen", +] + +[[package]] +name = "solana-msg" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "solana-define-syscall", +] + +[[package]] +name = "solana-program" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "base64 0.22.1", + "bincode", + "bitflags 2.6.0", + "blake3", + "borsh 0.10.4", + "borsh 1.5.1", + "bs58", + "bv", + "bytemuck", + "bytemuck_derive", + "console_error_panic_hook", + "console_log", + "curve25519-dalek", + "getrandom 0.2.15", + "js-sys", + "lazy_static", + "log", + "memoffset", + "num-bigint 0.4.6", + "num-derive", + "num-traits", + "parking_lot", + "rand 0.8.5", + "serde", + "serde_bytes", + "serde_derive", + "sha2 0.10.8", + "sha3", + "solana-account-info", + "solana-atomic-u64", + "solana-clock", + "solana-decode-error", + "solana-define-syscall", + "solana-hash", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sanitize", + "solana-sdk-macro", + "solana-secp256k1-recover", + "solana-serde-varint", + "solana-serialize-utils", + "solana-sha256-hasher", + "solana-short-vec", + "thiserror", + "wasm-bindgen", +] + +[[package]] +name = "solana-program-error" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "borsh 1.5.1", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-pubkey", +] + +[[package]] +name = "solana-program-memory" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "num-traits", + "solana-define-syscall", +] + +[[package]] +name = "solana-program-option" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" + +[[package]] +name = "solana-program-pack" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "solana-program-error", +] + +[[package]] +name = "solana-pubkey" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "borsh 0.10.4", + "borsh 1.5.1", + "bs58", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "getrandom 0.2.15", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-decode-error", + "solana-define-syscall", + "solana-sanitize", + "solana-sha256-hasher", + "wasm-bindgen", +] + +[[package]] +name = "solana-rent" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-macro", +] + +[[package]] +name = "solana-sanitize" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" + +[[package]] +name = "solana-sdk-macro" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "solana-secp256k1-recover" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "libsecp256k1", + "solana-define-syscall", + "thiserror", +] + +[[package]] +name = "solana-serde-varint" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serialize-utils" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "solana-instruction", + "solana-pubkey", + "solana-sanitize", +] + +[[package]] +name = "solana-sha256-hasher" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "sha2 0.10.8", + "solana-define-syscall", + "solana-hash", +] + +[[package]] +name = "solana-short-vec" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "serde", +] + +[[package]] +name = "sp1-build" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8216e07a9c463c6ee091cdc817cfc10c25446cfd4d020812818177e0a3d1c943" +dependencies = [ + "anyhow", + "cargo_metadata", + "chrono", + "clap", + "dirs", +] + +[[package]] +name = "sp1-core-executor" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9855631556145c827f959527a2f60cb2c6ededfb42afcee49e41dab5f507ce7b" +dependencies = [ + "bincode", + "bytemuck", + "elf", + "enum-map", + "eyre", + "generic-array 1.1.0", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "log", + "nohash-hasher", + "num", + "p3-field", + "p3-keccak-air", + "p3-maybe-rayon", + "rand 0.8.5", + "rrs-succinct", + "serde", + "serde_with", + "sp1-curves", + "sp1-derive", + "sp1-primitives", + "sp1-stark", + "strum", + "strum_macros", + "thiserror", + "tiny-keccak", + "tracing", + "typenum", + "vec_map", +] + +[[package]] +name = "sp1-core-machine" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7d9c51416ef52b258fa637538c02a2ac06ecaeec79d075c620013a77f035dee" +dependencies = [ + "anyhow", + "arrayref", + "bincode", + "blake3", + "bytemuck", + "cfg-if", + "curve25519-dalek", + "elf", + "elliptic-curve", + "generic-array 1.1.0", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "k256", + "log", + "nohash-hasher", + "num", + "num-bigint 0.4.6", + "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", + "rand 0.8.5", + "rayon-scan", + "rrs-succinct", + "serde", + "serde_with", + "size", + "snowbridge-amcl", + "sp1-core-executor", + "sp1-curves", + "sp1-derive", + "sp1-primitives", + "sp1-stark", + "static_assertions", + "strum", + "strum_macros", + "tempfile", + "thiserror", + "tracing", + "tracing-forest", + "tracing-subscriber", + "typenum", + "web-time", +] + +[[package]] +name = "sp1-curves" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c33d4d3f5e3590cc8c8d8a3d074097020bc0be0b9dd35fe43e04c586440c85" +dependencies = [ + "curve25519-dalek", + "dashu", + "elliptic-curve", + "generic-array 1.1.0", + "itertools 0.13.0", + "k256", + "num", + "p3-field", + "serde", + "snowbridge-amcl", + "sp1-primitives", + "sp1-stark", + "typenum", +] + +[[package]] +name = "sp1-derive" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e33825340e1b21b37a29f5304fbd18a1c7c97ba1376fa35b7c017fd95dd627e" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp1-helper" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f08124c62d09764810783355cff518477e3f36c8e83343623859afeca6f3eeb" +dependencies = [ + "sp1-build", +] + +[[package]] +name = "sp1-primitives" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbeba375fe59917f162f1808c280d2e39e4698dc7eeac83936b6e70c2f8dbbc" +dependencies = [ + "itertools 0.13.0", + "lazy_static", + "p3-baby-bear", + "p3-field", + "p3-poseidon2", + "p3-symmetric", +] + +[[package]] +name = "sp1-prover" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "166e9f9fd29ecdfd4fd452d49052abdfbe735317f00016e94fde8410f90b4134" +dependencies = [ + "anyhow", + "bincode", + "clap", + "dirs", + "hex", + "itertools 0.13.0", + "num-bigint 0.4.6", + "oneshot", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-field", + "p3-matrix", + "rayon", + "serde", + "serde_json", + "serial_test", + "sp1-core-executor", + "sp1-core-machine", + "sp1-primitives", + "sp1-recursion-circuit", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-recursion-gnark-ffi", + "sp1-recursion-program", + "sp1-stark", + "subtle-encoding", + "tempfile", + "thiserror", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "sp1-recursion-circuit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3ccdda16cd078f32c6707212b8e8f3e423992eeff6ace898d3e15bf94e78a16" +dependencies = [ + "bincode", + "itertools 0.13.0", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-commit", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-util", + "serde", + "sp1-core-machine", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-recursion-derive", + "sp1-recursion-program", + "sp1-stark", +] + +[[package]] +name = "sp1-recursion-compiler" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae17b6c8506b3521e78450cf28f76c2426b5b2f132bb89660d3d61eb155439c4" +dependencies = [ + "backtrace", + "itertools 0.13.0", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-commit", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-poseidon2", + "p3-symmetric", + "p3-util", + "rayon", + "serde", + "sp1-core-machine", + "sp1-primitives", + "sp1-recursion-core", + "sp1-recursion-core-v2", + "sp1-recursion-derive", + "sp1-stark", + "tracing", + "vec_map", +] + +[[package]] +name = "sp1-recursion-core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8414c3d16cd2fedd293989cef601915d4e1efab662e3a08923606970dc8ae7e6" +dependencies = [ + "arrayref", + "backtrace", + "ff 0.13.0", + "hashbrown 0.14.5", + "itertools 0.13.0", + "num_cpus", + "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", + "p3-util", + "serde", + "serde_with", + "sp1-core-executor", + "sp1-core-machine", + "sp1-derive", + "sp1-primitives", + "sp1-stark", + "static_assertions", + "tracing", + "zkhash", +] + +[[package]] +name = "sp1-recursion-core-v2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d0a2af67ca6f7db964b7f1ffdb48f6e26f10e3cc027a11bdd17b224f8747650" +dependencies = [ + "arrayref", + "backtrace", + "ff 0.13.0", + "hashbrown 0.14.5", + "itertools 0.13.0", + "num_cpus", + "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", + "p3-util", + "serde", + "serde_with", + "sp1-core-executor", + "sp1-core-machine", + "sp1-derive", + "sp1-primitives", + "sp1-recursion-core", + "sp1-stark", + "static_assertions", + "thiserror", + "tracing", + "vec_map", + "zkhash", +] + +[[package]] +name = "sp1-recursion-derive" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4921db3912a60ee3896242ce336203066377e6eddd1c26d099e8bf6b9c470a21" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp1-recursion-gnark-ffi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718b2e92bfd3ce91fcef2ac0b3a8d31746dbc3ad4071f3bec45aa2e5e025adb1" +dependencies = [ + "anyhow", + "bincode", + "bindgen", + "cc", + "cfg-if", + "hex", + "log", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-field", + "p3-symmetric", + "rand 0.8.5", + "serde", + "serde_json", + "sha2 0.10.8", + "sp1-core-machine", + "sp1-recursion-compiler", + "sp1-stark", + "tempfile", +] + +[[package]] +name = "sp1-recursion-program" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "676661b42f5d55c64932ad400ec920bd8b8098b1500b13c483a541bf3b396dd1" +dependencies = [ + "itertools 0.13.0", + "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 0.8.5", + "serde", + "sp1-core-executor", + "sp1-core-machine", + "sp1-primitives", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-stark", + "stacker", + "tracing", +] + +[[package]] +name = "sp1-sdk" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b289585392a3639f6541bce32dd89e03e7893f42e9b9bcf6bee7d54183d5e05" +dependencies = [ + "alloy-sol-types", + "anyhow", + "async-trait", + "bincode", + "cfg-if", + "dirs", + "ethers", + "futures", + "getrandom 0.2.15", + "hashbrown 0.14.5", + "hex", + "indicatif", + "itertools 0.13.0", + "log", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-commit", + "p3-field", + "p3-fri", + "p3-matrix", + "prost", + "reqwest 0.12.8", + "reqwest-middleware", + "serde", + "serde_json", + "sha2 0.10.8", + "sp1-core-executor", + "sp1-core-machine", + "sp1-prover", + "sp1-stark", + "strum", + "strum_macros", + "sysinfo", + "tempfile", + "thiserror", + "tokio", + "tracing", + "twirp-rs", + "vergen", +] + +[[package]] +name = "sp1-solana" +version = "0.1.0" +dependencies = [ + "ark-bn254", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "borsh 1.5.1", + "groth16-solana", + "hex", + "num-bigint 0.4.6", + "num-traits", + "sha2 0.10.8", + "sp1-sdk", + "thiserror", +] + +[[package]] +name = "sp1-stark" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4048fc99a6c1123f5040b5ade1ae2839ca1be421e4c427fc7d1fd9bbf6e174f5" +dependencies = [ + "arrayref", + "getrandom 0.2.15", + "hashbrown 0.14.5", + "itertools 0.13.0", + "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-uni-stark", + "p3-util", + "rayon-scan", + "serde", + "sp1-derive", + "sp1-primitives", + "sysinfo", + "tracing", +] + +[[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 = "stacker" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799c883d55abdb5e98af1a7b3f23b9b6de8ecada0ecac058672d7635eb48ca7b" +dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "windows-sys 0.59.0", +] + +[[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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.79", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[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.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c837dc8852cb7074e46b444afb81783140dab12c58867b49fb3898fbafedf7ea" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[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" +dependencies = [ + "futures-core", +] + +[[package]] +name = "sysinfo" +version = "0.30.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "rayon", + "windows", +] + +[[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 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "system-configuration-sys 0.6.0", +] + +[[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 = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +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.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "thiserror" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[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.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +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.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[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.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.22", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +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.6.0", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +dependencies = [ + "indexmap 2.6.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.20", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 0.1.2", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[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.79", +] + +[[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-rs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa3161d8eee0abcad4e762f4215381a430cc1281870d575b0f1e4fbfc74b8ce" +dependencies = [ + "async-trait", + "axum", + "bytes", + "futures", + "http 1.1.0", + "http-body-util", + "hyper 1.4.1", + "prost", + "reqwest 0.12.8", + "serde", + "serde_json", + "thiserror", + "tokio", + "tower 0.4.13", + "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.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[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.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" + +[[package]] +name = "unicode-ident" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" + +[[package]] +name = "unicode-normalization" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-xid" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] -name = "syn" -version = "1.0.109" +name = "untrusted" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] -name = "syn" -version = "2.0.77" +name = "untrusted" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] -name = "syn_derive" -version = "0.1.8" +name = "url" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.77", + "form_urlencoded", + "idna", + "percent-encoding", ] [[package]] -name = "thiserror" -version = "1.0.63" +name = "utf8parse" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" -dependencies = [ - "thiserror-impl", -] +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] -name = "thiserror-impl" -version = "1.0.63" +name = "uuid" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", + "getrandom 0.2.15", + "serde", ] [[package]] -name = "tinyvec" -version = "1.8.0" +name = "valuable" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" -dependencies = [ - "tinyvec_macros", -] +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] -name = "tinyvec_macros" -version = "0.1.1" +name = "vcpkg" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] -name = "toml" -version = "0.5.11" +name = "vec_map" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" dependencies = [ "serde", ] [[package]] -name = "toml_datetime" -version = "0.6.8" +name = "vergen" +version = "8.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "2990d9ea5967266ea0ccf413a4aa5c42a93dbcfda9cb49a97de6931726b12566" +dependencies = [ + "anyhow", + "cfg-if", + "git2", + "rustversion", + "time", +] [[package]] -name = "toml_edit" -version = "0.22.21" +name = "version_check" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b072cee73c449a636ffd6f32bd8de3a9f7119139aff882f44943ce2986dc5cf" -dependencies = [ - "indexmap", - "toml_datetime", - "winnow", -] +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] -name = "typenum" -version = "1.17.0" +name = "wait-timeout" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] [[package]] -name = "unicode-ident" -version = "1.0.13" +name = "walkdir" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] [[package]] -name = "version_check" -version = "0.9.5" +name = "want" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] [[package]] name = "wasi" @@ -1409,10 +6575,22 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "wasm-bindgen-macro" version = "0.2.93" @@ -1431,7 +6609,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -1442,6 +6620,19 @@ version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +[[package]] +name = "wasm-streams" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "web-sys" version = "0.3.70" @@ -1452,34 +6643,205 @@ dependencies = [ "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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +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.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.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" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core", + "windows-targets 0.52.6", +] + +[[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.6", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + +[[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.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[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.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] +[[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.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[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.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[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.6" @@ -1492,24 +6854,48 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[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.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[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.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[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.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[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.6" @@ -1518,13 +6904,60 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.18" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" 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 = "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.1", + "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.35" @@ -1543,7 +6976,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1563,5 +6996,32 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", +] + +[[package]] +name = "zkhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4352d1081da6922701401cdd4cbf29a2723feb4cfabb5771f6fee8e9276da1c7" +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 0.8.5", + "serde", + "sha2 0.10.8", + "sha3", + "subtle", ] diff --git a/Cargo.toml b/Cargo.toml index cc5019f..eb0a389 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,4 +1,8 @@ [workspace] -members = ["verifier"] -exclude = ["example"] +members = ["verifier", "example/script", "example/solana/program"] resolver = "2" + +[workspace.dependencies] +borsh = "1.5.1" +solana-program = { git = "https://github.com/anza-xyz/agave" } +sp1-solana = { path = "verifier" } diff --git a/README.md b/README.md index 228786e..7cb6717 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# `groth16-solana` +# `sp1-solana` A Groth16 verifier implementation for Solana using BN254 precompiles. This crate verifies Groth16 proofs generated with SP1, leveraging Solana's BN254 precompiles for efficient cryptographic operations. @@ -15,11 +15,11 @@ A Groth16 verifier implementation for Solana using BN254 precompiles. This crate ## Installation -Add `groth16-solana` to your `Cargo.toml`: +Add `sp1-solana` to your `Cargo.toml`: ```toml [dependencies] -groth16-solana = { git = "https://github.com/succinctlabs/groth16-solana" } +sp1-solana = { git = "https://github.com/succinctlabs/groth16-solana" } ``` ## Acknowledgements diff --git a/example/README.md b/example/README.md index cf4b487..6df6adb 100644 --- a/example/README.md +++ b/example/README.md @@ -1,33 +1,91 @@ # Example -This example demonstrates how to use the `solana-verifier` crate to verify a proof generated by the `SP1` library on Solana. +This example demonstrates how to use the `sp1-solana` crate to verify a proof generated by SP1 on Solana. -# Usage +## Overview: Script -To run the example, you can use the following ELF options: +This script will load an SP1 [`SP1ProofWithPublicValues`] +(https://docs.rs/sp1-sdk/2.0.0/sp1_sdk/proof/struct.SP1ProofWithPublicValues.html) +from the pre-generated proof [`fibonacci_proof.bin`](./proofs/fibonacci_proof.bin). This is a SP1 Groth16 proof that +proves that the 20th fibonacci number is 6765. -| ELF Option | Description | -| ---------- | ----------------------------- | -| fibonacci | Fibonacci sequence program | -| is-prime | Prime number checking program | -| sha2 | SHA-2 hashing program | -| tendermint | Tendermint consensus program | +The loaded `SP1ProofWithPublicValues` will be serialized into a `SP1ProofFixture`, and written to +[`proof-fixtures/fibonacci_fixture.bin`](./proof-fixtures/fibonacci_fixture.bin). The `SP1ProofFixture` +can easily be borsh serialized and deserialized, and can be verified on chain. -And run the following commands: +### Running the script + +To load the pregenerated proof and verify it, run the following commands. ```shell cd script -cargo build -RUST_LOG=info cargo run --release -- --elf fibonacci +RUST_LOG=info cargo run --release ``` -Pass in the `--prove` flag to generate a fresh proof and save it to a file: +To generate a fresh proof from the program in `sp1-program`, run the following commands. ```shell cd script -cargo build -RUST_LOG=info cargo run --release -- --elf fibonacci --prove +RUST_LOG=info cargo run --release -- --prove +``` + +## Overview: Solana Program + +The code in [`solana/program`](./solana/program) is a simple Solana contract that verifies a +`SP1ProofFixture` using the `sp1-solana` crate. It costs roughly 280,000 compute units. + +Here is an excerpt from the Solana contract that demonstrates how to verify a `SP1ProofFixture` on chain. + +```rust +pub fn process_instruction( + _program_id: &Pubkey, + _accounts: &[AccountInfo], + instruction_data: &[u8], +) -> ProgramResult { + // Deserialize the fixture from the instruction data. + let fixture = SP1ProofFixture::try_from_slice(instruction_data).unwrap(); + + // Get the SP1 Groth16 verification key from the `sp1-solana` crate. + let vk = sp1_solana::GROTH16_VK_BYTES; + + // Verify the proof. + let result = verify_proof_fixture(&fixture, &vk); + msg!("Result: {:?}", result); + Ok(()) +} ``` -Note: The pre-generated proof for `fibonacci` assumes the input `n` is 20. The pre-generated proof -for `is-prime` assumes the input `n` is 11. \ No newline at end of file +Here is an excerpt from the program that demonstrates how to create an instruction +that interacts with this example Solana program. + +```ts +// Helper function to read the proof fixture from the provided path +function createVerifyInstruction(pubkey: PublicKey, proof_path: string): TransactionInstruction { + const fs = require('fs'); + const data = fs.readFileSync(proof_path); + return new TransactionInstruction({ + programId: PROGRAM_ID, + keys: [{ pubkey: pubkey, isSigner: true, isWritable: true }], + data: data, + }); +} +``` + +### Running the Solana program + +Running the Solana program and tests requires the following + +* [PNPM](https://pnpm.io/installation) +* [yarn](https://yarnpkg.com/getting-started/install) +* [Solana CLI](https://docs.solana.com/cli/install-solana-cli) + * Make sure to install the edge version. Run the following: + ```shell + sh -c "$(curl -sSfL https://release.anza.xyz/edge/install)" + ``` +* [Rust](https://www.rust-lang.org/tools/install) + +```shell +cd solana +pnpm install +yarn build-and-test +``` diff --git a/example/binaries/is-prime_proof.bin b/example/binaries/is-prime_proof.bin deleted file mode 100644 index 1155f8267dca93a4479ff3f3be88db3f373e9921..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1441 zcmeHHJ*rkg4EH9*TrQ9L`*keB*kq^+5+D(Aga-^5hB%zaAqKcga7bgEkjY&MNdd$f z0-~V!_&4E27@V0&gSbJ^uuj2nMHU@A+)bcKNMMjDc5x*$K_r$D-3g6cdl&M2os3HJND_xPbs%8Qn&*sjBCf2)@(@R>d0|Yud3P`wUwInpKVVN4! zr@`ux19;3%8gmvF$KV-`H9>oCd1|q5MZ_I!HiX+Yl(Ic1WN&&bYyZf`o;`J=%gVc; zhYZ?wP@3M59lcd91FyILeemB0?SuC5KXINvxc&ac$Nc=|>oa+B@6A)Z`u6hs)#v;1 j>fMh|??1e~as4m6a~P7UFR#Z#cnCiM%#~me diff --git a/example/binaries/sha2_proof.bin b/example/binaries/sha2_proof.bin deleted file mode 100644 index 70bb5361094fd6c4d627b4c69597a1c675bdffa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1425 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�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 e{}owvi0Nd@ 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 z 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 z z`B6y9oGhtmj=*C7wUS<6p&0$z?MUP%bk!Zf!oF#L+LU($&{k`37@+Hvbd?D!tI1CZgPt5 ziFtY03j;@t3=YRhlguUo{EA$S@^$&VTz!Z3EY_aew5OS;e4$t^s|=o@KKYb(;MyvD zgD1&JGVZb?o|46Rf$W!zaQhLb5p7eZR7>$3PsaF@Y6@3kNpE^ z!n1&P=qr+PG~3s{xp;R=N-kFM!yMoP@(r1Qlp_Uh0e;w`?m4!%d|#K2-J+8#aF>qp zXby0QK2zpB3YnC_>aPCZ+yZ&GIb9y+w0M301GsSl>YXj44$zYv6*u*Y1#@hoVB81a z2LEh%4CKiA??9gM1IK_COxu7qAup_U7Rp~mJZoY~Xx<JD2G>j*p3sd)EEA2I5Eb96i?qMqQ!yXHtlgH+8+WuXNd);uB9rm7` zIg_a#nPlO6VN1`Y7$P6lFW>pm`UTlQL|r*j%}I>Gi1kLDR}Y(D3t%$7{P0ZR;4QOB zmoAvMz^9w|;*XH=EwzllU_27|RytGNWV>S4hrV{!Y-YKpD$vJvbG0c zkAQ5iq-6V}Iht%gTOk`or_u12_@$9@7}0R)-E%BvE79AetVHko2hUw4`J3?{q|3ng zl>erTFTHcHiN>VyemU~Q9Qgkl{qn=Nz#eDxOJ^!Td$C4pJcGrspZTT#0B@WFn9Mam z&gCa&!Y*QH&a&OEzK3iA{}dHYeD~-Xtov^tQ6BN|rp^Wrh4+xH8BBHly;^qUzVP9k z>{RRvdJoxJg}-V+kIe^I=mKo%i~O_ocks8YbFX*2H4k!MY`1P#ptBm(0xw?mV;Py4bcF^)M*k`1_8Qbeqz6Smkyr+~q zHcS5`Vw=wa?_{0Bi}N4kMX!Yy$Bgrd4Rd&5>|*ST|E9%mbSaBc?iir2pk`1>06ei-H9+xWG`kVO$Y zfE&9O@f~u6v7Ok{(7h&ptIF5j&%<97F;>xLfBnltq+6hIu`)IPjIriHhHI}ECIW89 z?(@kUf4kDT54z4nuu;*tFt2mK8-6KmT)Dk|v0)zcP8e5bFZeX@h8UN$wh;2D$sl7) zkV|ftIqW$j#`HZT)WhPwLB$BFOcg&(S8>fc=WfjSP@!C>o@2HH#H-82r&d-r5c>C9KhFpuVx z+65ur4$P2EQ~0%%@(fblHjIs$3nm#R#iHU{Pc0=Zf``!dR86MQ~J`bmy?N8%olY2oa=9C`?i2sGK8CmuE@8~ARG+(JBS$MTQC-kVa#vfU+`EyjH$2T4t#FG{)( zZx_4&%;Wr_f0)nj{Aa+;ZA$k-;56_9z-|4La(=*Y8rfgpf7veW%x3iokIsgCOn94g znPp6usoK8B^M6sFc^mW?WOIc+Q>t-)j`~bKyRhp_l+HfM)>YF%@1(V5x&+`E=xvfT z0=hcT2;AlKmuSRDnObPOoX6;d={dlaFPCDbGk@SQM#zDPHMp64#QsV3vuT4L0cRW| z)rY|AaENiY7(9^XAKeXk-|&<{+yU&BVGOI1ui^)dhG4Kq zw7e}$cT01n((l(OkMs@kfxQ3YX7!JdG1c~ON!B4J>j%vsoU6^>E6IGw(_NWu_XLXTe7$+vwXteI^1Pbw?1c5$9`@n@U}KTeLItV zB!405C+?myVg3;#DsA2{CcMM>gVeiwAhR3Tm=Qx3^h`ZxYwUgq-x&n(kf0?w+FXB4 zZKIj_BvBjvow#55Krv!tn|Yc$$c{Swf#b;E1{uE?_x_?USSzy86u^J5U>?RZYM+k6 zhKxSVVC(P?)F;+Yif0t2cgB0DZ>*nM>?*ZSeP37m>7y|tZYFP%jef+XQ{z{m4x^0t zQtH}ts(bDx@27@N12KBPjyQLZQ+>e2py^w&2Dp1fMoe8fo8yic5&v(;rT30Z%*l~= z9N4EX?1r8T_!u!MajzEO2yoLKA{m);8)sr1eMe{?$hf=C-QC$K;M@-OpI(FvrVo=& zFLsS+Q~~#0eD8;S2f7m6w?X$r$hUw7O)^dvE`5+k@erhrZyMRTO30LgAsaqkh57n0 z^xz!y&f2$v$;ZC$g6@s#!1ohGQ^K!wC;0wJi4Ta*fj9V|zww)Y5{=))`#mK0gXiso zKhQTnLp+Mua}xf8_*Qp#tQx=WB;wa~<_bMdPHu;fQ_o?aatyNFVemh&B`D|5Lq7=K zo%kD5_ci?;N1-oylvlR(K__H}oddiY*+5TJ;hbCv&+KKFVFxLxX1|%83FiaI7NT6< zhIo2r*spt_>pTV<0f(3y=ua{D*_YFvddh_WG#5 zdg3FMo=13jC*BRs{Dac-2B+^cL4WkzA80L!FQfZ&X%73x8Q*~q_d~U`PfG(Yg}tWowEv z{aRmm^d-aZ8*S-WTirDpTs_I@_h<8rZg>BM`-wQne>drmOa6NLF#1X7Ea)r=bSVY8 z8h*bn!P>zbeWaf!+EUN8;4GiK74!{fC*&P8ekg+vybRu|9QW*mDdqwv;QR$_3*%`2 zLx&|}ZO2KEz}9r&LBycNIpTxKd-j~Tm&wZJi24PYX^`rozxUq~1ZC9nZx70)p$OAZjyZ>*kSW>tMP1l z{t=qjZuC!UgO$O3)6_TW7wOk1Cbw`4@h<<9{I(gb1HNRwoBA-$y@x|YuNYh+1|RuT z;$0u^P{JC13u|@5I}w2kVOIgn0RB;*c2CFk<-5^8^-it=-FL1lkMI5jy*23B7SM#R zBbMP*_>Lo9=^VcvdTYH3v)woof$`9Jw+Y7a$$JL$cZPs7f6B{k=<8#U?OkO!Q=EhQ z7n1PCjg|J~U<^CppRgbe-uhB=hVye{SRJT)KYXIQ=q|aLJ75C>tW6_W`vd4AU~NVY z?sGz2GZFLrjs>ub?Er54DT5{QfhfoVtRX&d!JUA$IrwHCk3Gesj>mO+!Usus1C5nQ zXKPf~2JIWVW^5rka09sU>DBQ(x2FsJQpZ7XGfBlMw_#7CeyUG~O@r23#y&4F?7_Z- z-Oy5=+}k(Ae^`Sgp1X;)0RBMyRm2hCaKHWdB(1$}|Bo{n=zi<#;q{W7f>)|z9L@`l zfLGv&F{9%Nqk6v@zGL`wyfKI23H;t~_7CHUk!yD&JOO_4Bi9anyKe2Uw`iU*e!$j^ z*N$xT1-cOM>&>r07w|K1CZkzI4~Xwi?kWBLB)*)%=AjO_U*-8D4>KQoP2R}wV)wPa zfOQ?gLmyRfUw1kW&4cd*{HAzl zhbz?D8U5Zv6IUjE*mo<@d4`u};GD`YE1=&p8c3d$-a0TrhAmp@?gs89e~AyE2b#e% zU3yOs^snSALgy_GLjJ!zj{J~FPgt;Tkd>!=it7WuMJIo7k(b{54&pT-E`t$z7wB3T zF91I9QI2fBy}QWoUNp|&aX(y+Y=XWKXE~&IPUf=qOyHRgn!wNP_9>O;Ir7sX84Yn_ z@I<+H4`ksy9(1s2?vLU<6e^LGW<&uP9jyVK{>^HjMWvYHB?EJgwQ&N$Z;U?j3XVXaW4Vh7cbE^ZUTh zbA?@c#Dp+&`hP}ji0&nb6CpshEN1!rT;5eV4|QzSK`)ofcqnP8ZjAm((A_8LcZd`3 z`n_Jv{ylV&AMnZ#@8((T#=G%1Vz1D0gZ_5V^zI09ARSF*1aD`$4Nr*$CnBT=Z z)@8|$-og4*u=fUu< zzsG!4I6inysyT$R@PR^EeEVn6{Oi^byfpCujE7CGle!l08E13t(`$2mU7T3~`-$%K z5(Z)O1nrV0A(jB$=`{iT$N|z@f!+{r47H&VP~ULNLb4ed0MoTQ^(BN6i_0MX#GPnlCoq&acq93*v7^8xzsUBg9)J?>tla zcNXJIfWB2WL-wWk^$#5KNpDw7QhF+U!s(fikynvY0z^4aISL9=mr?;KPeur*=WZ6B& zt4aR_x9J+zZ!iyc4`6Ri;>aci9k-t8<8{?IFP-m~|LDOT0xu%=Oc!E3zKFAEFY==P zb)B$W&r^I!>D&4-QVwtsa4n1bW#-1n+X2&OF8~*DV+6uWr)Nd+D zuS0BM!~?tMK2Am)tgi0`I7PaTQ~ro}BV7{icEGuY*IQv*d4Q9D)5IzLh_`|~8Fw4V zzd;<9dzv`$-Bg(A6m2C*jL)0pJ$Qj#? z|F~e*WvmJGrgvTj4D|U#V;^*`X6VTdf&ab?ejjxYoz9}OrX&Z7S-rj^CHQvxnI9KS z%ZFThnd*aH0pHw)zu9+3bmDU-p$CD^#(9R>4_G}0BlIT682l7WKf)mvuuuK=IO%dA z$Dwbx9ZKpNe@u0e&Y{3^NLMi447nKhUKo9N2OmqwZkP|A)9@ zrqSHa$5J%c*nLFH{~`R^G`iaPt+f1qQSD zxSt8}E(8~1u^JEJ&WHn8i%y*H`4BOt4{*Zg;A2bYQdd5Q?{hG(+1UGdnv!Qwxc`96 zH%D$m++x$f{Yvc)oCA89){fn4&FFIXuYN>#1e4qhJYkY@`wY+rqAnl(Hd5cjzNg@q z^<7SQ4!XQah=cryi93=*`5Z4-{)v~rbt~?<_;)pK0(e95Pb4#f&vOy}`K}N8%^#_} znHBPFG+Z!qX}I7{J|qwv&-z`cV9wDHbikp4agRrYo^yzMKA0y%M^nH*8Gp)SBQ zX96rihTD^E5LSM`v$feV_+u%QZ2+7b$j^eo33M-L8}-am-^n?beoS?s z-}&nIrk^m`vND@X)n~x{bbwE3{9!}EglB!yc7sMgPyU$dqdc^SxCMayR9oSUw$wII zhMnWN~qv(_Mr~YJ4U;FhtZZvFm4H^*Dsg>KkUBG-Yrx|zwhNMG;TH@od(Uu zqRt0&W4?l0aqeQy*L?(=>fE=n`Jj2AeAJKprNM%E{vhk$v}Z$TFGwC1b5^&`^%t8j%qx(j>s5#m$SJ$eN5tn~d0&XW8q+jH_n?9oZX zdsIm6(Vucuj{u%q{0emQh!;b8Q>EuuKFEV?kFxzThhi!$#ob%HiS1F#?{MD(?tGYe z)KoC}7be+=djxR5IPFW^gKUz{_MvasqYr>Ltj^YKMVEd|Itjunq{Bf>NbJ*2BgGkF zdk1#H)IOzqx@e!`o+|ckc%P0{%Ut@gn{1Cc*ssa@9)S)Dc!0G5*pznk>7=~}3}k9T5pWA1t}RBvv;jDE9RKJ( z##6t6{X}t)p+|%69)9H5ci^WVH^9yX-QrOiC)1+|M(hLDKK23Hr}}_9NH1*2sF%qZ zzGbKv`Z?GRChRX(*>nM~996~L?!xYNkm!W}QD!!W#uI=_fLl#M->Zyz`mPzJLdWt{XfEU;Kane~&i@S2U1>}%*HudO0&WqnynpX~ zWVgW`+*yb_-FHPYWo0SdX7~YfJoyI;r*Q5T`$2yk^fn)MqMzakTPtE8`=m;WS>CIc zdJda})7$*|6X2(}fd;o+LN(3TnJKxkvO zo)lk0?T##?!dKs0N0^?W?}Ci`W;FbiNBBv5|F(?rXgY>7Nqz+}*50OZ%HW^WJT?BG z44sYC{v4ZYwvMI&Gr_FXj`;;|!|-DT)?}|yNA=6y2l8qE$fkq0v8VZwd9dd}b{+T( z?yMQFu5DMpT!Hvasc-szuYMDGPyMC`cOUiQ8y|ENmfJLVcvG&Z;3)QpY-(Sw^qpip zz>&&7;~ZP?wmZO+x9x#5`jiuW2 zE+4xl>9PoLTRtylnfyZg z3B;6kLvM53C+*D2mA>3NPTmXo@6vW&e*gG2T)lvL$N3R=nn(QIYb4u>g20Qvfh;RE z0T&&=Rxqy)b-w@@M9ily)c@`=#BJfmg0JSK##32}X`fFXbb*&U3E33t%7KNqV=Xxx^!r z5O1MpaKLSbEzF!xcHu0g9&qy7EXeiMc$R3-?b;K2m)@Ts`F}De4nfzjJqxiFa1OH? z-)w{r!Z!SUrWjAqo*44~&Y;n50Sti`;Z#NQJu5U1)A zFBhYq8!toFJm(WC@cWSn54ePm;UMgtz`>?hg9N8^mXqcj^#5bu-3}hf*!5H&r~hs@ z{ENdl^ALeO--Ou2$8b+y52yc*5%UDyGo7P5|1>YSz()*Xtw>(R*$eobXNfVyp&Wy| zb$S-$i_a}k7MywbM-aWMc3lZ}YKLi${iiEjaXCC^~>z9B%)qWLGE9mQ0k z7u_-V)}F>bt<{U>-}@AE4A0X(#dQ%jhSRtk>!MG0htS7YePVkU{2Y9Z_7Gjo0j)P8-oA;Kt4zH3Htyo8Z_aMGG$P35EquwmQH}KFdHP*KB zee@^&J=MqhWddJv2KC&5`U=snbEt0y=(rjELVX_82mP&b9_z6a@gS*R9@Le5_XzrQ z3ylwRGkG%Ba3acLOs0dF!-EWNgi7dmCSC&EV$Gco<4oB^lviPc&b}4o+VuO!^11?~ z{bTS%+J6h4Nc(f}M1uQ{t^jF&7M@7^&3Gd1H{nT%^Bd(;5Ayr-egQm{%@?regWUey zU%)Tt>qfb92fv^Hg+Z>&;S1Pv2Vx8U!cbs%9N+Ea_v?{&Y7Ae%o;$hyIx71$e!r2P zWBCI1{2I64fZvZ`T}~YXu05((u#dWqodzC1&goBF;JRLb{t~=4`Gc|hAinVcFJ90A zmcY9Yb#Tffh>3UnQIy-p>0dm=b-j25u`;${zNima1P)D+|PE-Cn~S- z;=i3k?E8QB(Vak|KJM%H=|5DAANa%v+knFie#tOjuZX~{-LLqi3H$ZpPafu#S03iY zCHrxY)w_IuXYL?;cP=TSgO%y$_FogfguL`JyK>)$%=pJ74xw>ie2eH@9P=Sc;vMGC z%-siHMx4bm0#5+X7{BY2Cg+rreMOC-2>hh_J%5G#hUA@UIWhZ5-*tFQt#4C09vg|j zK!btD(2n~orN&1DD-_`evZ+^QdnoV(L)8DsguN z>N^2EMtCTR55HeG{EqNfH^$au!hV~KIwmpsO6siAi_c+9kZ;9vkgrWl$7BGF_ko7t zd@69yB)}eM6z^?#Irag)Kz^<`4+WgW11E97NgQwz2b=`|IXsbolQ`fc4mb(= zAw0A2L;_CYfRi}jBn~)<15VNl3@06h+)g-&o`jQ*!k6XidV%4jqdI}%Bzh7~I;sOs z!gqv|@Q&dmdJ;~eGK7=pNjQo922R3r67Xsz*2Hv_7q=br=_9APuE=r3;=F*khLeb#{m`)Z&a*%n^PWrpA$MR;oe!`rH7v& z+uT**_4mR1?FYU>f1l7X+(hxV0nd8EJ@RD2J^7%y_(_$hH+4EXGMPX0b{+lzojN#F%h-~=ruxU&9v`1qoqJ1EBT?SnVK2cC3% zkiT6vx2?y_yMnH52q|M(EXyU32_K{aoJIHTS3iym1zjOH7OOit7t{l691xze5~` zfA=Xp$9y90pHy}n^hqX_mjrIYesh3V0>22}k^Mdl{Co`f89XHOpC%tz@DcC zk!#P^doS{^-UK6x{UvR^vw2a>=9R8<+IoZT>;m1%Snq8A@Or=G`>6F6|Lf4rtoLWr z*Zbzz8GIIeQWf{BoZ!JYE)&i)=RlU2B5gi3MLvUldgKHroB-@YS16r5fhTY}?v|2Y z+lDw?FJMoDcRh~+XL)sXLj=dpH^DK3v>I6qGGoL9fyV;(10Q~yCL zsQ+f_|Jx(_|CZK&Jg@8j$h=vgeSn2C=)WEHyf7XyZSX`4cp(e8{~P1AFAxZ#KB<>;FSl?jV2QM;K#*@B7 zn`7v2@eK57rZc$L=%f$%w@BkojZsb^HgeA~yz9dqeXl}3gl=IwaGYy0WcuT5FX8(v z)C+%&AzyNB`d`XAPr4D-9_}nqhN^*IF;3uI>{-kK)_6Sn3jG1wPqg0Op9o)t^FBql z+}Gc$gAQb(pYa8_*GE8#5BwJAn=!Z4*VEM3)2y#zy&3lU=b%F|;tW6^{Ch8{ayP+i z)hXQlbQ<>oPV!5Wvkby%BXsU2(46z21E&zLm-0;P>?ZjnP#(pk5l>P5_!e^^!>@qi zQgsZz3J?3Gk!WeCUsM;oJ*sHHi0PfF5HX z`!zz*&ivx6u4!F$NZ-wz<3qte2Oj&rz^ zHUU2SoK7@ipWA`^ktc48>sTDPp|^Ok^(1uP0#811koOI8&&*yS>&^S6m1kgUCY?LR z0$rFM{$^ci{`}(Iq&v?;ES4-5w|!(jbcDS^^(DX^^Z;+^coxsTdJyyp@LhdbwK;+3 z67ur_uW#Ppzu?S}RQ76?*w)7@m){4^76C0BT@Sijh;y zhQQ8~v`@tR^Z~980xyx@g%9^^jqGnPV#em3XZ=Mz?A-o{GBRKWzFI!mS@hDqL$DLT z&w4}|aml;97(b6#-g!DPc9Lw1law~hZQn`44IeT(&}F_V-UGOa=yT+(TkF`<=RDF$-C$mFXHan-xhJ=wfAsG!dYHk zwFGy`Uc(*I?*S%G>){W@!`=e?&Iw92_JaVLAnSn-JK(1}sF#=j(JwrNHLE+v?t2#} zT_C!KdVnXff0a|e1>gMwcRiWUdS`RXSY|K8=;%lnHPoEd0GeM6!xR^I{3);5ItJq7EYdv$o-zo9pYHRu0&W4Q0QPi zUdYX*bvFrbV4lwY73V3f4LSE7y?hPx^ibYaDFPp4VG!`+;}!XJUjF&DYho2>P(Sz# zzz>_BcI@$*M#Jv~)28wT78_4^9(>rfBe`5B-7D<||H9(d625<3!}oX+ zzGuA617~=``$~%$V;4HbyI~h%c>Y~pcu43}?!KQB?k?&S1LJ z{4ORg!EfQcLh z`1{-s=q&GDNtgwE7R$NVbPwgj2jq56$vXpi|0?#`dBpB$1)tUG6JE#tCAly9h2>Se zum^MiuqNwlkDUKSQV%QBitwtv*H9A2M04E>tVt);%IJ(rlY#BNW`KI!e zvo)O9|30s*IS1T)82;uLuZef>(J6U*5DWhi@LxaYl)HfofIsBBXL9n-aUUMxlDs$l zh@J0Kwx89@zlFT{Z)f$w?a0GC%6q||<>6a=FH8Xa{p~egdG8_URR`g(K7>2iZ|8A8 zH*ohP@YC1+ApRS^H=XC1?dZ4QQEvxqz6TukKgV;TVNkF90C!Ru_JGa-?|BE|3;!VK z-`nh+LhrV|&MRL^fS1R+?R#Mp{4DOSpT#SV^Lk|~=%5KtIBbZAK{tC|;^gW|+7GY` zfG2}pMe%F|{XDJ{yV}*e2f?US?4-mQEedV$<~V7tqM z9E=z<<8n>HzYX0l;Jz7YN*?)@z{ld^-O5j>+;4dKb*#@6j2nKmOg^6&=9OKq>%@QS z*D1Nb#XO$ZDG&9dy>n>qq+j{c0MDMe1O9$P?uTMgFE8bwtu&g9y;K0+M91=O%>%s} zxF+R%Z=5g#cg5dI_j7lGPw9jWJMWDooyMNGh6~(QIxqY(q&>H4PXkZy<(Cjs^p_JjG4UX$Y~AV; zFJ9#3H}H*0>v-XfCD5ln#EF+j(zf2u3eTN@?};jhWBj=H0l30A?kZc`?fHHwV$>;B z2Ql7GJ)H@V5r0nUhEMY)?7Q|sP7H&uQ2Dko%4zV6LBtoG0$M4+U;4sEPOJnUQ*p^J zw)er7TEfd+C3-261$~Z=(M!Sj3~NiqU9#fICm?gRf~UiCZwqXcLw>PiGOuL8*W7*? zur~<1ICSLO$E*8CcUcF05NL8eqn)By4LFQ}A0}9=_6bAiYwj7uy3Yl?z>fre6ykGi zEZ~Pu^W;;mxIk-7pwBU!QP=nx{cJyMd3?$rMm&eL8)tl%Xev854g5rORDJ{e+u3jY zP1XlIk6y+d$HG?7(OjaV22L6OFu@(Kd;|L*Yp$Gn1pMP`&{@0-I(ms0$}fVBeh2!J zC4B#G)6+8aBX00dqrsRvkLQKF+sDCo$)u2P>R%PcE-?N{&SU(ONiLtlDK+2ztG6Mq z0*|(Bm0n0(X8Z=-BTckaoYKSQNu2U7CoiFS8ss6ffR=*ZRf5+TJO&=F^cr~5Zzkon zl&r>Vsow>E_@_#h z2FQ6ynGSLuWIDhOY-Z1BvLEOaWWWAW!xg$4jn2QS?Q(BH-b1@QCx-UGr`~WwnGgEB z^nP7;9<^)wG1#d45U&Du>O*vHsGFU|lS;A;GJIt9Ga@*bYl81w4|Fz$EJfGrQ|h09 zE_58|&>FPc%V+}goyeL5nzqKL*g5Q}eb{RiJ`sK^7!!2w&-j$O(~!9b5EI$RY~PCU zhpL>q?UGM18vUXZJS_3YJqIxtZ~D^P?tjTJByTrBPr$jL(EIQ~yby06js01^UzJZ=ikXP-n6;*coSmvHnJqv&lC} zhJTfK`4V_;@H~UydBz+8o`GEO7}|BBZrJge4%G>{aQoq_%5!L2dnZqv2;T+xl$knl zHU>DdvIn~T0kd>3_T(cc5rfakL8kMNzXIksS2)#%{5SKY525Fng!~H1AGjZRV<^_U zaB3oKh^PnWb(n4PbVPghXipQp0AD%s{S7~_%C_fDVoY48*me@~&H?NR6Pv&Mes&h?X-@ms zn{VNMHtFWliH|5-K6&(dUb?}1YWI26*)c^;JEvMWO7uJV_a}WO>+)%J-%Nc8ls)k= z`mp=$QTty$i1k65aLB@KMH)g%JYnH_k+Pn&aAin)k={g_^^}EcMtUBpp(zn- zX^J*lVl6H4mb)x5`W>sWv^BNFqEdZyO=HX=#cN_k6|J$B)}pnEy0(Tj(bl4QQnaNm zUepq+YiLchY$|GPk%}6cYGNJpq?TwR);g~tKG#)ibJy7IYt}?ACEE5~trKAgct@%)y7tprN*7~Nl#>R5|y*$1?X8FPwEs2)4 zSgfgS{oID8+R}JatSP!ame|xB+Z2noSn#hVnuyMCs*U?l2L{(BB`oyQvaumiZ*f>+ zjj{EZrdDp}pJs5MLm315l|@e^-@i`h>SGOc^@)~vTT@M0OFR*m;*G7b4Q;U|DK^K_ z*w7Ta%VL?eW)o(~5^Zi?MP00kMQa-4(mKp|L({5;8q9fP+xjL;q8`goW4R-0K}Q;z z>S7(uF)0zNX>N%($1$B{(U#WOd~~Kwk}wrHYp4=@-`Y^u6iu|z^r!;}#@DZJNL)7r zZt;~F+~?8ncC2ngys0tTnpl;rWO=fZ`AzN7#)cXx-qeKFQOtshV~N?8jrFl6OKW3; zgsxduM_bV&mc6<$R!ft{K1)@zxS_Qb1P|vV6P#u$0SZZnVwDOhI zb~F*k_!F_ZSc@f&&ek@@H`d2n6X}4el~1*o8hTS}tf{pPZL|JZY8x8anzLV2@hbeT zOVp>z(^R3BmMA71JEF$IAlt$wM`9Dn77dH5E<#HKI+xf~8mo&Y8roxJ@y2D;f56tt zSWBEhuQd@}-@INOzlF`OrJ*L-pICcC4FN}TQCDezT^Uc%bP-&aM;jYAHN^o1@s=n$ z)!H1DVhMCD*0LVcqRybDh2UO^&ZLo`}$R7;vKB7W@IQOVB=H6Oo$8R`#;vHZ|T?AHw%_Lx` ztudi~lAHpTtF1!`ARnvEcAYJ4+i~2r8Qc`WY;&|Fk%aF60sj0NwX}VBkIvP~CSiJ2 zZDX`9)wkqKCz4Clngn@N&uQ~his4iyVQ_gYvAk_fO)P;qt~;N-w)=Z^|Jw4$rZ3!e zX~}{6m*pdRVU>h@d2z%2E>3RUs8ge6{USwl12 zdKY$l%mQ$kAw2Ag&OH675a%hjCTvXc7*3c5OtZz%iIvN|+v_ygX zrFct>A#%b5v7+^{^-_HcP%V`E)UYhp+Ds5q z4m6y~AI2w1h;FFquzbN1^q2XA^UGJH#;5Jqk=Sh(Ka;ay9qSn&sT)`OhHylzCLO}k zVCKvCt^nU9;)!UZ_5l!W0&9PRFF5XN_+~o3VQ>blUIL0mZKu<$8qlo2^n3S+{O3)X z<+qQ>_nbltX*BVf5#>8alrI}m{+*W0`m0Ce?;ep~G9v%!5&0)Z{Pv9~ZyoXbEXrrB zVG;_oJ)hjg@95OI)eweC(9&11ss%HiLKVr+xGDOX+-xiXZR%LfDisX022+~`i+Y1* zx&H^>-$~!AEix37{@qA;+l}(Xcc{2VRT(Ys{&5q@*{JqxJ}X-|3{{{HfBEZoIk-(2eWsIoW6|MG8dTz?k6 zQ3+rgXPlz6t=zwxW^yKs^-Vl!{r(O-De=?i@Eh*Pohu zB1x524xP1dlh0W=4^lN!2hv`o=aJ4J4IxcFk9?$RqzlGNfjt-AKWLeq*sv!kjDKN@{txH zrSW6_=H|vt%bTLj;Aj%T`nINZAR^#qQ@l%B*(J5Lv6h=GTN!In4z_G+PQ*FOCEx_W0;Ms(vm|*{NL4U4rRDhs(09gmX1@PXKgLX4Jibpa{}Rfl z|L(-N(|?b7*TRK>t(LSUmeejI0V(tQw=W{U4JrWi{6=MZ(ckd;=ENqV;Y>=+tm6dQ zNN+RrR%(2U!30D8AvQ7do1N%)QvNDo@^@yw=e^;4CY+5J_mw|nwz&`UldLaA^XHR- zBeUM8hx=9nIevM==2%AGUm8*GMbw+*dnLva%&!@3eK_=2E0>z3WXbfoc^Y#C`Jd$C zC7M{A(f*!4V(%rTo6=}gymfe0((BoW_EP17@g@!1X4JJCZI#9eIGH$@k@sbcvoxNR zPp;3eX8mN`5cUpDl{)J5KFk`P%M4VNUgk}VN0Vz+vM^#Dw_+SxKEO1Z(Z?qMBU)Zq z6S*_;w_Ha@JIA%4)ADty+f!s{r7FdeO?6p zi%Kd<<20h4^5OQ1V@fP6;+WNlNntP1zUQXi$;vK6MfX+jgg}C zvKP@mEicm0(y9qTne|ym)Hes~q5NEwnK`G4-(}Do;P&hLQID~w(VAd=Oj=joaeX-hXhK@K8_}WlJtd=YftBlcZ0*7*kdj*R-|0B)|UZ~1zNaG8Bd zq|E`aYP`0blo6R_-b9`x+!G^@5uY*c^lPC0=G0{%(a1Um7vLPZv(*Fh-_KPkpJX z;ZjSNdY=M>)EjNvV+*BTrR~bpI}LLZEA2FSSgh z%)Ra{V@OhOGuf-u>r9R*^;&CBBT%W=$p%$kDD@hDq-}%L>k%A8+IvQ^lUR4;`y|Jc zdarfny7D79gH(BK9zHeT<&PP)I5(4WVm9DV3ERW}1FAm6uwZVg53er+t^f8;;Bb<`~w&j?C0H z0Lp;ZNo8t7&t$7c=4LW)soZ3jn0h+J23(h&$;FS%PJ!L%9UH-;rM^zCOX_om+Edxr zQ4mIvZk){sOe#BV`O^4>RCd}DGT|&KcBBfV)^UV9F`ZPlp1q_u$3Lh=Intpw zXDVUlF;$6$<2q4(63V=ReNF$Ud?)@+8f7hW$uJg$eYV9?AM4OewsS0XFrqwzZ?jSU zhj^0Bm|6AkJcI9(a(vC)soXx~)4wn0PfgLpcP3Bew&Hj7JlMP~p@!Dx#^@$X!}?~` z5Y1$5SZQGHg__$EZPKiPZLq_s*5bxZTs6L@f7IuC{Qck2T|y5I-buC9*W5aj`y%QR zb2z5o3X}W5ddcs%5m|+d0~| zU&NEv9Ys^EC-dr&N4$t;g5_3Yt|s6&_5EVmG_F~7Hel~9+WQ|(1E#Gkl8~JK{*A|`a^IOXm3s;4 zERtdNRBk#_2x&D^C(=HoUZgjXxI3qE79=0iYNUIS9z%*mq0M3nnlyf;m9TmX*9kaG zpA&37)j&_0ON=Lh{N#A{!3G6#8E%TV)zve!mD;*sN*gz&mu*~wv8T3cW<8yl2bHIa zw8Yn!*T*7lvxZDnnI84Dfv-(3Q&x~FGt$nSQSJ-if3><&y@BZ}qs-5+ zZZIItZ<2@=#a7i6Vd?F4qK`pxGMP{A6-*4ssN)3MK^=?Zu>8iG8l*sNg3x_NnTvDS zJXgUTrlET3HV;70Hs8f($<_zjdc4CB$JfpqUSc`OcOs``A^EYBV zDF6fBKDAtQc{ z0@$evFuo3qGl_Sn^V2fgF9CiX1*TJe={%c{{_W=4D0+!9-*Eul(5)8~242>5;ieY`QgOLb<} z>=8Koi6+ni)RkQ0aaiLg@SFILOwKbx+z#}ja2tt1=O1s$SO*T};n)<1hZ4(6?<>)- zVO*c;OH%aDSihf<&S4Sg6H+}=GtyS1$B@2*^fc1*NUtKjgJf6?`h;Xb@*stfI<)j< zJZq2|krGI6e~EU7xf8jVQ$|c(v0G>=b1*j&Zkxl_kmepXcG^YS=4!)g^{?hmLho&X@ zxKHMnIm{!^Z6p`6xf1%_l$fgyHP$lMI!|=WvoRNgI2$DxuOd}qH$Ceg)J~_rng%I~Il2kTOeuq8awYuD*-RlmA{NbR>CAvHg$Mp+HP5i@6Ei0SRH2#C8Er?D; zLN2G(5wwbSe^~U2u7F+iSRJC%9}?XmtHa^-c)e~E^Lnfym(A|C`rVi_kIRdGk1}o3 zu)S5cRBFKG#RS`3Zg&Xdv`0jn!xOUlZEkBg7_|Fcez(I9C~%3vpct`Y(D>zc`y*n| z=5%^&cK2uvjNnYD8CxW57lR>;AcWQ;k)Ssm@nVWy_K4LE5C~gccE1>MdV*Ga*c$ML zTvm@aVzY+=PDc<9x1%*P8vXxUwIwBOg^V*~D`O3~`~c5@8-wz?JnpdHDF$32njW|4 z5BP1O#})94!AQ^*vPSGKFCfHfkGKKjkzmL*+K7M#QuTXneyhhSx*Z;m4GZmd+QR;D z0L$ujImMtm;grUa4O4+?uXV~triJ}AZYIO!2cF$<_GYC`BpUOkhK*D0g;}t`J zpvy*(6At)80c$82js(I^(eJef!hwk2;}1K%wt&?QV6)mn4p+b$uv@(mr`11NLov;K zoElA73|NB>hu!Om1Z_c^!|RU(B90&+*A)qP?GC%!A9mQn4wu6l@QRM0-{Ez7(V*Mo zvGX z)6`9f`mRT6H-l7L$W<9%TSvj&H;*wR0go*Zvbx=lfXxo<7_#{t){rge7Onn}Hxd#Z zHu$2Wki!uK_7ts=pu-l#%mPI4Vziw}xahBqF@s*O-5-pEJ%D|GB!XW6MX$>y+Jd6j z377Abr4%+~=c4s7WC8&q=@8&ROis>W@@b}jtS*qyz6{NTH zZ(4FGn0pv1uwTDiYDtt$p|qq&JjzeAdV>zYrY9Ki63(&)Ja$jO>j^uY>X_$px;-|p$L1W33a6?`%>?x;RJwTGCb(bKEGS*G zzP+ruG#n~wYb`Bnnjf0Kxi(t5#8X)8cCHsYJT)uJ7HwLyBwFH(FWgYMVc}+%bzS?i z65G;-aGhw4FW5N0rfyBVyfso8+W5sU-e9RlpSHi{#5=v9dTyKB<&Ib*&Is_57{(s~ zhbL?U(((o|W3HfoG#r?kv5%g3hudohejSzlNmY|E@wJ5!DIQ+Arf5<73Q1bJxTw8a z3@vi6lQuY4x+9^@jfIYmrt+pu>%tW)8#j6@I-;BE7Pf9$vOenZ#+Nmf#>(7*xVzL- zv1FlR(Sn#{U%0>)@PCRX{-)9E=rBREHti!P-fguyolendzj=r+^e?Fj2R3dlSyorG zz}*pWH3rr|{;F;)tZa2wG%TqquPkn>SXf&fE#ACf^QPu%Yq_-p+oUvLpI^4QZG&}b z<6`^#<*~xHqJY@2uw+ABMI!iVg7}a}^nfJVynbge;1yk6*Nd z9E`^Ar9kx~C*B2S!wr_^W1yOqEs4eT3pY91%Nq;J>OISX?V#Ioj%~OM)HCn%in?TpbM^@!+Qk z;vJ&HAGW)~A@HMq#tMTO_D4LSh~Mgf1VH?r$7>sno%ESJ*)U4me^LUIsnk zuox7C~jO92zos$ zJgx1uYwSzv3acftb-mNMa(U^d#)?LJabu*YcHIVNeN(e{!J7F}`NE=@JzBlAwQ*sf z?Nf#0o#BYX9|RH(iZ;7F6cmF_yIb@GJ?@~>2`SO*6zwjDb2Pp`HDe!%YTPd3klbGJ z<{{o@t6#Bb$y)b{vW~K{7HefdY+UB7Zf|X=^1IhI$7`2t4wP54hnCia*2i6T`?}IV zwQG6lq79puwzw*)*VWEn*I3dXZ`|No+u>j8sH~hHYg!(t`xHUE)fuvf?e?I}ZgT}g zqSa<~0K*4dVE^p_F!T|dKNxTZL!S)dfxhe>`^O=!w$|$QrKJnqtxY8>H{06-g&UVv zRlr!{()pE9w__M60V>TNfbMe)URhf!K0Sd9*NQFKR5R_JOrg1i-{MZq<~!P@mt*xNk1VU@3neS zjcB`hi1)VHmep@sW?L&QjY#hBqM*~Yc|$|>qP3BdrG8gS`!cU*zAa=E7X{0rfel3~ zN`j3G#YXosdudfiaZPn-^TPF26@^6$6Rx6`stpyvCG$PbPZd|=0h1RFMqChYgAi~7 z{$MB!fj{hmd>gd+ZB7sLOpeee#PM#?1!2MSG1$pEsX8Gpv@Tw>B(ZWyO^MU7-oC*a ztXr@m|m&#igHWzQSxf6@m z76xj(4MF?-j*jxcr-_}kx^0251Nu1dj~-V9O3Wa%N>;DU1I?nH$SQO*P{@8FRO1#w z!`-6uW8nBUcUj5G>PStav$(LdaFMmWbbZ)Ww6xV}^kbOhQv%F8=e1Ov+52UP*q)9Vq=}VxZP7u!uc&o4m4|{QD?;v16<6c723^pmS;Jw>dcX<&a>VHm20a0X%kG6bmO$R+8CB8z zF}NDh?X|hRA46jhx33G9d6%u*yrFE-((*uJNnk^9Noi@sxhPs$xYSWm*5D|NMi$pP zn#vc&YiinE^<}mS*V@gsu6Vm=gS*60Z7XbC60ciO7_m1=3tbB~H#UYoO|%sXZ{YNh z-$sEm0?>$Cq5iizoFPASyv_*JD~_-`>=?~Bb@THMQ-{mp@Hjq({IsBbaZ&R+Px+#a ziP-YR(bA>1b@9`(6Kodb{966JG{0{O~vavN}-kB*pYB=TIgTiXsvB*Y2RG9 zye(L`F51vu<9Bbgw>io;l*FKa`ZQshU;sK;F$i7{dh{UdR35-PgjH`CmIF6523`nO zu&;e0OarqA@Yc!J-vy3%!mF5wUJbeO1K*hize?sM5R6AM@1vKTSM**d7Qu zU{7&I$fgD460nCuj)30}6+TReVV56Tdx!HAf;&|IUa~yi{KQ8~S42aOj))X&2(Q?< zu&8>Gqpi5UJ>gwm=1N%GptlcIS1c`GCUvxw)cF@zgsLmohgYm9@)kF&msT!qtP00% zOAD8H*ZZAC^+jvLf!0#%r;4z;1ESvrR$YV!-U>z;JUmQ?VUIfic@_F%o8RMxuI7^| z$lPFP0P-Ja;u9O2E0%iN);ZS2>ee}2n->MEOWoDYRn4ww`G%^x_R5Y(qt#XD6pL0S zN;Z_VFIZU^x7E4l+uAo(FJI)U3oKc)uC*w>p`)r~`HC9P{P`>6?Vl>b8Ug|b(-MY) z#_4r?9U@tK++nXfV1pIf>$kdWPN*s!pA65~yk61faeNGjZ;sV2ZQis|5*KaMR<%?l;4sR@37ca6!mo{t;b}VZ4wnbZ3E^BeOY+kxzakagpd|_x| zd*iaYlJZ53i`z;TS2g*wF+`%HbhSYSNlI+MWr1^2azeTzq&!na{jIBO0R$8e|9eaOg4Q55y;$$%M$O zbR%p!ik-BF#YnxLPx5^>q~?RiB9sE|Ztg<~#v%t#I-2cpk|@E2Qx4vNOUsLU^P82z z1X*#B_*HW^hYWiZzt!vn%oj~EA%R}OYv8T`I{?E&)p6Yw4b(IR1Sy?ZB0c!y`YMY@<@{+`X^b_34o3(mExQ!M^q{d-@u%^NU!Vr}>P! z&JuPyx#?cGBb{|M99%?kseY%Ym18BW_c(%A?=3c_)d`9d$}37kDH^prX}n`ci>xTxKuK&p&H%g z1Ck@JH+d383uQK{=cR7>WhrzVzquE>Qi0z1jaDF>pHx7dLpMo*ybHSPn>|hc3*pLtqSTzmw6~#8yK=gn44rx^)2AwrthBW1Fu3TC z#Wi1(RkS`iH_cezB6DtUscO~mLP~3es@}$nhmq87kp!Gcl&Nhc_it5d1dyCXL1H8v zw}Qg1u@tSL;Rd?^8*f!%2oa2F`c0Td?4N27M?Ze!g;TYqfaVGlirgP}tO<|r*w*!)TI-J)qNN*q{n0AUR8>ej`l&kFB{bZyhhqZblTWl zS1#rKw>o$dtPONDlp;wqpbWs1y3B#yFKIk5O2EWu?m15XGv08I#{b{Bdw3!+7yu>v zc%`A$^E?_U^nJ3KVI|<7WtSlMX>)e6Jr~SRW-{L|GSQCjtBm%wG`Afv`d|e=E~$lk zPgcb^dI)-H-V-8WnxW>W`)>tJs-#Xa&}(2$Ma>~~1snsC1ZP+RO+}L=kcB}bd$)}j zp$dUW;N$1M5f09E$6ex^y{Dbi)S$RpeTeg0*n+_wCyH>S$88dWvJ*Q} zs5<3rKOKp8i+zk0#$B*-Ng6SK(N5p$X~m`wY}FYAnl1Aap=cB|D!13Gn~msLikg@dz`oRwcFj@uq@3jyUn#*Fu!;i zmDim!|G;nzo~9C;qfcI^z^>k90b++~mO@+*bKc5E^AX}pdaA^9*8z&Evhw@&jK}SR5*W^A?YMK=jF7o0!n7RR-=SrnGrXtqq zPCJu(&b=Ol(PeoUdu0$Gj_EpH&cm}%ZImM~KXPGzb?-VBSHq$hz!or{R^st=|5kv3 zB-1hpGQ7emprk@Wh+Py3Q3wVpRCrLFfT9cPn@A0Gu;6tNp80x`kL>l68~KGV388?DHhbH79eEWjCC%q)AGfMeUA` zYWA&o@hqtCP;n7pr!tzPK>A2v`J`a`fnkaSlLmrP%(HJUx*71jfjfMnn>6I(>ei6N zepV&n=4Og&Uge=a_AiY-ovuet+cB%f#7U3SdZitN+35I?d`{VK!SY@jn`|+a>}s6s z)BQZ0()og0%HL`W0vVmiD$taYkV{e+n$S@)*z>87)C!=Gkt$f)n*K~N`3XV|xO)J6 z#80%7x0bNaWbF=^*s7JGW4kSPij4MhKgkt*qij(1z}0NvA!203PuUCuy*Q~X@b+J{6_ceAaR z$6h-e(Z{3FJjAnPmBhSUKb)r93|Exl)8Fdgq0rz_T_hdk0x-s8K^7EHI?!6mEGcth z&udaO^1T}mgcGWIgx!C^)QnyjfP)R0XX&4GkLL z4w(jRSWrYz=2ebEqxs$%1ep1HD z3F1vQ-V%)krkLQtjTzVk3Zc4&lV4giY!yq4wy>s=gN{y<)4g*My zLaVyMia2IkhQR~iVf5aNN`Y2GfjRkJso?-`!jpjcM5zhI_4*oeCx@})s+ug6qeE2u zsP!&E>rb
>S0Jn(<}wxUBC-vN$dxCm3F3pZivj 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 diff --git a/example/script/Cargo.lock b/example/script/Cargo.lock index fae3ef7..0ac9132 100644 --- a/example/script/Cargo.lock +++ b/example/script/Cargo.lock @@ -25,9 +25,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] @@ -119,7 +119,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -131,11 +131,11 @@ dependencies = [ "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.5.0", + "indexmap 2.6.0", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "syn-solidity", "tiny-keccak", ] @@ -151,7 +151,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "syn-solidity", ] @@ -443,7 +443,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -471,20 +471,20 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f43644eed690f5374f1af436ecd6aea01cd201f6fbdf0178adaf6907afb2cec" +checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" dependencies = [ "async-trait", "axum-core", @@ -516,9 +516,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6b8ba012a258d63c9adfa28b9ddcf66149da6f986c5b5452e629d5ee64bf00" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", "bytes", @@ -621,7 +621,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.77", + "syn 2.0.79", "which", ] @@ -773,7 +773,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "syn_derive", ] @@ -842,13 +842,13 @@ dependencies = [ [[package]] name = "bytemuck_derive" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -900,9 +900,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.21" +version = "1.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07b1695e2c7e8fc85310cde85aeaab7e3097f593c91d209d3f9df76c928100f0" +checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1" dependencies = [ "jobserver", "libc", @@ -966,9 +966,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.18" +version = "4.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3" +checksum = "7be5744db7978a28d9df86a214130d106a89ce49644cbc4e3f0c22c3fba30615" dependencies = [ "clap_builder", "clap_derive", @@ -976,9 +976,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.18" +version = "4.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b" +checksum = "a5fbc17d3ef8278f55b282b2a2e75ae6f6c7d4bb70ed3d0382375104bfafdb4b" dependencies = [ "anstream", "anstyle", @@ -995,7 +995,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1103,9 +1103,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.12.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6" +checksum = "0121754e84117e65f9d90648ee6aa4882a6e63110307ab73967a4c5e7e69e586" dependencies = [ "cfg-if", "cpufeatures", @@ -1244,7 +1244,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1268,7 +1268,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1279,7 +1279,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1401,7 +1401,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1566,7 +1566,7 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1717,7 +1717,7 @@ dependencies = [ "regex", "serde", "serde_json", - "syn 2.0.77", + "syn 2.0.79", "toml 0.8.19", "walkdir", ] @@ -1735,7 +1735,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1761,7 +1761,7 @@ dependencies = [ "serde", "serde_json", "strum 0.26.3", - "syn 2.0.77", + "syn 2.0.79", "tempfile", "thiserror", "tiny-keccak", @@ -1853,11 +1853,9 @@ dependencies = [ name = "example" version = "0.1.0" dependencies = [ + "borsh 1.5.1", "clap", "groth16-solana 0.1.0", - "hex", - "num-bigint 0.4.6", - "num-traits", "sp1-helper", "sp1-sdk", "strum 0.25.0", @@ -1993,9 +1991,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -2008,9 +2006,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -2018,15 +2016,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -2035,9 +2033,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-locks" @@ -2051,26 +2049,26 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-timer" @@ -2084,9 +2082,9 @@ dependencies = [ [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -2162,9 +2160,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "git2" @@ -2221,7 +2219,11 @@ dependencies = [ "ark-serialize 0.4.2", "borsh 1.5.1", "groth16-solana 0.0.3", + "hex", + "num-bigint 0.4.6", + "num-traits", "solana-bn254", + "sp1-sdk", "thiserror", ] @@ -2260,7 +2262,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.5.0", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -2279,7 +2281,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.5.0", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -2335,6 +2337,12 @@ dependencies = [ "serde", ] +[[package]] +name = "hashbrown" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" + [[package]] name = "hashers" version = "1.0.1" @@ -2450,9 +2458,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -2654,12 +2662,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.0", "serde", ] @@ -2696,9 +2704,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "is_terminal_polyfill" @@ -3136,7 +3144,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3244,7 +3252,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3264,18 +3272,18 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.36.4" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "oneshot" @@ -3337,7 +3345,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3792,22 +3800,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3840,9 +3848,9 @@ checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "portable-atomic" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d30538d42559de6b034bc76fd6dd4c38961b1ee5c6c56e3808c50128fdbc22ce" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "postcard" @@ -3878,7 +3886,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3949,9 +3957,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" dependencies = [ "unicode-ident", ] @@ -3970,7 +3978,7 @@ dependencies = [ "rand 0.8.5", "rand_chacha 0.3.1", "rand_xorshift", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", "rusty-fork", "tempfile", "unarray", @@ -3996,7 +4004,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -4188,9 +4196,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "355ae415ccd3a04315d3f8246e86d67689ea74d88d915576e1589a351062a13b" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags 2.6.0", ] @@ -4208,14 +4216,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.6" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -4229,13 +4237,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] @@ -4246,9 +4254,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" @@ -4288,9 +4296,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.7" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" dependencies = [ "base64 0.22.1", "bytes", @@ -4345,7 +4353,7 @@ dependencies = [ "anyhow", "async-trait", "http 1.1.0", - "reqwest 0.12.7", + "reqwest 0.12.8", "serde", "thiserror", "tower-service", @@ -4520,9 +4528,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.13" +version = "0.23.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" +checksum = "415d9944693cb90382053259f89fbb077ea730ad7273047ec63b19bc9b160ba8" dependencies = [ "once_cell", "ring 0.17.8", @@ -4534,19 +4542,18 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" [[package]] name = "rustls-webpki" @@ -4627,18 +4634,18 @@ dependencies = [ [[package]] name = "scc" -version = "2.1.17" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c947adb109a8afce5fc9c7bf951f87f146e9147b3a6a58413105628fb1d1e66" +checksum = "836f1e0f4963ef5288b539b643b35e043e76a32d0f4e47e67febf69576527f50" dependencies = [ "sdd", ] [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ "windows-sys 0.59.0", ] @@ -4769,7 +4776,7 @@ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -4817,15 +4824,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.9.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.5.0", + "indexmap 2.6.0", "serde", "serde_derive", "serde_json", @@ -4835,14 +4842,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.9.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" +checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -4867,7 +4874,7 @@ checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -5004,7 +5011,7 @@ dependencies = [ [[package]] name = "solana-account-info" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "bincode", "serde", @@ -5016,7 +5023,7 @@ dependencies = [ [[package]] name = "solana-atomic-u64" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "parking_lot", ] @@ -5024,7 +5031,7 @@ dependencies = [ [[package]] name = "solana-bn254" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "ark-bn254", "ark-ec", @@ -5038,7 +5045,7 @@ dependencies = [ [[package]] name = "solana-clock" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "serde", "serde_derive", @@ -5048,7 +5055,7 @@ dependencies = [ [[package]] name = "solana-decode-error" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "num-traits", ] @@ -5056,12 +5063,12 @@ dependencies = [ [[package]] name = "solana-define-syscall" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" [[package]] name = "solana-hash" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "borsh 1.5.1", "bs58", @@ -5078,7 +5085,7 @@ dependencies = [ [[package]] name = "solana-instruction" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "bincode", "borsh 1.5.1", @@ -5095,7 +5102,7 @@ dependencies = [ [[package]] name = "solana-msg" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "solana-define-syscall", ] @@ -5103,7 +5110,7 @@ dependencies = [ [[package]] name = "solana-program" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "base64 0.22.1", "bincode", @@ -5144,7 +5151,9 @@ dependencies = [ "solana-program-error", "solana-program-memory", "solana-program-option", + "solana-program-pack", "solana-pubkey", + "solana-rent", "solana-sanitize", "solana-sdk-macro", "solana-secp256k1-recover", @@ -5159,7 +5168,7 @@ dependencies = [ [[package]] name = "solana-program-error" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "borsh 1.5.1", "num-traits", @@ -5174,7 +5183,7 @@ dependencies = [ [[package]] name = "solana-program-memory" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "num-traits", "solana-define-syscall", @@ -5183,12 +5192,20 @@ dependencies = [ [[package]] name = "solana-program-option" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" + +[[package]] +name = "solana-program-pack" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "solana-program-error", +] [[package]] name = "solana-pubkey" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "borsh 0.10.4", "borsh 1.5.1", @@ -5209,26 +5226,36 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "solana-rent" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-macro", +] + [[package]] name = "solana-sanitize" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" [[package]] name = "solana-sdk-macro" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "bs58", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "solana-secp256k1-recover" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "libsecp256k1", "solana-define-syscall", @@ -5238,7 +5265,7 @@ dependencies = [ [[package]] name = "solana-serde-varint" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "serde", ] @@ -5246,7 +5273,7 @@ dependencies = [ [[package]] name = "solana-serialize-utils" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "solana-instruction", "solana-pubkey", @@ -5256,7 +5283,7 @@ dependencies = [ [[package]] name = "solana-sha256-hasher" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "sha2 0.10.8", "solana-define-syscall", @@ -5266,7 +5293,7 @@ dependencies = [ [[package]] name = "solana-short-vec" version = "2.1.0" -source = "git+https://github.com/anza-xyz/agave#443246dee0ec0cacea08d8bc63eed7d4e57089f7" +source = "git+https://github.com/anza-xyz/agave#d3312ea5d488578a170da3cfbfb65640cc8b745c" dependencies = [ "serde", ] @@ -5714,7 +5741,7 @@ dependencies = [ "p3-fri", "p3-matrix", "prost", - "reqwest 0.12.7", + "reqwest 0.12.8", "reqwest-middleware", "serde", "serde_json", @@ -5838,7 +5865,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -5851,7 +5878,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -5882,9 +5909,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -5900,7 +5927,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -5912,7 +5939,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -5995,9 +6022,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand", @@ -6023,7 +6050,7 @@ checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -6119,7 +6146,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -6192,7 +6219,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "toml_datetime", "winnow 0.5.40", ] @@ -6203,7 +6230,7 @@ version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", @@ -6268,7 +6295,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -6353,7 +6380,7 @@ dependencies = [ "http-body-util", "hyper 1.4.1", "prost", - "reqwest 0.12.7", + "reqwest 0.12.8", "serde", "serde_json", "thiserror", @@ -6370,9 +6397,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uint" @@ -6394,9 +6421,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" @@ -6566,7 +6593,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-shared", ] @@ -6600,7 +6627,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6613,9 +6640,9 @@ checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wasm-streams" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" dependencies = [ "futures-util", "js-sys", @@ -6967,7 +6994,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -6987,7 +7014,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] diff --git a/example/script/Cargo.toml b/example/script/Cargo.toml index ea4a7ee..2c8de24 100644 --- a/example/script/Cargo.toml +++ b/example/script/Cargo.toml @@ -1,19 +1,16 @@ [package] -name = "example" -authors = ["Bhargav Annem"] +name = "example-script" +authors = ["Bhargav Annem, Yuwen Zhang"] version = "0.1.0" edition = "2021" +publish = false [dependencies] -clap = { version = "4.0", features = ["derive", "env"] } -hex = "0.4.3" -num-bigint = "0.4.6" -num-traits = "0.2.19" -groth16-solana = { path = "../../verifier" } +borsh.workspace = true +sp1-solana = { workspace = true, features = ["sp1-serialize"] } + +clap = { version = "4.0", features = ["derive"] } sp1-sdk = "2.0.0" -strum = "0.25" -strum_macros = "0.25" [build-dependencies] -sp1-helper = "2.0.0" -sp1-sdk = "2.0.0" +sp1-helper = "2.0.0" \ No newline at end of file diff --git a/example/script/build.rs b/example/script/build.rs deleted file mode 100644 index 48e7429..0000000 --- a/example/script/build.rs +++ /dev/null @@ -1,6 +0,0 @@ -use sp1_sdk::install::try_install_circuit_artifacts; - -fn main() { - // Install the Groth16 cartifacts - try_install_circuit_artifacts(); -} diff --git a/example/script/src/main.rs b/example/script/src/main.rs index d00ffa7..26b4b26 100644 --- a/example/script/src/main.rs +++ b/example/script/src/main.rs @@ -1,96 +1,42 @@ use clap::Parser; -use groth16_solana::verify_proof; -use num_bigint::BigUint; -use num_traits::Num; use sp1_sdk::{utils, ProverClient, SP1ProofWithPublicValues, SP1Stdin}; -use std::str::FromStr; -use strum_macros::{Display, EnumIter, EnumString}; - -/// The ELF (executable and linkable format) file for the Succinct RISC-V zkVM. -pub const FIBONACCI_ELF: &[u8] = include_bytes!("../../elfs/fibonacci-riscv32im-succinct-zkvm-elf"); -pub const ISPRIME_ELF: &[u8] = include_bytes!("../../elfs/isprime-riscv32im-succinct-zkvm-elf"); -pub const SHA2_ELF: &[u8] = include_bytes!("../../elfs/sha2-riscv32im-succinct-zkvm-elf"); -pub const TENDERMINT_ELF: &[u8] = - include_bytes!("../../elfs/tendermint-riscv32im-succinct-zkvm-elf"); - -pub const GROTH16_VK_BYTES: &[u8] = include_bytes!("../../vk/groth16_v2.0.0.bin"); +use sp1_solana::{verify_proof_fixture, SP1ProofFixture, GROTH16_VK_BYTES}; #[derive(clap::Parser)] #[command(name = "zkVM Proof Generator")] struct Cli { - #[arg( - long, - value_name = "ELF", - default_value = "fibonacci", - help = "Specifies the ELF file to use (e.g., fibonacci, is-prime)" - )] - elf: String, #[arg( long, value_name = "prove", default_value = "false", - help = "Specifies the ELF file to use (e.g., fibonacci, is-prime)" + help = "Specifies whether to generate a proof for the program." )] prove: bool, } -#[derive(Debug, EnumString, EnumIter, Display)] -enum Elf { - #[strum(serialize = "fibonacci")] - Fibonacci, - #[strum(serialize = "is-prime")] - IsPrime, - #[strum(serialize = "sha2")] - Sha2, - #[strum(serialize = "tendermint")] - Tendermint, -} - -impl Elf { - fn get_elf(&self) -> &'static [u8] { - match self { - Elf::Fibonacci => FIBONACCI_ELF, - Elf::IsPrime => ISPRIME_ELF, - Elf::Sha2 => SHA2_ELF, - Elf::Tendermint => TENDERMINT_ELF, - } - } -} +const ELF: &[u8] = include_bytes!("../../sp1-program/elf/riscv32im-succinct-zkvm-elf"); fn main() { // Setup logging for the application. utils::setup_logger(); + // Where to save / load the proof from. + let proof_file = "../../proofs/fibonacci_proof.bin"; + // Parse command line arguments. let args = Cli::parse(); - let mut stdin = SP1Stdin::new(); - - let elf_enum = Elf::from_str(&args.elf) - .expect("Invalid ELF name. Use 'fibonacci', 'is-prime', or other valid ELF names."); - let elf = match elf_enum { - Elf::Fibonacci => { - let n = 20; - stdin.write(&n); - elf_enum.get_elf() - } - Elf::IsPrime => { - let n = 11u64; - stdin.write(&n); - elf_enum.get_elf() - } - Elf::Sha2 | Elf::Tendermint => elf_enum.get_elf(), - }; - - // Where to save / load the proof from. - let proof_file = format!("../binaries/{}_proof.bin", args.elf); // Only generate a proof if the prove flag is set. if args.prove { // Initialize the prover client let client = ProverClient::new(); - let (pk, _) = client.setup(elf); + let (pk, _) = client.setup(ELF); + + // Compute the 20th fibonacci number. + let mut stdin = SP1Stdin::new(); + stdin.write(&20u32); - // Generate a proof for the specified program. + // Generate a proof for the fibonacci program. let proof = client .prove(&pk, stdin) .groth16() @@ -101,72 +47,13 @@ fn main() { proof.save(&proof_file).unwrap(); } - // Load the saved proof and convert it to a Groth16 proof - let (raw_proof, public_inputs) = SP1ProofWithPublicValues::load(&proof_file) - .map(|sp1_proof_with_public_values| { - let proof = sp1_proof_with_public_values - .proof - .try_as_groth_16() - .unwrap(); - (hex::decode(proof.raw_proof).unwrap(), proof.public_inputs) - }) - .expect("Failed to load proof"); - - // Convert public inputs to byte representations. - let vkey_hash = BigUint::from_str_radix(&public_inputs[0], 10) - .unwrap() - .to_bytes_be(); - let committed_values_digest = BigUint::from_str_radix(&public_inputs[1], 10) - .unwrap() - .to_bytes_be(); - - verify_proof( - &raw_proof, - &[vkey_hash.to_vec(), committed_values_digest.to_vec()].concat(), - GROTH16_VK_BYTES, - ) - .expect("Proof verification failed"); + // Load the proof from the file, and convert it to a fixture. + let sp1_proof_with_public_values = SP1ProofWithPublicValues::load(&proof_file).unwrap(); + let fixture = SP1ProofFixture::from(sp1_proof_with_public_values); + let fixture_file = "../../proof-fixtures/fibonacci_fixture.bin"; + fixture.save(&fixture_file).unwrap(); + // Verify the proof. + verify_proof_fixture(&fixture, GROTH16_VK_BYTES).expect("Proof verification failed"); println!("Successfully verified proof for the program!") } - -#[cfg(test)] -mod tests { - use super::*; - use num_bigint::BigUint; - use num_traits::Num; - use strum::IntoEnumIterator; - - #[test] - fn test_programs() { - Elf::iter().for_each(|program| { - let proof_file = format!("../binaries/{}_proof.bin", program.to_string()); - - let (raw_proof, public_inputs) = SP1ProofWithPublicValues::load(&proof_file) - .map(|sp1_proof_with_public_values| { - let proof = sp1_proof_with_public_values - .proof - .try_as_groth_16() - .unwrap(); - (hex::decode(proof.raw_proof).unwrap(), proof.public_inputs) - }) - .expect("Failed to load proof"); - - // Convert public inputs to byte representations. - let vkey_hash = BigUint::from_str_radix(&public_inputs[0], 10) - .unwrap() - .to_bytes_be(); - let committed_values_digest = BigUint::from_str_radix(&public_inputs[1], 10) - .unwrap() - .to_bytes_be(); - - let result = verify_proof( - &raw_proof, - &[vkey_hash.to_vec(), committed_values_digest.to_vec()].concat(), - GROTH16_VK_BYTES, - ); - - assert!(result.is_ok(), "Proof verification failed for {}", program); - }); - } -} diff --git a/example/solana/package.json b/example/solana/package.json new file mode 100644 index 0000000..671c621 --- /dev/null +++ b/example/solana/package.json @@ -0,0 +1,29 @@ +{ + "name": "example-solana-contract", + "version": "0.1.0", + "description": "SP1 Solana Groth16 verification example contract", + "main": "index.js", + "author": "yuwen01", + "license": "Apache-2.0", + "private": false, + "scripts": { + "test": "pnpm ts-mocha -p ./tests/tsconfig.test.json -t 1000000 ./tests/verifier.test.ts", + "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", + "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", + "deploy": "solana program deploy ./program/target/so/example_solana_contract.so" + }, + "devDependencies": { + "@types/bn.js": "^5.1.0", + "@types/chai": "^4.3.1", + "@types/mocha": "^9.1.1", + "chai": "^4.3.4", + "chai-as-promised": "^7.1.0", + "mocha": "^9.2.2", + "solana-bankrun": "^0.3.0", + "ts-mocha": "^10.0.0", + "typescript": "^4.3.5" + }, + "dependencies": { + "@solana/web3.js": "^1.95.3" + } +} diff --git a/example/solana/pnpm-lock.yaml b/example/solana/pnpm-lock.yaml new file mode 100644 index 0000000..80170bd --- /dev/null +++ b/example/solana/pnpm-lock.yaml @@ -0,0 +1,1346 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@solana/web3.js': + specifier: ^1.95.3 + version: 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + devDependencies: + '@types/bn.js': + specifier: ^5.1.0 + version: 5.1.5 + '@types/chai': + specifier: ^4.3.1 + version: 4.3.16 + '@types/mocha': + specifier: ^9.1.1 + version: 9.1.1 + chai: + specifier: ^4.3.4 + version: 4.4.1 + chai-as-promised: + specifier: ^7.1.0 + version: 7.1.2(chai@4.4.1) + mocha: + specifier: ^9.2.2 + version: 9.2.2 + solana-bankrun: + specifier: ^0.3.0 + version: 0.3.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ts-mocha: + specifier: ^10.0.0 + version: 10.0.0(mocha@9.2.2) + typescript: + specifier: ^4.3.5 + version: 4.9.5 + +packages: + + '@babel/runtime@7.25.7': + resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} + engines: {node: '>=6.9.0'} + + '@noble/curves@1.6.0': + resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + + '@noble/hashes@1.5.0': + resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} + engines: {node: ^14.21.3 || >=16} + + '@solana/buffer-layout@4.0.1': + resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} + engines: {node: '>=5.10'} + + '@solana/web3.js@1.95.3': + resolution: {integrity: sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og==} + + '@swc/helpers@0.5.13': + resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} + + '@types/bn.js@5.1.5': + resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} + + '@types/chai@4.3.16': + resolution: {integrity: sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/mocha@9.1.1': + resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@20.12.11': + resolution: {integrity: sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==} + + '@types/uuid@8.3.4': + resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} + + '@types/ws@7.4.7': + resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + + '@types/ws@8.5.12': + resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} + + '@ungap/promise-all-settled@1.1.2': + resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + + ansi-colors@4.1.1: + resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-x@3.0.9: + resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bigint-buffer@1.1.5: + resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} + engines: {node: '>= 10.0.0'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + borsh@0.7.0: + resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + + browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + + bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bufferutil@4.0.8: + resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} + engines: {node: '>=6.14.2'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + chai-as-promised@7.1.2: + resolution: {integrity: sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==} + peerDependencies: + chai: '>= 2.1.2 < 6' + + chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + debug@4.3.3: + resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + + deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + + delay@5.0.0: + resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} + engines: {node: '>=10'} + + diff@3.5.0: + resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} + engines: {node: '>=0.3.1'} + + diff@5.0.0: + resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + engines: {node: '>=0.3.1'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + + es6-promisify@5.0.0: + resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + eyes@0.1.8: + resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} + engines: {node: '> 0.1.90'} + + fast-stable-stringify@1.0.0: + resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob@7.2.0: + resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + deprecated: Glob versions prior to v9 are no longer supported + + growl@1.10.5: + resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} + engines: {node: '>=4.x'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isomorphic-ws@4.0.1: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + + jayson@4.1.2: + resolution: {integrity: sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==} + engines: {node: '>=8'} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@4.2.1: + resolution: {integrity: sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==} + engines: {node: '>=10'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mocha@9.2.2: + resolution: {integrity: sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==} + engines: {node: '>= 12.0.0'} + hasBin: true + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.1: + resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-gyp-build@4.8.1: + resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + rpc-websockets@9.0.4: + resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + serialize-javascript@6.0.0: + resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} + + solana-bankrun-darwin-arm64@0.3.0: + resolution: {integrity: sha512-+NbDncf0U6l3knuacRBiqpjZ2DSp+5lZaAU518gH7/x6qubbui/d000STaIBK+uNTPBS/AL/bCN+7PkXqmA3lA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + solana-bankrun-darwin-universal@0.3.0: + resolution: {integrity: sha512-1/F0xdMa4qvc5o6z16FCCbZ5jbdvKvxpx5kyPcMWRiRPwyvi+zltMxciPAYMlg3wslQqGz88uFhrBEzq2eTumQ==} + engines: {node: '>= 10'} + os: [darwin] + + solana-bankrun-darwin-x64@0.3.0: + resolution: {integrity: sha512-U6CANjkmMl+lgNA7UH0GKs5V7LtVIUDzJBZefGGqLfqUNv3EjA/PrrToM0hAOWJgkxSwdz6zW+p5sw5FmnbXtg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + solana-bankrun-linux-x64-gnu@0.3.0: + resolution: {integrity: sha512-qJSkCFs0k2n4XtTnyxGMiZsuqO2TiqTYgWjQ+3mZhGNUAMys/Vq8bd7/SyBm6RR7EfVuRXRxZvh+F8oKZ77V4w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + solana-bankrun-linux-x64-musl@0.3.0: + resolution: {integrity: sha512-xsS2CS2xb1Sw4ivNXM0gPz/qpW9BX0neSvt/pnok5L330Nu9xlTnKAY8FhzzqOP9P9sJlGRM787Y6d0yYwt6xQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + solana-bankrun@0.3.0: + resolution: {integrity: sha512-YkH7sa8TB/AoRPzG17CXJtYsRIQHEkEqGLz1Vwc13taXhDBkjO7z6NI5JYw7n0ybRymDHwMYTc7sd+5J40TyVQ==} + engines: {node: '>= 10'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + superstruct@2.0.2: + resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} + engines: {node: '>=14.0.0'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + text-encoding-utf-8@1.0.2: + resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + ts-mocha@10.0.0: + resolution: {integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==} + engines: {node: '>= 6.X.X'} + hasBin: true + peerDependencies: + mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X + + ts-node@7.0.1: + resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==} + engines: {node: '>=4.2.0'} + hasBin: true + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + utf-8-validate@5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + workerpool@6.2.0: + resolution: {integrity: sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.17.0: + resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@20.2.4: + resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} + engines: {node: '>=10'} + + yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yn@2.0.0: + resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==} + engines: {node: '>=4'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@babel/runtime@7.25.7': + dependencies: + regenerator-runtime: 0.14.1 + + '@noble/curves@1.6.0': + dependencies: + '@noble/hashes': 1.5.0 + + '@noble/hashes@1.4.0': {} + + '@noble/hashes@1.5.0': {} + + '@solana/buffer-layout@4.0.1': + dependencies: + buffer: 6.0.3 + + '@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@babel/runtime': 7.25.7 + '@noble/curves': 1.6.0 + '@noble/hashes': 1.4.0 + '@solana/buffer-layout': 4.0.1 + agentkeepalive: 4.5.0 + bigint-buffer: 1.1.5 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.3 + fast-stable-stringify: 1.0.0 + jayson: 4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + node-fetch: 2.7.0 + rpc-websockets: 9.0.4 + superstruct: 2.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@swc/helpers@0.5.13': + dependencies: + tslib: 2.7.0 + + '@types/bn.js@5.1.5': + dependencies: + '@types/node': 20.12.11 + + '@types/chai@4.3.16': {} + + '@types/connect@3.4.38': + dependencies: + '@types/node': 20.12.11 + + '@types/json5@0.0.29': + optional: true + + '@types/mocha@9.1.1': {} + + '@types/node@12.20.55': {} + + '@types/node@20.12.11': + dependencies: + undici-types: 5.26.5 + + '@types/uuid@8.3.4': {} + + '@types/ws@7.4.7': + dependencies: + '@types/node': 20.12.11 + + '@types/ws@8.5.12': + dependencies: + '@types/node': 20.12.11 + + '@ungap/promise-all-settled@1.1.2': {} + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + agentkeepalive@4.5.0: + dependencies: + humanize-ms: 1.2.1 + + ansi-colors@4.1.1: {} + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@2.0.1: {} + + arrify@1.0.1: {} + + assertion-error@1.1.0: {} + + balanced-match@1.0.2: {} + + base-x@3.0.9: + dependencies: + safe-buffer: 5.2.1 + + base64-js@1.5.1: {} + + bigint-buffer@1.1.5: + dependencies: + bindings: 1.5.0 + + binary-extensions@2.3.0: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + bn.js@5.2.1: {} + + borsh@0.7.0: + dependencies: + bn.js: 5.2.1 + bs58: 4.0.1 + text-encoding-utf-8: 1.0.2 + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + braces@3.0.2: + dependencies: + fill-range: 7.0.1 + + browser-stdout@1.3.1: {} + + bs58@4.0.1: + dependencies: + base-x: 3.0.9 + + buffer-from@1.1.2: {} + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bufferutil@4.0.8: + dependencies: + node-gyp-build: 4.8.1 + optional: true + + camelcase@6.3.0: {} + + chai-as-promised@7.1.2(chai@4.4.1): + dependencies: + chai: 4.4.1 + check-error: 1.0.3 + + chai@4.4.1: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + + chokidar@3.5.3: + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + commander@2.20.3: {} + + concat-map@0.0.1: {} + + debug@4.3.3(supports-color@8.1.1): + dependencies: + ms: 2.1.2 + optionalDependencies: + supports-color: 8.1.1 + + decamelize@4.0.0: {} + + deep-eql@4.1.3: + dependencies: + type-detect: 4.0.8 + + delay@5.0.0: {} + + diff@3.5.0: {} + + diff@5.0.0: {} + + emoji-regex@8.0.0: {} + + es6-promise@4.2.8: {} + + es6-promisify@5.0.0: + dependencies: + es6-promise: 4.2.8 + + escalade@3.1.2: {} + + escape-string-regexp@4.0.0: {} + + eventemitter3@5.0.1: {} + + eyes@0.1.8: {} + + fast-stable-stringify@1.0.0: {} + + file-uri-to-path@1.0.0: {} + + fill-range@7.0.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat@5.0.2: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + get-caller-file@2.0.5: {} + + get-func-name@2.0.2: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + growl@1.10.5: {} + + has-flag@4.0.0: {} + + he@1.2.0: {} + + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + + ieee754@1.2.1: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-plain-obj@2.1.0: {} + + is-unicode-supported@0.1.0: {} + + isexe@2.0.0: {} + + isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): + dependencies: + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + jayson@4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + '@types/connect': 3.4.38 + '@types/node': 12.20.55 + '@types/ws': 7.4.7 + JSONStream: 1.3.5 + commander: 2.20.3 + delay: 5.0.0 + es6-promisify: 5.0.0 + eyes: 0.1.8 + isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + json-stringify-safe: 5.0.1 + uuid: 8.3.2 + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-stringify-safe@5.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + optional: true + + jsonparse@1.3.1: {} + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + + make-error@1.3.6: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@4.2.1: + dependencies: + brace-expansion: 1.1.11 + + minimist@1.2.8: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mocha@9.2.2: + dependencies: + '@ungap/promise-all-settled': 1.1.2 + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.3 + debug: 4.3.3(supports-color@8.1.1) + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 7.2.0 + growl: 1.10.5 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 4.2.1 + ms: 2.1.3 + nanoid: 3.3.1 + serialize-javascript: 6.0.0 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + which: 2.0.2 + workerpool: 6.2.0 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + + ms@2.1.2: {} + + ms@2.1.3: {} + + nanoid@3.3.1: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-gyp-build@4.8.1: + optional: true + + normalize-path@3.0.0: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + pathval@1.1.1: {} + + picomatch@2.3.1: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + regenerator-runtime@0.14.1: {} + + require-directory@2.1.1: {} + + rpc-websockets@9.0.4: + dependencies: + '@swc/helpers': 0.5.13 + '@types/uuid': 8.3.4 + '@types/ws': 8.5.12 + buffer: 6.0.3 + eventemitter3: 5.0.1 + uuid: 8.3.2 + ws: 8.17.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + safe-buffer@5.2.1: {} + + serialize-javascript@6.0.0: + dependencies: + randombytes: 2.1.0 + + solana-bankrun-darwin-arm64@0.3.0: + optional: true + + solana-bankrun-darwin-universal@0.3.0: + optional: true + + solana-bankrun-darwin-x64@0.3.0: + optional: true + + solana-bankrun-linux-x64-gnu@0.3.0: + optional: true + + solana-bankrun-linux-x64-musl@0.3.0: + optional: true + + solana-bankrun@0.3.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bs58: 4.0.1 + optionalDependencies: + solana-bankrun-darwin-arm64: 0.3.0 + solana-bankrun-darwin-universal: 0.3.0 + solana-bankrun-darwin-x64: 0.3.0 + solana-bankrun-linux-x64-gnu: 0.3.0 + solana-bankrun-linux-x64-musl: 0.3.0 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-bom@3.0.0: + optional: true + + strip-json-comments@3.1.1: {} + + superstruct@2.0.2: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + text-encoding-utf-8@1.0.2: {} + + through@2.3.8: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tr46@0.0.3: {} + + ts-mocha@10.0.0(mocha@9.2.2): + dependencies: + mocha: 9.2.2 + ts-node: 7.0.1 + optionalDependencies: + tsconfig-paths: 3.15.0 + + ts-node@7.0.1: + dependencies: + arrify: 1.0.1 + buffer-from: 1.1.2 + diff: 3.5.0 + make-error: 1.3.6 + minimist: 1.2.8 + mkdirp: 0.5.6 + source-map-support: 0.5.21 + yn: 2.0.0 + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + optional: true + + tslib@2.7.0: {} + + type-detect@4.0.8: {} + + typescript@4.9.5: {} + + undici-types@5.26.5: {} + + utf-8-validate@5.0.10: + dependencies: + node-gyp-build: 4.8.1 + optional: true + + uuid@8.3.2: {} + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + workerpool@6.2.0: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + ws@8.17.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + y18n@5.0.8: {} + + yargs-parser@20.2.4: {} + + yargs-unparser@2.0.0: + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.4 + + yn@2.0.0: {} + + yocto-queue@0.1.0: {} diff --git a/example/solana/program/Cargo.lock b/example/solana/program/Cargo.lock new file mode 100644 index 0000000..6521281 --- /dev/null +++ b/example/solana/program/Cargo.lock @@ -0,0 +1,1636 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[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 = "ark-bn254" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-std", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", + "itertools", + "num-traits", + "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", + "ark-ff-macros", + "ark-serialize", + "ark-std", + "derivative", + "digest 0.10.7", + "itertools", + "num-bigint", + "num-traits", + "paste", + "rustc_version", + "zeroize", +] + +[[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.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive", + "ark-std", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "blake3" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "digest 0.10.7", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[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 = "borsh" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" +dependencies = [ + "borsh-derive 0.10.4", + "hashbrown 0.13.2", +] + +[[package]] +name = "borsh" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +dependencies = [ + "borsh-derive 1.5.1", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831213f80d9423998dd696e2c5345aba6be7a0bd8cd19e31c5243e13df1cef89" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +dependencies = [ + "once_cell", + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.79", + "syn_derive", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" +dependencies = [ + "feature-probe", + "serde", +] + +[[package]] +name = "bytemuck" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cc" +version = "1.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812acba72f0a070b003d3697490d2b55b837230ae7c6c6497f05cc2ddbb8d938" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "console_log" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" +dependencies = [ + "log", + "web-sys", +] + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "cpufeatures" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +dependencies = [ + "libc", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[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 = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rand_core 0.6.4", + "rustc_version", + "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.79", +] + +[[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 = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", + "subtle", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "example-solana-contract" +version = "0.1.0" +dependencies = [ + "bincode", + "borsh 1.5.1", + "eyre", + "groth16-solana 0.1.0", + "solana-program", +] + +[[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 = "feature-probe" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "groth16-solana" +version = "0.0.3" +source = "git+https://github.com/sp1-patches/groth16-solana?branch=patch-v0.0.3#db82addc31e22e8146b8dd81166f87e4053a7044" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff", + "ark-serialize", + "num-bigint", + "solana-bn254", + "solana-program", + "thiserror", +] + +[[package]] +name = "groth16-solana" +version = "0.1.0" +dependencies = [ + "ark-bn254", + "ark-ff", + "ark-serialize", + "borsh 1.5.1", + "groth16-solana 0.0.3", + "solana-bn254", + "thiserror", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "indexmap" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +dependencies = [ + "equivalent", + "hashbrown 0.15.0", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "js-sys" +version = "0.3.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.159" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" + +[[package]] +name = "libsecp256k1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" +dependencies = [ + "arrayref", + "base64 0.12.3", + "digest 0.9.0", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.7.3", + "serde", + "sha2 0.9.9", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" +dependencies = [ + "libsecp256k1-core", +] + +[[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.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[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-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.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[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", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "portable-atomic" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-crate" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit", +] + +[[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", + "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.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[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 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "redox_syscall" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +dependencies = [ + "bitflags", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + +[[package]] +name = "serde" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[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 = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "solana-account-info" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "bincode", + "serde", + "solana-program-error", + "solana-program-memory", + "solana-pubkey", +] + +[[package]] +name = "solana-atomic-u64" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "solana-bn254" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff", + "ark-serialize", + "bytemuck", + "solana-program", + "thiserror", +] + +[[package]] +name = "solana-clock" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-macro", +] + +[[package]] +name = "solana-decode-error" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "num-traits", +] + +[[package]] +name = "solana-define-syscall" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" + +[[package]] +name = "solana-hash" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "borsh 1.5.1", + "bs58", + "bytemuck", + "bytemuck_derive", + "js-sys", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-sanitize", + "wasm-bindgen", +] + +[[package]] +name = "solana-instruction" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "bincode", + "borsh 1.5.1", + "getrandom 0.2.15", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-define-syscall", + "solana-pubkey", + "wasm-bindgen", +] + +[[package]] +name = "solana-msg" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "solana-define-syscall", +] + +[[package]] +name = "solana-program" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "base64 0.22.1", + "bincode", + "bitflags", + "blake3", + "borsh 0.10.4", + "borsh 1.5.1", + "bs58", + "bv", + "bytemuck", + "bytemuck_derive", + "console_error_panic_hook", + "console_log", + "curve25519-dalek", + "getrandom 0.2.15", + "js-sys", + "lazy_static", + "log", + "memoffset", + "num-bigint", + "num-derive", + "num-traits", + "parking_lot", + "rand 0.8.5", + "serde", + "serde_bytes", + "serde_derive", + "sha2 0.10.8", + "sha3", + "solana-account-info", + "solana-atomic-u64", + "solana-clock", + "solana-decode-error", + "solana-define-syscall", + "solana-hash", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-sanitize", + "solana-sdk-macro", + "solana-secp256k1-recover", + "solana-serde-varint", + "solana-serialize-utils", + "solana-sha256-hasher", + "solana-short-vec", + "thiserror", + "wasm-bindgen", +] + +[[package]] +name = "solana-program-error" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "borsh 1.5.1", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-pubkey", +] + +[[package]] +name = "solana-program-memory" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "num-traits", + "solana-define-syscall", +] + +[[package]] +name = "solana-program-option" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" + +[[package]] +name = "solana-program-pack" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "solana-program-error", +] + +[[package]] +name = "solana-pubkey" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "borsh 0.10.4", + "borsh 1.5.1", + "bs58", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "getrandom 0.2.15", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-decode-error", + "solana-define-syscall", + "solana-sanitize", + "solana-sha256-hasher", + "wasm-bindgen", +] + +[[package]] +name = "solana-sanitize" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" + +[[package]] +name = "solana-sdk-macro" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "solana-secp256k1-recover" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "libsecp256k1", + "solana-define-syscall", + "thiserror", +] + +[[package]] +name = "solana-serde-varint" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serialize-utils" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "solana-instruction", + "solana-pubkey", + "solana-sanitize", +] + +[[package]] +name = "solana-sha256-hasher" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "sha2 0.10.8", + "solana-define-syscall", + "solana-hash", +] + +[[package]] +name = "solana-short-vec" +version = "2.1.0" +source = "git+https://github.com/anza-xyz/agave#ed51e70c2e6528f602ad4f8fde718f60d7da2d0c" +dependencies = [ + "serde", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[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.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "thiserror" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +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 = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" + +[[package]] +name = "toml_edit" +version = "0.22.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +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.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[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.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.79", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" + +[[package]] +name = "web-sys" +version = "0.3.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +dependencies = [ + "memchr", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[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.79", +] diff --git a/example/solana/program/Cargo.toml b/example/solana/program/Cargo.toml new file mode 100644 index 0000000..b475b28 --- /dev/null +++ b/example/solana/program/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "example-solana-contract" +version = "0.1.0" +edition = "2021" +publish = false + +[lib] +crate-type = ["cdylib", "lib"] + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +default = [] + +[dependencies] +borsh.workspace = true +solana-program.workspace = true +sp1-solana.workspace = true diff --git a/example/solana/program/src/lib.rs b/example/solana/program/src/lib.rs new file mode 100644 index 0000000..ed9a6b8 --- /dev/null +++ b/example/solana/program/src/lib.rs @@ -0,0 +1,26 @@ +use borsh::BorshDeserialize; +use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult, msg, pubkey::Pubkey}; +use sp1_solana::{verify_proof_fixture, SP1ProofFixture}; + +#[cfg(not(feature = "no-entrypoint"))] +use solana_program::entrypoint; + +#[cfg(not(feature = "no-entrypoint"))] +entrypoint!(process_instruction); + +pub fn process_instruction( + _program_id: &Pubkey, + _accounts: &[AccountInfo], + instruction_data: &[u8], +) -> ProgramResult { + // Deserialize the fixture from the instruction data. + let fixture = SP1ProofFixture::try_from_slice(instruction_data).unwrap(); + + // Get the SP1 Groth16 verification key from the `groth16-solana` crate. + let vk = sp1_solana::GROTH16_VK_BYTES; + + // Verify the proof. + let result = verify_proof_fixture(&fixture, &vk); + msg!("Result: {:?}", result); + Ok(()) +} diff --git a/example/solana/tests/tsconfig.test.json b/example/solana/tests/tsconfig.test.json new file mode 100644 index 0000000..cd5d2e3 --- /dev/null +++ b/example/solana/tests/tsconfig.test.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "types": ["mocha", "chai"], + "typeRoots": ["./node_modules/@types"], + "lib": ["es2015"], + "module": "commonjs", + "target": "es6", + "esModuleInterop": true + } +} diff --git a/example/solana/tests/verifier.test.ts b/example/solana/tests/verifier.test.ts new file mode 100644 index 0000000..1b29820 --- /dev/null +++ b/example/solana/tests/verifier.test.ts @@ -0,0 +1,67 @@ +import { describe, test } from 'node:test'; +import { PublicKey, Transaction, TransactionInstruction } from '@solana/web3.js'; +import { start } from 'solana-bankrun'; +import chai from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +chai.use(chaiAsPromised); + +const expect = chai.expect; +const PROGRAM_ID = PublicKey.unique(); + +// Helper function to read the proof fixture from the provided path +function createVerifyInstruction(pubkey: PublicKey, proof_path: string): TransactionInstruction { + const fs = require('fs'); + const data = fs.readFileSync(proof_path); + return new TransactionInstruction({ + programId: PROGRAM_ID, + keys: [{ pubkey: pubkey, isSigner: true, isWritable: true }], + data: data, + }); +} + +describe('Verify Groth16 Solana', async () => { + // Set up the bankrun context. Increase the compute budget to 1M compute units. + const context = await start([{ name: 'example_solana_contract', programId: PROGRAM_ID }], [], BigInt(1_000_000)); + const client = context.banksClient; + const payer = context.payer; + + // Tests that a valid proof will verify successfully. + test('Test Verify Honest Proof Success', async () => { + // Initialize transaction. + const tx = new Transaction() + + // Set up and add the verify instruction to the transaction. + const verifyIx: TransactionInstruction = createVerifyInstruction(payer.publicKey, '../../proof-fixtures/fibonacci_fixture.bin'); + tx.add(verifyIx); + + // Set the blockhash. + const blockhash = context.lastBlockhash; + tx.recentBlockhash = blockhash; + + // Sign the transaction with the payer's keypair. + tx.sign(payer); + + // Send transaction to bankrun. + await client.processTransaction(tx); + }); + + // Tests that an invalid proof will fail to verify. + test('Test Verify Malicious Proof Failure', async () => { + // Initialize transaction. + const tx = new Transaction() + + // Set up and add the verify instruction to the transaction. + const verifyIx: TransactionInstruction = createVerifyInstruction(payer.publicKey, '../../proof-fixtures/fibonacci_fixture_bad.bin'); + tx.add(verifyIx); + + // Set the blockhash. + const blockhash = context.lastBlockhash; + tx.recentBlockhash = blockhash; + + // Sign the transaction with the payer's keypair. + tx.sign(payer); + + // Send transaction to bankrun. + await expect(client.processTransaction(tx)).to.be.rejected; + }); +}); diff --git a/example/sp1-program/Cargo.toml b/example/sp1-program/Cargo.toml new file mode 100644 index 0000000..7a5077f --- /dev/null +++ b/example/sp1-program/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "fibonacci-program" +version = "1.1.0" +edition = "2021" +publish = false + +[dependencies] +sp1-zkvm = "2.0.0" diff --git a/example/sp1-program/elf/riscv32im-succinct-zkvm-elf b/example/sp1-program/elf/riscv32im-succinct-zkvm-elf new file mode 100755 index 0000000000000000000000000000000000000000..017feaa1a2eb7e5ab0e1fcfc1372884be197d2b7 GIT binary patch literal 131392 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 VeBLeh?|=H{=2!n^Td*tl{{et~ehvTt literal 0 HcmV?d00001 diff --git a/example/sp1-program/src/main.rs b/example/sp1-program/src/main.rs new file mode 100644 index 0000000..9d5dd74 --- /dev/null +++ b/example/sp1-program/src/main.rs @@ -0,0 +1,37 @@ +//! A simple program that takes a number `n` as input, and writes the `n-1`th and `n`th fibonacci +//! number as an output. + +// These two lines are necessary for the program to properly compile. +// +// Under the hood, we wrap your main function with some extra code so that it behaves properly +// inside the zkVM. +#![no_main] +sp1_zkvm::entrypoint!(main); + +pub fn main() { + // Read an input to the program. + // + // Behind the scenes, this compiles down to a system call which handles reading inputs + // from the prover. + let n = sp1_zkvm::io::read::(); + + // Write n to public input + sp1_zkvm::io::commit(&n); + + // Compute the n'th fibonacci number, using normal Rust code. + let mut a = 0; + let mut b = 1; + for _ in 0..n { + let mut c = a + b; + c %= 7919; // Modulus to prevent overflow. + a = b; + b = c; + } + + // Write the output of the program. + // + // Behind the scenes, this also compiles down to a system call which handles writing + // outputs to the prover. + sp1_zkvm::io::commit(&a); + sp1_zkvm::io::commit(&b); +} diff --git a/proof-fixtures/fibonacci_fixture.bin b/proof-fixtures/fibonacci_fixture.bin new file mode 100644 index 0000000..ff5209e --- /dev/null +++ b/proof-fixtures/fibonacci_fixture.bin @@ -0,0 +1 @@ +8bsƑn}U&HBT(D920! ڲAZ)?G|`X1j,}ODBʮX@.1"Q,{yT6#jˌ)Gosz #D˭J4nTMN/ <0`"܆q3w  eEbM"7MN3 1<uHf6S),C=1K 38Jbi2ꠟ8Yt5nLhAC(\iZTA".1y4t ]{Gs ~j) \ No newline at end of file diff --git a/proof-fixtures/fibonacci_fixture_bad.bin b/proof-fixtures/fibonacci_fixture_bad.bin new file mode 100644 index 0000000000000000000000000000000000000000..2ff4b67fae3772500bd95b7f92641f0bbe7582b9 GIT binary patch literal 396 zcmZ>DVPs%nw@5n4ys(&KO6#$Sd9|UJCDa5woE|WRG-$Y38f`RC6yUkFsg?b~MaL-3 zR{MFA`Q2-ze$Goc_&ws+{Pl)e^SaqDKGCW5ciH^G>D0Q$2#0-ohN~_roeR_vUszrF zGi3jKb~ELy(>DzES)n?3`kKM6`Jr%2vrZ@<&FkF`+Z>f5Qt#UM-ma z$wGeClF02P-KLk1i!6PU$3O*O4>V){#?3y97vId7>iEOCNh9V#=8Pp#TLj) -> Result { + let path = path.as_ref(); + let file = File::open(path).map_err(|_| Error::IoError)?; + let mut reader = BufReader::new(file); + let fixture = borsh::from_reader(&mut reader).map_err(|_| Error::BorshDeserializeError)?; + Ok(fixture) + } + + /// Save a SP1ProofFixture to a file. + pub fn save(&self, path: impl AsRef) -> Result<(), Error> { + let path = path.as_ref(); + let file = File::create(path).map_err(|_| Error::IoError)?; + let mut writer = BufWriter::new(file); + BorshSerialize::serialize(&self, &mut writer).map_err(|_| Error::BorshSerializeError)?; + Ok(()) + } + + /// Retrieves the SP1 commited values digest from the public inputs. + pub fn commited_values_digest(&self) -> Result { + // The committed values digest is the second half of the public inputs + let digest_bytes = &self.public_inputs[31..63]; + + // Convert the digest bytes to a BigUint + let digest_biguint = BigUint::from_bytes_be(digest_bytes); + + // Convert the BigUint to a decimal string + let digest_string = digest_biguint.to_str_radix(10); + + Ok(digest_string) + } + + /// Retrieves the SP1 vkey hash from the public inputs. + /// + /// This is the vkey hash of the underlying SP1 program, not the Groth16 vkey hash. + pub fn vkey_hash(&self) -> Result { + let vkey_hash_bytes = &self.public_inputs[0..31]; + + // Convert the vkey hash bytes to a BigUint + let vkey_hash_biguint = BigUint::from_bytes_be(vkey_hash_bytes); + + // Convert the BigUint to a decimal string + let vkey_hash_string = vkey_hash_biguint.to_str_radix(10); + + Ok(vkey_hash_string) + } +} + +/// Verify a proof using a [`SP1ProofFixture`]. +/// +/// Checks the Groth16 vkey hash in the fixture against the provided vk. +#[inline] +pub fn verify_proof_fixture(fixture: &SP1ProofFixture, vk: &[u8]) -> Result<(), Error> { + // Hash the vk and get the first 4 bytes. + let groth16_vk_hash: [u8; 4] = Sha256::digest(vk)[..4].try_into().unwrap(); + + // Compare against the fixture's groth16 vkey hash. + if groth16_vk_hash != fixture.groth16_vkey_hash { + return Err(Error::Groth16VkeyHashMismatch); + } + + // Verify the proof. + verify_proof_raw(&fixture.proof, &fixture.public_inputs, vk) +} + +#[cfg(feature = "sp1-serialize")] +mod sp1_serialize { + use num_bigint::BigUint; + use num_traits::Num; + use sp1_sdk::SP1ProofWithPublicValues; + + use super::SP1ProofFixture; + /// Convert a SP1ProofWithPublicValues to a SP1ProofFixture. + impl From for SP1ProofFixture { + fn from(sp1_proof_with_public_values: SP1ProofWithPublicValues) -> Self { + let proof = sp1_proof_with_public_values + .proof + .try_as_groth_16() + .expect("Failed to convert proof to Groth16 proof"); + + let raw_proof = hex::decode(proof.raw_proof).unwrap(); + + // Convert public inputs to byte representations. + let vkey_hash = BigUint::from_str_radix(&proof.public_inputs[0], 10) + .unwrap() + .to_bytes_be(); + let committed_values_digest = BigUint::from_str_radix(&proof.public_inputs[1], 10) + .unwrap() + .to_bytes_be(); + + let public_inputs = [vkey_hash.to_vec(), committed_values_digest.to_vec()].concat(); + + SP1ProofFixture { + proof: raw_proof[..256].try_into().unwrap(), + public_inputs: public_inputs.try_into().unwrap(), + groth16_vkey_hash: proof.groth16_vkey_hash[..4].try_into().unwrap(), + } + } + } + + #[cfg(feature = "sp1-serialize")] + #[test] + fn test_public_inputs() { + // Read the serialized SP1ProofWithPublicValues from the file. + let sp1_proof_with_public_values_file = "../proofs/fibonacci_proof.bin"; + let sp1_proof_with_public_values = + SP1ProofWithPublicValues::load(&sp1_proof_with_public_values_file).unwrap(); + + let groth16_proof = sp1_proof_with_public_values + .clone() + .proof + .try_as_groth_16() + .unwrap(); + + let vkey_hash = &groth16_proof.public_inputs[0]; + let commited_values_digest = &groth16_proof.public_inputs[1]; + + // Convert the SP1ProofWithPublicValues to a SP1ProofFixture. + let fixture = SP1ProofFixture::from(sp1_proof_with_public_values); + + // Verify the public inputs. + assert_eq!( + fixture.commited_values_digest().unwrap(), + commited_values_digest.to_string() + ); + assert_eq!(fixture.vkey_hash().unwrap(), vkey_hash.to_string()); + } +} diff --git a/verifier/src/lib.rs b/verifier/src/lib.rs index b9f4323..50dbaff 100644 --- a/verifier/src/lib.rs +++ b/verifier/src/lib.rs @@ -1,11 +1,33 @@ -use ark_bn254::{Fq, Fq2, G1Affine, G2Affine}; +use ark_bn254::{Fq, G1Affine}; use ark_ff::PrimeField; use ark_serialize::CanonicalSerialize; use borsh::BorshSerialize; use groth16_solana::groth16::Groth16Verifyingkey; -use solana_bn254::compression::prelude::convert_endianness; use thiserror::Error; +mod fixture; +pub use fixture::verify_proof_fixture; +pub use fixture::SP1ProofFixture; + +/// Convert the endianness of a byte array, chunk by chunk. +/// +/// Taken from https://github.com/anza-xyz/agave/blob/c54d840/curves/bn254/src/compression.rs#L176-L189 +fn convert_endianness( + bytes: &[u8; ARRAY_SIZE], +) -> [u8; ARRAY_SIZE] { + let reversed: [_; ARRAY_SIZE] = bytes + .chunks_exact(CHUNK_SIZE) + .flat_map(|chunk| chunk.iter().rev().copied()) + .enumerate() + .fold([0u8; ARRAY_SIZE], |mut acc, (i, v)| { + acc[i] = v; + acc + }); + reversed +} + +pub const GROTH16_VK_BYTES: &[u8] = include_bytes!("../vk/groth16_vk.bin"); + #[derive(Error, Debug)] pub enum Error { #[error("G1 compression error")] @@ -28,19 +50,34 @@ pub enum Error { PairingError, #[error("Invalid input")] InvalidInput, + #[error("Borsh serialization error")] + BorshSerializeError, + #[error("Borsh deserialization error")] + BorshDeserializeError, + #[error("IO error")] + IoError, + #[error("Groth16 vkey hash mismatch")] + Groth16VkeyHashMismatch, } const SCALAR_LEN: usize = 32; const G1_LEN: usize = 64; const G2_LEN: usize = 128; +/// Everything needed to verify a Groth16 proof. #[allow(dead_code)] pub struct Verifier<'a, const N_PUBLIC: usize> { + /// The proof to verify. proof: &'a Proof, + /// The public inputs to the proof. public: &'a PublicInputs, + /// The verification key. vk: &'a VerificationKey, } +/// A Groth16 proof. +/// +/// All Group elements are represented in uncompressed form. #[derive(Debug, Clone, PartialEq, Eq)] pub struct Proof { pub pi_a: [u8; 64], @@ -48,6 +85,7 @@ pub struct Proof { pub pi_c: [u8; 64], } +/// A generic Groth16 verification key over BN254. #[derive(Debug, Clone, PartialEq, Eq, BorshSerialize)] pub struct VerificationKey { pub nr_pubinputs: u32, @@ -58,18 +96,19 @@ pub struct VerificationKey { pub vk_ic: Vec<[u8; G1_LEN]>, } +/// The public inputs for a Groth16 proof. #[derive(Debug, Clone, PartialEq, Eq)] pub struct PublicInputs { pub inputs: [[u8; SCALAR_LEN]; N], } -pub fn decompress_g1(g1_bytes: &[u8; 32]) -> Result<[u8; 64], Error> { +fn decompress_g1(g1_bytes: &[u8; 32]) -> Result<[u8; 64], Error> { let g1_bytes = gnark_compressed_x_to_ark_compressed_x(g1_bytes)?; let g1_bytes = convert_endianness::<32, 32>(&g1_bytes.as_slice().try_into().unwrap()); groth16_solana::decompression::decompress_g1(&g1_bytes).map_err(|_| Error::G1CompressionError) } -pub fn decompress_g2(g2_bytes: &[u8; 64]) -> Result<[u8; 128], Error> { +fn decompress_g2(g2_bytes: &[u8; 64]) -> Result<[u8; 128], Error> { let g2_bytes = gnark_compressed_x_to_ark_compressed_x(g2_bytes)?; let g2_bytes = convert_endianness::<64, 64>(&g2_bytes.as_slice().try_into().unwrap()); groth16_solana::decompression::decompress_g2(&g2_bytes).map_err(|_| Error::G2CompressionError) @@ -113,24 +152,7 @@ fn gnark_compressed_x_to_ark_compressed_x(x: &[u8]) -> Result, Error> { Ok(x_copy) } -pub fn gnark_uncompressed_bytes_to_g2_point(buf: &[u8]) -> Result { - if buf.len() != 128 { - return Err(Error::InvalidInput); - }; - - let (x_bytes, y_bytes) = buf.split_at(64); - let (x0_bytes, x1_bytes) = x_bytes.split_at(32); - let (y0_bytes, y1_bytes) = y_bytes.split_at(32); - - let x0 = Fq::from_be_bytes_mod_order(x0_bytes); - let x1 = Fq::from_be_bytes_mod_order(x1_bytes); - let y0 = Fq::from_be_bytes_mod_order(y0_bytes); - let y1 = Fq::from_be_bytes_mod_order(y1_bytes); - - Ok(G2Affine::new_unchecked(Fq2::new(x0, x1), Fq2::new(y0, y1))) -} - -pub(crate) fn uncompressed_bytes_to_g1_point(buf: &[u8]) -> Result { +fn uncompressed_bytes_to_g1_point(buf: &[u8]) -> Result { if buf.len() != 64 { return Err(Error::InvalidInput); }; @@ -153,7 +175,7 @@ fn negate_g1(g1_bytes: &[u8; 64]) -> Result<[u8; 64], Error> { )) } -pub(crate) fn load_proof_from_bytes(buffer: &[u8]) -> Result { +fn load_proof_from_bytes(buffer: &[u8]) -> Result { Ok(Proof { pi_a: negate_g1( &buffer[..64] @@ -169,9 +191,7 @@ pub(crate) fn load_proof_from_bytes(buffer: &[u8]) -> Result { }) } -pub(crate) fn load_groth16_verifying_key_from_bytes( - buffer: &[u8], -) -> Result { +fn load_groth16_verifying_key_from_bytes(buffer: &[u8]) -> Result { // Note that g1_beta and g1_delta are not used in the verification process. let g1_alpha = decompress_g1(buffer[..32].try_into().unwrap())?; let g2_beta = decompress_g2(buffer[64..128].try_into().unwrap())?; @@ -224,12 +244,17 @@ fn load_public_inputs_from_bytes(buffer: &[u8]) -> Result, Error Ok(PublicInputs::<2> { inputs: [ bytes[..32].try_into().map_err(|_| Error::InvalidInput)?, // vkey_hash - bytes[32..].try_into().map_err(|_| Error::InvalidInput)?, // committed_values_digest + bytes[32..].try_into().map_err(|_| Error::InvalidInput)?, // committed_values_digest ], }) } -pub fn verify_proof(proof: &[u8], public_inputs: &[u8], vk: &[u8]) -> Result<(), Error> { +/// Verify a proof using raw bytes. +/// +/// The public inputs are the vkey hash and the commited values digest, concatenated. +/// The proof is a decompressed G1 element, followed by a decompressed G2 element, followed by a +/// decompressed G1 element. +pub fn verify_proof_raw(proof: &[u8], public_inputs: &[u8], vk: &[u8]) -> Result<(), Error> { let proof = load_proof_from_bytes(proof)?; let vk = load_groth16_verifying_key_from_bytes(vk)?; let public_inputs = load_public_inputs_from_bytes(public_inputs)?; @@ -260,3 +285,39 @@ pub fn verify_proof(proof: &[u8], public_inputs: &[u8], vk: &[u8]) -> Result<(), Err(Error::VerificationError) } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_verify_fixture() { + // Read the serialized fixture from the file. + let fixture_file = "../proof-fixtures/fibonacci_fixture.bin"; + let fixture = SP1ProofFixture::load(&fixture_file).unwrap(); + + // Verify the proof. + let result = verify_proof_fixture(&fixture, GROTH16_VK_BYTES); + assert!(result.is_ok(), "Proof verification failed for fibonacci"); + } + + #[test] + fn test_serialize_fixture_roundtrip() { + // Read the serialized fixture from the file. + let fixture_file = "../proof-fixtures/fibonacci_fixture.bin"; + let fixture = SP1ProofFixture::load(&fixture_file).unwrap(); + + // Serialize the fixture to a new file. + let serialized_fixture_file = "test_serialized_fixture.bin"; + fixture.save(&serialized_fixture_file).unwrap(); + + // Deserialize the fixture from the new file. + let deserialized_fixture = SP1ProofFixture::load(&serialized_fixture_file).unwrap(); + + // Verify the deserialized fixture is equal to the original fixture. + assert_eq!( + fixture, deserialized_fixture, + "Serialized fixture does not match original" + ); + } +} diff --git a/example/vk/groth16_v2.0.0.bin b/verifier/vk/groth16_vk.bin similarity index 100% rename from example/vk/groth16_v2.0.0.bin rename to verifier/vk/groth16_vk.bin