diff --git a/Cargo.lock b/Cargo.lock index dee7d08..d99cd7c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -24,7 +24,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom", + "getrandom 0.2.15", "once_cell", "version_check", "zerocopy", @@ -109,7 +109,7 @@ dependencies = [ "keccak-asm", "paste", "proptest", - "rand", + "rand 0.8.5", "ruint", "rustc-hash", "serde", @@ -138,7 +138,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -154,7 +154,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", "syn-solidity", "tiny-keccak", ] @@ -170,7 +170,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", "syn-solidity", ] @@ -248,9 +248,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.94" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "ark-ff" @@ -282,7 +282,7 @@ dependencies = [ "ark-std 0.4.0", "derivative", "digest 0.10.7", - "itertools", + "itertools 0.10.5", "num-bigint", "num-traits", "paste", @@ -290,6 +290,26 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe", + "itertools 0.13.0", + "num-bigint", + "num-traits", + "paste", + "zeroize", +] + [[package]] name = "ark-ff-asm" version = "0.3.0" @@ -310,6 +330,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.108", +] + [[package]] name = "ark-ff-macros" version = "0.3.0" @@ -335,6 +365,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "ark-serialize" version = "0.3.0" @@ -356,6 +399,18 @@ dependencies = [ "num-bigint", ] +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint", +] + [[package]] name = "ark-std" version = "0.3.0" @@ -363,7 +418,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", ] [[package]] @@ -373,7 +428,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", ] [[package]] @@ -410,7 +475,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -421,7 +486,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -438,7 +503,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -491,24 +556,24 @@ dependencies = [ [[package]] name = "bit-set" -version = "0.5.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" -version = "0.6.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] name = "bitvec" @@ -581,7 +646,7 @@ checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -739,7 +804,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -793,7 +858,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", "unicode-xid", ] @@ -826,7 +891,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -855,6 +920,18 @@ dependencies = [ "spki", ] +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "either" version = "1.13.0" @@ -874,7 +951,7 @@ dependencies = [ "generic-array", "group", "pkcs8", - "rand_core", + "rand_core 0.6.4", "sec1", "subtle", "zeroize", @@ -886,6 +963,26 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" +[[package]] +name = "enum-ordinalize" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "env_filter" version = "0.1.2" @@ -992,7 +1089,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1003,7 +1100,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ "byteorder", - "rand", + "rand 0.8.5", "rustc-hex", "static_assertions", ] @@ -1101,7 +1198,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -1158,6 +1255,18 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + [[package]] name = "gimli" version = "0.31.1" @@ -1171,7 +1280,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1382,7 +1491,7 @@ dependencies = [ "num_cpus", "polars-arrow", "polars-parquet", - "rand", + "rand 0.8.5", "rayon", "reqwest", "ruint", @@ -1396,9 +1505,9 @@ dependencies = [ [[package]] name = "hypersync-format" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6876c9a5a0930784c7b8d86159361943273a073c1f07ad0f6d4ca9897b26e6b9" +checksum = "9277b5a69443df9e37f40283da7809cf938d5f73ccd1476745c22b06576f3958" dependencies = [ "alloy-primitives", "arrayvec", @@ -1426,9 +1535,9 @@ dependencies = [ [[package]] name = "hypersync-schema" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a12de03592570a007d6c904a6a0691d46c9f17f416f2eb3fc47f3da29a68ab6" +checksum = "952ee0a2a9daf0771011072776b1fb8bf50a41a6c5deb71f1dad1d9b0b831334" dependencies = [ "anyhow", "polars-arrow", @@ -1549,7 +1658,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -1590,7 +1699,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -1631,6 +1740,15 @@ 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.14" @@ -1680,20 +1798,14 @@ dependencies = [ [[package]] name = "keccak-asm" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +checksum = "b646a74e746cd25045aa0fd42f4f7f78aa6d119380182c7e63a5593c4ab8df6f" 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" - [[package]] name = "libc" version = "0.2.169" @@ -2037,7 +2149,7 @@ dependencies = [ "either", "ethnum", "fast-float", - "getrandom", + "getrandom 0.2.15", "hashbrown 0.14.5", "itoa", "lz4", @@ -2204,7 +2316,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -2218,17 +2330,16 @@ dependencies = [ [[package]] name = "proptest" -version = "1.5.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ "bit-set", "bit-vec", "bitflags", - "lazy_static", "num-traits", - "rand", - "rand_chacha", + "rand 0.9.2", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "rusty-fork", @@ -2307,7 +2418,7 @@ dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -2320,7 +2431,7 @@ dependencies = [ "proc-macro2", "pyo3-build-config", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -2354,8 +2465,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" dependencies = [ "bytes", - "getrandom", - "rand", + "getrandom 0.2.15", + "rand 0.8.5", "ring", "rustc-hash", "rustls", @@ -2390,6 +2501,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "radium" version = "0.7.0" @@ -2403,11 +2520,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", "serde", ] +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -2415,7 +2542,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -2424,16 +2561,25 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.4", ] [[package]] name = "rand_xorshift" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" dependencies = [ - "rand_core", + "rand_core 0.9.3", ] [[package]] @@ -2563,7 +2709,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.15", "libc", "spin", "untrusted", @@ -2582,13 +2728,14 @@ dependencies = [ [[package]] name = "ruint" -version = "1.12.4" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5ef8fb1dd8de3870cb8400d51b4c2023854bbafd5431a3ac7e7317243e22d2f" +checksum = "a68df0380e5c9d20ce49534f292a36a7514ae21350726efe1865bdb1fa91d278" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", "ark-ff 0.4.2", + "ark-ff 0.5.0", "bytes", "fastrlp 0.3.1", "fastrlp 0.4.0", @@ -2598,10 +2745,11 @@ dependencies = [ "parity-scale-codec", "primitive-types", "proptest", - "rand", + "rand 0.8.5", + "rand 0.9.2", "rlp", "ruint-macro", - "serde", + "serde_core", "valuable", "zeroize", ] @@ -2787,22 +2935,32 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.216" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.216" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -2852,9 +3010,9 @@ dependencies = [ [[package]] name = "sha3-asm" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +checksum = "b31139435f327c93c6038ed350ae4588e2c70a13d50599509fee6349967ba35a" dependencies = [ "cc", "cfg-if", @@ -2873,7 +3031,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -3005,9 +3163,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.90" +version = "2.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" dependencies = [ "proc-macro2", "quote", @@ -3023,7 +3181,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -3043,7 +3201,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -3103,7 +3261,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -3114,7 +3272,7 @@ checksum = "f2f357fcec90b3caef6623a099691be676d033b40a058ac95d2a6ade6fa0c943" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -3175,7 +3333,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -3376,6 +3534,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + [[package]] name = "wasm-bindgen" version = "0.2.99" @@ -3397,7 +3564,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", "wasm-bindgen-shared", ] @@ -3432,7 +3599,7 @@ checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3593,6 +3760,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + [[package]] name = "write16" version = "1.0.0" @@ -3616,9 +3789,9 @@ dependencies = [ [[package]] name = "xxhash-rust" -version = "0.8.12" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a5cbf750400958819fb6178eaa83bee5cd9c29a26a40cc241df8c70fdd46984" +checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" [[package]] name = "yoke" @@ -3640,7 +3813,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", "synstructure", ] @@ -3662,7 +3835,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -3682,7 +3855,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", "synstructure", ] @@ -3703,7 +3876,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] @@ -3725,7 +3898,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.108", ] [[package]] diff --git a/README.md b/README.md index 8ebd466..8374847 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # hypersync-client-python + Python package for [Envio's](https://envio.dev/) HyperSync client written in Rust ## Setup @@ -10,6 +11,7 @@ python -m venv .venv ``` Then activate the venv before use. + ```bash source .venv/bin/activate ``` @@ -22,14 +24,11 @@ pip install -e . ### Examples (`examples/`) -The `examples/` folder contains a set of examples you can explore. Before running any example, install the required dependencies with: - -```bash -pip install -e .[examples] -``` +There are a collection of self-contained examples you can look through. To run them run `python examples/.py`. -Next, add your HyperSync token to the `.env` file. You can then run an example using: +For examples that call the HyperSync API, set the Envio API token via the environment: ```bash -python examples/.py +export ENVIO_API_TOKEN="your-token" +python examples/chain_id.py ``` diff --git a/examples/all_erc20.py b/examples/all_erc20.py index eafbe30..3b9dd5d 100644 --- a/examples/all_erc20.py +++ b/examples/all_erc20.py @@ -1,21 +1,11 @@ import os -from dotenv import load_dotenv import hypersync import asyncio from hypersync import BlockField, TransactionField, LogField, ClientConfig -# Load environment variables from a .env file -load_dotenv() - async def main(): - bearer_token = os.getenv("ENVIO_API_TOKEN") - if not bearer_token: - raise ValueError("ENVIO_API_TOKEN environment variable is required. Please set it in your .env file.") - - client = hypersync.HypersyncClient(ClientConfig( - url="https://eth.hypersync.xyz/", - bearer_token=bearer_token - )) + cfg = ClientConfig(bearer_token=os.environ.get("ENVIO_API_TOKEN")) + client = hypersync.HypersyncClient(cfg) # The query to run query = hypersync.Query( diff --git a/examples/all_erc20_transfer_and_approve.py b/examples/all_erc20_transfer_and_approve.py index 4541fb3..6936f3a 100644 --- a/examples/all_erc20_transfer_and_approve.py +++ b/examples/all_erc20_transfer_and_approve.py @@ -1,26 +1,16 @@ import os -from dotenv import load_dotenv import hypersync import asyncio from hypersync import BlockField, TransactionField, LogField, ClientConfig -# Load environment variables from a .env file -load_dotenv() - -# For a simpler example with a single event, see all-erc20-transfers.py +# For a simpler example with a single event, see all_erc20_transfers.py transfer_topic = "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" approval_topic = "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" async def main(): - bearer_token = os.getenv("ENVIO_API_TOKEN") - if not bearer_token: - raise ValueError("ENVIO_API_TOKEN environment variable is required. Please set it in your .env file.") - - client = hypersync.HypersyncClient(ClientConfig( - url="https://eth.hypersync.xyz/", - bearer_token=bearer_token - )) + cfg = ClientConfig(bearer_token=os.environ.get("ENVIO_API_TOKEN")) + client = hypersync.HypersyncClient(cfg) # The query to run query = hypersync.Query( diff --git a/examples/all_erc20_transfers.py b/examples/all_erc20_transfers.py index e8e8d93..5ae8e0a 100644 --- a/examples/all_erc20_transfers.py +++ b/examples/all_erc20_transfers.py @@ -1,23 +1,13 @@ import os -from dotenv import load_dotenv import hypersync import asyncio from hypersync import BlockField, TransactionField, LogField, ClientConfig -# Load environment variables from a .env file -load_dotenv() - -# For a more complex example with multiple events, see all-erc20-transfer-and-approve.py +# For a more complex example with multiple events, see all_erc20_transfer_and_approve.py async def main(): - bearer_token = os.getenv("ENVIO_API_TOKEN") - if not bearer_token: - raise ValueError("ENVIO_API_TOKEN environment variable is required. Please set it in your .env file.") - - client = hypersync.HypersyncClient(ClientConfig( - url="https://eth.hypersync.xyz/", - bearer_token=bearer_token - )) + cfg = ClientConfig(bearer_token=os.environ.get("ENVIO_API_TOKEN")) + client = hypersync.HypersyncClient(cfg) # The query to run query = hypersync.Query( diff --git a/examples/block_data.py b/examples/block_data.py index c99c075..40f1244 100644 --- a/examples/block_data.py +++ b/examples/block_data.py @@ -1,21 +1,11 @@ import os -from dotenv import load_dotenv import hypersync import asyncio from hypersync import BlockField, JoinMode, TransactionField, LogField, ClientConfig -# Load environment variables from a .env file -load_dotenv() - async def main(): - bearer_token = os.getenv("ENVIO_API_TOKEN") - if not bearer_token: - raise ValueError("ENVIO_API_TOKEN environment variable is required. Please set it in your .env file.") - - client = hypersync.HypersyncClient(ClientConfig( - url="https://eth.hypersync.xyz/", - bearer_token=bearer_token - )) + cfg = ClientConfig(bearer_token=os.environ.get("ENVIO_API_TOKEN")) + client = hypersync.HypersyncClient(cfg) # The query to run query = hypersync.Query( @@ -63,4 +53,4 @@ async def main(): print(len(res.data.transactions)) print(len(res.data.logs)) -asyncio.run(main()) \ No newline at end of file +asyncio.run(main()) diff --git a/examples/block_rewards.py b/examples/block_rewards.py index 513d1f6..30de656 100644 --- a/examples/block_rewards.py +++ b/examples/block_rewards.py @@ -1,23 +1,15 @@ import os -from dotenv import load_dotenv import hypersync import asyncio import polars -# Load environment variables from a .env file -load_dotenv() async def run(): - bearer_token = os.getenv("ENVIO_API_TOKEN") - if not bearer_token: - raise ValueError("ENVIO_API_TOKEN environment variable is required. Please set it in your .env file.") - - client = hypersync.HypersyncClient( - hypersync.ClientConfig( - url="https://eth.hypersync.xyz/", - bearer_token=bearer_token - ) + cfg = hypersync.ClientConfig( + url="http://167.235.0.227:2104", + bearer_token=os.environ.get("ENVIO_API_TOKEN"), ) + client = hypersync.HypersyncClient(cfg) res = await client.collect_arrow( hypersync.Query( diff --git a/examples/call_watch.py b/examples/call_watch.py index e224a18..8fc3716 100644 --- a/examples/call_watch.py +++ b/examples/call_watch.py @@ -1,24 +1,15 @@ import os -from dotenv import load_dotenv import hypersync import asyncio import time from hypersync import TransactionField -# Load environment variables from a .env file -load_dotenv() - DAI_ADDRESS = "0x6B175474E89094C44Da98b954EedeAC495271d0F" async def main(): - bearer_token = os.getenv("ENVIO_API_TOKEN") - if not bearer_token: - raise ValueError("ENVIO_API_TOKEN environment variable is required. Please set it in your .env file.") - - client = hypersync.HypersyncClient(hypersync.ClientConfig( - url="https://eth.hypersync.xyz/", - bearer_token=bearer_token - )) + # Create hypersync client using the mainnet hypersync endpoint (default) + cfg = hypersync.ClientConfig(bearer_token=os.environ.get("ENVIO_API_TOKEN")) + client = hypersync.HypersyncClient(cfg) # The query to run query = hypersync.Query( diff --git a/examples/chain-id.py b/examples/chain-id.py new file mode 100644 index 0000000..123fbc1 --- /dev/null +++ b/examples/chain-id.py @@ -0,0 +1,16 @@ +import os +import hypersync +import asyncio +from hypersync import BlockField, TransactionField, LogField, ClientConfig + + +async def main(): + cfg = ClientConfig(bearer_token=os.environ.get("ENVIO_API_TOKEN")) + client = hypersync.HypersyncClient(cfg) + + chain_id = await client.get_chain_id() + + print(chain_id) + + +asyncio.run(main()) diff --git a/examples/parquet_blocks_and_transactions.py b/examples/parquet_blocks_and_transactions.py index 99e95d5..b16f71e 100644 --- a/examples/parquet_blocks_and_transactions.py +++ b/examples/parquet_blocks_and_transactions.py @@ -1,20 +1,11 @@ import os -from dotenv import load_dotenv import hypersync import asyncio -# Load environment variables from a .env file -load_dotenv() async def main(): - bearer_token = os.getenv("ENVIO_API_TOKEN") - if not bearer_token: - raise ValueError("ENVIO_API_TOKEN environment variable is required. Please set it in your .env file.") - - client = hypersync.HypersyncClient(hypersync.ClientConfig( - url="https://eth.hypersync.xyz/", - bearer_token=bearer_token - )) + cfg = hypersync.ClientConfig(bearer_token=os.environ.get("ENVIO_API_TOKEN")) + client = hypersync.HypersyncClient(cfg) height = await client.get_height() query = hypersync.preset_query_blocks_and_transactions( diff --git a/examples/simple_blocks_and_transaction_hashes.py b/examples/simple_blocks_and_transaction_hashes.py index b81058b..c188fef 100644 --- a/examples/simple_blocks_and_transaction_hashes.py +++ b/examples/simple_blocks_and_transaction_hashes.py @@ -1,22 +1,13 @@ import os -from dotenv import load_dotenv import hypersync import asyncio -# Load environment variables from a .env file -load_dotenv() - # returns all blocks and the hashes of the transactions (not entire transaction objects) within a block range async def main(): - bearer_token = os.getenv("ENVIO_API_TOKEN") - if not bearer_token: - raise ValueError("ENVIO_API_TOKEN environment variable is required. Please set it in your .env file.") - - client = hypersync.HypersyncClient(hypersync.ClientConfig( - url="https://eth.hypersync.xyz/", - bearer_token=bearer_token - )) + # Create hypersync client using the mainnet hypersync endpoint (default) + cfg = hypersync.ClientConfig(bearer_token=os.environ.get("ENVIO_API_TOKEN")) + client = hypersync.HypersyncClient(cfg) query = hypersync.preset_query_blocks_and_transaction_hashes(17_000_000, 17_000_050) diff --git a/examples/simple_blocks_and_transactions.py b/examples/simple_blocks_and_transactions.py index 254c38c..4740adc 100644 --- a/examples/simple_blocks_and_transactions.py +++ b/examples/simple_blocks_and_transactions.py @@ -1,22 +1,13 @@ import os -from dotenv import load_dotenv import hypersync import asyncio -# Load environment variables from a .env file -load_dotenv() - # returns all block and transaction objects within a block range async def main(): - bearer_token = os.getenv("ENVIO_API_TOKEN") - if not bearer_token: - raise ValueError("ENVIO_API_TOKEN environment variable is required. Please set it in your .env file.") - - client = hypersync.HypersyncClient(hypersync.ClientConfig( - url="https://eth.hypersync.xyz/", - bearer_token=bearer_token - )) + # Create hypersync client using the mainnet hypersync endpoint (default) + cfg = hypersync.ClientConfig(bearer_token=os.environ.get("ENVIO_API_TOKEN")) + client = hypersync.HypersyncClient(cfg) query = hypersync.preset_query_blocks_and_transactions(17_000_000, 17_000_050) diff --git a/examples/simple_logs.py b/examples/simple_logs.py index 145b51c..c38aeb5 100644 --- a/examples/simple_logs.py +++ b/examples/simple_logs.py @@ -1,22 +1,13 @@ import os -from dotenv import load_dotenv import hypersync import asyncio -# Load environment variables from a .env file -load_dotenv() - # returns all logs from a contract within a block range async def main(): - bearer_token = os.getenv("ENVIO_API_TOKEN") - if not bearer_token: - raise ValueError("ENVIO_API_TOKEN environment variable is required. Please set it in your .env file.") - - client = hypersync.HypersyncClient(hypersync.ClientConfig( - url="https://eth.hypersync.xyz/", - bearer_token=bearer_token - )) + # Create hypersync client using the mainnet hypersync endpoint (default) + cfg = hypersync.ClientConfig(bearer_token=os.environ.get("ENVIO_API_TOKEN")) + client = hypersync.HypersyncClient(cfg) usdt_contract = "0xdAC17F958D2ee523a2206206994597C13D831ec7" diff --git a/examples/simple_logs_of_event.py b/examples/simple_logs_of_event.py index 35fabcf..3f789f4 100644 --- a/examples/simple_logs_of_event.py +++ b/examples/simple_logs_of_event.py @@ -1,22 +1,13 @@ import os -from dotenv import load_dotenv import hypersync import asyncio -# Load environment variables from a .env file -load_dotenv() - # returns all logs of a specific event from a contract within a block range async def main(): - bearer_token = os.getenv("ENVIO_API_TOKEN") - if not bearer_token: - raise ValueError("ENVIO_API_TOKEN environment variable is required. Please set it in your .env file.") - - client = hypersync.HypersyncClient(hypersync.ClientConfig( - url="https://eth.hypersync.xyz/", - bearer_token=bearer_token - )) + # Create hypersync client using the mainnet hypersync endpoint (default) + cfg = hypersync.ClientConfig(bearer_token=os.environ.get("ENVIO_API_TOKEN")) + client = hypersync.HypersyncClient(cfg) usdt_contract = "0xdAC17F958D2ee523a2206206994597C13D831ec7" diff --git a/examples/stream_with_progress_bar.py b/examples/stream_with_progress_bar.py index 3f73c6c..df1ab73 100644 --- a/examples/stream_with_progress_bar.py +++ b/examples/stream_with_progress_bar.py @@ -1,5 +1,4 @@ import os -from dotenv import load_dotenv import hypersync import asyncio import time @@ -9,9 +8,6 @@ from tqdm_loggable.auto import tqdm from tqdm_loggable.tqdm_logging import tqdm_logging -# Load environment variables from a .env file -load_dotenv() - # Set up logging logger = logging.getLogger(__name__) fmt = "%(filename)-20s:%(lineno)-4d %(asctime)s %(message)s" @@ -24,14 +20,8 @@ async def main(): - bearer_token = os.getenv("ENVIO_API_TOKEN") - if not bearer_token: - raise ValueError("ENVIO_API_TOKEN environment variable is required. Please set it in your .env file.") - - client = hypersync.HypersyncClient(ClientConfig( - url="https://eth.hypersync.xyz/", - bearer_token=bearer_token - )) + cfg = ClientConfig(bearer_token=os.environ.get("ENVIO_API_TOKEN")) + client = hypersync.HypersyncClient(cfg) height = await client.get_height() start_block = height - 8000 total_blocks = height - start_block diff --git a/examples/top_usdt.py b/examples/top_usdt.py index b51003e..75f45a5 100644 --- a/examples/top_usdt.py +++ b/examples/top_usdt.py @@ -1,22 +1,12 @@ import os -from dotenv import load_dotenv import hypersync from hypersync import LogSelection, LogField, DataType, FieldSelection, ColumnMapping, TransactionField, ClientConfig import asyncio import polars -# Load environment variables from a .env file -load_dotenv() - async def collect_events(): - bearer_token = os.getenv("ENVIO_API_TOKEN") - if not bearer_token: - raise ValueError("ENVIO_API_TOKEN environment variable is required. Please set it in your .env file.") - - client = hypersync.HypersyncClient(ClientConfig( - url="https://eth.hypersync.xyz/", - bearer_token=bearer_token - )) + cfg = hypersync.ClientConfig(bearer_token=os.environ.get("ENVIO_API_TOKEN")) + client = hypersync.HypersyncClient(cfg) height = await client.get_height() diff --git a/examples/tx_by_hash.py b/examples/tx_by_hash.py index 3bdcb97..dad7978 100644 --- a/examples/tx_by_hash.py +++ b/examples/tx_by_hash.py @@ -1,5 +1,4 @@ import os -from dotenv import load_dotenv import hypersync import asyncio from hypersync import ( @@ -9,18 +8,10 @@ TransactionSelection, ) -# Load environment variables from a .env file -load_dotenv() async def main(): - bearer_token = os.getenv("ENVIO_API_TOKEN") - if not bearer_token: - raise ValueError("ENVIO_API_TOKEN environment variable is required. Please set it in your .env file.") - - client = hypersync.HypersyncClient(ClientConfig( - url="https://eth.hypersync.xyz/", - bearer_token=bearer_token - )) + cfg = ClientConfig(bearer_token=os.environ.get("ENVIO_API_TOKEN")) + client = hypersync.HypersyncClient(cfg) # The query to run query = hypersync.Query( diff --git a/examples/uniswap_pool_swap_events.py b/examples/uniswap_pool_swap_events.py index b575331..922f2db 100644 --- a/examples/uniswap_pool_swap_events.py +++ b/examples/uniswap_pool_swap_events.py @@ -1,22 +1,13 @@ import os -from dotenv import load_dotenv import hypersync import asyncio -# Load environment variables from a .env file -load_dotenv() - # returns all logs of a the swap event from the uniswap v2 eth/rai swap pool within a block range async def main(): - bearer_token = os.getenv("ENVIO_API_TOKEN") - if not bearer_token: - raise ValueError("ENVIO_API_TOKEN environment variable is required. Please set it in your .env file.") - - client = hypersync.HypersyncClient(hypersync.ClientConfig( - url="https://eth.hypersync.xyz/", - bearer_token=bearer_token - )) + # Create hypersync client using the ethereum mainnet hypersync endpoint (default) + cfg = hypersync.ClientConfig(bearer_token=os.environ.get("ENVIO_API_TOKEN")) + client = hypersync.HypersyncClient(cfg) eth_rai_swap_pool = "0x3e47D7B7867BAbB558B163F92fBE352161ACcb49" diff --git a/examples/wallet.py b/examples/wallet.py index 584c953..cd4a6cd 100644 --- a/examples/wallet.py +++ b/examples/wallet.py @@ -1,12 +1,8 @@ import os -from dotenv import load_dotenv import hypersync import asyncio from hypersync import BlockField, TransactionField, LogField, ClientConfig -# Load environment variables from a .env file -load_dotenv() - # the addresses we want to get data for addresses = [ "0xD1a923D70510814EaE7695A76326201cA06d080F".lower(), @@ -22,14 +18,9 @@ def address_to_topic(address): async def main(): - bearer_token = os.getenv("ENVIO_API_TOKEN") - if not bearer_token: - raise ValueError("ENVIO_API_TOKEN environment variable is required. Please set it in your .env file.") - - client = hypersync.HypersyncClient(ClientConfig( - url="https://eth.hypersync.xyz/", - bearer_token=bearer_token - )) + # Create hypersync client using the mainnet hypersync endpoint (default) + cfg = hypersync.ClientConfig(bearer_token=os.environ.get("ENVIO_API_TOKEN")) + client = hypersync.HypersyncClient(cfg) address_topic_filter = list(map(address_to_topic, addresses)) diff --git a/examples/watch.py b/examples/watch.py index eeaa6ce..54c5744 100644 --- a/examples/watch.py +++ b/examples/watch.py @@ -1,24 +1,15 @@ import os -from dotenv import load_dotenv import hypersync import asyncio import time from hypersync import LogField, ClientConfig -# Load environment variables from a .env file -load_dotenv() - DAI_ADDRESS = "0x6B175474E89094C44Da98b954EedeAC495271d0F" async def main(): - bearer_token = os.getenv("ENVIO_API_TOKEN") - if not bearer_token: - raise ValueError("ENVIO_API_TOKEN environment variable is required. Please set it in your .env file.") - - client = hypersync.HypersyncClient(ClientConfig( - url="https://eth.hypersync.xyz/", - bearer_token=bearer_token - )) + # Create hypersync client using the mainnet hypersync endpoint (default) + cfg = hypersync.ClientConfig(bearer_token=os.environ.get("ENVIO_API_TOKEN")) + client = hypersync.HypersyncClient(cfg) height = await client.get_height() diff --git a/hypersync/__init__.py b/hypersync/__init__.py index 5ee0cce..b7e3582 100644 --- a/hypersync/__init__.py +++ b/hypersync/__init__.py @@ -669,10 +669,10 @@ class StreamConfig: class ClientConfig: """Configuration for the hypersync client.""" + # HyperSync server bearer token (required). + bearer_token: str # HyperSync server URL. url: Optional[str] = None - # HyperSync server bearer token. - bearer_token: Optional[str] = None # Milliseconds to wait for a response before timing out. http_req_timeout_millis: Optional[int] = None # Number of retries to attempt before returning error. @@ -684,6 +684,13 @@ class ClientConfig: # Ceiling time for request backoff. retry_ceiling_ms: Optional[int] = None + def __post_init__(self) -> None: + if not (self.bearer_token and self.bearer_token.strip()): + raise ValueError( + "bearer_token is required. Pass it when creating ClientConfig, " + "e.g. ClientConfig(bearer_token=os.environ['ENVIO_API_TOKEN'])." + ) + class QueryResponseData(object): blocks: list[Block]