diff --git a/Cargo.lock b/Cargo.lock index 01db8e20..0bf2ddda 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -15,9 +15,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", ] @@ -92,10 +92,11 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.1.34" +version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8158b4878c67837e5413721cc44298e6a2d88d39203175ea025e51892a16ba4c" +checksum = "dca4a1469a3e572e9ba362920ff145f5d0a00a3e71a64ddcb4a3659cf64c76a7" dependencies = [ + "alloy-primitives 0.8.9", "num_enum", "strum", ] @@ -121,7 +122,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1" dependencies = [ "alloy-eips 0.3.6", - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "alloy-rlp", "alloy-serde 0.3.6", "c-kzg", @@ -134,14 +135,14 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eefe64fd344cffa9cf9e3435ec4e93e6e9c3481bc37269af988bf497faf4a6a" dependencies = [ - "alloy-dyn-abi 0.8.5", - "alloy-json-abi 0.8.5", + "alloy-dyn-abi 0.8.9", + "alloy-json-abi 0.8.9", "alloy-network 0.3.6", "alloy-network-primitives 0.3.6", - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "alloy-provider 0.3.6", "alloy-rpc-types-eth 0.3.6", - "alloy-sol-types 0.8.5", + "alloy-sol-types 0.8.9", "alloy-transport 0.3.6", "futures", "futures-util", @@ -163,15 +164,15 @@ dependencies = [ [[package]] name = "alloy-core" -version = "0.8.5" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce854562e7cafd5049189d0268d6e5cba05fe6c9cb7c6f8126a79b94800629c" +checksum = "5cce174ca699ddee3bfb2ec1fbd99ad7efd05eca20c5c888d8320db41f7e8f04" dependencies = [ - "alloy-dyn-abi 0.8.5", - "alloy-json-abi 0.8.5", - "alloy-primitives 0.8.5", + "alloy-dyn-abi 0.8.9", + "alloy-json-abi 0.8.9", + "alloy-primitives 0.8.9", "alloy-rlp", - "alloy-sol-types 0.8.5", + "alloy-sol-types 0.8.9", ] [[package]] @@ -193,14 +194,14 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "0.8.5" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b499852e1d0e9b8c6db0f24c48998e647c0d5762a01090f955106a7700e4611" +checksum = "5647fce5a168f9630f935bf7821c4207b1755184edaeba783cb4e11d35058484" dependencies = [ - "alloy-json-abi 0.8.5", - "alloy-primitives 0.8.5", - "alloy-sol-type-parser 0.8.5", - "alloy-sol-types 0.8.5", + "alloy-json-abi 0.8.9", + "alloy-primitives 0.8.9", + "alloy-sol-type-parser 0.8.9", + "alloy-sol-types 0.8.9", "const-hex", "itoa", "serde", @@ -214,7 +215,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" dependencies = [ - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "alloy-rlp", "serde", ] @@ -225,7 +226,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" dependencies = [ - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "alloy-rlp", "serde", ] @@ -256,7 +257,7 @@ checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f" dependencies = [ "alloy-eip2930", "alloy-eip7702", - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "alloy-rlp", "alloy-serde 0.3.6", "c-kzg", @@ -283,7 +284,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a7a18afb0b318616b6b2b0e2e7ac5529d32a966c673b48091c9919e284e6aca" dependencies = [ - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "alloy-serde 0.3.6", "serde", ] @@ -302,12 +303,12 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.8.5" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a438d4486b5d525df3b3004188f9d5cd1d65cd30ecc41e5a3ccef6f6342e8af9" +checksum = "4b5671117c38b1c2306891f97ad3828d85487087f54ebe2c7591a055ea5bcea7" dependencies = [ - "alloy-primitives 0.8.5", - "alloy-sol-type-parser 0.8.5", + "alloy-primitives 0.8.9", + "alloy-sol-type-parser 0.8.9", "serde", "serde_json", ] @@ -332,8 +333,8 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3c717b5298fad078cd3a418335b266eba91b511383ca9bd497f742d5975d5ab" dependencies = [ - "alloy-primitives 0.8.5", - "alloy-sol-types 0.8.5", + "alloy-primitives 0.8.9", + "alloy-sol-types 0.8.9", "serde", "serde_json", "thiserror", @@ -371,11 +372,11 @@ dependencies = [ "alloy-eips 0.3.6", "alloy-json-rpc 0.3.6", "alloy-network-primitives 0.3.6", - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "alloy-rpc-types-eth 0.3.6", "alloy-serde 0.3.6", "alloy-signer 0.3.6", - "alloy-sol-types 0.8.5", + "alloy-sol-types 0.8.9", "async-trait", "auto_impl", "futures-utils-wasm", @@ -400,7 +401,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94ad40869867ed2d9cd3842b1e800889e5b49e6b92da346e93862b4a741bedf3" dependencies = [ "alloy-eips 0.3.6", - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "alloy-serde 0.3.6", "serde", ] @@ -412,7 +413,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5988a227293f949525f0a1b3e1ef728d2ef24afa96bad2b7788c6c9617fa3eec" dependencies = [ "alloy-genesis 0.3.6", - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "k256", "rand", "serde_json", @@ -447,18 +448,19 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.5" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "260d3ff3bff0bb84599f032a2f2c6828180b0ea0cd41fdaf44f39cef3ba41861" +checksum = "c71738eb20c42c5fb149571e76536a0f309d142f3957c28791662b96baf77a3d" dependencies = [ "alloy-rlp", "bytes", "cfg-if", "const-hex", "derive_more 1.0.0", - "hashbrown 0.14.5", + "foldhash", + "hashbrown 0.15.0", "hex-literal", - "indexmap 2.5.0", + "indexmap 2.6.0", "itoa", "k256", "keccak-asm", @@ -518,7 +520,7 @@ dependencies = [ "alloy-network 0.3.6", "alloy-network-primitives 0.3.6", "alloy-node-bindings", - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "alloy-rpc-client 0.3.6", "alloy-rpc-types 0.3.6", "alloy-rpc-types-anvil", @@ -545,9 +547,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" +checksum = "da0822426598f95e45dd1ea32a738dac057529a709ee645fcc516ffa4cbde08f" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -556,13 +558,13 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" +checksum = "2b09cae092c27b6f1bde952653a22708691802e57bfef4a2973b80bea21efd3f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -638,7 +640,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25cb45ad7c0930dd62eecf164d2afe4c3d2dd2c82af85680ad1f118e1e5cb83" dependencies = [ - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "alloy-serde 0.3.6", "serde", ] @@ -687,7 +689,7 @@ checksum = "1464c4dd646e1bdfde86ae65ce5ba168dbb29180b478011fe87117ae46b1629b" dependencies = [ "alloy-consensus 0.3.6", "alloy-eips 0.3.6", - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "alloy-rlp", "alloy-serde 0.3.6", "derive_more 1.0.0", @@ -724,10 +726,10 @@ dependencies = [ "alloy-consensus 0.3.6", "alloy-eips 0.3.6", "alloy-network-primitives 0.3.6", - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "alloy-rlp", "alloy-serde 0.3.6", - "alloy-sol-types 0.8.5", + "alloy-sol-types 0.8.9", "cfg-if", "derive_more 1.0.0", "hashbrown 0.14.5", @@ -753,7 +755,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "731f75ec5d383107fd745d781619bd9cedf145836c51ecb991623d41278e71fa" dependencies = [ - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "serde", "serde_json", ] @@ -778,7 +780,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "307324cca94354cd654d6713629f0383ec037e1ff9e3e3d547212471209860c0" dependencies = [ - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "async-trait", "auto_impl", "elliptic-curve", @@ -794,7 +796,7 @@ checksum = "9fabe917ab1778e760b4701628d1cae8e028ee9d52ac6307de4e1e9286ab6b5f" dependencies = [ "alloy-consensus 0.3.6", "alloy-network 0.3.6", - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "alloy-signer 0.3.6", "async-trait", "k256", @@ -813,21 +815,21 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] name = "alloy-sol-macro" -version = "0.8.5" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68e7f6e8fe5b443f82b3f1e15abfa191128f71569148428e49449d01f6f49e8b" +checksum = "b0900b83f4ee1f45c640ceee596afbc118051921b9438fdb5a3175c1a7e05f8b" dependencies = [ - "alloy-sol-macro-expander 0.8.5", - "alloy-sol-macro-input 0.8.5", + "alloy-sol-macro-expander 0.8.9", + "alloy-sol-macro-input 0.8.9", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -839,31 +841,31 @@ dependencies = [ "alloy-sol-macro-input 0.7.7", "const-hex", "heck 0.5.0", - "indexmap 2.5.0", + "indexmap 2.6.0", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", "syn-solidity 0.7.7", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-expander" -version = "0.8.5" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b96ce28d2fde09abb6135f410c41fad670a3a770b6776869bd852f1df102e6f" +checksum = "a41b1e78dde06b5e12e6702fa8c1d30621bf07728ba75b801fb801c9c6a0ba10" dependencies = [ - "alloy-json-abi 0.8.5", - "alloy-sol-macro-input 0.8.5", + "alloy-json-abi 0.8.9", + "alloy-sol-macro-input 0.8.9", "const-hex", "heck 0.5.0", - "indexmap 2.5.0", + "indexmap 2.6.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.79", - "syn-solidity 0.8.5", + "syn 2.0.85", + "syn-solidity 0.8.9", "tiny-keccak", ] @@ -878,25 +880,25 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", "syn-solidity 0.7.7", ] [[package]] name = "alloy-sol-macro-input" -version = "0.8.5" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "906746396a8296537745711630d9185746c0b50c033d5e9d18b0a6eba3d53f90" +checksum = "91dc311a561a306664393407b88d3e53ae58581624128afd8a15faa5de3627dc" dependencies = [ - "alloy-json-abi 0.8.5", + "alloy-json-abi 0.8.9", "const-hex", "dunce", "heck 0.5.0", "proc-macro2", "quote", "serde_json", - "syn 2.0.79", - "syn-solidity 0.8.5", + "syn 2.0.85", + "syn-solidity 0.8.9", ] [[package]] @@ -911,9 +913,9 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" -version = "0.8.5" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc85178909a49c8827ffccfc9103a7ce1767ae66a801b69bdc326913870bf8e6" +checksum = "45d1fbee9e698f3ba176b6e7a145f4aefe6d2b746b611e8bb246fe11a0e9f6c4" dependencies = [ "serde", "winnow 0.6.20", @@ -933,13 +935,13 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.8.5" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86a533ce22525969661b25dfe296c112d35eb6861f188fd284f8bd4bb3842ae" +checksum = "086f41bc6ebcd8cb15f38ba20e47be38dd03692149681ce8061c35d960dbf850" dependencies = [ - "alloy-json-abi 0.8.5", - "alloy-primitives 0.8.5", - "alloy-sol-macro 0.8.5", + "alloy-json-abi 0.8.9", + "alloy-primitives 0.8.9", + "alloy-sol-macro 0.8.9", "const-hex", "serde", ] @@ -1018,7 +1020,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9703ce68b97f8faae6f7739d1e003fc97621b856953cbcdbb2b515743f23288" dependencies = [ - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "alloy-rlp", "derive_more 1.0.0", "nybbles", @@ -1044,9 +1046,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" [[package]] name = "ark-ff" @@ -1201,9 +1203,9 @@ checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16" [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -1212,13 +1214,13 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -1229,7 +1231,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -1266,7 +1268,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -1390,9 +1392,9 @@ checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" [[package]] name = "bindgen" -version = "0.69.4" +version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ "bitflags 2.6.0", "cexpr", @@ -1405,7 +1407,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -1658,7 +1660,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", "syn_derive", ] @@ -1713,9 +1715,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" dependencies = [ "serde", ] @@ -1758,9 +1760,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.23" +version = "1.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bbb537bb4a30b90362caddba8f360c0a56bc13d3a5570028e7197204cb54a17" +checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" dependencies = [ "jobserver", "libc", @@ -2077,9 +2079,9 @@ dependencies = [ [[package]] name = "critical-section" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64009896348fc5af4222e9cf7d7d82a95a256c634ebcf61c53e4ea461422242" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "crossbeam-channel" @@ -2199,7 +2201,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -2260,7 +2262,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -2282,7 +2284,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core 0.20.10", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -2376,7 +2378,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -2396,7 +2398,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", "unicode-xid", ] @@ -2435,7 +2437,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -2510,7 +2512,7 @@ source = "git+https://github.com/nomic-io/ed?rev=a657be856792039ff60c2f67e7920e3 dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -2559,7 +2561,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -2601,9 +2603,9 @@ checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -2625,7 +2627,7 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -2767,7 +2769,7 @@ dependencies = [ "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -2866,6 +2868,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -2944,9 +2952,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", @@ -2959,9 +2967,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", @@ -2969,15 +2977,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", @@ -2986,9 +2994,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-lite" @@ -3005,32 +3013,32 @@ 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.79", + "syn 2.0.85", ] [[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-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", @@ -3076,9 +3084,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 = "glob" @@ -3109,7 +3117,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.5.0", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -3128,7 +3136,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.5.0", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -3188,6 +3196,18 @@ dependencies = [ "serde", ] +[[package]] +name = "hashbrown" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", + "serde", +] + [[package]] name = "headers" version = "0.3.9" @@ -3377,9 +3397,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -3401,9 +3421,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" dependencies = [ "bytes", "futures-channel", @@ -3428,7 +3448,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.30", + "hyper 0.14.31", "rustls 0.21.12", "tokio", "tokio-rustls", @@ -3440,7 +3460,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" dependencies = [ - "hyper 1.4.1", + "hyper 1.5.0", "hyper-util", "pin-project-lite", "tokio", @@ -3454,7 +3474,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.30", + "hyper 0.14.31", "native-tls", "tokio", "tokio-native-tls", @@ -3468,7 +3488,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.0", "hyper-util", "native-tls", "tokio", @@ -3487,7 +3507,7 @@ dependencies = [ "futures-util", "http 1.1.0", "http-body 1.0.1", - "hyper 1.4.1", + "hyper 1.5.0", "pin-project-lite", "socket2", "tokio", @@ -3977,7 +3997,7 @@ checksum = "2f0eb1d08a424a2d714652aca4c2738a016c90f4eb78f6f64913f9fe2c77fe34" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -4124,12 +4144,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", ] @@ -4145,15 +4165,15 @@ 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_executable" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ba3d8548b8b04dafdf2f4cc6f5e379db766d0a6d9aac233ad4c9a92ea892233" +checksum = "d4a1b5bad6f9072935961dfbf1cced2f3d129963d091b6f69f007fe04e758ae2" dependencies = [ "winapi", ] @@ -4202,9 +4222,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -4306,9 +4326,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.159" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libloading" @@ -4322,9 +4342,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "a00419de735aac21d53b0de5ce2c03bd3627277cf471300f27ebc89f7d828047" [[package]] name = "librocksdb-sys" @@ -4382,11 +4402,11 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lru" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.14.5", + "hashbrown 0.15.0", ] [[package]] @@ -4425,7 +4445,7 @@ dependencies = [ [[package]] name = "merk" version = "2.0.0" -source = "git+https://github.com/nomic-io/merk?rev=cc496300bff8a9223e5589cdc2f2e0db3ae14208#cc496300bff8a9223e5589cdc2f2e0db3ae14208" +source = "git+https://github.com/nomic-io/merk?rev=d6f0490993bcf88f786c5271091aa9a84ff2fe69#d6f0490993bcf88f786c5271091aa9a84ff2fe69" dependencies = [ "colored", "ed 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4552,18 +4572,18 @@ dependencies = [ [[package]] name = "nomic" -version = "9.1.4" +version = "9.2.0" dependencies = [ "alloy-contract", - "alloy-core 0.8.5", + "alloy-core 0.8.9", "alloy-node-bindings", - "alloy-primitives 0.8.5", + "alloy-primitives 0.8.9", "alloy-provider 0.3.6", "alloy-rlp", "alloy-rpc-types 0.3.6", "alloy-rpc-types-eth 0.3.6", "alloy-signer-local", - "alloy-sol-types 0.8.5", + "alloy-sol-types 0.8.9", "alloy-transport 0.3.6", "alloy-trie", "base64 0.13.1", @@ -4702,7 +4722,7 @@ checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -4720,21 +4740,18 @@ dependencies = [ [[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.20.1" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" -dependencies = [ - "portable-atomic", -] +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "opaque-debug" @@ -4744,9 +4761,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -4765,7 +4782,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -4776,9 +4793,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -4789,7 +4806,7 @@ dependencies = [ [[package]] name = "orga" version = "0.3.1" -source = "git+https://github.com/nomic-io/orga.git?rev=35988d76b58008e37794064c41f3d0ba102ca0c8#35988d76b58008e37794064c41f3d0ba102ca0c8" +source = "git+https://github.com/nomic-io/orga.git?rev=3b3d25ade40d81cb64f19335535e3a47bb47778f#3b3d25ade40d81cb64f19335535e3a47bb47778f" dependencies = [ "abci2", "async-trait", @@ -4846,7 +4863,7 @@ dependencies = [ [[package]] name = "orga-macros" version = "0.3.1" -source = "git+https://github.com/nomic-io/orga.git?rev=35988d76b58008e37794064c41f3d0ba102ca0c8#35988d76b58008e37794064c41f3d0ba102ca0c8" +source = "git+https://github.com/nomic-io/orga.git?rev=3b3d25ade40d81cb64f19335535e3a47bb47778f#3b3d25ade40d81cb64f19335535e3a47bb47778f" dependencies = [ "darling 0.20.10", "heck 0.3.3", @@ -4854,7 +4871,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -4988,9 +5005,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" +checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" dependencies = [ "memchr", "thiserror", @@ -4999,29 +5016,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -5045,12 +5062,6 @@ 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" @@ -5153,7 +5164,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -5164,9 +5175,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -5262,7 +5273,7 @@ dependencies = [ "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -5403,9 +5414,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -5453,7 +5464,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.31", "hyper-rustls", "hyper-tls 0.5.0", "ipnet", @@ -5496,7 +5507,7 @@ dependencies = [ "http 1.1.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.0", "hyper-tls 0.6.0", "hyper-util", "ipnet", @@ -5618,7 +5629,7 @@ checksum = "652db34deaaa57929e10ca18e5454a32cb0efc351ae80d320334bbf907b908b3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -5741,9 +5752,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "aa260229e6538e52293eeb577aabd09945a09d6d9cc0fc550ed7529056c2e32a" dependencies = [ "bitflags 2.6.0", "errno", @@ -5809,9 +5820,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" [[package]] name = "rustls-webpki" @@ -5825,9 +5836,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "rusty-fork" @@ -5858,33 +5869,33 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.11.3" +version = "2.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" +checksum = "1aa7ffc1c0ef49b0452c6e2986abf2b07743320641ffd5fc63d552458e3b779b" dependencies = [ "cfg-if", - "derive_more 0.99.18", + "derive_more 1.0.0", "parity-scale-codec", "scale-info-derive", ] [[package]] name = "scale-info-derive" -version = "2.11.3" +version = "2.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" +checksum = "46385cc24172cf615450267463f937c10072516359b3ff1cb24228a4a08bf951" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.85", ] [[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", ] @@ -5910,7 +5921,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -6070,9 +6081,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.210" +version = "1.0.213" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1" dependencies = [ "serde_derive", ] @@ -6128,13 +6139,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.213" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -6145,14 +6156,14 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", @@ -6168,7 +6179,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -6194,15 +6205,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", @@ -6212,14 +6223,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 0.20.10", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -6254,7 +6265,7 @@ checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -6553,7 +6564,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -6604,9 +6615,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" dependencies = [ "proc-macro2", "quote", @@ -6622,19 +6633,19 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] name = "syn-solidity" -version = "0.8.5" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab661c8148c2261222a4d641ad5477fd4bea79406a99056096a0b41b35617a5" +checksum = "9d5e0c2ea8db64b2898b62ea2fbd60204ca95e0b2c6bdf53ff768bbe916fbe4d" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -6646,7 +6657,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -6888,22 +6899,22 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -7034,9 +7045,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -7058,7 +7069,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -7169,7 +7180,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", "serde", "serde_spanned", "toml_datetime", @@ -7182,7 +7193,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", @@ -7204,7 +7215,7 @@ dependencies = [ "http 1.1.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.0", "hyper-timeout", "hyper-util", "percent-encoding", @@ -7285,7 +7296,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -7317,7 +7328,7 @@ dependencies = [ "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -7390,18 +7401,15 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicase" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] +checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" [[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" @@ -7486,9 +7494,9 @@ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "uuid" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" [[package]] name = "valuable" @@ -7516,7 +7524,7 @@ checksum = "d674d135b4a8c1d7e813e2f8d1c9a58308aee4a680323066025e53132218bd91" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -7558,7 +7566,7 @@ dependencies = [ "futures-util", "headers", "http 0.2.12", - "hyper 0.14.30", + "hyper 0.14.31", "log", "mime", "mime_guess", @@ -7590,9 +7598,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", "once_cell", @@ -7601,24 +7609,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -7628,9 +7636,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7638,28 +7646,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -7995,7 +8003,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] @@ -8015,7 +8023,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.85", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 5cb36800..5edd051b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,13 @@ [package] name = "nomic" -version = "9.1.4" +version = "9.2.0" authors = ["Nomic DAO Foundation "] edition = "2021" default-run = "nomic" [dependencies] -orga = { git = "https://github.com/nomic-io/orga.git", rev = "35988d76b58008e37794064c41f3d0ba102ca0c8", features = [ +bitcoin = { version = "0.29.2", features = ["serde", "rand"] } +orga = { git = "https://github.com/nomic-io/orga.git", rev = "3b3d25ade40d81cb64f19335535e3a47bb47778f", features = [ "merk-verify", "feat-ibc", ] } @@ -53,7 +54,6 @@ ripemd = "0.1.3" frost-secp256k1-tr = { git = "https://github.com/ZcashFoundation/frost", rev = "51fa7d09f3742563a35d065afcff6ad486430dac", features = [ "nightly", ], optional = true } -bitcoin = { version = "0.29.2", features = ["serde", "rand"] } serde-hex = "0.1.0" alloy-core = { version = "0.8.5", optional = true } alloy-sol-types = { version = "0.8.5", optional = true } diff --git a/networks/testnet.toml b/networks/testnet.toml index e0f4fde4..4f04fc17 100644 --- a/networks/testnet.toml +++ b/networks/testnet.toml @@ -1,13 +1,13 @@ state_sync_rpc = [ - "http://147.182.171.216:26657", - "http://147.182.171.216:26657", + "http://147.182.171.216:26657", + "http://147.182.171.216:26657", ] tendermint_flags = ["--p2p.seeds", """ a07d56aa65e395c332a7bf226ec4e2f844519ffa@147.182.171.216:26656,\ """] btc_relayer = ["https://relayer.nomic-testnet.mappum.io:8443"] -legacy_version = "8.1.x" +legacy_version = "9.1.x" genesis = """ { diff --git a/rest/Cargo.lock b/rest/Cargo.lock index a5acd630..74fe71da 100644 --- a/rest/Cargo.lock +++ b/rest/Cargo.lock @@ -2878,7 +2878,7 @@ dependencies = [ [[package]] name = "frost-core" version = "1.0.0" -source = "git+https://github.com/ZcashFoundation/frost?rev=20c2c98a931c564655e2a03719e19ba916e11545#20c2c98a931c564655e2a03719e19ba916e11545" +source = "git+https://github.com/ZcashFoundation/frost?rev=51fa7d09f3742563a35d065afcff6ad486430dac#51fa7d09f3742563a35d065afcff6ad486430dac" dependencies = [ "byteorder", "const-crc32", @@ -2899,7 +2899,7 @@ dependencies = [ [[package]] name = "frost-rerandomized" version = "1.0.0" -source = "git+https://github.com/ZcashFoundation/frost?rev=20c2c98a931c564655e2a03719e19ba916e11545#20c2c98a931c564655e2a03719e19ba916e11545" +source = "git+https://github.com/ZcashFoundation/frost?rev=51fa7d09f3742563a35d065afcff6ad486430dac#51fa7d09f3742563a35d065afcff6ad486430dac" dependencies = [ "derive-getters", "document-features", @@ -2910,7 +2910,7 @@ dependencies = [ [[package]] name = "frost-secp256k1-tr" version = "1.0.0" -source = "git+https://github.com/ZcashFoundation/frost?rev=20c2c98a931c564655e2a03719e19ba916e11545#20c2c98a931c564655e2a03719e19ba916e11545" +source = "git+https://github.com/ZcashFoundation/frost?rev=51fa7d09f3742563a35d065afcff6ad486430dac#51fa7d09f3742563a35d065afcff6ad486430dac" dependencies = [ "document-features", "frost-core", diff --git a/src/app.rs b/src/app.rs index 7a7bcc1e..204d1b9d 100644 --- a/src/app.rs +++ b/src/app.rs @@ -33,6 +33,7 @@ use orga::describe::{Describe, Descriptor}; use orga::encoding::{Decode, Encode, LengthString, LengthVec}; use orga::ibc::ibc_rs::apps::transfer::types::Memo; use orga::ibc::ClientIdKey as ClientId; +use sha2::{Digest, Sha256}; use std::io::Read; use std::str::FromStr; @@ -103,7 +104,7 @@ const CALL_FEE_USATS: u64 = 100_000_000; #[cfg(feature = "ethereum")] const ETH_CREATE_CONNECTION_FEE_USATS: u64 = 10_000_000_000; -const OSMOSIS_CHANNEL_ID: &str = "channel-1"; +pub const OSMOSIS_CHANNEL_ID: &str = "channel-1"; #[cfg(feature = "frost")] const FROST_GROUP_INTERVAL: i64 = 10 * 60; @@ -201,7 +202,7 @@ impl InnerApp { /// breaking changes are made to either the state encoding or logic of the /// protocol, and requires a network upgrade to be coordinated via the /// upgrade module. - pub const CONSENSUS_VERSION: u8 = 13; + pub const CONSENSUS_VERSION: u8 = 14; #[cfg(feature = "full")] fn configure_faucets(&mut self) -> Result<()> { @@ -1609,7 +1610,7 @@ pub struct IbcDest { pub receiver: LengthString, pub sender: LengthString, pub timeout_timestamp: u64, - pub memo: LengthString, + pub memo: LengthString, } impl IbcDest { @@ -1696,7 +1697,9 @@ impl IbcDest { Ok(()) } - pub fn legacy_encode(&self) -> Result> { + pub fn legacy_encode(&self) -> Result>> { + let mut encodings = vec![]; + let mut bytes = vec![]; self.source_port.encode_into(&mut bytes)?; self.source_channel.encode_into(&mut bytes)?; @@ -1704,8 +1707,46 @@ impl IbcDest { EdAdapter(self.sender_signer()?).encode_into(&mut bytes)?; self.timeout_timestamp.encode_into(&mut bytes)?; self.memo.encode_into(&mut bytes)?; + encodings.push(Sha256::digest(bytes).to_vec()); + + if self.memo.len() < 256 { + let mut bytes = vec![]; + self.source_port.encode_into(&mut bytes)?; + self.source_channel.encode_into(&mut bytes)?; + self.receiver.encode_into(&mut bytes)?; + self.sender.encode_into(&mut bytes)?; + self.timeout_timestamp.encode_into(&mut bytes)?; + LengthString::::new(self.memo.len() as u8, self.memo.to_string()) + .encode_into(&mut bytes)?; + + let hash = Sha256::digest(bytes); + let mut bytes = Vec::with_capacity(hash.len() + 1); + bytes.push(0); // version byte + bytes.extend_from_slice(&hash); + encodings.push(bytes); + } - Ok(bytes) + Ok(encodings) + } +} + +impl Migrate for IbcDest { + fn migrate(_src: Store, _dest: Store, mut bytes: &mut &[u8]) -> Result { + let source_port = LengthString::::decode(&mut bytes)?; + let source_channel = LengthString::::decode(&mut bytes)?; + let receiver = LengthString::::decode(&mut bytes)?; + let sender = LengthString::::decode(&mut bytes)?; + let timeout_timestamp = u64::decode(&mut bytes)?; + let memo = LengthString::::decode(&mut bytes)?; + + Ok(IbcDest { + source_port, + source_channel, + receiver, + sender, + timeout_timestamp, + memo: memo.to_string().try_into().unwrap(), + }) } } @@ -1920,11 +1961,11 @@ impl Dest { } // TODO: remove once there are no legacy commitments in-flight - pub fn legacy_commitment_bytes(&self) -> Result> { + pub fn legacy_commitment_bytes(&self) -> Result>> { use sha2::{Digest, Sha256}; let bytes = match self { - Dest::NativeAccount { address } => address.bytes().into(), - Dest::Ibc { data } => Sha256::digest(data.legacy_encode()?).to_vec(), + Dest::NativeAccount { address } => vec![address.bytes().into()], + Dest::Ibc { data } => data.legacy_encode()?, _ => return Err(Error::App("Invalid dest for legacy commitment".to_string())), }; @@ -2003,6 +2044,16 @@ impl Query for Dest { impl Migrate for Dest { fn migrate(src: Store, dest: Store, bytes: &mut &[u8]) -> Result { + // TODO: !!!!!!!! remove from here once there are no legacy IBC dests + // Migrate IBC dests + let mut maybe_ibc_bytes = &mut &**bytes; + let variant = u8::decode(&mut maybe_ibc_bytes)?; + if variant == 1 { + let ibc_dest = IbcDest::migrate(src, dest, maybe_ibc_bytes)?; + return Ok(Self::Ibc { data: ibc_dest }); + } + // TODO: !!!!!!!! remove to here once there are no legacy IBC dests + Self::load(src, bytes) } } diff --git a/src/bin/nomic.rs b/src/bin/nomic.rs index fa43ff3b..2f06a576 100644 --- a/src/bin/nomic.rs +++ b/src/bin/nomic.rs @@ -186,8 +186,6 @@ pub enum Command { BabylonRelayer(BabylonRelayerCmd), #[cfg(feature = "babylon")] StakeNbtc(StakeNbtcCmd), - #[cfg(feature = "frost")] - FrostSigner(FrostSignerCmd), #[cfg(feature = "ethereum")] RelayEthereum(RelayEthereumCmd), #[cfg(feature = "ethereum")] @@ -264,8 +262,6 @@ impl Command { BabylonRelayer(cmd) => cmd.run().await, #[cfg(feature = "babylon")] StakeNbtc(cmd) => cmd.run().await, - #[cfg(feature = "frost")] - FrostSigner(cmd) => cmd.run().await, #[cfg(feature = "ethereum")] RelayEthereum(cmd) => cmd.run().await, #[cfg(feature = "ethereum")] @@ -1346,7 +1342,7 @@ impl ClaimAirdropCmd { /// Relays data between the Bitcoin and Nomic networks. #[derive(Parser, Debug)] pub struct RelayerCmd { - /// The port of the Bitcoin RPC server. + /// The port of the local Bitcoin RPC server. // TODO: get the default based on the network #[clap(short = 'p', long, default_value_t = 8332)] rpc_port: u16, @@ -1359,6 +1355,10 @@ pub struct RelayerCmd { #[clap(short = 'P', long)] rpc_pass: Option, + /// The URL for the Bitcoin RPC server, e.g. http://localhost:8332. + #[clap(short = 'r', long, conflicts_with = "rpc-port")] + rpc_url: Option, + #[clap(flatten)] config: nomic::network::Config, } @@ -1366,7 +1366,11 @@ pub struct RelayerCmd { impl RelayerCmd { /// Builds Bitcoin RPC client. async fn btc_client(&self) -> Result { - let rpc_url = format!("http://localhost:{}", self.rpc_port); + let rpc_url = if let Some(rpc) = self.rpc_url.clone() { + rpc + } else { + format!("http://localhost:{}", self.rpc_port) + }; let auth = match (self.rpc_user.clone(), self.rpc_pass.clone()) { (Some(user), Some(pass)) => Auth::UserPass(user, pass), _ => Auth::None, @@ -1503,7 +1507,17 @@ impl SignerCmd { let relaunch = relaunch_on_migrate(&self.config); - futures::try_join!(signer, relaunch).unwrap(); + #[cfg(feature = "frost")] + let frost_signer = { + let frost_cmd = FrostSignerCmd { + config: self.config.clone(), + }; + frost_cmd.run() + }; + #[cfg(not(feature = "frost"))] + let frost_signer = async { Ok(()) }; + + futures::try_join!(signer, relaunch, frost_signer).unwrap(); Ok(()) } @@ -1806,8 +1820,10 @@ impl EthTransferNbtcCmd { #[derive(Parser, Debug)] pub struct GrpcCmd { /// The port to listen on. - #[clap(default_value_t = 9001)] + #[clap(long, default_value_t = 9001)] port: u16, + #[clap(long, default_value = "127.0.0.1")] + host: String, #[clap(flatten)] config: nomic::network::Config, @@ -1817,12 +1833,14 @@ impl GrpcCmd { /// Runs the `grpc` command. async fn run(&self) -> Result<()> { use orga::ibc::GrpcOpts; - std::panic::set_hook(Box::new(|_| {})); + std::panic::set_hook(Box::new(|e| { + log::error!("{}", e.to_string()); + })); + log::info!("Starting gRPC server on {}:{}", self.host, self.port); orga::ibc::start_grpc( - // TODO: support configuring RPC address - || nomic::app_client("http://localhost:26657").sub(|app| Ok(app.ibc.ctx)), + || self.config.client().sub(|app| Ok(app.ibc.ctx)), &GrpcOpts { - host: "127.0.0.1".to_string(), + host: self.host.to_string(), port: self.port, chain_id: self.config.chain_id.clone().unwrap(), }, diff --git a/src/bitcoin/checkpoint.rs b/src/bitcoin/checkpoint.rs index ee9669d2..61e99edc 100644 --- a/src/bitcoin/checkpoint.rs +++ b/src/bitcoin/checkpoint.rs @@ -2423,6 +2423,19 @@ impl CheckpointQueue { Ok(()) } + + /// Returns the pending transfers for the building checkpoint. + /// + /// This query is a temporary workaround for a client iteration issue. + #[query] + pub fn pending(&self) -> Result> { + let mut pending = vec![]; + for entry in self.building()?.pending.iter()? { + let (dest, coin) = entry?; + pending.push((dest.0.clone(), dest.1, coin.amount.into())); + } + Ok(pending) + } } /// Takes a previous fee rate and returns a new fee rate, adjusted up or down by diff --git a/src/bitcoin/deposit_index.rs b/src/bitcoin/deposit_index.rs index c2ae80b3..d2fc1cbc 100644 --- a/src/bitcoin/deposit_index.rs +++ b/src/bitcoin/deposit_index.rs @@ -4,22 +4,15 @@ use serde::{Deserialize, Serialize}; use std::collections::HashMap; #[derive(Clone, Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] pub struct Deposit { - txid: Txid, - vout: u32, - amount: u64, - height: Option, -} - -impl Deposit { - pub fn new(txid: Txid, vout: u32, amount: u64, height: Option) -> Self { - Self { - txid, - vout, - amount, - height, - } - } + pub txid: Txid, + pub vout: u32, + pub amount: u64, + pub height: Option, + pub sigset_index: u32, + pub miner_fee_rate: f64, + pub bridge_fee_rate: f64, } #[derive(Clone, Debug, Serialize, Deserialize)] @@ -96,13 +89,10 @@ impl DepositIndex { None => 0, }; - // TODO - if confirmations == 0 { - deposits.push(DepositInfo { - deposit: deposit.clone(), - confirmations, - }); - } + deposits.push(DepositInfo { + deposit: deposit.clone(), + confirmations, + }); } } } diff --git a/src/bitcoin/mod.rs b/src/bitcoin/mod.rs index d06ce45b..36db57e5 100644 --- a/src/bitcoin/mod.rs +++ b/src/bitcoin/mod.rs @@ -585,10 +585,18 @@ impl Bitcoin { let expected_script = sigset.output_script(&dest_bytes, self.checkpoints.config.sigset_threshold)?; if output.script_pubkey != expected_script { - dest_bytes = dest.legacy_commitment_bytes()?; - let expected_script = - sigset.output_script(&dest_bytes, self.checkpoints.config.sigset_threshold)?; - if output.script_pubkey != expected_script { + let legacy_commitments = dest.legacy_commitment_bytes()?; + let mut matched = false; + for bytes in legacy_commitments { + let expected_script = + sigset.output_script(&dest_bytes, self.checkpoints.config.sigset_threshold)?; + if output.script_pubkey == expected_script { + matched = true; + dest_bytes = bytes; + break; + } + } + if !matched { return Err(OrgaError::App( "Output script does not match signer set".to_string(), ))?; diff --git a/src/bitcoin/relayer.rs b/src/bitcoin/relayer.rs index 935afcb3..421ca90b 100644 --- a/src/bitcoin/relayer.rs +++ b/src/bitcoin/relayer.rs @@ -2,7 +2,10 @@ use super::signatory::Signatory; use super::SignatorySet; use super::SIGSET_THRESHOLD; use crate::app::Dest; +use crate::app::Identity; +use crate::app::InnerApp; use crate::app_client; +use crate::bitcoin::checkpoint::CheckpointStatus; use crate::bitcoin::deposit_index::{Deposit, DepositIndex}; use crate::bitcoin::{adapter::Adapter, header_queue::WrappedHeader}; use crate::error::Error; @@ -41,6 +44,11 @@ pub struct DepositsQuery { pub receiver: String, } +#[derive(Serialize, Deserialize)] +pub struct SigsetQuery { + pub index: Option, +} + pub struct Relayer { btc_client: Arc>, app_client_addr: String, @@ -269,21 +277,38 @@ impl Relayer { ); let sigset_route = warp::path("sigset") - .and_then(move || async { + .and(warp::query::()) + .and_then(move |query: SigsetQuery| async move { let sigset = app_client(app_client_addr) - .query(|app: crate::app::InnerApp| { - let building = app.bitcoin.checkpoints.building()?; - let est_miner_fee = - (app.bitcoin.checkpoints.active_sigset()?.est_witness_vsize() + 40) - * building.fee_rate - * app.bitcoin.checkpoints.config.user_fee_factor - / 10_000; - let deposits_enabled = building.deposits_enabled; + .query(move |app: crate::app::InnerApp| { + let (chkpt, pending) = match query.index { + Some(index) => (&app.bitcoin.checkpoints.get(index)?, vec![]), + None => ( + &*app.bitcoin.checkpoints.building()?, + app.bitcoin.checkpoints.pending()?, + ), + }; + + let maybe_chkpt_tx = (chkpt.status != CheckpointStatus::Building) + .then(|| chkpt.checkpoint_tx()) + .transpose()?; + + // TODO: use self.miner_fee_rate() once this endpoint + // takes an optional `index` arg. + let est_miner_fee = (chkpt.sigset.est_witness_vsize() + 40) + * chkpt.fee_rate + * app.bitcoin.checkpoints.config.user_fee_factor + / 10_000; + let sigset = RawSignatorySet::new( - app.bitcoin.checkpoints.active_sigset()?, + chkpt.sigset.clone(), 0.015, est_miner_fee as f64 / 100_000_000.0, - deposits_enabled, + chkpt.deposits_enabled, + maybe_chkpt_tx, + chkpt.signed_at_btc_height, + chkpt.create_time(), + pending, ); Ok(sigset) }) @@ -440,7 +465,9 @@ impl Relayer { return Ok(()); } - if let Some((dest, _)) = script_guard.as_ref().unwrap().scripts.get(&script) { + if let Some((dest, sigset_index)) = + script_guard.as_ref().unwrap().scripts.get(&script) + { let bitcoin_address = bitcoin::Address::from_script( &output.script_pubkey.clone(), super::NETWORK, @@ -451,10 +478,22 @@ impl Relayer { Some(addr) => addr, None => continue, }; + + let miner_fee_rate = self.miner_fee_rate(sigset_index).await?; + let bridge_fee_rate = self.bridge_fee_rate(&dest, sigset_index)?; + index.insert_deposit( receiver_addr, bitcoin_address, - Deposit::new(txid, vout as u32, output.value, None), + Deposit { + txid, + vout: vout as u32, + amount: output.value, + height: None, + sigset_index, + miner_fee_rate, + bridge_fee_rate, + }, ) } } @@ -464,6 +503,38 @@ impl Relayer { Ok(()) } + pub async fn miner_fee_rate(&self, sigset_index: u32) -> Result { + let client = app_client(&self.app_client_addr); + let miner_fee_rate = client + .query(|app: InnerApp| { + let chkpt = app.bitcoin.checkpoints.get(sigset_index)?; + let est_miner_fee = (chkpt.sigset.est_witness_vsize() + 40) + * chkpt.fee_rate + * app.bitcoin.checkpoints.config.user_fee_factor + / 10_000; + + Ok(est_miner_fee as f64 / 100_000_000.0) + }) + .await?; + + Ok(miner_fee_rate) + } + + pub fn bridge_fee_rate(&self, dest: &Dest, _sigset_index: u32) -> Result { + // TODO: fee should depend on sigset index + let fee_rate = if dest.is_fee_exempt() { + 0.0 + } else if matches!(dest, Dest::Ibc { .. }) { + // deposit fee + transfer fee + 0.015 + } else { + // deposit fee + 0.01 + }; + + Ok(fee_rate) + } + pub async fn start_emergency_disbursal_transaction_relay(&mut self) -> Result<()> { info!("Starting emergency disbursal transaction relay..."); @@ -818,7 +889,9 @@ impl Relayer { let mut hash = bitcoin::BlockHash::from_inner(hash.into_inner()); for _ in 0..n { - let block = self.btc_client().await.get_block(&hash.clone()).await?; + let Ok(block) = self.btc_client().await.get_block(&hash.clone()).await else { + return Ok(blocks); + }; hash = block.header.prev_blockhash; let mut block_bytes = vec![]; @@ -885,6 +958,7 @@ impl Relayer { let outpoint = (txid.into_inner(), output.vout); let dest = output.dest.clone(); let vout = output.vout; + let sigset_index = output.sigset_index; let contains_outpoint = app_client(&self.app_client_addr) .query(|app| app.bitcoin.processed_outpoints.contains(outpoint)) .await?; @@ -901,16 +975,22 @@ impl Relayer { return Ok(()); } + let miner_fee_rate = self.miner_fee_rate(sigset_index).await?; + let bridge_fee_rate = self.bridge_fee_rate(&dest, sigset_index)?; + let mut index_guard = index.lock().await; index_guard.insert_deposit( receiver_addr, deposit_address.clone(), - Deposit::new( + Deposit { txid, vout, - tx.output.get(vout as usize).unwrap().value, - Some(height.into()), - ), + amount: tx.output.get(vout as usize).unwrap().value, + height: Some(height.into()), + sigset_index, + miner_fee_rate, + bridge_fee_rate, + }, ); } @@ -1084,26 +1164,47 @@ pub struct OutputMatch { vout: u32, dest: Dest, } +#[derive(Clone, Serialize, Deserialize, Debug)] +pub struct BridgeFeeOverrides { + /// Map of channel id to bridge fee rate + pub ibc: HashMap, +} + +impl Default for BridgeFeeOverrides { + fn default() -> Self { + Self { + ibc: HashMap::from([(crate::app::OSMOSIS_CHANNEL_ID.to_string(), 0.0)]), + } + } +} #[derive(Clone, Serialize, Deserialize, Debug)] +#[serde(rename_all = "camelCase")] pub struct RawSignatorySet { pub signatories: Vec, pub index: u32, - #[serde(rename = "bridgeFeeRate")] pub bridge_fee_rate: f64, - #[serde(rename = "minerFeeRate")] pub miner_fee_rate: f64, - #[serde(rename = "depositsEnabled")] pub deposits_enabled: bool, pub threshold: (u64, u64), + pub bridge_fee_overrides: BridgeFeeOverrides, + pub txid: Option, + pub signed_at_btc_height: Option, + pub create_time: u64, + pub pending: Vec<(Dest, Identity, u64)>, } impl RawSignatorySet { + #[allow(clippy::too_many_arguments)] pub fn new( sigset: SignatorySet, bridge_fee_rate: f64, miner_fee_rate: f64, deposits_enabled: bool, + maybe_checkpoint_tx: Option>, + signed_at_btc_height: Option, + create_time: u64, + pending: Vec<(Dest, Identity, u64)>, ) -> Self { let signatories = sigset .iter() @@ -1121,6 +1222,11 @@ impl RawSignatorySet { threshold: (9, 10), #[cfg(not(feature = "testnet"))] threshold: (2, 3), + bridge_fee_overrides: BridgeFeeOverrides::default(), + txid: maybe_checkpoint_tx.map(|tx| tx.txid().to_string()), + signed_at_btc_height, + create_time, + pending, } } }