From 0626acbc1b183dfa82417169bf0268dd8b7ccd1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Thu, 30 Jan 2025 18:29:47 -0300 Subject: [PATCH 01/24] chore: use new SDK branch version --- Cargo.toml | 103 +++++++++++++++++++++++++++-------------------------- 1 file changed, 53 insertions(+), 50 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index baab2e6f..b6a38809 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,17 +1,18 @@ [workspace] -members = ["crates/aggregator", -"crates/operator", -"bin/incredible-squaring-avs", -"crates/cli", -"crates/config", -"crates/bindings", -"crates/avs", -"crates/challenger", -"crates/chainio", -"crates/testing-utils", -"crates/task_generator", -"crates/operator_2", -"crates/slasher" +members = [ + "crates/aggregator", + "crates/operator", + "bin/incredible-squaring-avs", + "crates/cli", + "crates/config", + "crates/bindings", + "crates/avs", + "crates/challenger", + "crates/chainio", + "crates/testing-utils", + "crates/task_generator", + "crates/operator_2", + "crates/slasher", ] resolver = "2" @@ -40,57 +41,59 @@ clap = "4.5.11" eyre = "0.6.12" tokio = { version = "1.21", default-features = false } thiserror = "2" -ark-bn254 = { version = "0.5.0", features = ["curve"], default-features = false } +ark-bn254 = { version = "0.5.0", features = [ + "curve", +], default-features = false } futures-util = "0.3.31" metrics = "0.24.0" metrics-util = "0.19.0" reqwest = "0.12.9" serde_json = "1.0.120" #alloy -alloy = { version = "0.7", features = ["full","signer-keystore","reqwest"] } +alloy = { version = "0.7", features = ["full", "signer-keystore", "reqwest"] } alloy-primitives = "0.8" alloy-provider = "0.7" serde = "1.0.203" tracing = "0.1.40" tempfile = "3" -rust-bls-bn254 = {git = "https://github.com/Layr-Labs/rust-bls-bn254.git", rev = "be3ef87", features = ["std"] } +rust-bls-bn254 = { git = "https://github.com/Layr-Labs/rust-bls-bn254.git", rev = "be3ef87", features = [ + "std", +] } rand_core = "0.6" toml = "0.8" -incredible-operator = {path = "crates/operator/" , features = ["default"]} -incredible-aggregator = {path = "crates/aggregator/"} -incredible-squaring-avs = {path = "bin/incredible-squaring-avs/"} -incredible-cli-runner = {path = "crates/cli/"} -incredible-config = {path = "crates/config/"} -incredible-bindings = {path = "crates/bindings/"} -incredible-metrics = {path = "crates/metrics/"} -incredible-avs = {path = "crates/avs/"} -incredible-challenger = {path = "crates/challenger/"} -incredible-chainio = {path = "crates/chainio/"} -incredible-testing-utils = {path = "crates/testing-utils/"} -incredible-task-generator = {path = "crates/task_generator/"} -incredible-operator-2 = {path = "crates/operator_2/" , features = ["default"]} -incredible-slasher = {path = "crates/slasher/"} +incredible-operator = { path = "crates/operator/", features = ["default"] } +incredible-aggregator = { path = "crates/aggregator/" } +incredible-squaring-avs = { path = "bin/incredible-squaring-avs/" } +incredible-cli-runner = { path = "crates/cli/" } +incredible-config = { path = "crates/config/" } +incredible-bindings = { path = "crates/bindings/" } +incredible-metrics = { path = "crates/metrics/" } +incredible-avs = { path = "crates/avs/" } +incredible-challenger = { path = "crates/challenger/" } +incredible-chainio = { path = "crates/chainio/" } +incredible-testing-utils = { path = "crates/testing-utils/" } +incredible-task-generator = { path = "crates/task_generator/" } +incredible-operator-2 = { path = "crates/operator_2/", features = ["default"] } +incredible-slasher = { path = "crates/slasher/" } # eigensdk-rs -eigen-client-avsregistry = { git = "https://github.com/Layr-Labs/eigensdk-rs", rev = "046d497"} -eigen-testing-utils ={ git = "https://github.com/Layr-Labs/eigensdk-rs", rev = "046d497"} -eigen-crypto-bls = { git = "https://github.com/Layr-Labs/eigensdk-rs", rev = "046d497"} -eigen-types = { git = "https://github.com/Layr-Labs/eigensdk-rs", rev = "046d497"} -eigen-metrics = { git = "https://github.com/Layr-Labs/eigensdk-rs", rev = "046d497"} -eigen-utils = { git = "https://github.com/Layr-Labs/eigensdk-rs", rev = "046d497"} -eigen-contract-bindings = { git = "https://github.com/Layr-Labs/eigensdk-rs", rev = "046d497"} -eigen-cli ={ git = "https://github.com/Layr-Labs/eigensdk-rs", rev = "046d497"} -eigen-logging ={ git = "https://github.com/Layr-Labs/eigensdk-rs", rev = "046d497"} -eigen-crypto-bn254 = { git = "https://github.com/Layr-Labs/eigensdk-rs", rev = "046d497"} -eigen-client-elcontracts = { git = "https://github.com/Layr-Labs/eigensdk-rs", rev = "046d497"} -eigen-services-operatorsinfo = { git = "https://github.com/Layr-Labs/eigensdk-rs", rev = "046d497"} -eigen-services-avsregistry = { git = "https://github.com/Layr-Labs/eigensdk-rs", rev = "046d497"} -eigen-services-blsaggregation = { git = "https://github.com/Layr-Labs/eigensdk-rs", rev = "046d497"} -eigen-metrics-collectors-rpc-calls = { git = "https://github.com/Layr-Labs/eigensdk-rs", rev = "046d497"} -eigen-client-eth = { git = "https://github.com/Layr-Labs/eigensdk-rs", rev = "046d497"} -eigen-nodeapi = { git = "https://github.com/Layr-Labs/eigensdk-rs", rev = "046d497"} - - - +eigen-aggregator = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-client-avsregistry = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-testing-utils = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-crypto-bls = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-types = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-metrics = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-utils = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-contract-bindings = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-cli = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-logging = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-crypto-bn254 = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-client-elcontracts = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-services-operatorsinfo = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-services-avsregistry = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-services-blsaggregation = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-metrics-collectors-rpc-calls = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-client-eth = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-nodeapi = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } From 4224ecdf8d0d8945a6f84aad0c5afc0fe77d6d45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Thu, 30 Jan 2025 18:30:41 -0300 Subject: [PATCH 02/24] chore: regenerate lockfile --- Cargo.lock | 842 +++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 682 insertions(+), 160 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2b0047ce..0c884784 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -72,24 +72,49 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02b0561294ccedc6181e5528b850b4579e3fbde696507baa00109bfd9054c5bb" dependencies = [ - "alloy-consensus", - "alloy-contract", + "alloy-consensus 0.7.3", + "alloy-contract 0.7.3", "alloy-core", - "alloy-eips", - "alloy-genesis", - "alloy-network", - "alloy-provider", - "alloy-pubsub", - "alloy-rpc-client", - "alloy-rpc-types", - "alloy-serde", - "alloy-signer", + "alloy-eips 0.7.3", + "alloy-genesis 0.7.3", + "alloy-network 0.7.3", + "alloy-provider 0.7.3", + "alloy-pubsub 0.7.3", + "alloy-rpc-client 0.7.3", + "alloy-rpc-types 0.7.3", + "alloy-serde 0.7.3", + "alloy-signer 0.7.3", + "alloy-signer-local 0.7.3", + "alloy-transport 0.7.3", + "alloy-transport-http 0.7.3", + "alloy-transport-ipc 0.7.3", + "alloy-transport-ws 0.7.3", +] + +[[package]] +name = "alloy" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbcc41e8a11a4975b18ec6afba2cc48d591fa63336a4c526dacb50479a8d6b35" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-contract 0.9.2", + "alloy-core", + "alloy-eips 0.9.2", + "alloy-genesis 0.9.2", + "alloy-network 0.9.2", + "alloy-provider 0.9.2", + "alloy-pubsub 0.9.2", + "alloy-rpc-client 0.9.2", + "alloy-rpc-types 0.9.2", + "alloy-serde 0.9.2", + "alloy-signer 0.9.2", "alloy-signer-aws", - "alloy-signer-local", - "alloy-transport", - "alloy-transport-http", - "alloy-transport-ipc", - "alloy-transport-ws", + "alloy-signer-local 0.9.2", + "alloy-transport 0.9.2", + "alloy-transport-http 0.9.2", + "alloy-transport-ipc 0.9.2", + "alloy-transport-ws 0.9.2", ] [[package]] @@ -109,10 +134,28 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a101d4d016f47f13890a74290fdd17b05dd175191d9337bc600791fb96e4dea8" dependencies = [ - "alloy-eips", + "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 0.7.3", + "alloy-trie", + "auto_impl", + "c-kzg", + "derive_more", + "k256", + "serde", +] + +[[package]] +name = "alloy-consensus" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4138dc275554afa6f18c4217262ac9388790b2fc393c2dfe03c51d357abf013" +dependencies = [ + "alloy-eips 0.9.2", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.9.2", "alloy-trie", "auto_impl", "c-kzg", @@ -127,11 +170,25 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa60357dda9a3d0f738f18844bd6d0f4a5924cc5cf00bfad2ff1369897966123" dependencies = [ - "alloy-consensus", - "alloy-eips", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 0.7.3", + "serde", +] + +[[package]] +name = "alloy-consensus-any" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa04e1882c31288ce1028fdf31b6ea94cfa9eafa2e497f903ded631c8c6a42c" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-eips 0.9.2", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.9.2", "serde", ] @@ -143,14 +200,35 @@ checksum = "2869e4fb31331d3b8c58c7db567d1e4e4e94ef64640beda3b6dd9b7045690941" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", - "alloy-network", - "alloy-network-primitives", + "alloy-network 0.7.3", + "alloy-network-primitives 0.7.3", + "alloy-primitives", + "alloy-provider 0.7.3", + "alloy-pubsub 0.7.3", + "alloy-rpc-types-eth 0.7.3", + "alloy-sol-types", + "alloy-transport 0.7.3", + "futures", + "futures-util", + "thiserror 2.0.7", +] + +[[package]] +name = "alloy-contract" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f21886c1fea0626f755a49b2ac653b396fb345233f6170db2da3d0ada31560c" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network 0.9.2", + "alloy-network-primitives 0.9.2", "alloy-primitives", - "alloy-provider", - "alloy-pubsub", - "alloy-rpc-types-eth", + "alloy-provider 0.9.2", + "alloy-pubsub 0.9.2", + "alloy-rpc-types-eth 0.9.2", "alloy-sol-types", - "alloy-transport", + "alloy-transport 0.9.2", "futures", "futures-util", "thiserror 2.0.7", @@ -210,6 +288,19 @@ dependencies = [ "serde", ] +[[package]] +name = "alloy-eip7702" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cabf647eb4650c91a9d38cb6f972bb320009e7e9d61765fb688a86f1563b33e8" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "derive_more", + "k256", + "serde", +] + [[package]] name = "alloy-eips" version = "0.7.3" @@ -217,10 +308,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6755b093afef5925f25079dd5a7c8d096398b804ba60cb5275397b06b31689" dependencies = [ "alloy-eip2930", - "alloy-eip7702", + "alloy-eip7702 0.4.2", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.7.3", + "c-kzg", + "derive_more", + "once_cell", + "serde", + "sha2", +] + +[[package]] +name = "alloy-eips" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52dd5869ed09e399003e0e0ec6903d981b2a92e74c5d37e6b40890bad2517526" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702 0.5.0", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 0.9.2", "c-kzg", "derive_more", "once_cell", @@ -235,7 +344,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aeec8e6eab6e52b7c9f918748c9b811e87dbef7312a2e3a2ca1729a92966a6af" dependencies = [ "alloy-primitives", - "alloy-serde", + "alloy-serde 0.7.3", + "alloy-trie", + "serde", +] + +[[package]] +name = "alloy-genesis" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7d2a7fe5c1a9bd6793829ea21a636f30fc2b3f5d2e7418ba86d96e41dd1f460" +dependencies = [ + "alloy-eips 0.9.2", + "alloy-primitives", + "alloy-serde 0.9.2", "alloy-trie", "serde", ] @@ -266,22 +388,61 @@ dependencies = [ "tracing", ] +[[package]] +name = "alloy-json-rpc" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2008bedb8159a255b46b7c8614516eda06679ea82f620913679afbd8031fea72" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "serde", + "serde_json", + "thiserror 2.0.7", + "tracing", +] + [[package]] name = "alloy-network" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "209a1882a08e21aca4aac6e2a674dc6fcf614058ef8cb02947d63782b1899552" dependencies = [ - "alloy-consensus", - "alloy-consensus-any", - "alloy-eips", - "alloy-json-rpc", - "alloy-network-primitives", + "alloy-consensus 0.7.3", + "alloy-consensus-any 0.7.3", + "alloy-eips 0.7.3", + "alloy-json-rpc 0.7.3", + "alloy-network-primitives 0.7.3", + "alloy-primitives", + "alloy-rpc-types-any 0.7.3", + "alloy-rpc-types-eth 0.7.3", + "alloy-serde 0.7.3", + "alloy-signer 0.7.3", + "alloy-sol-types", + "async-trait", + "auto_impl", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.7", +] + +[[package]] +name = "alloy-network" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4556f01fe41d0677495df10a648ddcf7ce118b0e8aa9642a0e2b6dd1fb7259de" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-consensus-any 0.9.2", + "alloy-eips 0.9.2", + "alloy-json-rpc 0.9.2", + "alloy-network-primitives 0.9.2", "alloy-primitives", - "alloy-rpc-types-any", - "alloy-rpc-types-eth", - "alloy-serde", - "alloy-signer", + "alloy-rpc-types-any 0.9.2", + "alloy-rpc-types-eth 0.9.2", + "alloy-serde 0.9.2", + "alloy-signer 0.9.2", "alloy-sol-types", "async-trait", "auto_impl", @@ -297,10 +458,23 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c20219d1ad261da7a6331c16367214ee7ded41d001fabbbd656fbf71898b2773" dependencies = [ - "alloy-consensus", - "alloy-eips", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", - "alloy-serde", + "alloy-serde 0.7.3", + "serde", +] + +[[package]] +name = "alloy-network-primitives" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31c3c6b71340a1d076831823f09cb6e02de01de5c6630a9631bdb36f947ff80" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-eips 0.9.2", + "alloy-primitives", + "alloy-serde 0.9.2", "serde", ] @@ -339,19 +513,59 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eefa6f4c798ad01f9b4202d02cea75f5ec11fa180502f4701e2b47965a8c0bb" dependencies = [ "alloy-chains", - "alloy-consensus", - "alloy-eips", - "alloy-json-rpc", - "alloy-network", - "alloy-network-primitives", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", + "alloy-json-rpc 0.7.3", + "alloy-network 0.7.3", + "alloy-network-primitives 0.7.3", "alloy-primitives", - "alloy-pubsub", - "alloy-rpc-client", - "alloy-rpc-types-eth", - "alloy-transport", - "alloy-transport-http", - "alloy-transport-ipc", - "alloy-transport-ws", + "alloy-pubsub 0.7.3", + "alloy-rpc-client 0.7.3", + "alloy-rpc-types-eth 0.7.3", + "alloy-transport 0.7.3", + "alloy-transport-http 0.7.3", + "alloy-transport-ipc 0.7.3", + "alloy-transport-ws 0.7.3", + "async-stream", + "async-trait", + "auto_impl", + "dashmap", + "futures", + "futures-utils-wasm", + "lru", + "parking_lot 0.12.3", + "pin-project", + "reqwest 0.12.9", + "schnellru", + "serde", + "serde_json", + "thiserror 2.0.7", + "tokio", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-provider" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a22c4441b3ebe2d77fa9cf629ba68c3f713eb91779cff84275393db97eddd82" +dependencies = [ + "alloy-chains", + "alloy-consensus 0.9.2", + "alloy-eips 0.9.2", + "alloy-json-rpc 0.9.2", + "alloy-network 0.9.2", + "alloy-network-primitives 0.9.2", + "alloy-primitives", + "alloy-pubsub 0.9.2", + "alloy-rpc-client 0.9.2", + "alloy-rpc-types-eth 0.9.2", + "alloy-transport 0.9.2", + "alloy-transport-http 0.9.2", + "alloy-transport-ipc 0.9.2", + "alloy-transport-ws 0.9.2", "async-stream", "async-trait", "auto_impl", @@ -378,9 +592,28 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aac9a7210e0812b1d814118f426f57eb7fc260a419224dd1c76d169879c06907" dependencies = [ - "alloy-json-rpc", + "alloy-json-rpc 0.7.3", "alloy-primitives", - "alloy-transport", + "alloy-transport 0.7.3", + "bimap", + "futures", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower", + "tracing", +] + +[[package]] +name = "alloy-pubsub" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2269fd635f7b505f27c63a3cb293148cd02301efce4c8bdd9ff54fbfc4a20e23" +dependencies = [ + "alloy-json-rpc 0.9.2", + "alloy-primitives", + "alloy-transport 0.9.2", "bimap", "futures", "serde", @@ -419,13 +652,39 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed30bf1041e84cabc5900f52978ca345dd9969f2194a945e6fdec25b0620705c" dependencies = [ - "alloy-json-rpc", + "alloy-json-rpc 0.7.3", + "alloy-primitives", + "alloy-pubsub 0.7.3", + "alloy-transport 0.7.3", + "alloy-transport-http 0.7.3", + "alloy-transport-ipc 0.7.3", + "alloy-transport-ws 0.7.3", + "futures", + "pin-project", + "reqwest 0.12.9", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-rpc-client" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d06a292b37e182e514903ede6e623b9de96420e8109ce300da288a96d88b7e4b" +dependencies = [ + "alloy-json-rpc 0.9.2", "alloy-primitives", - "alloy-pubsub", - "alloy-transport", - "alloy-transport-http", - "alloy-transport-ipc", - "alloy-transport-ws", + "alloy-pubsub 0.9.2", + "alloy-transport 0.9.2", + "alloy-transport-http 0.9.2", + "alloy-transport-ipc 0.9.2", + "alloy-transport-ws 0.9.2", "futures", "pin-project", "reqwest 0.12.9", @@ -446,9 +705,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ab686b0fa475d2a4f5916c5f07797734a691ec58e44f0f55d4746ea39cbcefb" dependencies = [ "alloy-primitives", - "alloy-rpc-types-engine", - "alloy-rpc-types-eth", - "alloy-serde", + "alloy-rpc-types-engine 0.7.3", + "alloy-rpc-types-eth 0.7.3", + "alloy-serde 0.7.3", + "serde", +] + +[[package]] +name = "alloy-rpc-types" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9383845dd924939e7ab0298bbfe231505e20928907d7905aa3bf112287305e06" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-engine 0.9.2", + "alloy-rpc-types-eth 0.9.2", + "alloy-serde 0.9.2", "serde", ] @@ -458,9 +730,20 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "200661999b6e235d9840be5d60a6e8ae2f0af9eb2a256dd378786744660e36ec" dependencies = [ - "alloy-consensus-any", - "alloy-rpc-types-eth", - "alloy-serde", + "alloy-consensus-any 0.7.3", + "alloy-rpc-types-eth 0.7.3", + "alloy-serde 0.7.3", +] + +[[package]] +name = "alloy-rpc-types-any" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca445cef0eb6c2cf51cfb4e214fbf1ebd00893ae2e6f3b944c8101b07990f988" +dependencies = [ + "alloy-consensus-any 0.9.2", + "alloy-rpc-types-eth 0.9.2", + "alloy-serde 0.9.2", ] [[package]] @@ -469,11 +752,27 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d297268357e3eae834ddd6888b15f764cbc0f4b3be9265f5f6ec239013f3d68" dependencies = [ - "alloy-consensus", - "alloy-eips", + "alloy-consensus 0.7.3", + "alloy-eips 0.7.3", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 0.7.3", + "derive_more", + "serde", + "strum", +] + +[[package]] +name = "alloy-rpc-types-engine" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f821f30344862a0b6eb9a1c2eb91dfb2ff44c7489f37152a526cdcab79264" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-eips 0.9.2", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.9.2", "derive_more", "serde", "strum", @@ -485,13 +784,13 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0600b8b5e2dc0cab12cbf91b5a885c35871789fb7b3a57b434bd4fced5b7a8b" dependencies = [ - "alloy-consensus", - "alloy-consensus-any", - "alloy-eips", - "alloy-network-primitives", + "alloy-consensus 0.7.3", + "alloy-consensus-any 0.7.3", + "alloy-eips 0.7.3", + "alloy-network-primitives 0.7.3", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 0.7.3", "alloy-sol-types", "derive_more", "itertools 0.13.0", @@ -499,6 +798,26 @@ dependencies = [ "serde_json", ] +[[package]] +name = "alloy-rpc-types-eth" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0938bc615c02421bd86c1733ca7205cc3d99a122d9f9bff05726bd604b76a5c2" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-consensus-any 0.9.2", + "alloy-eips 0.9.2", + "alloy-network-primitives 0.9.2", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.9.2", + "alloy-sol-types", + "itertools 0.13.0", + "serde", + "serde_json", + "thiserror 2.0.7", +] + [[package]] name = "alloy-serde" version = "0.7.3" @@ -510,6 +829,17 @@ dependencies = [ "serde_json", ] +[[package]] +name = "alloy-serde" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae0465c71d4dced7525f408d84873aeebb71faf807d22d74c4a426430ccd9b55" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + [[package]] name = "alloy-signer" version = "0.7.3" @@ -524,16 +854,30 @@ dependencies = [ "thiserror 2.0.7", ] +[[package]] +name = "alloy-signer" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bfa395ad5cc952c82358d31e4c68b27bf4a89a5456d9b27e226e77dac50e4ff" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "elliptic-curve", + "k256", + "thiserror 2.0.7", +] + [[package]] name = "alloy-signer-aws" -version = "0.7.3" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71ce77227fdb9059fd7a3b38a8679c0dae95d81886ee8c13ef8ad99d74866bbd" +checksum = "0eb06810c34427d499863817eb506acf57cb9ded9224b374116cae4e22dbd4e9" dependencies = [ - "alloy-consensus", - "alloy-network", + "alloy-consensus 0.9.2", + "alloy-network 0.9.2", "alloy-primitives", - "alloy-signer", + "alloy-signer 0.9.2", "async-trait", "aws-sdk-kms", "k256", @@ -548,10 +892,10 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd6d988cb6cd7d2f428a74476515b1a6e901e08c796767f9f93311ab74005c8b" dependencies = [ - "alloy-consensus", - "alloy-network", + "alloy-consensus 0.7.3", + "alloy-network 0.7.3", "alloy-primitives", - "alloy-signer", + "alloy-signer 0.7.3", "async-trait", "eth-keystore", "k256", @@ -559,6 +903,22 @@ dependencies = [ "thiserror 2.0.7", ] +[[package]] +name = "alloy-signer-local" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbdc63ce9eda1283fcbaca66ba4a414b841c0e3edbeef9c86a71242fc9e84ccc" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-network 0.9.2", + "alloy-primitives", + "alloy-signer 0.9.2", + "async-trait", + "k256", + "rand", + "thiserror 2.0.7", +] + [[package]] name = "alloy-sol-macro" version = "0.8.15" @@ -638,7 +998,27 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d69d36982b9e46075ae6b792b0f84208c6c2c15ad49f6c500304616ef67b70e0" dependencies = [ - "alloy-json-rpc", + "alloy-json-rpc 0.7.3", + "base64 0.22.1", + "futures-util", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.7", + "tokio", + "tower", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-transport" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d17722a198f33bbd25337660787aea8b8f57814febb7c746bc30407bdfc39448" +dependencies = [ + "alloy-json-rpc 0.9.2", "base64 0.22.1", "futures-util", "futures-utils-wasm", @@ -658,8 +1038,23 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e02ffd5d93ffc51d72786e607c97de3b60736ca3e636ead0ec1f7dce68ea3fd" dependencies = [ - "alloy-json-rpc", - "alloy-transport", + "alloy-json-rpc 0.7.3", + "alloy-transport 0.7.3", + "reqwest 0.12.9", + "serde_json", + "tower", + "tracing", + "url", +] + +[[package]] +name = "alloy-transport-http" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1509599021330a31c4a6816b655e34bf67acb1cc03c564e09fd8754ff6c5de" +dependencies = [ + "alloy-json-rpc 0.9.2", + "alloy-transport 0.9.2", "reqwest 0.12.9", "serde_json", "tower", @@ -673,9 +1068,28 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b6f8b87cb84bae6d81ae6604b37741c8116f84f9784a0ecc6038c302e679d23" dependencies = [ - "alloy-json-rpc", - "alloy-pubsub", - "alloy-transport", + "alloy-json-rpc 0.7.3", + "alloy-pubsub 0.7.3", + "alloy-transport 0.7.3", + "bytes", + "futures", + "interprocess", + "pin-project", + "serde_json", + "tokio", + "tokio-util 0.7.13", + "tracing", +] + +[[package]] +name = "alloy-transport-ipc" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4da44bc9a5155ab599666d26decafcf12204b72a80eeaba7c5e234ee8ac205" +dependencies = [ + "alloy-json-rpc 0.9.2", + "alloy-pubsub 0.9.2", + "alloy-transport 0.9.2", "bytes", "futures", "interprocess", @@ -692,8 +1106,26 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c085c4e1e7680b723ffc558f61a22c061ed3f70eb3436f93f3936779c59cec1" dependencies = [ - "alloy-pubsub", - "alloy-transport", + "alloy-pubsub 0.7.3", + "alloy-transport 0.7.3", + "futures", + "http 1.2.0", + "rustls 0.23.20", + "serde_json", + "tokio", + "tokio-tungstenite 0.24.0", + "tracing", + "ws_stream_wasm", +] + +[[package]] +name = "alloy-transport-ws" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58011745b2f17b334db40df9077d75b181f78360a5bc5c35519e15d4bfce15e2" +dependencies = [ + "alloy-pubsub 0.9.2", + "alloy-transport 0.9.2", "futures", "http 1.2.0", "rustls 0.23.20", @@ -2376,22 +2808,22 @@ dependencies = [ [[package]] name = "eigen-cli" -version = "0.1.1" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?rev=046d497#046d497e5128507c9db6d894a5dfbf399fdc6471" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ - "alloy", - "alloy-json-rpc", + "alloy 0.9.2", + "alloy-json-rpc 0.9.2", "alloy-primitives", - "alloy-provider", - "alloy-transport", + "alloy-provider 0.9.2", + "alloy-transport 0.9.2", "ark-ec 0.5.0", "ark-ff 0.5.0", "ark-serialize 0.5.0", "clap", "colored", + "eigen-common", "eigen-crypto-bls", "eigen-testing-utils", - "eigen-types", "eigen-utils", "eth-keystore", "hex", @@ -2409,16 +2841,17 @@ dependencies = [ [[package]] name = "eigen-client-avsregistry" -version = "0.1.1" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?rev=046d497#046d497e5128507c9db6d894a5dfbf399fdc6471" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ - "alloy", + "alloy 0.9.2", "alloy-primitives", - "alloy-signer", - "alloy-signer-local", + "alloy-signer 0.9.2", + "alloy-signer-local 0.9.2", "ark-ff 0.5.0", "async-trait", "eigen-client-elcontracts", + "eigen-common", "eigen-crypto-bls", "eigen-logging", "eigen-types", @@ -2430,12 +2863,12 @@ dependencies = [ [[package]] name = "eigen-client-elcontracts" -version = "0.1.1" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?rev=046d497#046d497e5128507c9db6d894a5dfbf399fdc6471" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ - "alloy", + "alloy 0.9.2", "alloy-primitives", - "alloy-sol-types", + "eigen-common", "eigen-crypto-bls", "eigen-logging", "eigen-types", @@ -2446,11 +2879,11 @@ dependencies = [ [[package]] name = "eigen-client-eth" -version = "0.1.1" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?rev=046d497#046d497e5128507c9db6d894a5dfbf399fdc6471" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ - "alloy", - "alloy-json-rpc", + "alloy 0.9.2", + "alloy-json-rpc 0.9.2", "alloy-primitives", "alloy-rlp", "async-trait", @@ -2461,10 +2894,23 @@ dependencies = [ "url", ] +[[package]] +name = "eigen-common" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +dependencies = [ + "alloy-provider 0.9.2", + "alloy-pubsub 0.9.2", + "alloy-signer-local 0.9.2", + "alloy-transport 0.9.2", + "alloy-transport-http 0.9.2", + "url", +] + [[package]] name = "eigen-crypto-bls" -version = "0.1.1" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?rev=046d497#046d497e5128507c9db6d894a5dfbf399fdc6471" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ "alloy-primitives", "ark-bn254 0.5.0", @@ -2480,8 +2926,8 @@ dependencies = [ [[package]] name = "eigen-crypto-bn254" -version = "0.1.1" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?rev=046d497#046d497e5128507c9db6d894a5dfbf399fdc6471" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ "ark-bn254 0.5.0", "ark-ec 0.5.0", @@ -2491,8 +2937,8 @@ dependencies = [ [[package]] name = "eigen-logging" -version = "0.1.1" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?rev=046d497#046d497e5128507c9db6d894a5dfbf399fdc6471" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ "ctor", "once_cell", @@ -2502,8 +2948,8 @@ dependencies = [ [[package]] name = "eigen-metrics" -version = "0.1.1" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?rev=046d497#046d497e5128507c9db6d894a5dfbf399fdc6471" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ "eigen-logging", "metrics", @@ -2513,8 +2959,8 @@ dependencies = [ [[package]] name = "eigen-metrics-collectors-rpc-calls" -version = "0.1.1" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?rev=046d497#046d497e5128507c9db6d894a5dfbf399fdc6471" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ "eigen-logging", "metrics", @@ -2522,8 +2968,8 @@ dependencies = [ [[package]] name = "eigen-nodeapi" -version = "0.1.1" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?rev=046d497#046d497e5128507c9db6d894a5dfbf399fdc6471" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ "ntex", "serde", @@ -2534,8 +2980,8 @@ dependencies = [ [[package]] name = "eigen-services-avsregistry" -version = "0.1.1" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?rev=046d497#046d497e5128507c9db6d894a5dfbf399fdc6471" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ "alloy-primitives", "ark-bn254 0.5.0", @@ -2550,14 +2996,15 @@ dependencies = [ [[package]] name = "eigen-services-blsaggregation" -version = "0.1.1" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?rev=046d497#046d497e5128507c9db6d894a5dfbf399fdc6471" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ - "alloy", + "alloy 0.9.2", "alloy-primitives", "ark-bn254 0.5.0", "ark-ec 0.5.0", "eigen-client-avsregistry", + "eigen-common", "eigen-crypto-bls", "eigen-crypto-bn254", "eigen-logging", @@ -2572,13 +3019,14 @@ dependencies = [ [[package]] name = "eigen-services-operatorsinfo" -version = "0.1.1" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?rev=046d497#046d497e5128507c9db6d894a5dfbf399fdc6471" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ - "alloy", + "alloy 0.9.2", "alloy-primitives", "async-trait", "eigen-client-avsregistry", + "eigen-common", "eigen-crypto-bls", "eigen-logging", "eigen-types", @@ -2593,14 +3041,15 @@ dependencies = [ [[package]] name = "eigen-testing-utils" -version = "0.1.1" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?rev=046d497#046d497e5128507c9db6d894a5dfbf399fdc6471" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ - "alloy", + "alloy 0.9.2", "alloy-primitives", - "alloy-provider", - "alloy-rpc-types", - "alloy-transport", + "alloy-provider 0.9.2", + "alloy-rpc-types 0.9.2", + "alloy-transport 0.9.2", + "eigen-common", "eigen-utils", "serde", "serde_json", @@ -2610,8 +3059,8 @@ dependencies = [ [[package]] name = "eigen-types" -version = "0.1.1" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?rev=046d497#046d497e5128507c9db6d894a5dfbf399fdc6471" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ "alloy-primitives", "eigen-crypto-bls", @@ -2623,10 +3072,10 @@ dependencies = [ [[package]] name = "eigen-utils" -version = "0.1.1" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?rev=046d497#046d497e5128507c9db6d894a5dfbf399fdc6471" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ - "alloy", + "alloy 0.9.2", "reqwest 0.12.9", ] @@ -3371,8 +3820,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if 1.0.0", + "js-sys", "libc", "wasi", + "wasm-bindgen", ] [[package]] @@ -3721,6 +4172,7 @@ dependencies = [ "tokio", "tokio-rustls 0.26.1", "tower-service", + "webpki-roots 0.26.7", ] [[package]] @@ -3983,7 +4435,7 @@ dependencies = [ name = "incredible-aggregator" version = "0.0.1-alpha" dependencies = [ - "alloy", + "alloy 0.7.3", "ark-bn254 0.5.0", "ark-ec 0.5.0", "ark-serialize 0.4.2", @@ -4020,7 +4472,7 @@ dependencies = [ name = "incredible-avs" version = "0.0.1-alpha" dependencies = [ - "alloy", + "alloy 0.7.3", "clap", "eigen-nodeapi", "eyre", @@ -4045,7 +4497,7 @@ dependencies = [ name = "incredible-bindings" version = "0.0.1-alpha" dependencies = [ - "alloy", + "alloy 0.7.3", "serde", ] @@ -4053,7 +4505,7 @@ dependencies = [ name = "incredible-chainio" version = "0.0.1-alpha" dependencies = [ - "alloy", + "alloy 0.7.3", "eigen-client-avsregistry", "eigen-logging", "eigen-types", @@ -4072,8 +4524,8 @@ dependencies = [ name = "incredible-challenger" version = "0.0.1-alpha" dependencies = [ - "alloy", - "alloy-provider", + "alloy 0.7.3", + "alloy-provider 0.7.3", "eigen-utils", "eyre", "futures-util", @@ -4100,7 +4552,7 @@ dependencies = [ name = "incredible-config" version = "0.0.1-alpha" dependencies = [ - "alloy", + "alloy 0.7.3", "confy", "eigen-logging", "eigen-types", @@ -4119,8 +4571,8 @@ dependencies = [ name = "incredible-metrics" version = "0.0.1-alpha" dependencies = [ - "alloy", - "alloy-provider", + "alloy 0.7.3", + "alloy-provider 0.7.3", "eigen-metrics", "eyre", "futures-util", @@ -4137,8 +4589,8 @@ dependencies = [ name = "incredible-operator" version = "0.0.1-alpha" dependencies = [ - "alloy", - "alloy-provider", + "alloy 0.7.3", + "alloy-provider 0.7.3", "ark-ec 0.5.0", "ark-ff 0.5.0", "eigen-cli", @@ -4173,8 +4625,8 @@ dependencies = [ name = "incredible-operator-2" version = "0.0.1-alpha" dependencies = [ - "alloy", - "alloy-provider", + "alloy 0.7.3", + "alloy-provider 0.7.3", "ark-ec 0.5.0", "ark-ff 0.5.0", "eigen-cli", @@ -4214,7 +4666,7 @@ version = "0.0.1-alpha" name = "incredible-squaring-avs" version = "0.0.1-alpha" dependencies = [ - "alloy", + "alloy 0.7.3", "clap", "eigen-client-avsregistry", "eigen-client-elcontracts", @@ -4245,8 +4697,8 @@ dependencies = [ name = "incredible-task-generator" version = "0.0.1-alpha" dependencies = [ - "alloy", - "alloy-provider", + "alloy 0.7.3", + "alloy-provider 0.7.3", "eigen-utils", "eyre", "futures-util", @@ -4263,7 +4715,7 @@ dependencies = [ name = "incredible-testing-utils" version = "0.0.1-alpha" dependencies = [ - "alloy", + "alloy 0.7.3", "eigen-testing-utils", "eigen-utils", "tracing", @@ -5683,6 +6135,58 @@ version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" +[[package]] +name = "quinn" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.0", + "rustls 0.23.20", + "socket2", + "thiserror 2.0.7", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +dependencies = [ + "bytes", + "getrandom", + "rand", + "ring 0.17.8", + "rustc-hash 2.1.0", + "rustls 0.23.20", + "rustls-pki-types", + "slab", + "thiserror 2.0.7", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.52.0", +] + [[package]] name = "quote" version = "1.0.37" @@ -5933,7 +6437,10 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", + "quinn", + "rustls 0.23.20", "rustls-pemfile 2.2.0", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", @@ -5941,11 +6448,13 @@ dependencies = [ "system-configuration 0.6.1", "tokio", "tokio-native-tls", + "tokio-rustls 0.26.1", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", + "webpki-roots 0.26.7", "windows-registry", ] @@ -6237,6 +6746,9 @@ name = "rustls-pki-types" version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" +dependencies = [ + "web-time", +] [[package]] name = "rustls-webpki" @@ -7753,6 +8265,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "webpki-roots" version = "0.25.4" From 44467ae9bc2abf0d74a0e6f18aeb22999223a6ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Thu, 30 Jan 2025 19:01:16 -0300 Subject: [PATCH 03/24] fix: multiple dependency version errors --- Cargo.lock | 725 +++++------------------ Cargo.toml | 6 +- crates/aggregator/Cargo.toml | 12 +- crates/aggregator/src/error.rs | 55 -- crates/aggregator/src/fake_aggregator.rs | 464 --------------- crates/aggregator/src/lib.rs | 556 ++++------------- crates/aggregator/src/rpc_server.rs | 38 -- crates/chainio/Cargo.toml | 5 +- crates/chainio/src/fake_avs_writer.rs | 2 +- crates/chainio/src/lib.rs | 6 +- crates/challenger/Cargo.toml | 5 +- crates/metrics/Cargo.toml | 5 +- crates/operator/Cargo.toml | 8 +- crates/operator/src/builder.rs | 4 +- crates/operator_2/Cargo.toml | 7 +- crates/task_generator/Cargo.toml | 5 +- crates/task_generator/src/lib.rs | 2 +- crates/testing-utils/Cargo.toml | 5 +- crates/testing-utils/src/lib.rs | 29 +- 19 files changed, 312 insertions(+), 1627 deletions(-) delete mode 100644 crates/aggregator/src/error.rs delete mode 100644 crates/aggregator/src/fake_aggregator.rs delete mode 100644 crates/aggregator/src/rpc_server.rs diff --git a/Cargo.lock b/Cargo.lock index 0c884784..52d4a060 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -66,55 +66,30 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" -[[package]] -name = "alloy" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b0561294ccedc6181e5528b850b4579e3fbde696507baa00109bfd9054c5bb" -dependencies = [ - "alloy-consensus 0.7.3", - "alloy-contract 0.7.3", - "alloy-core", - "alloy-eips 0.7.3", - "alloy-genesis 0.7.3", - "alloy-network 0.7.3", - "alloy-provider 0.7.3", - "alloy-pubsub 0.7.3", - "alloy-rpc-client 0.7.3", - "alloy-rpc-types 0.7.3", - "alloy-serde 0.7.3", - "alloy-signer 0.7.3", - "alloy-signer-local 0.7.3", - "alloy-transport 0.7.3", - "alloy-transport-http 0.7.3", - "alloy-transport-ipc 0.7.3", - "alloy-transport-ws 0.7.3", -] - [[package]] name = "alloy" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbcc41e8a11a4975b18ec6afba2cc48d591fa63336a4c526dacb50479a8d6b35" dependencies = [ - "alloy-consensus 0.9.2", - "alloy-contract 0.9.2", + "alloy-consensus", + "alloy-contract", "alloy-core", - "alloy-eips 0.9.2", - "alloy-genesis 0.9.2", - "alloy-network 0.9.2", - "alloy-provider 0.9.2", - "alloy-pubsub 0.9.2", - "alloy-rpc-client 0.9.2", - "alloy-rpc-types 0.9.2", - "alloy-serde 0.9.2", - "alloy-signer 0.9.2", + "alloy-eips", + "alloy-genesis", + "alloy-network", + "alloy-provider", + "alloy-pubsub", + "alloy-rpc-client", + "alloy-rpc-types", + "alloy-serde", + "alloy-signer", "alloy-signer-aws", - "alloy-signer-local 0.9.2", - "alloy-transport 0.9.2", - "alloy-transport-http 0.9.2", - "alloy-transport-ipc 0.9.2", - "alloy-transport-ws 0.9.2", + "alloy-signer-local", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", ] [[package]] @@ -128,34 +103,16 @@ dependencies = [ "strum", ] -[[package]] -name = "alloy-consensus" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a101d4d016f47f13890a74290fdd17b05dd175191d9337bc600791fb96e4dea8" -dependencies = [ - "alloy-eips 0.7.3", - "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.7.3", - "alloy-trie", - "auto_impl", - "c-kzg", - "derive_more", - "k256", - "serde", -] - [[package]] name = "alloy-consensus" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4138dc275554afa6f18c4217262ac9388790b2fc393c2dfe03c51d357abf013" dependencies = [ - "alloy-eips 0.9.2", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.9.2", + "alloy-serde", "alloy-trie", "auto_impl", "c-kzg", @@ -164,55 +121,20 @@ dependencies = [ "serde", ] -[[package]] -name = "alloy-consensus-any" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa60357dda9a3d0f738f18844bd6d0f4a5924cc5cf00bfad2ff1369897966123" -dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", - "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.7.3", - "serde", -] - [[package]] name = "alloy-consensus-any" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa04e1882c31288ce1028fdf31b6ea94cfa9eafa2e497f903ded631c8c6a42c" dependencies = [ - "alloy-consensus 0.9.2", - "alloy-eips 0.9.2", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.9.2", + "alloy-serde", "serde", ] -[[package]] -name = "alloy-contract" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2869e4fb31331d3b8c58c7db567d1e4e4e94ef64640beda3b6dd9b7045690941" -dependencies = [ - "alloy-dyn-abi", - "alloy-json-abi", - "alloy-network 0.7.3", - "alloy-network-primitives 0.7.3", - "alloy-primitives", - "alloy-provider 0.7.3", - "alloy-pubsub 0.7.3", - "alloy-rpc-types-eth 0.7.3", - "alloy-sol-types", - "alloy-transport 0.7.3", - "futures", - "futures-util", - "thiserror 2.0.7", -] - [[package]] name = "alloy-contract" version = "0.9.2" @@ -221,14 +143,14 @@ checksum = "5f21886c1fea0626f755a49b2ac653b396fb345233f6170db2da3d0ada31560c" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", - "alloy-network 0.9.2", - "alloy-network-primitives 0.9.2", + "alloy-network", + "alloy-network-primitives", "alloy-primitives", - "alloy-provider 0.9.2", - "alloy-pubsub 0.9.2", - "alloy-rpc-types-eth 0.9.2", + "alloy-provider", + "alloy-pubsub", + "alloy-rpc-types-eth", "alloy-sol-types", - "alloy-transport 0.9.2", + "alloy-transport", "futures", "futures-util", "thiserror 2.0.7", @@ -275,19 +197,6 @@ dependencies = [ "serde", ] -[[package]] -name = "alloy-eip7702" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c986539255fb839d1533c128e190e557e52ff652c9ef62939e233a81dd93f7e" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "derive_more", - "k256", - "serde", -] - [[package]] name = "alloy-eip7702" version = "0.5.0" @@ -301,24 +210,6 @@ dependencies = [ "serde", ] -[[package]] -name = "alloy-eips" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6755b093afef5925f25079dd5a7c8d096398b804ba60cb5275397b06b31689" -dependencies = [ - "alloy-eip2930", - "alloy-eip7702 0.4.2", - "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.7.3", - "c-kzg", - "derive_more", - "once_cell", - "serde", - "sha2", -] - [[package]] name = "alloy-eips" version = "0.9.2" @@ -326,10 +217,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52dd5869ed09e399003e0e0ec6903d981b2a92e74c5d37e6b40890bad2517526" dependencies = [ "alloy-eip2930", - "alloy-eip7702 0.5.0", + "alloy-eip7702", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.9.2", + "alloy-serde", "c-kzg", "derive_more", "once_cell", @@ -337,27 +228,15 @@ dependencies = [ "sha2", ] -[[package]] -name = "alloy-genesis" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeec8e6eab6e52b7c9f918748c9b811e87dbef7312a2e3a2ca1729a92966a6af" -dependencies = [ - "alloy-primitives", - "alloy-serde 0.7.3", - "alloy-trie", - "serde", -] - [[package]] name = "alloy-genesis" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7d2a7fe5c1a9bd6793829ea21a636f30fc2b3f5d2e7418ba86d96e41dd1f460" dependencies = [ - "alloy-eips 0.9.2", + "alloy-eips", "alloy-primitives", - "alloy-serde 0.9.2", + "alloy-serde", "alloy-trie", "serde", ] @@ -374,20 +253,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "alloy-json-rpc" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa077efe0b834bcd89ff4ba547f48fb081e4fdc3673dd7da1b295a2cf2bb7b7" -dependencies = [ - "alloy-primitives", - "alloy-sol-types", - "serde", - "serde_json", - "thiserror 2.0.7", - "tracing", -] - [[package]] name = "alloy-json-rpc" version = "0.9.2" @@ -402,47 +267,22 @@ dependencies = [ "tracing", ] -[[package]] -name = "alloy-network" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "209a1882a08e21aca4aac6e2a674dc6fcf614058ef8cb02947d63782b1899552" -dependencies = [ - "alloy-consensus 0.7.3", - "alloy-consensus-any 0.7.3", - "alloy-eips 0.7.3", - "alloy-json-rpc 0.7.3", - "alloy-network-primitives 0.7.3", - "alloy-primitives", - "alloy-rpc-types-any 0.7.3", - "alloy-rpc-types-eth 0.7.3", - "alloy-serde 0.7.3", - "alloy-signer 0.7.3", - "alloy-sol-types", - "async-trait", - "auto_impl", - "futures-utils-wasm", - "serde", - "serde_json", - "thiserror 2.0.7", -] - [[package]] name = "alloy-network" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4556f01fe41d0677495df10a648ddcf7ce118b0e8aa9642a0e2b6dd1fb7259de" dependencies = [ - "alloy-consensus 0.9.2", - "alloy-consensus-any 0.9.2", - "alloy-eips 0.9.2", - "alloy-json-rpc 0.9.2", - "alloy-network-primitives 0.9.2", + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-json-rpc", + "alloy-network-primitives", "alloy-primitives", - "alloy-rpc-types-any 0.9.2", - "alloy-rpc-types-eth 0.9.2", - "alloy-serde 0.9.2", - "alloy-signer 0.9.2", + "alloy-rpc-types-any", + "alloy-rpc-types-eth", + "alloy-serde", + "alloy-signer", "alloy-sol-types", "async-trait", "auto_impl", @@ -452,29 +292,16 @@ dependencies = [ "thiserror 2.0.7", ] -[[package]] -name = "alloy-network-primitives" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20219d1ad261da7a6331c16367214ee7ded41d001fabbbd656fbf71898b2773" -dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", - "alloy-primitives", - "alloy-serde 0.7.3", - "serde", -] - [[package]] name = "alloy-network-primitives" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f31c3c6b71340a1d076831823f09cb6e02de01de5c6630a9631bdb36f947ff80" dependencies = [ - "alloy-consensus 0.9.2", - "alloy-eips 0.9.2", + "alloy-consensus", + "alloy-eips", "alloy-primitives", - "alloy-serde 0.9.2", + "alloy-serde", "serde", ] @@ -506,46 +333,6 @@ dependencies = [ "tiny-keccak", ] -[[package]] -name = "alloy-provider" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eefa6f4c798ad01f9b4202d02cea75f5ec11fa180502f4701e2b47965a8c0bb" -dependencies = [ - "alloy-chains", - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", - "alloy-json-rpc 0.7.3", - "alloy-network 0.7.3", - "alloy-network-primitives 0.7.3", - "alloy-primitives", - "alloy-pubsub 0.7.3", - "alloy-rpc-client 0.7.3", - "alloy-rpc-types-eth 0.7.3", - "alloy-transport 0.7.3", - "alloy-transport-http 0.7.3", - "alloy-transport-ipc 0.7.3", - "alloy-transport-ws 0.7.3", - "async-stream", - "async-trait", - "auto_impl", - "dashmap", - "futures", - "futures-utils-wasm", - "lru", - "parking_lot 0.12.3", - "pin-project", - "reqwest 0.12.9", - "schnellru", - "serde", - "serde_json", - "thiserror 2.0.7", - "tokio", - "tracing", - "url", - "wasmtimer", -] - [[package]] name = "alloy-provider" version = "0.9.2" @@ -553,19 +340,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a22c4441b3ebe2d77fa9cf629ba68c3f713eb91779cff84275393db97eddd82" dependencies = [ "alloy-chains", - "alloy-consensus 0.9.2", - "alloy-eips 0.9.2", - "alloy-json-rpc 0.9.2", - "alloy-network 0.9.2", - "alloy-network-primitives 0.9.2", + "alloy-consensus", + "alloy-eips", + "alloy-json-rpc", + "alloy-network", + "alloy-network-primitives", "alloy-primitives", - "alloy-pubsub 0.9.2", - "alloy-rpc-client 0.9.2", - "alloy-rpc-types-eth 0.9.2", - "alloy-transport 0.9.2", - "alloy-transport-http 0.9.2", - "alloy-transport-ipc 0.9.2", - "alloy-transport-ws 0.9.2", + "alloy-pubsub", + "alloy-rpc-client", + "alloy-rpc-types-eth", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", "async-stream", "async-trait", "auto_impl", @@ -586,34 +373,15 @@ dependencies = [ "wasmtimer", ] -[[package]] -name = "alloy-pubsub" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac9a7210e0812b1d814118f426f57eb7fc260a419224dd1c76d169879c06907" -dependencies = [ - "alloy-json-rpc 0.7.3", - "alloy-primitives", - "alloy-transport 0.7.3", - "bimap", - "futures", - "serde", - "serde_json", - "tokio", - "tokio-stream", - "tower", - "tracing", -] - [[package]] name = "alloy-pubsub" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2269fd635f7b505f27c63a3cb293148cd02301efce4c8bdd9ff54fbfc4a20e23" dependencies = [ - "alloy-json-rpc 0.9.2", + "alloy-json-rpc", "alloy-primitives", - "alloy-transport 0.9.2", + "alloy-transport", "bimap", "futures", "serde", @@ -646,45 +414,19 @@ dependencies = [ "syn 2.0.90", ] -[[package]] -name = "alloy-rpc-client" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed30bf1041e84cabc5900f52978ca345dd9969f2194a945e6fdec25b0620705c" -dependencies = [ - "alloy-json-rpc 0.7.3", - "alloy-primitives", - "alloy-pubsub 0.7.3", - "alloy-transport 0.7.3", - "alloy-transport-http 0.7.3", - "alloy-transport-ipc 0.7.3", - "alloy-transport-ws 0.7.3", - "futures", - "pin-project", - "reqwest 0.12.9", - "serde", - "serde_json", - "tokio", - "tokio-stream", - "tower", - "tracing", - "url", - "wasmtimer", -] - [[package]] name = "alloy-rpc-client" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d06a292b37e182e514903ede6e623b9de96420e8109ce300da288a96d88b7e4b" dependencies = [ - "alloy-json-rpc 0.9.2", + "alloy-json-rpc", "alloy-primitives", - "alloy-pubsub 0.9.2", - "alloy-transport 0.9.2", - "alloy-transport-http 0.9.2", - "alloy-transport-ipc 0.9.2", - "alloy-transport-ws 0.9.2", + "alloy-pubsub", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", "futures", "pin-project", "reqwest 0.12.9", @@ -698,19 +440,6 @@ dependencies = [ "wasmtimer", ] -[[package]] -name = "alloy-rpc-types" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab686b0fa475d2a4f5916c5f07797734a691ec58e44f0f55d4746ea39cbcefb" -dependencies = [ - "alloy-primitives", - "alloy-rpc-types-engine 0.7.3", - "alloy-rpc-types-eth 0.7.3", - "alloy-serde 0.7.3", - "serde", -] - [[package]] name = "alloy-rpc-types" version = "0.9.2" @@ -718,48 +447,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9383845dd924939e7ab0298bbfe231505e20928907d7905aa3bf112287305e06" dependencies = [ "alloy-primitives", - "alloy-rpc-types-engine 0.9.2", - "alloy-rpc-types-eth 0.9.2", - "alloy-serde 0.9.2", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-serde", "serde", ] -[[package]] -name = "alloy-rpc-types-any" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200661999b6e235d9840be5d60a6e8ae2f0af9eb2a256dd378786744660e36ec" -dependencies = [ - "alloy-consensus-any 0.7.3", - "alloy-rpc-types-eth 0.7.3", - "alloy-serde 0.7.3", -] - [[package]] name = "alloy-rpc-types-any" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca445cef0eb6c2cf51cfb4e214fbf1ebd00893ae2e6f3b944c8101b07990f988" dependencies = [ - "alloy-consensus-any 0.9.2", - "alloy-rpc-types-eth 0.9.2", - "alloy-serde 0.9.2", -] - -[[package]] -name = "alloy-rpc-types-engine" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d297268357e3eae834ddd6888b15f764cbc0f4b3be9265f5f6ec239013f3d68" -dependencies = [ - "alloy-consensus 0.7.3", - "alloy-eips 0.7.3", - "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.7.3", - "derive_more", - "serde", - "strum", + "alloy-consensus-any", + "alloy-rpc-types-eth", + "alloy-serde", ] [[package]] @@ -768,49 +470,29 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f821f30344862a0b6eb9a1c2eb91dfb2ff44c7489f37152a526cdcab79264" dependencies = [ - "alloy-consensus 0.9.2", - "alloy-eips 0.9.2", + "alloy-consensus", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.9.2", + "alloy-serde", "derive_more", "serde", "strum", ] -[[package]] -name = "alloy-rpc-types-eth" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0600b8b5e2dc0cab12cbf91b5a885c35871789fb7b3a57b434bd4fced5b7a8b" -dependencies = [ - "alloy-consensus 0.7.3", - "alloy-consensus-any 0.7.3", - "alloy-eips 0.7.3", - "alloy-network-primitives 0.7.3", - "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.7.3", - "alloy-sol-types", - "derive_more", - "itertools 0.13.0", - "serde", - "serde_json", -] - [[package]] name = "alloy-rpc-types-eth" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0938bc615c02421bd86c1733ca7205cc3d99a122d9f9bff05726bd604b76a5c2" dependencies = [ - "alloy-consensus 0.9.2", - "alloy-consensus-any 0.9.2", - "alloy-eips 0.9.2", - "alloy-network-primitives 0.9.2", + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-network-primitives", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.9.2", + "alloy-serde", "alloy-sol-types", "itertools 0.13.0", "serde", @@ -818,17 +500,6 @@ dependencies = [ "thiserror 2.0.7", ] -[[package]] -name = "alloy-serde" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afa753a97002a33b2ccb707d9f15f31c81b8c1b786c95b73cc62bb1d1fd0c3f" -dependencies = [ - "alloy-primitives", - "serde", - "serde_json", -] - [[package]] name = "alloy-serde" version = "0.9.2" @@ -840,20 +511,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "alloy-signer" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2cbff01a673936c2efd7e00d4c0e9a4dbbd6d600e2ce298078d33efbb19cd7" -dependencies = [ - "alloy-primitives", - "async-trait", - "auto_impl", - "elliptic-curve", - "k256", - "thiserror 2.0.7", -] - [[package]] name = "alloy-signer" version = "0.9.2" @@ -874,10 +531,10 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eb06810c34427d499863817eb506acf57cb9ded9224b374116cae4e22dbd4e9" dependencies = [ - "alloy-consensus 0.9.2", - "alloy-network 0.9.2", + "alloy-consensus", + "alloy-network", "alloy-primitives", - "alloy-signer 0.9.2", + "alloy-signer", "async-trait", "aws-sdk-kms", "k256", @@ -886,34 +543,18 @@ dependencies = [ "tracing", ] -[[package]] -name = "alloy-signer-local" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6d988cb6cd7d2f428a74476515b1a6e901e08c796767f9f93311ab74005c8b" -dependencies = [ - "alloy-consensus 0.7.3", - "alloy-network 0.7.3", - "alloy-primitives", - "alloy-signer 0.7.3", - "async-trait", - "eth-keystore", - "k256", - "rand", - "thiserror 2.0.7", -] - [[package]] name = "alloy-signer-local" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbdc63ce9eda1283fcbaca66ba4a414b841c0e3edbeef9c86a71242fc9e84ccc" dependencies = [ - "alloy-consensus 0.9.2", - "alloy-network 0.9.2", + "alloy-consensus", + "alloy-network", "alloy-primitives", - "alloy-signer 0.9.2", + "alloy-signer", "async-trait", + "eth-keystore", "k256", "rand", "thiserror 2.0.7", @@ -992,33 +633,13 @@ dependencies = [ "serde", ] -[[package]] -name = "alloy-transport" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d69d36982b9e46075ae6b792b0f84208c6c2c15ad49f6c500304616ef67b70e0" -dependencies = [ - "alloy-json-rpc 0.7.3", - "base64 0.22.1", - "futures-util", - "futures-utils-wasm", - "serde", - "serde_json", - "thiserror 2.0.7", - "tokio", - "tower", - "tracing", - "url", - "wasmtimer", -] - [[package]] name = "alloy-transport" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d17722a198f33bbd25337660787aea8b8f57814febb7c746bc30407bdfc39448" dependencies = [ - "alloy-json-rpc 0.9.2", + "alloy-json-rpc", "base64 0.22.1", "futures-util", "futures-utils-wasm", @@ -1032,29 +653,14 @@ dependencies = [ "wasmtimer", ] -[[package]] -name = "alloy-transport-http" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e02ffd5d93ffc51d72786e607c97de3b60736ca3e636ead0ec1f7dce68ea3fd" -dependencies = [ - "alloy-json-rpc 0.7.3", - "alloy-transport 0.7.3", - "reqwest 0.12.9", - "serde_json", - "tower", - "tracing", - "url", -] - [[package]] name = "alloy-transport-http" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e1509599021330a31c4a6816b655e34bf67acb1cc03c564e09fd8754ff6c5de" dependencies = [ - "alloy-json-rpc 0.9.2", - "alloy-transport 0.9.2", + "alloy-json-rpc", + "alloy-transport", "reqwest 0.12.9", "serde_json", "tower", @@ -1062,34 +668,15 @@ dependencies = [ "url", ] -[[package]] -name = "alloy-transport-ipc" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b6f8b87cb84bae6d81ae6604b37741c8116f84f9784a0ecc6038c302e679d23" -dependencies = [ - "alloy-json-rpc 0.7.3", - "alloy-pubsub 0.7.3", - "alloy-transport 0.7.3", - "bytes", - "futures", - "interprocess", - "pin-project", - "serde_json", - "tokio", - "tokio-util 0.7.13", - "tracing", -] - [[package]] name = "alloy-transport-ipc" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa4da44bc9a5155ab599666d26decafcf12204b72a80eeaba7c5e234ee8ac205" dependencies = [ - "alloy-json-rpc 0.9.2", - "alloy-pubsub 0.9.2", - "alloy-transport 0.9.2", + "alloy-json-rpc", + "alloy-pubsub", + "alloy-transport", "bytes", "futures", "interprocess", @@ -1100,32 +687,14 @@ dependencies = [ "tracing", ] -[[package]] -name = "alloy-transport-ws" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c085c4e1e7680b723ffc558f61a22c061ed3f70eb3436f93f3936779c59cec1" -dependencies = [ - "alloy-pubsub 0.7.3", - "alloy-transport 0.7.3", - "futures", - "http 1.2.0", - "rustls 0.23.20", - "serde_json", - "tokio", - "tokio-tungstenite 0.24.0", - "tracing", - "ws_stream_wasm", -] - [[package]] name = "alloy-transport-ws" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58011745b2f17b334db40df9077d75b181f78360a5bc5c35519e15d4bfce15e2" dependencies = [ - "alloy-pubsub 0.9.2", - "alloy-transport 0.9.2", + "alloy-pubsub", + "alloy-transport", "futures", "http 1.2.0", "rustls 0.23.20", @@ -2806,16 +2375,41 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "eigen-aggregator" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +dependencies = [ + "alloy", + "eigen-client-avsregistry", + "eigen-common", + "eigen-crypto-bls", + "eigen-logging", + "eigen-services-avsregistry", + "eigen-services-blsaggregation", + "eigen-services-operatorsinfo", + "eigen-types", + "eigen-utils", + "futures-util", + "jsonrpc-core", + "jsonrpc-http-server", + "serde", + "thiserror 1.0.69", + "tokio", + "tokio-util 0.7.13", + "tracing", +] + [[package]] name = "eigen-cli" version = "0.1.2" source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ - "alloy 0.9.2", - "alloy-json-rpc 0.9.2", + "alloy", + "alloy-json-rpc", "alloy-primitives", - "alloy-provider 0.9.2", - "alloy-transport 0.9.2", + "alloy-provider", + "alloy-transport", "ark-ec 0.5.0", "ark-ff 0.5.0", "ark-serialize 0.5.0", @@ -2844,10 +2438,10 @@ name = "eigen-client-avsregistry" version = "0.1.2" source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ - "alloy 0.9.2", + "alloy", "alloy-primitives", - "alloy-signer 0.9.2", - "alloy-signer-local 0.9.2", + "alloy-signer", + "alloy-signer-local", "ark-ff 0.5.0", "async-trait", "eigen-client-elcontracts", @@ -2866,7 +2460,7 @@ name = "eigen-client-elcontracts" version = "0.1.2" source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ - "alloy 0.9.2", + "alloy", "alloy-primitives", "eigen-common", "eigen-crypto-bls", @@ -2882,8 +2476,8 @@ name = "eigen-client-eth" version = "0.1.2" source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ - "alloy 0.9.2", - "alloy-json-rpc 0.9.2", + "alloy", + "alloy-json-rpc", "alloy-primitives", "alloy-rlp", "async-trait", @@ -2899,11 +2493,11 @@ name = "eigen-common" version = "0.1.2" source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ - "alloy-provider 0.9.2", - "alloy-pubsub 0.9.2", - "alloy-signer-local 0.9.2", - "alloy-transport 0.9.2", - "alloy-transport-http 0.9.2", + "alloy-provider", + "alloy-pubsub", + "alloy-signer-local", + "alloy-transport", + "alloy-transport-http", "url", ] @@ -2999,7 +2593,7 @@ name = "eigen-services-blsaggregation" version = "0.1.2" source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ - "alloy 0.9.2", + "alloy", "alloy-primitives", "ark-bn254 0.5.0", "ark-ec 0.5.0", @@ -3022,7 +2616,7 @@ name = "eigen-services-operatorsinfo" version = "0.1.2" source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ - "alloy 0.9.2", + "alloy", "alloy-primitives", "async-trait", "eigen-client-avsregistry", @@ -3044,11 +2638,11 @@ name = "eigen-testing-utils" version = "0.1.2" source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ - "alloy 0.9.2", + "alloy", "alloy-primitives", - "alloy-provider 0.9.2", - "alloy-rpc-types 0.9.2", - "alloy-transport 0.9.2", + "alloy-provider", + "alloy-rpc-types", + "alloy-transport", "eigen-common", "eigen-utils", "serde", @@ -3075,7 +2669,7 @@ name = "eigen-utils" version = "0.1.2" source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" dependencies = [ - "alloy 0.9.2", + "alloy", "reqwest 0.12.9", ] @@ -4435,12 +4029,11 @@ dependencies = [ name = "incredible-aggregator" version = "0.0.1-alpha" dependencies = [ - "alloy 0.7.3", - "ark-bn254 0.5.0", - "ark-ec 0.5.0", - "ark-serialize 0.4.2", + "alloy", "ark-std 0.4.0", + "eigen-aggregator", "eigen-client-avsregistry", + "eigen-common", "eigen-crypto-bls", "eigen-logging", "eigen-services-avsregistry", @@ -4454,7 +4047,6 @@ dependencies = [ "incredible-bindings", "incredible-chainio", "incredible-config", - "incredible-metrics", "incredible-operator", "incredible-testing-utils", "jsonrpc-core", @@ -4472,7 +4064,7 @@ dependencies = [ name = "incredible-avs" version = "0.0.1-alpha" dependencies = [ - "alloy 0.7.3", + "alloy", "clap", "eigen-nodeapi", "eyre", @@ -4497,7 +4089,7 @@ dependencies = [ name = "incredible-bindings" version = "0.0.1-alpha" dependencies = [ - "alloy 0.7.3", + "alloy", "serde", ] @@ -4505,8 +4097,9 @@ dependencies = [ name = "incredible-chainio" version = "0.0.1-alpha" dependencies = [ - "alloy 0.7.3", + "alloy", "eigen-client-avsregistry", + "eigen-common", "eigen-logging", "eigen-types", "eigen-utils", @@ -4524,8 +4117,7 @@ dependencies = [ name = "incredible-challenger" version = "0.0.1-alpha" dependencies = [ - "alloy 0.7.3", - "alloy-provider 0.7.3", + "alloy", "eigen-utils", "eyre", "futures-util", @@ -4552,7 +4144,7 @@ dependencies = [ name = "incredible-config" version = "0.0.1-alpha" dependencies = [ - "alloy 0.7.3", + "alloy", "confy", "eigen-logging", "eigen-types", @@ -4571,8 +4163,7 @@ dependencies = [ name = "incredible-metrics" version = "0.0.1-alpha" dependencies = [ - "alloy 0.7.3", - "alloy-provider 0.7.3", + "alloy", "eigen-metrics", "eyre", "futures-util", @@ -4589,10 +4180,10 @@ dependencies = [ name = "incredible-operator" version = "0.0.1-alpha" dependencies = [ - "alloy 0.7.3", - "alloy-provider 0.7.3", + "alloy", "ark-ec 0.5.0", "ark-ff 0.5.0", + "eigen-aggregator", "eigen-cli", "eigen-client-avsregistry", "eigen-client-eth", @@ -4625,8 +4216,7 @@ dependencies = [ name = "incredible-operator-2" version = "0.0.1-alpha" dependencies = [ - "alloy 0.7.3", - "alloy-provider 0.7.3", + "alloy", "ark-ec 0.5.0", "ark-ff 0.5.0", "eigen-cli", @@ -4666,7 +4256,7 @@ version = "0.0.1-alpha" name = "incredible-squaring-avs" version = "0.0.1-alpha" dependencies = [ - "alloy 0.7.3", + "alloy", "clap", "eigen-client-avsregistry", "eigen-client-elcontracts", @@ -4697,8 +4287,8 @@ dependencies = [ name = "incredible-task-generator" version = "0.0.1-alpha" dependencies = [ - "alloy 0.7.3", - "alloy-provider 0.7.3", + "alloy", + "eigen-common", "eigen-utils", "eyre", "futures-util", @@ -4715,7 +4305,8 @@ dependencies = [ name = "incredible-testing-utils" version = "0.0.1-alpha" dependencies = [ - "alloy 0.7.3", + "alloy", + "eigen-common", "eigen-testing-utils", "eigen-utils", "tracing", @@ -6184,7 +5775,7 @@ dependencies = [ "once_cell", "socket2", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index b6a38809..6a91242e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -50,9 +50,8 @@ metrics-util = "0.19.0" reqwest = "0.12.9" serde_json = "1.0.120" #alloy -alloy = { version = "0.7", features = ["full", "signer-keystore", "reqwest"] } +alloy = { version = "0.9", features = ["full", "signer-keystore", "reqwest"] } alloy-primitives = "0.8" -alloy-provider = "0.7" serde = "1.0.203" tracing = "0.1.40" tempfile = "3" @@ -77,9 +76,10 @@ incredible-testing-utils = { path = "crates/testing-utils/" } incredible-task-generator = { path = "crates/task_generator/" } incredible-operator-2 = { path = "crates/operator_2/", features = ["default"] } incredible-slasher = { path = "crates/slasher/" } -# eigensdk-rs +# eigensdk-rs eigen-aggregator = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-common = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } eigen-client-avsregistry = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } eigen-testing-utils = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } eigen-crypto-bls = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } diff --git a/crates/aggregator/Cargo.toml b/crates/aggregator/Cargo.toml index a3b7be7a..f5df1c73 100644 --- a/crates/aggregator/Cargo.toml +++ b/crates/aggregator/Cargo.toml @@ -5,25 +5,23 @@ edition.workspace = true rust-version.workspace = true repository.workspace = true license.workspace = true -description = "eigen layer aggregator utils " - +description = "eigen layer aggregator" + [lints] workspace = true [dependencies] +eigen-aggregator.workspace = true incredible-bindings.workspace = true -ark-bn254.workspace = true -ark-ec.workspace = true alloy.workspace = true eigen-types.workspace = true serde.workspace = true -ark-serialize = "0.4.2" hex = "0.4.3" eigen-crypto-bls.workspace = true eyre.workspace = true incredible-chainio.workspace = true incredible-config.workspace = true -incredible-metrics.workspace = true +eigen-common.workspace = true eigen-services-operatorsinfo.workspace = true eigen-logging.workspace = true eigen-client-avsregistry.workspace = true @@ -43,4 +41,4 @@ incredible-testing-utils.workspace = true toml.workspace = true ark-std = { version = "0.4.0", default-features = false } incredible-operator.workspace = true -reqwest.workspace = true \ No newline at end of file +reqwest.workspace = true diff --git a/crates/aggregator/src/error.rs b/crates/aggregator/src/error.rs deleted file mode 100644 index 446fe670..00000000 --- a/crates/aggregator/src/error.rs +++ /dev/null @@ -1,55 +0,0 @@ -use alloy::contract::Error as ContractError; -use alloy::transports::{RpcError, TransportErrorKind}; -use eigen_client_avsregistry::error::AvsRegistryError; -use eigen_crypto_bls::error::BlsError; -use eigen_services_blsaggregation::bls_aggregation_service_error::BlsAggregationServiceError; -use eigen_services_operatorsinfo::operatorsinfo_inmemory::OperatorInfoServiceError; -use incredible_chainio::error::ChainIoError; -use incredible_config::error::ConfigError; -use jsonrpc_core::serde_json::Error; -use thiserror::Error; - -/// Error returned by chainio -#[derive(Debug, Error)] -pub enum AggregatorError { - /// Bls Aggregation Service Error - #[error("Bls Aggregation Service Error : {0}")] - BlsAggregationServiceError(#[from] BlsAggregationServiceError), - /// Task Response not found - #[error("Task Response not found")] - TaskResponseNotFound, - /// parse error - #[error("Config parse error")] - ParseError(#[from] ConfigError), - /// Build avs registry chain reader - #[error("Failed to build avs registry chain reader ")] - BuildAvsRegistryChainReader(#[from] AvsRegistryError), - - /// build avswriter - #[error("Failed to build avs wrtier in chain io ")] - BuildAvsWriter(#[from] ChainIoError), - - /// Bls crate error - #[error("Bls Crate Error SDK")] - Bls(#[from] BlsError), - - /// alloy rpc error - #[error("Alloy rpc error")] - AlloyRpc(#[from] RpcError), - - /// serde json error - #[error("Serde json error")] - SerdeError(#[from] Error), - - /// IO error - #[error("IO error")] - IOError(#[from] std::io::Error), - - /// Operator Info service error - #[error("Operator Info Service error")] - OperatorInfoServiceError(#[from] OperatorInfoServiceError), - - /// Alloy Contract Error - #[error("Alloy Contract Error")] - ContractError(#[from] ContractError), -} diff --git a/crates/aggregator/src/fake_aggregator.rs b/crates/aggregator/src/fake_aggregator.rs deleted file mode 100644 index cab36e96..00000000 --- a/crates/aggregator/src/fake_aggregator.rs +++ /dev/null @@ -1,464 +0,0 @@ -use crate::error::AggregatorError; -use alloy::providers::Provider; -use alloy::providers::{ProviderBuilder, WsConnect}; -use alloy::rpc::types::Filter; -use alloy::sol_types::SolEvent; -use eigen_client_avsregistry::reader::AvsRegistryChainReader; -use eigen_crypto_bls::{convert_to_g1_point, convert_to_g2_point}; -use eigen_logging::{get_logger, get_test_logger}; -use eigen_services_avsregistry::chaincaller::AvsRegistryServiceChainCaller; -use eigen_services_blsaggregation::bls_agg::BlsAggregatorService; -use eigen_services_blsaggregation::bls_aggregation_service_error::BlsAggregationServiceError; -use eigen_services_blsaggregation::bls_aggregation_service_response::BlsAggregationServiceResponse; -use eigen_services_operatorsinfo::operatorsinfo_inmemory::OperatorInfoServiceInMemory; -use eigen_types::avs::TaskResponseDigest; -use eigen_utils::get_ws_provider; -use futures_util::StreamExt; -use incredible_bindings::incrediblesquaringtaskmanager::IBLSSignatureChecker::NonSignerStakesAndSignature; -use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::{ - Task, TaskResponse, -}; -use incredible_bindings::incrediblesquaringtaskmanager::IncredibleSquaringTaskManager::NewTaskCreated; -use incredible_bindings::incrediblesquaringtaskmanager::BN254::{G1Point, G2Point}; -use incredible_config::IncredibleConfig; -use jsonrpc_core::serde_json; -use jsonrpc_core::{Error, IoHandler, Params, Value}; -use jsonrpc_http_server::{AccessControlAllowOrigin, DomainsValidation, ServerBuilder}; -use std::collections::HashMap; -use std::net::SocketAddr; -use std::sync::Arc; -use tracing::info; - -/// Task Challenge Window Block : 100 blocks -pub const TASK_CHALLENGE_WINDOW_BLOCK: u32 = 100; -/// Block Time Seconds : 12 seconds -pub const BLOCK_TIME_SECONDS: u32 = 12; - -/// Aggregator -#[derive(Debug)] -pub struct FakeAggregator { - port_address: String, - bls_aggregation_service: BlsAggregatorService< - AvsRegistryServiceChainCaller, - >, - /// HashMap to store tasks - pub tasks: HashMap, - /// HashMap to store task responses - pub tasks_responses: HashMap>, -} - -impl FakeAggregator { - /// Creates a new FakeAggregator - /// - /// # Arguments - /// - /// * `config` - The configuration for the FakeAggregator - /// - /// # Returns - /// - /// * `Self` - The FakeAggregator - pub async fn new(config: IncredibleConfig) -> Self { - let avs_registry_chain_reader = AvsRegistryChainReader::new( - get_test_logger(), - config.registry_coordinator_addr().unwrap(), - config.operator_state_retriever_addr().unwrap(), - config.http_rpc_url(), - ) - .await - .unwrap(); - - let avs_reader = AvsRegistryChainReader::new( - get_test_logger(), - config.registry_coordinator_addr().unwrap(), - config.operator_state_retriever_addr().unwrap(), - config.http_rpc_url(), - ) - .await - .unwrap(); - - let operators_info_service = OperatorInfoServiceInMemory::new( - get_test_logger(), - avs_registry_chain_reader, - config.ws_rpc_url(), - ) - .await - .unwrap() - .0; - let token = tokio_util::sync::CancellationToken::new().clone(); - let avs_registry_service_chaincaller = - AvsRegistryServiceChainCaller::new(avs_reader, operators_info_service.clone()); - let provider = get_ws_provider(config.ws_rpc_url().as_str()).await.unwrap(); - - tokio::spawn(async move { - let _ = operators_info_service - .start_service(&token, 0, provider.get_block_number().await.unwrap()) - .await; - }); - - let bls_aggregation_service = - BlsAggregatorService::new(avs_registry_service_chaincaller, get_logger()); - - Self { - port_address: config.aggregator_ip_addr(), - tasks_responses: HashMap::new(), - tasks: HashMap::new(), - bls_aggregation_service, - } - } - - /// Starts the aggregator service - pub async fn start(self, ws_rpc_url: String) -> eyre::Result<()> { - info!("Starting aggregator"); - - let aggregator = Arc::new(tokio::sync::Mutex::new(self)); - - // Spawn two tasks: one for the server and one for processing tasks - let server_handle = tokio::spawn(Self::start_server(Arc::clone(&aggregator))); - let process_handle = tokio::spawn(Self::process_tasks( - ws_rpc_url.clone(), - Arc::clone(&aggregator), - )); - - // Wait for both tasks to complete and handle potential errors - match tokio::try_join!(server_handle, process_handle) { - Ok((server_result, process_result)) => { - server_result?; - process_result?; - } - Err(e) => { - eprintln!("Error in task execution: {:?}", e); - return Err(eyre::eyre!("Task execution failed")); - } - } - - Ok(()) - } - - /// Starts the RPC server - /// - /// # Arguments - /// - /// * `aggregator` - The aggregator - /// - /// # Returns - /// - /// * `eyre::Result<()>` - The result of the operation - pub async fn start_server(aggregator: Arc>) -> eyre::Result<()> { - let mut io = IoHandler::new(); - io.add_method("process_signed_task_response", { - let aggregator = Arc::clone(&aggregator); - move |params: Params| { - let aggregator = Arc::clone(&aggregator); - async move { - let signed_task_response: crate::rpc_server::SignedTaskResponse = match params { - Params::Map(map) => serde_json::from_value(map["params"].clone()).unwrap(), - _ => return Err(Error::invalid_params("Expected a map")), - }; - - // Call the process_signed_task_response function - let result = aggregator - .lock() - .await - .process_signed_task_response(signed_task_response) - .await; - match result { - Ok(_) => Ok(Value::Bool(true)), - Err(_) => Err(Error::invalid_params("invalid")), - } - } - } - }); - let socket: SocketAddr = aggregator - .lock() - .await - .port_address - .parse() - .expect("Unable to parse socket address"); - let server = ServerBuilder::new(io) - .cors(DomainsValidation::AllowOnly(vec![ - AccessControlAllowOrigin::Any, - ])) - .start_http(&socket) - .expect("Unable to start RPC server"); - - info!("Server running at {}", socket); - - server.wait(); - - Ok(()) - } - - /// Processes the tasks - /// - /// # Arguments - /// - /// * `ws_rpc_url` - The websocket RPC URL - /// * `aggregator` - The aggregator - /// - /// # Returns - /// - /// * `eyre::Result<()>` - The result of the operation - pub async fn process_tasks( - ws_rpc_url: String, - aggregator: Arc>, - ) -> eyre::Result<()> { - let ws = WsConnect::new(ws_rpc_url.clone()); - let provider = ProviderBuilder::new().on_ws(ws).await?; - - let filter = Filter::new().event_signature(NewTaskCreated::SIGNATURE_HASH); - let sub = provider.subscribe_logs(&filter).await?; - let mut stream = sub.into_stream(); - - while let Some(log) = stream.next().await { - info!("received new task created in aggregator "); - - let NewTaskCreated { taskIndex, task } = log.log_decode()?.inner.data; - - aggregator - .lock() - .await - .tasks - .insert(taskIndex, task.clone()); - - let mut quorum_nums: Vec = vec![]; - let mut quorum_threshold_percentages = Vec::with_capacity(task.quorumNumbers.len()); - for _ in &task.quorumNumbers { - quorum_threshold_percentages - .push(task.quorumThresholdPercentage.try_into().unwrap()); - } - - for val in task.quorumNumbers.iter() { - quorum_nums.push(*val); - } - - let time_to_expiry = tokio::time::Duration::from_secs( - (TASK_CHALLENGE_WINDOW_BLOCK * BLOCK_TIME_SECONDS).into(), - ); - info!("initializing new task in bls aggregation service"); - - let _ = aggregator - .lock() - .await - .bls_aggregation_service - .initialize_new_task( - taskIndex, - task.taskCreatedBlock, - quorum_nums.clone(), - quorum_threshold_percentages.clone(), - time_to_expiry, - ) - .await - .map_err(|e: BlsAggregationServiceError| eyre::eyre!(e)); - - info!("initialized new task in bls aggregation service"); - } - - Ok(()) - } - - /// Processes the signed task response - /// - /// # Arguments - /// - /// * [`SignedTaskResponse`] - The signed task response - /// - /// # Returns - /// - /// * `eyre::Result<()>` - The result of the operation - pub async fn process_signed_task_response( - &mut self, - _signed_task_response: crate::rpc_server::SignedTaskResponse, - ) -> Result { - // let task_index = signed_task_response.task_response.referenceTaskIndex; - - // let task_response_digest = - // alloy::primitives::keccak256(IncredibleSquaringTaskManager::TaskResponse::abi_encode( - // &signed_task_response.task_response, - // )); - - // let response = - // check_double_mapping(&self.tasks_responses, task_index, task_response_digest); - - // if response.is_none() { - // let mut inner_map = HashMap::new(); - // inner_map.insert( - // task_response_digest, - // signed_task_response.clone().task_response, - // ); - // self.tasks_responses.insert(task_index, inner_map); - // } - - // self.bls_aggregation_service - // .process_new_signature( - // task_index, - // task_response_digest, - // signed_task_response.signature(), - // signed_task_response.operator_id(), - // ) - // .await - // .unwrap(); - // info!("processed signature for index {:?}", task_index); - - // if let Some(aggregated_response) = self - // .bls_aggregation_service - // .aggregated_response_receiver - // .lock() - // .await - // .recv() - // .await - // { - // let res = self.send_aggregated_response_to_contract(aggregated_response.unwrap()) - // .await; - // return Ok(res); - // } - Ok(true) - } - - /// Sends the aggregated response to the contract - /// - /// # Arguments - /// - /// * [`BlsAggregationServiceResponse`] - The aggregated response - /// - /// # Returns - /// - /// * `eyre::Result<()>` - The result of the operation - pub async fn send_aggregated_response_to_contract( - &self, - response: BlsAggregationServiceResponse, - ) -> bool { - let mut non_signer_pub_keys = Vec::::new(); - for pub_key in response.non_signers_pub_keys_g1.iter() { - let g1 = convert_to_g1_point(pub_key.g1()).unwrap(); - non_signer_pub_keys.push(G1Point { X: g1.X, Y: g1.Y }) - } - - let mut quorum_apks = Vec::::new(); - for pub_key in response.quorum_apks_g1.iter() { - let g1 = convert_to_g1_point(pub_key.g1()).unwrap(); - quorum_apks.push(G1Point { X: g1.X, Y: g1.Y }) - } - - let _non_signer_stakes_and_signature = NonSignerStakesAndSignature { - nonSignerPubkeys: non_signer_pub_keys, - nonSignerQuorumBitmapIndices: response.non_signer_quorum_bitmap_indices, - quorumApks: quorum_apks, - apkG2: G2Point { - X: convert_to_g2_point(response.signers_apk_g2.g2()).unwrap().X, - Y: convert_to_g2_point(response.signers_apk_g2.g2()).unwrap().Y, - }, - sigma: G1Point { - X: convert_to_g1_point(response.signers_agg_sig_g1.g1_point().g1()) - .unwrap() - .X, - Y: convert_to_g1_point(response.signers_agg_sig_g1.g1_point().g1()) - .unwrap() - .Y, - }, - quorumApkIndices: response.quorum_apk_indices, - totalStakeIndices: response.total_stake_indices, - nonSignerStakeIndices: response.non_signer_stake_indices, - }; - - let _task = &self.tasks[&response.task_index]; - let _task_response = - &self.tasks_responses[&response.task_index][&response.task_response_digest]; - true // don't actually send the call, return true - } -} - -#[cfg(test)] -mod tests { - - use alloy::primitives::{FixedBytes, U256}; - use eigen_crypto_bls::BlsKeyPair; - use eigen_logging::init_logger; - use eigen_types::test::TestOperator; - use incredible_testing_utils::{ - get_incredible_squaring_operator_state_retriever, - get_incredible_squaring_registry_coordinator, - }; - use std::time::Duration; - - use super::*; - const INCREDIBLE_CONFIG_FILE: &str = r#" - [rpc_config] - chain_id = 31337 - http_rpc_url = "http://localhost:8545" - ws_rpc_url = "ws://localhost:8545" - signer = "0x337edbf6fef9af147f49c04c1004da47a8bf9f88c01022b7dd108e31c037f075" - - [ecdsa_config] - keystore_path = "../testing-utils/src/ecdsakeystore.json" - keystore_password = "test" - - [bls_config] - keystore_path = "../testing-utils/src/blskeystore.json" - keystore_password = "testpassword" - keystore_2_path = "../testing-utils/src/bls_keystore_2.json" - keystore_2_password = "test" - - [operator_config] - operator_address = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" - operator_id = "0xb345f720903a3ecfd59f3de456dd9d266c2ce540b05e8c909106962684d9afa3" - operator_2_address = "0x0b065a0423f076a340f37e16e1ce22e23d66caf2" - operator_2_id = "0x17a0935b43b64cc3536d48621208fddb680ef8998561f0a1669a3ccda66676be" - operator_set_id = "1" - operator_1_token_amount = "5000000000000000000000" - operator_2_token_amount = "7000000000000000000000" - allocation_delay = "1" - slash_simulate = false - - [aggregator_config] - ip_address = "127.0.0.1:8080" - - "#; - - const PRIVATE_KEY_DECIMAL: &str = - "12248929636257230549931416853095037629726205319386239410403476017439825112537"; - const OPERATOR_ID: &str = "b345f720903a3ecfd59f3de456dd9d266c2ce540b05e8c909106962684d9afa3"; - #[allow(unused)] - fn build_test_operator() -> TestOperator { - let bls_keypair = BlsKeyPair::new(PRIVATE_KEY_DECIMAL.into()).unwrap(); - let operator_id = - FixedBytes::<32>::from_slice(hex::decode(OPERATOR_ID).unwrap().as_slice()); - TestOperator { - operator_id, - bls_keypair: bls_keypair.clone(), - stake_per_quorum: HashMap::from([(1u8, U256::from(123))]), - } - } - - async fn build_aggregator() -> FakeAggregator { - let mut incredible_config: IncredibleConfig = - toml::from_str(INCREDIBLE_CONFIG_FILE).unwrap(); - incredible_config.set_registry_coordinator_addr( - get_incredible_squaring_registry_coordinator() - .await - .to_string(), - ); - incredible_config.set_operator_state_retriever( - get_incredible_squaring_operator_state_retriever() - .await - .to_string(), - ); - FakeAggregator::new(incredible_config).await - } - - #[tokio::test] - async fn test_build() { - init_logger(eigen_logging::log_level::LogLevel::Info); - let fake_aggregator = build_aggregator().await; - fake_aggregator - .bls_aggregation_service - .initialize_new_task( - 0, - 5, - ["0".parse().unwrap()].to_vec(), - ["100".parse().unwrap()].to_vec(), - Duration::from_secs(1200), - ) - .await - .unwrap(); - } -} diff --git a/crates/aggregator/src/lib.rs b/crates/aggregator/src/lib.rs index 4b26b77f..803d26e9 100644 --- a/crates/aggregator/src/lib.rs +++ b/crates/aggregator/src/lib.rs @@ -1,430 +1,137 @@ -//! Aggregator crate +// TODO: add docs +#![allow(missing_docs)] +use std::{collections::HashMap, sync::Arc}; -/// Aggregator error -pub mod error; -#[allow(missing_docs)] -pub mod fake_aggregator; -/// RPC server -pub mod rpc_server; -use alloy::dyn_abi::SolType; -use alloy::primitives::aliases::U96; -use alloy::primitives::Address; -use alloy::providers::Provider; -use alloy::providers::{ProviderBuilder, WsConnect}; -use alloy::rpc::types::Filter; -use alloy::sol_types::SolEvent; -use ark_ec::AffineRepr; -use eigen_client_avsregistry::reader::AvsRegistryChainReader; -use eigen_crypto_bls::{convert_to_g1_point, convert_to_g2_point}; -use eigen_logging::get_logger; -use eigen_services_avsregistry::chaincaller::AvsRegistryServiceChainCaller; -use eigen_services_blsaggregation::bls_aggregation_service_error::BlsAggregationServiceError; -use eigen_services_blsaggregation::{ - bls_agg::BlsAggregatorService, bls_aggregation_service_response::BlsAggregationServiceResponse, +use alloy::{ + primitives::{keccak256, Address, B256}, + sol_types::SolValue, +}; +use eigen_aggregator::{ + rpc_server::SignedTaskResponse as SignedTaskResponseImpl, + traits::{box_error, TaskMetadata, TaskProcessor, TaskProcessorError, TaskResponse}, }; -use eigen_services_operatorsinfo::operatorsinfo_inmemory::OperatorInfoServiceInMemory; -use eigen_types::avs::TaskResponseDigest; -use eigen_utils::operatorstateretriever::OperatorStateRetriever; -use eigen_utils::registrycoordinator::RegistryCoordinator; -use eigen_utils::{get_provider, get_ws_provider}; -pub use error::AggregatorError; -use futures_util::StreamExt; -use incredible_bindings::incrediblesquaringtaskmanager::IBLSSignatureChecker::NonSignerStakesAndSignature; -use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::{ - Task, TaskResponse, +use eigen_crypto_bls::{convert_to_g1_point, convert_to_g2_point}; +use eigen_services_blsaggregation::bls_aggregation_service_response::BlsAggregationServiceResponse; +use eigen_types::avs::TaskIndex; +use incredible_bindings::incrediblesquaringtaskmanager::{ + IBLSSignatureChecker::NonSignerStakesAndSignature, + IIncredibleSquaringTaskManager::{Task, TaskResponse as SolTaskResponse}, + IncredibleSquaringTaskManager::NewTaskCreated, + BN254::{G1Point, G2Point}, }; -use incredible_bindings::incrediblesquaringtaskmanager::IncredibleSquaringTaskManager::NewTaskCreated; -use incredible_bindings::incrediblesquaringtaskmanager::BN254::{G1Point, G2Point}; -use incredible_chainio::AvsWriter; -use incredible_config::IncredibleConfig; -use jsonrpc_core::serde_json; -use jsonrpc_core::{Error, IoHandler, Params, Value}; -use jsonrpc_http_server::{AccessControlAllowOrigin, DomainsValidation, ServerBuilder}; -pub use rpc_server::SignedTaskResponse; -use std::collections::HashMap; -use std::net::SocketAddr; -use std::sync::Arc; -use tracing::info; +use incredible_chainio::{error::ChainIoError, AvsWriter}; -/// Task Challenge Window Block : 100 blocks -pub const TASK_CHALLENGE_WINDOW_BLOCK: u32 = 100; -/// Block Time Seconds : 12 seconds -pub const BLOCK_TIME_SECONDS: u32 = 12; +pub use eigen_aggregator::{Aggregator, AggregatorConfig}; + +pub type SignedTaskResponse = SignedTaskResponseImpl; -/// Aggregator #[derive(Debug)] -pub struct Aggregator { - port_address: String, - /// avs writer - pub avs_writer: AvsWriter, - bls_aggregation_service: BlsAggregatorService< - AvsRegistryServiceChainCaller, - >, - task_quorum: HashMap, +/// Task Processor for the Incredible Squaring Task Manager +pub struct ISTaskProcessor { /// HashMap to store tasks - pub tasks: HashMap, - /// HashMap to store task responses - pub tasks_responses: HashMap>, + tasks: Arc>>, + /// HashMap to store tasks + task_responses: Arc>>, + /// AVS Writer + avs_writer: AvsWriter, } -impl Aggregator { - /// Creates a new aggregator - /// - /// # Arguments - /// - /// * `config` - The configuration for the aggregator - /// - /// # Returns - /// - /// * `Self` - The aggregator - pub async fn new(config: IncredibleConfig) -> Result { - let avs_registry_chain_reader = AvsRegistryChainReader::new( - get_logger(), - config.registry_coordinator_addr()?, - config.operator_state_retriever_addr()?, - config.http_rpc_url(), - ) - .await?; - - let avs_writer = AvsWriter::new( - config.registry_coordinator_addr()?, - config.http_rpc_url(), - config.get_signer(), - ) - .await?; - - let operators_info_service = OperatorInfoServiceInMemory::new( - get_logger(), - avs_registry_chain_reader.clone(), - config.ws_rpc_url(), - ) - .await? - .0; - let token = tokio_util::sync::CancellationToken::new(); - let avs_registry_service_chaincaller = AvsRegistryServiceChainCaller::new( - avs_registry_chain_reader, - operators_info_service.clone(), - ); - let provider = get_ws_provider(config.ws_rpc_url().as_str()).await?; - - let current_block_number = provider.get_block_number().await?; - tokio::spawn(async move { - let _ = operators_info_service - .start_service(&token, 0, current_block_number) - .await; - }); - - let bls_aggregation_service = - BlsAggregatorService::new(avs_registry_service_chaincaller, get_logger()); - - Ok(Self { - port_address: config.aggregator_ip_addr(), +impl ISTaskProcessor { + /// Creates a new task processor for the Incredible Squaring + pub async fn new( + regcoord_addr: Address, + http_rpc_url: String, + signer: String, + ) -> Result { + let avs_writer = AvsWriter::new(regcoord_addr, http_rpc_url, signer).await?; + Ok(ISTaskProcessor { + tasks: Arc::new(tokio::sync::Mutex::new(HashMap::new())), + task_responses: Arc::new(tokio::sync::Mutex::new(HashMap::new())), avs_writer, - tasks_responses: HashMap::new(), - tasks: HashMap::new(), - task_quorum: HashMap::new(), - bls_aggregation_service, }) } +} - /// Starts the aggregator service - pub async fn start( - self, - ws_rpc_url: String, - operator_state_retriever: Address, - registry_coordinator: Address, - ) -> eyre::Result<()> { - info!("Starting aggregator"); - - let aggregator = Arc::new(tokio::sync::Mutex::new(self)); - - // Spawn two tasks: one for the server and one for processing tasks - let server_handle = tokio::spawn(Self::start_server( - Arc::clone(&aggregator), - operator_state_retriever, - registry_coordinator, - )); - let process_handle = tokio::spawn(Self::process_tasks( - ws_rpc_url.clone(), - Arc::clone(&aggregator), - )); +/// Task Challenge Window Block : 100 blocks +const TASK_CHALLENGE_WINDOW_BLOCK: u32 = 100; +/// Block Time Seconds : 12 seconds +const BLOCK_TIME_SECONDS: u32 = 12; - // Wait for both tasks to complete and handle potential errors - match tokio::try_join!(server_handle, process_handle) { - Ok((server_result, process_result)) => { - server_result?; - process_result?; - } - Err(e) => { - eprintln!("Error in task execution: {:?}", e); - return Err(eyre::eyre!("Task execution failed")); - } - } +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] +pub struct ISTaskResponse(pub SolTaskResponse); - Ok(()) +impl TaskResponse for ISTaskResponse { + fn task_index(&self) -> TaskIndex { + self.0.referenceTaskIndex } - /// Starts the RPC server - /// - /// # Arguments - /// - /// * `aggregator` - The aggregator - /// - /// # Returns - /// - /// * `eyre::Result<()>` - The result of the operation - pub async fn start_server( - aggregator: Arc>, - operator_state_retriever: Address, - registry_coordinator: Address, - ) -> eyre::Result<(), AggregatorError> { - let mut io = IoHandler::new(); - io.add_method("process_signed_task_response", { - let aggregator = Arc::clone(&aggregator); - move |params: Params| { - let aggregator = Arc::clone(&aggregator); - async move { - let signed_task_response: SignedTaskResponse = match params { - Params::Map(map) => serde_json::from_value(map["params"].clone()).expect( - "Error in adding method in io handler for start_server function", - ), - _ => return Err(Error::invalid_params("Expected a map")), - }; - // Call the process_signed_task_response function - let result = aggregator - .lock() - .await - .process_signed_task_response( - signed_task_response, - operator_state_retriever, - registry_coordinator, - ) - .await; - match result { - Ok(_) => Ok(Value::Bool(true)), - Err(_) => Err(Error::invalid_params("invalid")), - } - } - } - }); - let socket: SocketAddr = aggregator.lock().await.port_address.parse().map_err(|e| { - AggregatorError::IOError(std::io::Error::new(std::io::ErrorKind::InvalidInput, e)) - })?; - let server = ServerBuilder::new(io) - .cors(DomainsValidation::AllowOnly(vec![ - AccessControlAllowOrigin::Any, - ])) - .start_http(&socket)?; - - info!("Server running at {}", socket); - - server.wait(); - - Ok(()) + fn digest(&self) -> B256 { + keccak256(self.0.abi_encode()) } +} - /// Processes the tasks - /// - /// # Arguments - /// - /// * `ws_rpc_url` - The websocket RPC URL - /// * `aggregator` - The aggregator - /// - /// # Returns - /// - /// * `eyre::Result<()>` - The result of the operation - pub async fn process_tasks( - ws_rpc_url: String, - aggregator: Arc>, - ) -> eyre::Result<()> { - let ws = WsConnect::new(ws_rpc_url.clone()); - let provider = ProviderBuilder::new().on_ws(ws).await?; - - let filter = Filter::new().event_signature(NewTaskCreated::SIGNATURE_HASH); - let sub = provider.subscribe_logs(&filter).await?; - let mut stream = sub.into_stream(); - - while let Some(log) = stream.next().await { - let NewTaskCreated { taskIndex, task } = log.log_decode()?.inner.data; - - aggregator - .lock() - .await - .tasks - .insert(taskIndex, task.clone()); - - let mut quorum_nums: Vec = vec![]; - let mut quorum_threshold_percentages = Vec::with_capacity(task.quorumNumbers.len()); - for _ in &task.quorumNumbers { - quorum_threshold_percentages.push(task.quorumThresholdPercentage.try_into()?); - } - - for val in task.quorumNumbers.iter() { - quorum_nums.push(*val); - } +impl TaskProcessor for ISTaskProcessor { + type NewTaskEvent = NewTaskCreated; + type TaskResponse = ISTaskResponse; - let time_to_expiry = tokio::time::Duration::from_secs( - (TASK_CHALLENGE_WINDOW_BLOCK * BLOCK_TIME_SECONDS).into(), + async fn process_new_task( + &self, + event: Self::NewTaskEvent, + ) -> Result { + let NewTaskCreated { + taskIndex: task_index, + task, + } = event; + self.tasks.lock().await.insert(task_index, task.clone()); + + let mut quorum_nums: Vec = vec![]; + let mut quorum_threshold_percentages = Vec::with_capacity(task.quorumNumbers.len()); + for _ in &task.quorumNumbers { + quorum_threshold_percentages.push( + task.quorumThresholdPercentage + .try_into() + .map_err(box_error)?, ); - let _ = aggregator - .lock() - .await - .bls_aggregation_service - .initialize_new_task( - taskIndex, - task.taskCreatedBlock, - quorum_nums.clone(), - quorum_threshold_percentages.clone(), - time_to_expiry, - ) - .await - .map_err(|e: BlsAggregationServiceError| eyre::eyre!(e)); } - Ok(()) - } - - /// Processes the signed task response - /// - /// # Arguments - /// - /// * [`SignedTaskResponse`] - The signed task response - /// - /// # Returns - /// - /// * `eyre::Result<()>` - The result of the operation - pub async fn process_signed_task_response( - &mut self, - signed_task_response: SignedTaskResponse, - operator_state_retriever: Address, - registry_coordinator: Address, - ) -> Result<(), AggregatorError> { - let task_index = signed_task_response.task_response.referenceTaskIndex; - - let task_response_digest = alloy::primitives::keccak256(TaskResponse::abi_encode( - &signed_task_response.task_response, - )); - - let response = - check_double_mapping(&self.tasks_responses, task_index, task_response_digest); - - if response.is_none() { - let mut inner_map = HashMap::new(); - inner_map.insert( - task_response_digest, - signed_task_response.clone().task_response, - ); - self.tasks_responses.insert(task_index, inner_map); + for val in task.quorumNumbers.iter() { + quorum_nums.push(*val); } - let entry = self.task_quorum.entry(task_index).or_insert(U96::from(0)); - let old_entry = *entry; - let quorum_reached = { - let registry_coordinator_instance = RegistryCoordinator::new( - registry_coordinator, - get_provider(&self.avs_writer.rpc_url), - ); - let op_state = OperatorStateRetriever::new( - operator_state_retriever, - get_provider(&self.avs_writer.rpc_url), - ); - if let Some(task) = self.tasks.get(&task_index) { - let state = op_state - .getOperatorState_0( - registry_coordinator, - task.quorumNumbers.clone(), - task.taskCreatedBlock, - ) - .call() - .await? - ._0; - let operator_address = registry_coordinator_instance - .getOperatorFromId(signed_task_response.operator_id()) - .call() - .await? - ._0; - for operators in state.iter() { - for operator in operators { - if operator.operator == operator_address { - *entry += operator.stake; - } - } - } - } - if old_entry < U96::from(4800) { - self.bls_aggregation_service - .process_new_signature( - task_index, - task_response_digest, - signed_task_response.signature(), - signed_task_response.operator_id(), - ) - .await?; - } - - *entry >= U96::from(4800) // total stake is 12000. quorum threshold percentag in new task is 40% . hence 4800. - }; - - if quorum_reached && (old_entry < U96::from(4800)) { - info!("quorum reached for task index: {:?}", task_index); - if let Some(aggregated_response) = self - .bls_aggregation_service - .aggregated_response_receiver - .lock() - .await - .recv() - .await - { - let response = - aggregated_response.map_err(AggregatorError::BlsAggregationServiceError)?; - self.send_aggregated_response_to_contract(response, signed_task_response) - .await?; - } - } else if old_entry >= U96::from(4800) { - info!( - "quorum already reached for index{:?}, ignoring more signatures", - task_index - ); - } else { - info!( - "quorum not reached yet for index:{:?}. waiting to receive more signatures ", - task_index - ); - } + let time_to_expiry = tokio::time::Duration::from_secs( + (TASK_CHALLENGE_WINDOW_BLOCK * BLOCK_TIME_SECONDS).into(), + ); + Ok(TaskMetadata { + task_index, + task_created_block: task.taskCreatedBlock, + quorum_nums, + quorum_threshold_percentages, + time_to_expiry, + }) + } - Ok(()) + async fn process_task_response( + &self, + task_response: Self::TaskResponse, + ) -> Result { + let hash = task_response.digest(); + self.task_responses.lock().await.insert(hash, task_response); + Ok(hash) } - /// Sends the aggregated response to the contract - /// - /// # Arguments - /// - /// * [`BlsAggregationServiceResponse`] - The aggregated response - /// - /// # Returns - /// - /// * `eyre::Result<()>` - The result of the operation - pub async fn send_aggregated_response_to_contract( + async fn process_aggregated_response( &self, response: BlsAggregationServiceResponse, - signed_task_response: SignedTaskResponse, - ) -> Result<(), AggregatorError> { + ) -> Result<(), TaskProcessorError> { let mut non_signer_pub_keys = Vec::::new(); for pub_key in response.non_signers_pub_keys_g1.iter() { - if pub_key.g1().x().is_some() { - let g1 = convert_to_g1_point(pub_key.g1())?; - non_signer_pub_keys.push(G1Point { X: g1.X, Y: g1.Y }) - } else { - info!( - "Zero non_signers for the task index :{:?}", - response.task_index - ); - } + let g1 = convert_to_g1_point(pub_key.g1()).map_err(box_error)?; + non_signer_pub_keys.push(G1Point { X: g1.X, Y: g1.Y }) } let mut quorum_apks = Vec::::new(); for pub_key in response.quorum_apks_g1.iter() { - let g1 = convert_to_g1_point(pub_key.g1())?; + let g1 = convert_to_g1_point(pub_key.g1()).map_err(box_error)?; quorum_apks.push(G1Point { X: g1.X, Y: g1.Y }) } @@ -433,62 +140,35 @@ impl Aggregator { nonSignerQuorumBitmapIndices: response.non_signer_quorum_bitmap_indices, quorumApks: quorum_apks, apkG2: G2Point { - X: convert_to_g2_point(response.signers_apk_g2.g2())?.X, - Y: convert_to_g2_point(response.signers_apk_g2.g2())?.Y, + X: convert_to_g2_point(response.signers_apk_g2.g2()) + .map_err(box_error)? + .X, + Y: convert_to_g2_point(response.signers_apk_g2.g2()) + .map_err(box_error)? + .Y, }, sigma: G1Point { - X: convert_to_g1_point(response.signers_agg_sig_g1.g1_point().g1())?.X, - Y: convert_to_g1_point(response.signers_agg_sig_g1.g1_point().g1())?.Y, + X: convert_to_g1_point(response.signers_agg_sig_g1.g1_point().g1()) + .map_err(box_error)? + .X, + Y: convert_to_g1_point(response.signers_agg_sig_g1.g1_point().g1()) + .map_err(box_error)? + .Y, }, quorumApkIndices: response.quorum_apk_indices, totalStakeIndices: response.total_stake_indices, nonSignerStakeIndices: response.non_signer_stake_indices, }; - let task = &self.tasks[&response.task_index]; - let task_response = signed_task_response.task_response; + let task = &self.tasks.lock().await[&response.task_index]; + let task_response = self.task_responses.lock().await[&response.task_response_digest] + .0 + .clone(); self.avs_writer - .send_aggregated_response( - task.clone(), - task_response.clone(), - non_signer_stakes_and_signature, - ) - .await?; - Ok(()) - } -} + .send_aggregated_response(task.clone(), task_response, non_signer_stakes_and_signature) + .await + .map_err(box_error)?; -fn check_double_mapping( - outer_map: &HashMap>, - outer_key: u32, - inner_key: TaskResponseDigest, -) -> Option<&TaskResponse> { - if let Some(inner_map) = outer_map.get(&outer_key) { - if let Some(value) = inner_map.get(&inner_key) { - return Some(value); - } - } - None -} - -#[cfg(test)] -mod tests { - - use super::*; - - #[test] - fn test_check_double_mapping() { - let mut outer_map = HashMap::new(); - let mut inner_map = HashMap::new(); - inner_map.insert( - TaskResponseDigest::default(), - TaskResponse { - referenceTaskIndex: "0".parse().unwrap(), - numberSquared: "0".parse().unwrap(), - }, - ); - outer_map.insert(1, inner_map); - let result = check_double_mapping(&outer_map, 1, TaskResponseDigest::default()); - assert!(result.is_some()); + Ok(()) } } diff --git a/crates/aggregator/src/rpc_server.rs b/crates/aggregator/src/rpc_server.rs deleted file mode 100644 index c150d63f..00000000 --- a/crates/aggregator/src/rpc_server.rs +++ /dev/null @@ -1,38 +0,0 @@ -use eigen_crypto_bls::Signature; -use eigen_types::operator::OperatorId; -use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::TaskResponse; -use serde::{Deserialize, Serialize}; -// use alloy::sol_types::SolCall; -/// Signed Task Response -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct SignedTaskResponse { - /// Task Response - pub task_response: TaskResponse, - signature: Signature, - operator_id: OperatorId, -} - -impl SignedTaskResponse { - /// Create a new [`SignedTaskResponse`] - pub fn new( - task_response: TaskResponse, - bls_signature: Signature, - operator_id: OperatorId, - ) -> Self { - Self { - task_response, - signature: bls_signature, - operator_id, - } - } - - /// [`Signature`] - pub fn signature(&self) -> Signature { - self.signature.clone() - } - - /// [`OperatorId`] - pub fn operator_id(&self) -> OperatorId { - self.operator_id - } -} diff --git a/crates/chainio/Cargo.toml b/crates/chainio/Cargo.toml index ba592298..4640984e 100644 --- a/crates/chainio/Cargo.toml +++ b/crates/chainio/Cargo.toml @@ -6,7 +6,7 @@ rust-version.workspace = true repository.workspace = true license.workspace = true description = "incredible squaring chainio " - + [lints] workspace = true @@ -22,7 +22,8 @@ tracing.workspace = true reqwest.workspace = true #eigen-rs +eigen-common.workspace = true eigen-client-avsregistry.workspace = true eigen-types.workspace = true eigen-utils.workspace = true -eigen-logging.workspace = true \ No newline at end of file +eigen-logging.workspace = true diff --git a/crates/chainio/src/fake_avs_writer.rs b/crates/chainio/src/fake_avs_writer.rs index eb342b05..562dcf92 100644 --- a/crates/chainio/src/fake_avs_writer.rs +++ b/crates/chainio/src/fake_avs_writer.rs @@ -1,6 +1,6 @@ use crate::error::ChainIoError; use alloy::primitives::{Address, TxHash}; -use eigen_utils::get_signer; +use eigen_common::get_signer; use incredible_bindings::incrediblesquaringtaskmanager::{ IBLSSignatureChecker::NonSignerStakesAndSignature, IIncredibleSquaringTaskManager::{Task, TaskResponse, TaskResponseMetadata}, diff --git a/crates/chainio/src/lib.rs b/crates/chainio/src/lib.rs index 6bbdc962..e35b3c34 100644 --- a/crates/chainio/src/lib.rs +++ b/crates/chainio/src/lib.rs @@ -9,10 +9,10 @@ use alloy::{ primitives::{Address, U256}, rpc::types::TransactionReceipt, }; +use eigen_common::{get_provider, get_signer}; use eigen_types::operator::{QuorumNum, QuorumThresholdPercentage}; -use eigen_utils::{ - get_provider, get_signer, - registrycoordinator::RegistryCoordinator::{self, serviceManagerReturn}, +use eigen_utils::middleware::registrycoordinator::RegistryCoordinator::{ + self, serviceManagerReturn, }; use error::ChainIoError; use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::{ diff --git a/crates/challenger/Cargo.toml b/crates/challenger/Cargo.toml index d3d92047..31d963ed 100644 --- a/crates/challenger/Cargo.toml +++ b/crates/challenger/Cargo.toml @@ -6,14 +6,13 @@ rust-version.workspace = true repository.workspace = true license.workspace = true description = "incredible squaring challenger " - + [lints] workspace = true [dependencies] incredible-config.workspace = true eyre.workspace = true -alloy-provider.workspace = true incredible-bindings.workspace = true futures-util.workspace = true alloy.workspace = true @@ -29,4 +28,4 @@ incredible-chainio.workspace = true eigen-utils.workspace = true [dev-dependencies] -incredible-task-generator.workspace = true \ No newline at end of file +incredible-task-generator.workspace = true diff --git a/crates/metrics/Cargo.toml b/crates/metrics/Cargo.toml index ed12b994..494f5ca6 100644 --- a/crates/metrics/Cargo.toml +++ b/crates/metrics/Cargo.toml @@ -6,13 +6,12 @@ rust-version.workspace = true repository.workspace = true license.workspace = true description = "incredible-metrics" - + [lints] workspace = true [dependencies] alloy.workspace = true -alloy-provider.workspace = true incredible-config.workspace = true thiserror.workspace = true incredible-bindings.workspace = true @@ -26,4 +25,4 @@ metrics-util.workspace = true [dev-dependencies] eigen-metrics.workspace = true tokio.workspace = true -reqwest.workspace = true \ No newline at end of file +reqwest.workspace = true diff --git a/crates/operator/Cargo.toml b/crates/operator/Cargo.toml index 0d9c3820..0e8811fd 100644 --- a/crates/operator/Cargo.toml +++ b/crates/operator/Cargo.toml @@ -6,13 +6,12 @@ rust-version.workspace = true repository.workspace = true license.workspace = true description = "eigen layer operator" - + [lints] workspace = true [dependencies] alloy.workspace = true -alloy-provider.workspace = true incredible-config.workspace = true thiserror.workspace = true incredible-bindings.workspace = true @@ -20,6 +19,7 @@ eyre.workspace = true futures-util.workspace = true # eigen-rs +eigen-aggregator.workspace = true eigen-client-avsregistry.workspace = true eigen-crypto-bls.workspace = true eigen-cli.workspace = true @@ -33,7 +33,7 @@ rust-bls-bn254.workspace = true incredible-aggregator.workspace = true reqwest.workspace = true -hex = {version = "0.4.3" , features = ["alloc"]} +hex = { version = "0.4.3", features = ["alloc"] } tokio.workspace = true serde_json.workspace = true toml.workspace = true @@ -53,4 +53,4 @@ ark-ff = "0.5.0" [features] default = [] -integration_tests = [] \ No newline at end of file +integration_tests = [] diff --git a/crates/operator/src/builder.rs b/crates/operator/src/builder.rs index f0c23911..7cf9e65f 100644 --- a/crates/operator/src/builder.rs +++ b/crates/operator/src/builder.rs @@ -10,7 +10,8 @@ use alloy::{ }; use alloy::primitives::U256; -use alloy_provider::{Provider, ProviderBuilder}; +use alloy::providers::{Provider, ProviderBuilder}; +use eigen_aggregator::rpc_server::SignedTaskResponse; use eigen_client_avsregistry::reader::AvsRegistryChainReader; use eigen_client_eth::instrumented_client::InstrumentedClient; use eigen_crypto_bls::BlsKeyPair; @@ -18,7 +19,6 @@ use eigen_logging::get_logger; use eigen_types::operator::OperatorId; use eyre::Result; use futures_util::StreamExt; -use incredible_aggregator::rpc_server::SignedTaskResponse; use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::TaskResponse; use incredible_bindings::incrediblesquaringtaskmanager::IncredibleSquaringTaskManager::{ self, NewTaskCreated, diff --git a/crates/operator_2/Cargo.toml b/crates/operator_2/Cargo.toml index 8ac9e0ae..0255afbe 100644 --- a/crates/operator_2/Cargo.toml +++ b/crates/operator_2/Cargo.toml @@ -6,13 +6,12 @@ rust-version.workspace = true repository.workspace = true license.workspace = true description = "eigen layer operator" - + [lints] workspace = true [dependencies] alloy.workspace = true -alloy-provider.workspace = true incredible-config.workspace = true thiserror.workspace = true incredible-bindings.workspace = true @@ -34,7 +33,7 @@ rust-bls-bn254.workspace = true incredible-aggregator.workspace = true reqwest.workspace = true -hex = {version = "0.4.3" , features = ["alloc"]} +hex = { version = "0.4.3", features = ["alloc"] } tokio.workspace = true serde_json.workspace = true toml.workspace = true @@ -54,4 +53,4 @@ ark-ff = "0.5.0" [features] default = [] -integration_tests = [] \ No newline at end of file +integration_tests = [] diff --git a/crates/task_generator/Cargo.toml b/crates/task_generator/Cargo.toml index 090de088..89bb047f 100644 --- a/crates/task_generator/Cargo.toml +++ b/crates/task_generator/Cargo.toml @@ -6,7 +6,7 @@ rust-version.workspace = true repository.workspace = true license.workspace = true description = "eigen layer operator" - + [lints] rust.missing_docs = "allow" rust.missing_debug_implementations = "warn" @@ -17,7 +17,6 @@ rustdoc.all = "warn" [dependencies] alloy.workspace = true -alloy-provider.workspace = true incredible-config.workspace = true thiserror.workspace = true incredible-bindings.workspace = true @@ -29,5 +28,5 @@ tracing.workspace = true reqwest.workspace = true # eigen-rs +eigen-common.workspace = true eigen-utils.workspace = true - diff --git a/crates/task_generator/src/lib.rs b/crates/task_generator/src/lib.rs index e0e227ad..c7be241a 100644 --- a/crates/task_generator/src/lib.rs +++ b/crates/task_generator/src/lib.rs @@ -6,7 +6,7 @@ use alloy::{ rpc::types::TransactionReceipt, signers::local::PrivateKeySigner, }; -use eigen_utils::get_signer; +use eigen_common::get_signer; use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::{ Task, TaskResponse, }; diff --git a/crates/testing-utils/Cargo.toml b/crates/testing-utils/Cargo.toml index 66a06a9c..15148d16 100644 --- a/crates/testing-utils/Cargo.toml +++ b/crates/testing-utils/Cargo.toml @@ -6,12 +6,13 @@ rust-version.workspace = true repository.workspace = true license.workspace = true description = "eigen layer operator" - + [lints] workspace = true [dependencies] +eigen-common.workspace = true eigen-utils.workspace = true eigen-testing-utils.workspace = true alloy.workspace = true -tracing.workspace = true \ No newline at end of file +tracing.workspace = true diff --git a/crates/testing-utils/src/lib.rs b/crates/testing-utils/src/lib.rs index 2f079558..f68988c8 100644 --- a/crates/testing-utils/src/lib.rs +++ b/crates/testing-utils/src/lib.rs @@ -1,33 +1,8 @@ //! testing utils for incredible squaring rs use alloy::primitives::{address, Address}; -use alloy::sol; +use eigen_common::get_provider; use eigen_testing_utils::anvil_constants::ANVIL_HTTP_URL; -use eigen_utils::{ - // contractsregistry::ContractsRegistry::{self}, - get_provider, -}; -use ContractsRegistry::contractsReturn; - -sol! { - #[derive(Debug)] - #[allow(missing_docs)] - #[sol(rpc)] - contract ContractsRegistry { - mapping(string => address) public contracts; - mapping(uint256 => string) public contractNames; - uint256 public contractCount; - - function registerContract(string memory name, address _contract) public { - // we treat redeploys as a bug since this is only meant to be used for testing. - // If new contracts need to be deployed just start from a fresh anvil state. - require(contracts[name] == address(0), "contract already registered"); - contracts[name] = _contract; - contractNames[contractCount] = name; - contractCount++; - } - - } -} +use eigen_utils::sdk::contractsregistry::ContractsRegistry::{self, contractsReturn}; /// Local anvil ContractsRegistry which contains a mapping of all locally deployed EL contracts. pub const CONTRACTS_REGISTRY: Address = address!("5FbDB2315678afecb367f032d93F642f64180aa3"); From b319f60929d9b57affca5cca88020b1ca43f0315 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Thu, 30 Jan 2025 19:12:00 -0300 Subject: [PATCH 04/24] fix: use SDK aggregator when building AVS --- Cargo.lock | 3 ++- bin/incredible-squaring-avs/Cargo.toml | 7 ++--- .../src/commands/avs/mod.rs | 8 +++--- crates/avs/src/builder/mod.rs | 26 ++++++++++++++----- crates/challenger/Cargo.toml | 1 + crates/challenger/src/lib.rs | 2 +- crates/operator/Cargo.toml | 1 - crates/operator/src/builder.rs | 4 +-- crates/operator/src/client.rs | 2 +- crates/operator_2/src/builder.rs | 6 ++--- 10 files changed, 37 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 52d4a060..cacd30eb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4118,6 +4118,7 @@ name = "incredible-challenger" version = "0.0.1-alpha" dependencies = [ "alloy", + "eigen-common", "eigen-utils", "eyre", "futures-util", @@ -4183,7 +4184,6 @@ dependencies = [ "alloy", "ark-ec 0.5.0", "ark-ff 0.5.0", - "eigen-aggregator", "eigen-cli", "eigen-client-avsregistry", "eigen-client-eth", @@ -4260,6 +4260,7 @@ dependencies = [ "clap", "eigen-client-avsregistry", "eigen-client-elcontracts", + "eigen-common", "eigen-crypto-bls", "eigen-logging", "eigen-metrics", diff --git a/bin/incredible-squaring-avs/Cargo.toml b/bin/incredible-squaring-avs/Cargo.toml index f91bfa19..ea60d4d3 100644 --- a/bin/incredible-squaring-avs/Cargo.toml +++ b/bin/incredible-squaring-avs/Cargo.toml @@ -6,13 +6,13 @@ rust-version.workspace = true repository.workspace = true license.workspace = true description = "incredible squaring avs in rust" - + [lints] workspace = true [dependencies] incredible-aggregator.workspace = true -incredible-operator = {workspace = true , features = ["default"]} +incredible-operator = { workspace = true, features = ["default"] } incredible-cli-runner.workspace = true incredible-config.workspace = true incredible-avs.workspace = true @@ -29,6 +29,7 @@ rust-bls-bn254.workspace = true eigen-crypto-bls.workspace = true metrics-util.workspace = true # eigensdk-rs +eigen-common.workspace = true eigen-testing-utils.workspace = true eigen-logging.workspace = true eigen-utils.workspace = true @@ -43,4 +44,4 @@ tokio.workspace = true [[bin]] name = "incredible-squaring-avs" -path = "src/main.rs" \ No newline at end of file +path = "src/main.rs" diff --git a/bin/incredible-squaring-avs/src/commands/avs/mod.rs b/bin/incredible-squaring-avs/src/commands/avs/mod.rs index 6cd6bcaa..000cfe8a 100644 --- a/bin/incredible-squaring-avs/src/commands/avs/mod.rs +++ b/bin/incredible-squaring-avs/src/commands/avs/mod.rs @@ -7,6 +7,7 @@ use clap::value_parser; use clap::{Args, Parser}; use eigen_client_elcontracts::reader::ELChainReader; use eigen_client_elcontracts::{error::ElContractsError, writer::ELChainWriter}; +use eigen_common::{get_provider, get_signer}; use eigen_crypto_bls::BlsKeyPair; use eigen_logging::{get_logger, init_logger, log_level::LogLevel}; use eigen_metrics::prometheus::init_registry; @@ -16,10 +17,9 @@ use eigen_testing_utils::anvil_constants::{ get_strategy_manager_address, ANVIL_HTTP_URL, }; use eigen_types::operator::Operator; -use eigen_utils::allocationmanager::AllocationManager::{self, OperatorSet}; -use eigen_utils::allocationmanager::IAllocationManagerTypes::AllocateParams; -use eigen_utils::registrycoordinator::RegistryCoordinator; -use eigen_utils::{get_provider, get_signer}; +use eigen_utils::core::allocationmanager::AllocationManager::{self, OperatorSet}; +use eigen_utils::core::allocationmanager::IAllocationManagerTypes::AllocateParams; +use eigen_utils::middleware::registrycoordinator::RegistryCoordinator; use incredible_avs::builder::{AvsBuilder, DefaultAvsLauncher, LaunchAvs}; use incredible_config::IncredibleConfig; use incredible_testing_utils::{ diff --git a/crates/avs/src/builder/mod.rs b/crates/avs/src/builder/mod.rs index 301a8e67..62777444 100644 --- a/crates/avs/src/builder/mod.rs +++ b/crates/avs/src/builder/mod.rs @@ -1,7 +1,7 @@ //! Builder module for the AVS. Starts all the services for the AVS using futures simulatenously. use eigen_nodeapi::{create_server, NodeApi}; use futures::TryFutureExt; -use incredible_aggregator::Aggregator; +use incredible_aggregator::{Aggregator, AggregatorConfig, ISTaskProcessor}; use incredible_challenger::Challenger; use incredible_config::IncredibleConfig; use incredible_operator::builder::OperatorBuilder; @@ -70,14 +70,26 @@ impl LaunchAvs for DefaultAvsLauncher { let challenger_service = challenge .start_challenger() .map_err(|e| eyre::eyre!("Challenger error: {:?}", e)); - let aggregator = Aggregator::new(avs.config.clone()).await?; + let task_processor = ISTaskProcessor::new( + avs.config.registry_coordinator_addr()?, + avs.config.http_rpc_url(), + avs.config.get_signer(), + ) + .await?; + + let aggregator_cfg = AggregatorConfig { + server_address: avs.config.aggregator_ip_addr(), + http_rpc_url: avs.config.http_rpc_url(), + ws_rpc_url: avs.config.ws_rpc_url(), + registry_coordinator: avs.config.registry_coordinator_addr()?, + operator_state_retriever: avs.config.operator_state_retriever_addr()?, + }; + let aggregator = Aggregator::new(aggregator_cfg, task_processor) + .await + .map_err(|e| eyre::eyre!("Aggregator new error {e:?}"))?; let aggregator_service_with_rpc_client = aggregator - .start( - avs.config.ws_rpc_url().clone(), - avs.config.operator_state_retriever_addr()?, - avs.config.registry_coordinator_addr()?, - ) + .start(avs.config.ws_rpc_url().clone()) .map_err(|e| eyre::eyre!("Aggregator error {e:?}")); let task_manager = TaskManager::new( diff --git a/crates/challenger/Cargo.toml b/crates/challenger/Cargo.toml index 31d963ed..ae5b39d2 100644 --- a/crates/challenger/Cargo.toml +++ b/crates/challenger/Cargo.toml @@ -25,6 +25,7 @@ incredible-testing-utils.workspace = true incredible-chainio.workspace = true #eigen-rs +eigen-common.workspace = true eigen-utils.workspace = true [dev-dependencies] diff --git a/crates/challenger/src/lib.rs b/crates/challenger/src/lib.rs index c96496ed..a5e5f2c8 100644 --- a/crates/challenger/src/lib.rs +++ b/crates/challenger/src/lib.rs @@ -1,6 +1,6 @@ //! Challenger crate use alloy::consensus::Transaction; -use eigen_utils::{get_provider, get_ws_provider}; +use eigen_common::{get_provider, get_ws_provider}; use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::{ Task, TaskResponse, TaskResponseMetadata, }; diff --git a/crates/operator/Cargo.toml b/crates/operator/Cargo.toml index 0e8811fd..1a48f5d0 100644 --- a/crates/operator/Cargo.toml +++ b/crates/operator/Cargo.toml @@ -19,7 +19,6 @@ eyre.workspace = true futures-util.workspace = true # eigen-rs -eigen-aggregator.workspace = true eigen-client-avsregistry.workspace = true eigen-crypto-bls.workspace = true eigen-cli.workspace = true diff --git a/crates/operator/src/builder.rs b/crates/operator/src/builder.rs index 7cf9e65f..ae0ffcb3 100644 --- a/crates/operator/src/builder.rs +++ b/crates/operator/src/builder.rs @@ -11,7 +11,6 @@ use alloy::{ use alloy::primitives::U256; use alloy::providers::{Provider, ProviderBuilder}; -use eigen_aggregator::rpc_server::SignedTaskResponse; use eigen_client_avsregistry::reader::AvsRegistryChainReader; use eigen_client_eth::instrumented_client::InstrumentedClient; use eigen_crypto_bls::BlsKeyPair; @@ -19,6 +18,7 @@ use eigen_logging::get_logger; use eigen_types::operator::OperatorId; use eyre::Result; use futures_util::StreamExt; +use incredible_aggregator::SignedTaskResponse; use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::TaskResponse; use incredible_bindings::incrediblesquaringtaskmanager::IncredibleSquaringTaskManager::{ self, NewTaskCreated, @@ -311,7 +311,7 @@ mod tests { assert!(verify_message( bls_key_pair.public_key_g2().g2(), &hash_msg, - signed_task_response.signature().g1_point().g1() + signed_task_response.signature.g1_point().g1() )); } } diff --git a/crates/operator/src/client.rs b/crates/operator/src/client.rs index 780700a1..42e7a112 100644 --- a/crates/operator/src/client.rs +++ b/crates/operator/src/client.rs @@ -1,6 +1,6 @@ use alloy::rpc::client::{ReqwestClient, RpcClient}; use eyre::Result; -pub use incredible_aggregator::rpc_server::SignedTaskResponse; +use incredible_aggregator::SignedTaskResponse; use reqwest::Client; use serde_json::json; use tokio::time::{sleep, Duration}; diff --git a/crates/operator_2/src/builder.rs b/crates/operator_2/src/builder.rs index f157e937..44e3f199 100644 --- a/crates/operator_2/src/builder.rs +++ b/crates/operator_2/src/builder.rs @@ -9,7 +9,7 @@ use alloy::{ use incredible_operator::{client::ClientAggregator, error::OperatorError}; use alloy::primitives::U256; -use alloy_provider::{Provider, ProviderBuilder}; +use alloy::providers::{Provider, ProviderBuilder}; use eigen_client_avsregistry::reader::AvsRegistryChainReader; use eigen_client_eth::instrumented_client::InstrumentedClient; use eigen_crypto_bls::BlsKeyPair; @@ -17,7 +17,7 @@ use eigen_logging::get_logger; use eigen_types::operator::OperatorId; use eyre::Result; use futures_util::StreamExt; -use incredible_aggregator::rpc_server::SignedTaskResponse; +use incredible_aggregator::SignedTaskResponse; use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::TaskResponse; use incredible_bindings::incrediblesquaringtaskmanager::IncredibleSquaringTaskManager::{ self, NewTaskCreated, @@ -316,7 +316,7 @@ mod tests { assert!(verify_message( bls_key_pair.public_key_g2().g2(), &hash_msg, - signed_task_response.signature().g1_point().g1() + signed_task_response.signature.g1_point().g1() )); } } From 5fce8ce159758abdfeb0b986a7c65ec4ec4920b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Thu, 30 Jan 2025 19:13:25 -0300 Subject: [PATCH 05/24] fix: change imports --- .../src/commands/avs/mod.rs | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/bin/incredible-squaring-avs/src/commands/avs/mod.rs b/bin/incredible-squaring-avs/src/commands/avs/mod.rs index 000cfe8a..3a37a601 100644 --- a/bin/incredible-squaring-avs/src/commands/avs/mod.rs +++ b/bin/incredible-squaring-avs/src/commands/avs/mod.rs @@ -19,7 +19,9 @@ use eigen_testing_utils::anvil_constants::{ use eigen_types::operator::Operator; use eigen_utils::core::allocationmanager::AllocationManager::{self, OperatorSet}; use eigen_utils::core::allocationmanager::IAllocationManagerTypes::AllocateParams; -use eigen_utils::middleware::registrycoordinator::RegistryCoordinator; +use eigen_utils::middleware::registrycoordinator::{ + IRegistryCoordinator, IStakeRegistry, RegistryCoordinator, +}; use incredible_avs::builder::{AvsBuilder, DefaultAvsLauncher, LaunchAvs}; use incredible_config::IncredibleConfig; use incredible_testing_utils::{ @@ -788,19 +790,16 @@ pub async fn create_total_delegated_stake_quorum( let registry_coordinator_instance = RegistryCoordinator::new(registry_coordinator_address, get_signer(&pvt_key, rpc_url)); - let operator_set_param = - eigen_utils::registrycoordinator::IRegistryCoordinator::OperatorSetParam { - maxOperatorCount: 3, - kickBIPsOfOperatorStake: 100, - kickBIPsOfTotalStake: 1000, - }; + let operator_set_param = IRegistryCoordinator::OperatorSetParam { + maxOperatorCount: 3, + kickBIPsOfOperatorStake: 100, + kickBIPsOfTotalStake: 1000, + }; let minimum_stake: U96 = U96::from(0); - let strategy_params = vec![ - eigen_utils::registrycoordinator::IStakeRegistry::StrategyParams { - strategy: strategy_address, - multiplier: U96::from(1), - }, - ]; + let strategy_params = vec![IStakeRegistry::StrategyParams { + strategy: strategy_address, + multiplier: U96::from(1), + }]; let s = registry_coordinator_instance .createTotalDelegatedStakeQuorum(operator_set_param, minimum_stake, strategy_params) From 1e0c348990a5c7fd0071e7577f5f679ea59a2f38 Mon Sep 17 00:00:00 2001 From: Pablo Deymonnaz Date: Thu, 30 Jan 2025 19:23:20 -0300 Subject: [PATCH 06/24] starting including operator using common functions from sdk --- Cargo.lock | 128 +++---- Cargo.toml | 3 +- crates/avs/Cargo.toml | 3 +- crates/operator/Cargo.toml | 18 +- crates/operator/operator_test_config.toml | 5 - crates/operator/src/client.rs | 77 ----- crates/operator/src/error.rs | 41 --- ...ilder.rs => incredible_square_operator.rs} | 231 +++++-------- crates/operator/src/lib.rs | 7 +- crates/operator_2/Cargo.toml | 56 --- crates/operator_2/src/builder.rs | 322 ------------------ crates/operator_2/src/lib.rs | 3 - integration-tests/Cargo.toml | 39 ++- 13 files changed, 161 insertions(+), 772 deletions(-) delete mode 100644 crates/operator/src/client.rs delete mode 100644 crates/operator/src/error.rs rename crates/operator/src/{builder.rs => incredible_square_operator.rs} (55%) delete mode 100644 crates/operator_2/Cargo.toml delete mode 100644 crates/operator_2/src/builder.rs delete mode 100644 crates/operator_2/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index cacd30eb..758e9677 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1954,16 +1954,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" -[[package]] -name = "colored" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" -dependencies = [ - "lazy_static", - "windows-sys 0.59.0", -] - [[package]] name = "concurrent-queue" version = "2.5.0" @@ -2400,39 +2390,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "eigen-cli" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" -dependencies = [ - "alloy", - "alloy-json-rpc", - "alloy-primitives", - "alloy-provider", - "alloy-transport", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "clap", - "colored", - "eigen-common", - "eigen-crypto-bls", - "eigen-testing-utils", - "eigen-utils", - "eth-keystore", - "hex", - "k256", - "num-bigint", - "rand", - "rand_core", - "rust-bls-bn254 0.2.1", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", - "uuid 1.11.0", -] - [[package]] name = "eigen-client-avsregistry" version = "0.1.2" @@ -2501,6 +2458,17 @@ dependencies = [ "url", ] +[[package]] +name = "eigen-config" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +dependencies = [ + "hex", + "ruint", + "serde", + "thiserror 1.0.69", +] + [[package]] name = "eigen-crypto-bls" version = "0.1.2" @@ -2572,6 +2540,34 @@ dependencies = [ "tracing", ] +[[package]] +name = "eigen-operator" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +dependencies = [ + "alloy", + "alloy-provider", + "eigen-aggregator", + "eigen-client-avsregistry", + "eigen-config", + "eigen-crypto-bls", + "eigen-crypto-bn254", + "eigen-logging", + "eigen-types", + "eigen-utils", + "futures-util", + "hex", + "rand_core", + "reqwest 0.12.9", + "rust-bls-bn254 0.2.1", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tracing", + "url", +] + [[package]] name = "eigen-services-avsregistry" version = "0.1.2" @@ -4074,7 +4070,6 @@ dependencies = [ "incredible-config", "incredible-metrics", "incredible-operator", - "incredible-operator-2", "incredible-task-generator", "metrics", "metrics-util", @@ -4184,62 +4179,26 @@ dependencies = [ "alloy", "ark-ec 0.5.0", "ark-ff 0.5.0", - "eigen-cli", - "eigen-client-avsregistry", - "eigen-client-eth", - "eigen-crypto-bls", - "eigen-crypto-bn254", - "eigen-logging", - "eigen-metrics-collectors-rpc-calls", - "eigen-types", - "eigen-utils", - "eyre", - "futures-util", - "hex", - "incredible-aggregator", - "incredible-bindings", - "incredible-config", - "incredible-metrics", - "incredible-testing-utils", - "rand_core", - "reqwest 0.12.9", - "rust-bls-bn254 0.1.0", - "serde_json", - "tempfile", - "thiserror 2.0.7", - "tokio", - "toml", - "tracing", -] - -[[package]] -name = "incredible-operator-2" -version = "0.0.1-alpha" -dependencies = [ - "alloy", - "ark-ec 0.5.0", - "ark-ff 0.5.0", - "eigen-cli", + "eigen-aggregator", "eigen-client-avsregistry", "eigen-client-eth", "eigen-crypto-bls", "eigen-crypto-bn254", "eigen-logging", "eigen-metrics-collectors-rpc-calls", + "eigen-operator", "eigen-types", "eigen-utils", "eyre", "futures-util", "hex", - "incredible-aggregator", "incredible-bindings", "incredible-config", - "incredible-metrics", - "incredible-operator", "incredible-testing-utils", "rand_core", "reqwest 0.12.9", "rust-bls-bn254 0.1.0", + "serde", "serde_json", "tempfile", "thiserror 2.0.7", @@ -7704,9 +7663,6 @@ name = "uuid" version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" -dependencies = [ - "getrandom", -] [[package]] name = "valuable" diff --git a/Cargo.toml b/Cargo.toml index 6a91242e..496fde30 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,6 @@ members = [ "crates/chainio", "crates/testing-utils", "crates/task_generator", - "crates/operator_2", "crates/slasher", ] @@ -74,11 +73,11 @@ incredible-challenger = { path = "crates/challenger/" } incredible-chainio = { path = "crates/chainio/" } incredible-testing-utils = { path = "crates/testing-utils/" } incredible-task-generator = { path = "crates/task_generator/" } -incredible-operator-2 = { path = "crates/operator_2/", features = ["default"] } incredible-slasher = { path = "crates/slasher/" } # eigensdk-rs eigen-aggregator = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } +eigen-operator = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } eigen-common = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } eigen-client-avsregistry = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } eigen-testing-utils = { git = "https://github.com/Layr-Labs/eigensdk-rs", branch = "sdk-ux-improvment" } diff --git a/crates/avs/Cargo.toml b/crates/avs/Cargo.toml index a2f3bed1..b5bba13a 100644 --- a/crates/avs/Cargo.toml +++ b/crates/avs/Cargo.toml @@ -6,7 +6,7 @@ rust-version.workspace = true repository.workspace = true license.workspace = true description = "incredible avs builder " - + [lints] workspace = true @@ -19,7 +19,6 @@ metrics.workspace = true metrics-util.workspace = true #incredible -incredible-operator-2.workspace = true incredible-config.workspace = true incredible-operator.workspace = true incredible-challenger.workspace = true diff --git a/crates/operator/Cargo.toml b/crates/operator/Cargo.toml index 1a48f5d0..b7714c45 100644 --- a/crates/operator/Cargo.toml +++ b/crates/operator/Cargo.toml @@ -20,29 +20,27 @@ futures-util.workspace = true # eigen-rs eigen-client-avsregistry.workspace = true +eigen-client-eth.workspace = true eigen-crypto-bls.workspace = true -eigen-cli.workspace = true +eigen-crypto-bn254.workspace = true +eigen-logging.workspace = true +eigen-metrics-collectors-rpc-calls.workspace = true +eigen-operator.workspace = true eigen-types.workspace = true - -incredible-metrics.workspace = true +eigen-utils.workspace = true +eigen-aggregator.workspace = true rust-bls-bn254.workspace = true -#incredible -incredible-aggregator.workspace = true reqwest.workspace = true hex = { version = "0.4.3", features = ["alloc"] } tokio.workspace = true +serde.workspace = true serde_json.workspace = true toml.workspace = true tracing.workspace = true rand_core.workspace = true -eigen-logging.workspace = true -eigen-crypto-bn254.workspace = true -eigen-metrics-collectors-rpc-calls.workspace = true -eigen-client-eth.workspace = true -eigen-utils.workspace = true [dev-dependencies] incredible-testing-utils.workspace = true diff --git a/crates/operator/operator_test_config.toml b/crates/operator/operator_test_config.toml index f4db9673..39df5fea 100644 --- a/crates/operator/operator_test_config.toml +++ b/crates/operator/operator_test_config.toml @@ -19,8 +19,3 @@ operator_address = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" operator_id = "0xb345f720903a3ecfd59f3de456dd9d266c2ce540b05e8c909106962684d9afa3" operator_2_address = "0x0b065a0423f076a340f37e16e1ce22e23d66caf2" operator_2_id = "0x17a0935b43b64cc3536d48621208fddb680ef8998561f0a1669a3ccda66676be" -operator_set_id = "1" -operator_1_token_amount = "5000000000000000000000" -operator_2_token_amount = "7000000000000000000000" -allocation_delay = "1" -slash_simulate = false diff --git a/crates/operator/src/client.rs b/crates/operator/src/client.rs deleted file mode 100644 index 42e7a112..00000000 --- a/crates/operator/src/client.rs +++ /dev/null @@ -1,77 +0,0 @@ -use alloy::rpc::client::{ReqwestClient, RpcClient}; -use eyre::Result; -use incredible_aggregator::SignedTaskResponse; -use reqwest::Client; -use serde_json::json; -use tokio::time::{sleep, Duration}; -use tracing::{debug, info}; - -/// Client Aggregator -#[derive(Debug, Clone)] -pub struct ClientAggregator { - /// Alloy rpc client to send requests to aggregator - pub client: Option>>, - aggregator_ip_port_address: String, -} - -impl ClientAggregator { - /// new - pub fn new(aggregator_ip_port_address: String) -> Self { - Self { - client: None, - aggregator_ip_port_address, - } - } - - /// new http rpc client instance using the aggregator ip port address - pub fn dial_aggregator_rpc_client(&mut self) -> Result<()> { - let url = reqwest::Url::parse(&format!("http://{}", &self.aggregator_ip_port_address))?; - let client = ReqwestClient::new_http(url); - - self.client = Some(client); - Ok(()) - } - - /// Send signed task response - pub async fn send_signed_task_response( - &self, - signed_task_response: SignedTaskResponse, - ) -> Result<()> { - #[allow(unused_mut)] - let mut delay = Duration::from_secs(1); - - for _ in 0..5 { - let params = &json!({ - "params": signed_task_response, - "id": 1, - "jsonrpc": "2.0" - }); - if let Some(request) = self.client.as_ref() { - let s: bool = request - .request("process_signed_task_response", params) - .await?; - - if s { - incredible_metrics::inc_num_tasks_accepted_by_aggregator(); - return Ok(()); - } - - // Exponential backoff - info!("Retrying in {} seconds...", delay.as_secs()); - sleep(delay).await; - delay *= 2; // Double the delay for the next retry - } - } - debug!("Could not send signed task response to aggregator. Tried 5 times."); - Ok(()) - } -} - -mod tests { - - #[test] - fn test_new_client() { - let mut client = crate::client::ClientAggregator::new("127.0.0.1:8545".to_string()); - let _ = client.dial_aggregator_rpc_client(); - } -} diff --git a/crates/operator/src/error.rs b/crates/operator/src/error.rs deleted file mode 100644 index 89523e7c..00000000 --- a/crates/operator/src/error.rs +++ /dev/null @@ -1,41 +0,0 @@ -use alloy::signers::local::LocalSignerError; -use eigen_crypto_bls::error::BlsError; -use incredible_config::error::ConfigError; -use rust_bls_bn254::errors::KeystoreError; -use thiserror::Error; - -/// Error returned by AvsRegistry -#[derive(Debug, Error)] -pub enum OperatorError { - /// Failed to parse ECDSA keystore signer - #[error("Failed to parse ecdsa keystore signer")] - ECDSAKeystoreSigner, - - /// Failed to derive Cargo Manfest Dir - #[error("Could not derive cargo manifest path")] - CargoManifestDir, - /// Failed to build avsregistry reader - #[error("Failed to build avsregistry reader")] - AvsRegistryChainReader, - /// Could not sign the hash using keypair - #[error("Could not sign the hash using keypair")] - SignUsingBlsKeyPair, - /// Failed to create Encoded bls keystore - #[error("Failed to create Encoded bls keystore ")] - EncodedKeystore, - /// Failed to parse bls keystore path - #[error("failed to parse bls keystore path ")] - BlsKeystorePath, - /// Failed to parse config - #[error("Config error {0}")] - ConfigParseError(#[from] ConfigError), - /// Local signer error - #[error("Local signer error ")] - AlloySignerError(#[from] LocalSignerError), - /// Bls Keystore error - #[error("Bls Keystore error ")] - BlsKeystoreError(#[from] KeystoreError), - /// Bls crate(SDK) error - #[error("Bls crate(SDK) error")] - EigenBlsError(#[from] BlsError), -} diff --git a/crates/operator/src/builder.rs b/crates/operator/src/incredible_square_operator.rs similarity index 55% rename from crates/operator/src/builder.rs rename to crates/operator/src/incredible_square_operator.rs index ae0ffcb3..2d1fb735 100644 --- a/crates/operator/src/builder.rs +++ b/crates/operator/src/incredible_square_operator.rs @@ -1,57 +1,81 @@ -use std::sync::Arc; - -use crate::client::ClientAggregator; -use crate::error::OperatorError; -use alloy::{ - primitives::{keccak256, Address}, - providers::WsConnect, - rpc::types::Filter, - sol_types::{SolEvent, SolValue}, -}; - -use alloy::primitives::U256; -use alloy::providers::{Provider, ProviderBuilder}; -use eigen_client_avsregistry::reader::AvsRegistryChainReader; +use alloy::primitives::Address; +use eigen_aggregator::traits::TaskResponse; use eigen_client_eth::instrumented_client::InstrumentedClient; use eigen_crypto_bls::BlsKeyPair; -use eigen_logging::get_logger; +use eigen_operator::traits::Operator; +use eigen_operator::{client::ClientAggregator, error::OperatorError}; +use eigen_types::avs::TaskIndex; use eigen_types::operator::OperatorId; use eyre::Result; -use futures_util::StreamExt; -use incredible_aggregator::SignedTaskResponse; -use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::TaskResponse; -use incredible_bindings::incrediblesquaringtaskmanager::IncredibleSquaringTaskManager::{ - self, NewTaskCreated, -}; +use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::TaskResponse as SolTaskResponse; +use incredible_bindings::incrediblesquaringtaskmanager::IncredibleSquaringTaskManager::NewTaskCreated; use incredible_config::IncredibleConfig; use rust_bls_bn254::keystores::base_keystore::Keystore; -use tracing::info; +use serde::{Deserialize, Serialize}; /// Main Operator #[derive(Debug)] -pub struct OperatorBuilder { - http_rpc_url: String, +pub struct IncredibleSquareOperator { + /// HTTP RPC URL + pub http_rpc_url: String, + /// WS RPC URL + pub ws_rpc_url: String, + /// Operator Address + pub operator_addr: Address, + /// [`BlsKeyPair`] + pub key_pair: BlsKeyPair, + /// Operator ID + pub operator_id: OperatorId, + /// [`ClientAggregator`] + pub client: ClientAggregator, + /// Registry Coordinator Address + pub registry_coordinator: Address, + /// Operator State Retriever Address + pub operator_state_retriever: Address, +} - ws_rpc_url: String, +#[derive(Debug, Serialize, Deserialize)] +/// Task Response for Incredible Square Operator +pub struct IncredibleTaskResponse(SolTaskResponse); - operator_addr: Address, +impl TaskResponse for IncredibleTaskResponse { + fn task_index(&self) -> TaskIndex { + self.0.referenceTaskIndex + } + fn digest(&self) -> alloy::primitives::B256 { + todo!() + } +} - key_pair: BlsKeyPair, +impl Operator for IncredibleSquareOperator { + type TaskResponse = IncredibleTaskResponse; + type NewTaskEvent = NewTaskCreated; - operator_id: OperatorId, - /// [`ClientAggregator`] - pub client: ClientAggregator, + fn process_new_task(new_task_created: NewTaskCreated) -> Self::TaskResponse { + #[allow(unused_mut)] + #[allow(unused_assignments)] + let mut number_to_be_squared = new_task_created.task.numberToBeSquared; + + #[cfg(feature = "integration_tests")] + { + use tracing::info; - registry_coordinator: Address, + number_to_be_squared = alloy::primitives::U256::from(9); + info!("Challenger test: setting number to be squared to 9"); + } - operator_state_retriever: Address, + let num_squared = number_to_be_squared * number_to_be_squared; - slash_simulate: bool, + IncredibleTaskResponse(SolTaskResponse { + referenceTaskIndex: new_task_created.taskIndex, + numberSquared: num_squared, + }) + } } -impl OperatorBuilder { +impl IncredibleSquareOperator { /// Build the Operator Builder - pub async fn build(config: IncredibleConfig) -> Result { + pub async fn new(config: IncredibleConfig) -> Result { let _instrumented_client = InstrumentedClient::new(&config.http_rpc_url()).await; // Read BlsKey from path let keystore = Keystore::from_file(&config.bls_keystore_path())? @@ -66,8 +90,6 @@ impl OperatorBuilder { let operator_address = config.operator_address()?; let mut client = ClientAggregator::new(config.aggregator_ip_addr()); let _ = client.dial_aggregator_rpc_client(); - let slash = config.slash_simulate(); - Ok(Self { http_rpc_url: config.http_rpc_url(), ws_rpc_url: config.ws_rpc_url(), @@ -77,115 +99,24 @@ impl OperatorBuilder { client, registry_coordinator: registry_coordinator_addr, operator_state_retriever: operator_statr_retriever_addr, - slash_simulate: slash, }) } - - /// Get the [`BlsKeyPair`] - pub fn bls_key_pair(&self) -> BlsKeyPair { - self.key_pair.clone() - } - - /// Processes new task - pub fn process_new_task(&self, new_task_created: NewTaskCreated) -> TaskResponse { - #[allow(unused_mut)] - #[allow(unused_assignments)] - let mut number_to_be_squared = new_task_created.task.numberToBeSquared; - - #[cfg(feature = "integration_tests")] - { - number_to_be_squared = U256::from(9); - info!("Challenger test: setting number to be squared to 9"); - } - - let num_squared = if self.slash_simulate { - U256::from(28) // not a perfect square, so it can't be correct in any input - } else { - number_to_be_squared * number_to_be_squared - }; - - TaskResponse { - referenceTaskIndex: new_task_created.taskIndex, - numberSquared: num_squared, - } - } - - /// Start the operator - pub async fn start_operator(&mut self) -> Result<()> { - let avs_registry_reader = AvsRegistryChainReader::new( - get_logger(), - self.registry_coordinator, - self.operator_state_retriever, - self.http_rpc_url.clone(), - ) - .await - .unwrap(); - let is_registered = avs_registry_reader - .is_operator_registered(self.operator_addr) - .await?; - info!("is_operator1_registered {}", is_registered); - let arc_client = Arc::new(self.client.clone()); - if is_registered { - info!("Starting operator"); - - let ws = WsConnect::new(self.ws_rpc_url.clone()); - let provider = ProviderBuilder::new().on_ws(ws).await?; - - let filter = Filter::new().event_signature(NewTaskCreated::SIGNATURE_HASH); - let sub = provider.subscribe_logs(&filter).await?; - let mut stream = sub.into_stream(); - - while let Some(log) = stream.next().await { - let task_option = log - .log_decode::() - .ok(); - if let Some(task) = task_option { - let data = task.data(); - let new_task_created = NewTaskCreated { - task: data.task.clone(), - taskIndex: data.taskIndex, - }; - info!( - "operator1 picked up a new task , index: {} ", - data.taskIndex - ); - incredible_metrics::increment_num_tasks_received(); - let task_response = self.process_new_task(new_task_created); - let signed_task_response = self.sign_task_response(task_response)?; - let _ = arc_client - .send_signed_task_response(signed_task_response) - .await; - } - } - } - Ok(()) - } - - /// Sign the task response - pub fn sign_task_response( - &self, - task_response: TaskResponse, - ) -> Result { - let encoded_response = TaskResponse::abi_encode(&task_response); - let hash_msg = keccak256(encoded_response); - - let signed_msg = self.key_pair.sign_message(&hash_msg); - let signed_task_response = - SignedTaskResponse::new(task_response, signed_msg, self.operator_id); - Ok(signed_task_response) - } } #[cfg(test)] mod tests { - use super::*; - use alloy::primitives::Bytes; - use alloy::primitives::U256; + use alloy::{ + primitives::{keccak256, Bytes, U256}, + sol_types::SolValue, + }; use ark_ec::AffineRepr; use ark_ff::fields::PrimeField; use eigen_crypto_bn254::utils::verify_message; + use eigen_operator::traits::Operator; use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::Task; + use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::TaskResponse; + use incredible_bindings::incrediblesquaringtaskmanager::IncredibleSquaringTaskManager::NewTaskCreated; use incredible_testing_utils::{ get_incredible_squaring_operator_state_retriever, get_incredible_squaring_registry_coordinator, @@ -215,7 +146,9 @@ mod tests { .await .to_string(), ); - let operator_builder = OperatorBuilder::build(incredible_config).await.unwrap(); + let operator_builder = IncredibleSquareOperator::new(incredible_config) + .await + .unwrap(); assert_eq!( U256::from_limbs( @@ -258,12 +191,11 @@ mod tests { .await .to_string(), ); - let operator_builder = OperatorBuilder::build(incredible_config).await.unwrap(); - let task_response = operator_builder.process_new_task(new_task_created); + let task_response = IncredibleSquareOperator::process_new_task(new_task_created); - assert_eq!(task_response.numberSquared, U256::from(16)); - assert_eq!(task_response.referenceTaskIndex, 1u32); + assert_eq!(task_response.0.numberSquared, U256::from(16)); + assert_eq!(task_response.0.referenceTaskIndex, 1u32); } #[tokio::test] @@ -279,7 +211,9 @@ mod tests { .await .to_string(), ); - let _ = OperatorBuilder::build(incredible_config).await.unwrap(); + let _ = IncredibleSquareOperator::new(incredible_config) + .await + .unwrap(); } #[tokio::test] @@ -300,18 +234,23 @@ mod tests { .await .to_string(), ); - let operator_builder = OperatorBuilder::build(incredible_config).await.unwrap(); - let signed_task_response = operator_builder - .sign_task_response(task_response.clone()) + let operator_builder = IncredibleSquareOperator::new(incredible_config) + .await .unwrap(); + let signed_task_response = IncredibleSquareOperator::sign_task_response( + &operator_builder.key_pair, + &operator_builder.operator_id, + super::IncredibleTaskResponse(task_response.clone()), + ) + .unwrap(); - let bls_key_pair = operator_builder.bls_key_pair(); + let bls_key_pair = &operator_builder.key_pair; let encoded_response = TaskResponse::abi_encode(&task_response); let hash_msg = keccak256(encoded_response); assert!(verify_message( bls_key_pair.public_key_g2().g2(), &hash_msg, - signed_task_response.signature.g1_point().g1() + signed_task_response.signature().g1_point().g1() )); } } diff --git a/crates/operator/src/lib.rs b/crates/operator/src/lib.rs index 5d7763a4..dd139ba0 100644 --- a/crates/operator/src/lib.rs +++ b/crates/operator/src/lib.rs @@ -1,8 +1,3 @@ //! Operator with alloy rpc client to send signed task response to aggregator /// Operator builder -pub mod builder; -/// Error -pub mod error; - -/// Alloy Rpc Client -pub mod client; +pub mod incredible_square_operator; diff --git a/crates/operator_2/Cargo.toml b/crates/operator_2/Cargo.toml deleted file mode 100644 index 0255afbe..00000000 --- a/crates/operator_2/Cargo.toml +++ /dev/null @@ -1,56 +0,0 @@ -[package] -name = "incredible-operator-2" -version.workspace = true -edition.workspace = true -rust-version.workspace = true -repository.workspace = true -license.workspace = true -description = "eigen layer operator" - -[lints] -workspace = true - -[dependencies] -alloy.workspace = true -incredible-config.workspace = true -thiserror.workspace = true -incredible-bindings.workspace = true -eyre.workspace = true -futures-util.workspace = true -incredible-operator.workspace = true - -# eigen-rs -eigen-client-avsregistry.workspace = true -eigen-crypto-bls.workspace = true -eigen-cli.workspace = true -eigen-types.workspace = true - -incredible-metrics.workspace = true - -rust-bls-bn254.workspace = true - -#incredible -incredible-aggregator.workspace = true -reqwest.workspace = true - -hex = { version = "0.4.3", features = ["alloc"] } -tokio.workspace = true -serde_json.workspace = true -toml.workspace = true -tracing.workspace = true -rand_core.workspace = true -eigen-logging.workspace = true -eigen-crypto-bn254.workspace = true -eigen-metrics-collectors-rpc-calls.workspace = true -eigen-client-eth.workspace = true -eigen-utils.workspace = true - -[dev-dependencies] -incredible-testing-utils.workspace = true -tempfile.workspace = true -ark-ec = "0.5.0" -ark-ff = "0.5.0" - -[features] -default = [] -integration_tests = [] diff --git a/crates/operator_2/src/builder.rs b/crates/operator_2/src/builder.rs deleted file mode 100644 index 44e3f199..00000000 --- a/crates/operator_2/src/builder.rs +++ /dev/null @@ -1,322 +0,0 @@ -use std::sync::Arc; - -use alloy::{ - primitives::{keccak256, Address}, - providers::WsConnect, - rpc::types::Filter, - sol_types::{SolEvent, SolValue}, -}; -use incredible_operator::{client::ClientAggregator, error::OperatorError}; - -use alloy::primitives::U256; -use alloy::providers::{Provider, ProviderBuilder}; -use eigen_client_avsregistry::reader::AvsRegistryChainReader; -use eigen_client_eth::instrumented_client::InstrumentedClient; -use eigen_crypto_bls::BlsKeyPair; -use eigen_logging::get_logger; -use eigen_types::operator::OperatorId; -use eyre::Result; -use futures_util::StreamExt; -use incredible_aggregator::SignedTaskResponse; -use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::TaskResponse; -use incredible_bindings::incrediblesquaringtaskmanager::IncredibleSquaringTaskManager::{ - self, NewTaskCreated, -}; -use incredible_config::IncredibleConfig; -use rust_bls_bn254::keystores::base_keystore::Keystore; -use tracing::info; - -/// Main Operator -#[derive(Debug)] -pub struct OperatorBuilder { - http_rpc_url: String, - - ws_rpc_url: String, - - operator_addr: Address, - - key_pair: BlsKeyPair, - - operator_id: OperatorId, - - client: Option>, - - registry_coordinator: Address, - - operator_state_retriever: Address, - - slash_simulate: bool, -} - -impl OperatorBuilder { - /// Build the Operator Builder - pub async fn build( - config: IncredibleConfig, - client: Option>, - ) -> Result { - let _instrumented_client = InstrumentedClient::new(&config.http_rpc_url()).await; - // Read BlsKey from path - let keystore = Keystore::from_file(&config.bls_keystore_2_path())? - .decrypt(&config.bls_keystore_2_password())?; - - // TODO(supernova): Add this method in sdk in bls crate - let fr_key: String = keystore.iter().map(|&value| value as char).collect(); - let key_pair = BlsKeyPair::new(fr_key)?; - let operator_id = config.get_operator_2_id()?; - let registry_coordinator_addr = config.registry_coordinator_addr()?; - let operator_statr_retriever_addr = config.operator_state_retriever_addr()?; - let operator_address = config.operator_2_address()?; - let slash = config.slash_simulate(); - Ok(Self { - http_rpc_url: config.http_rpc_url(), - ws_rpc_url: config.ws_rpc_url(), - operator_addr: operator_address, - key_pair, - operator_id, - client, - registry_coordinator: registry_coordinator_addr, - operator_state_retriever: operator_statr_retriever_addr, - slash_simulate: slash, - }) - } - - /// Get the [`BlsKeyPair`] - pub fn bls_key_pair(&self) -> BlsKeyPair { - self.key_pair.clone() - } - - /// Processes new task - pub fn process_new_task(&self, new_task_created: NewTaskCreated) -> TaskResponse { - #[allow(unused_mut)] - #[allow(unused_assignments)] - let mut number_to_be_squared = new_task_created.task.numberToBeSquared; - - #[cfg(feature = "integration_tests")] - { - number_to_be_squared = U256::from(9); - info!("Challenger test: setting number to be squared to 9"); - } - - let num_squared = if self.slash_simulate { - U256::from(24) // not a perfect square, so it can't be correct in any input - } else { - number_to_be_squared * number_to_be_squared - }; - - TaskResponse { - referenceTaskIndex: new_task_created.taskIndex, - numberSquared: num_squared, - } - } - - /// Start the operator - pub async fn start_operator(&mut self) -> Result<()> { - let avs_registry_reader = AvsRegistryChainReader::new( - get_logger(), - self.registry_coordinator, - self.operator_state_retriever, - self.http_rpc_url.clone(), - ) - .await?; - let is_registered = avs_registry_reader - .is_operator_registered(self.operator_addr) - .await?; - info!("is_operator2_registered {}", is_registered); - if is_registered { - info!("Starting operator"); - - let ws = WsConnect::new(self.ws_rpc_url.clone()); - let provider = ProviderBuilder::new().on_ws(ws).await?; - - let filter = Filter::new().event_signature(NewTaskCreated::SIGNATURE_HASH); - let sub = provider.subscribe_logs(&filter).await?; - let mut stream = sub.into_stream(); - - while let Some(log) = stream.next().await { - let task_option = log - .log_decode::() - .ok(); - if let Some(task) = task_option { - let data = task.data(); - let new_task_created = NewTaskCreated { - task: data.task.clone(), - taskIndex: data.taskIndex, - }; - info!( - "operator2 picked up a new task , index: {} ", - data.taskIndex - ); - incredible_metrics::increment_num_tasks_received(); - let task_response = self.process_new_task(new_task_created); - let signed_task_response = self.sign_task_response(task_response)?; - if let Some(client) = &self.client { - let _ = client.send_signed_task_response(signed_task_response).await; - } - } - } - } - Ok(()) - } - - /// Sign the task response - pub fn sign_task_response( - &self, - task_response: TaskResponse, - ) -> Result { - let encoded_response = TaskResponse::abi_encode(&task_response); - let hash_msg = keccak256(encoded_response); - - let signed_msg = self.key_pair.sign_message(&hash_msg); - let signed_task_response = - SignedTaskResponse::new(task_response, signed_msg, self.operator_id); - Ok(signed_task_response) - } -} - -#[cfg(test)] -mod tests { - - use super::*; - use alloy::primitives::Bytes; - use alloy::primitives::U256; - use ark_ec::AffineRepr; - use ark_ff::PrimeField; - use eigen_crypto_bn254::utils::verify_message; - use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::Task; - use incredible_testing_utils::{ - get_incredible_squaring_operator_state_retriever, - get_incredible_squaring_registry_coordinator, - }; - use std::fs; - use std::path::Path; - use std::str::FromStr; - - fn get_config_path() -> String { - let config_path = Path::new(env!("CARGO_MANIFEST_DIR")) - .parent() - .unwrap() - .join("operator/operator_test_config.toml"); - fs::read_to_string(config_path).unwrap() - } - - #[tokio::test] - async fn test_bls_keystore() { - let mut incredible_config: IncredibleConfig = toml::from_str(&get_config_path()).unwrap(); - incredible_config.set_registry_coordinator_addr( - get_incredible_squaring_registry_coordinator() - .await - .to_string(), - ); - incredible_config.set_operator_state_retriever( - get_incredible_squaring_operator_state_retriever() - .await - .to_string(), - ); - let operator_builder = OperatorBuilder::build(incredible_config, None) - .await - .unwrap(); - - assert_eq!( - U256::from_limbs( - operator_builder - .key_pair - .public_key() - .g1() - .x() - .unwrap() - .into_bigint() - .0 - ), - U256::from_str( - "654664748928620715566514527065607787384626422829919343002201686008542704547" - ) - .unwrap() - ); - } - - #[tokio::test] - async fn test_process_new_task() { - let new_task_created = NewTaskCreated { - taskIndex: 1, - task: Task { - numberToBeSquared: U256::from(4), - taskCreatedBlock: 105, - quorumNumbers: Bytes::from_str("0x40").unwrap(), - quorumThresholdPercentage: 5, - }, - }; - - let mut incredible_config: IncredibleConfig = toml::from_str(&get_config_path()).unwrap(); - incredible_config.set_registry_coordinator_addr( - get_incredible_squaring_registry_coordinator() - .await - .to_string(), - ); - incredible_config.set_operator_state_retriever( - get_incredible_squaring_operator_state_retriever() - .await - .to_string(), - ); - let operator_builder = OperatorBuilder::build(incredible_config, None) - .await - .unwrap(); - - let task_response = operator_builder.process_new_task(new_task_created); - - assert_eq!(task_response.numberSquared, U256::from(16)); - assert_eq!(task_response.referenceTaskIndex, 1u32); - } - - #[tokio::test] - async fn test_build_operator() { - let mut incredible_config: IncredibleConfig = toml::from_str(&get_config_path()).unwrap(); - incredible_config.set_registry_coordinator_addr( - get_incredible_squaring_registry_coordinator() - .await - .to_string(), - ); - incredible_config.set_operator_state_retriever( - get_incredible_squaring_operator_state_retriever() - .await - .to_string(), - ); - let _ = OperatorBuilder::build(incredible_config, None) - .await - .unwrap(); - } - - #[tokio::test] - async fn test_sign_task_response() { - let task_response = TaskResponse { - referenceTaskIndex: 1, - numberSquared: U256::from(16), - }; - - let mut incredible_config: IncredibleConfig = toml::from_str(&get_config_path()).unwrap(); - incredible_config.set_registry_coordinator_addr( - get_incredible_squaring_registry_coordinator() - .await - .to_string(), - ); - incredible_config.set_operator_state_retriever( - get_incredible_squaring_operator_state_retriever() - .await - .to_string(), - ); - let operator_builder = OperatorBuilder::build(incredible_config, None) - .await - .unwrap(); - let signed_task_response = operator_builder - .sign_task_response(task_response.clone()) - .unwrap(); - - let bls_key_pair = operator_builder.bls_key_pair(); - let encoded_response = TaskResponse::abi_encode(&task_response); - let hash_msg = keccak256(encoded_response); - assert!(verify_message( - bls_key_pair.public_key_g2().g2(), - &hash_msg, - signed_task_response.signature.g1_point().g1() - )); - } -} diff --git a/crates/operator_2/src/lib.rs b/crates/operator_2/src/lib.rs deleted file mode 100644 index 9837dfcb..00000000 --- a/crates/operator_2/src/lib.rs +++ /dev/null @@ -1,3 +0,0 @@ -//! Operator with alloy rpc client to send signed task response to aggregator -/// Operator builder2 -pub mod builder; diff --git a/integration-tests/Cargo.toml b/integration-tests/Cargo.toml index 41b398dc..fc1c6878 100644 --- a/integration-tests/Cargo.toml +++ b/integration-tests/Cargo.toml @@ -9,26 +9,33 @@ license = "Business Source License 1.1" description = "integration tests for incredible avs" [dependencies] -alloy = { version = "0.7", features = ["full","signer-keystore","node-bindings"] } -eigen-utils = {git = "https://github.com/layr-labs/eigensdk-rs" , rev = "046d497"} -eigen-logging = {git = "https://github.com/layr-labs/eigensdk-rs" , rev = "046d497"} -incredible-config = {path = "../crates/config/"} -incredible-challenger = {path = "../crates/challenger/"} -incredible-bindings = {path = "../crates/bindings/"} -incredible-testing-utils = {path = "../crates/testing-utils/"} -incredible-task-generator = {path = "../crates/task_generator/"} -incredible-operator = {path = "../crates/operator/" , features = ["integration_tests"]} -incredible-operator-2 = {path = "../crates/operator_2/" , features = ["integration_tests"]} -incredible-aggregator = {path = "../crates/aggregator/"} +alloy = { version = "0.7", features = [ + "full", + "signer-keystore", + "node-bindings", +] } +eigen-utils = { git = "https://github.com/layr-labs/eigensdk-rs", rev = "046d497" } +eigen-logging = { git = "https://github.com/layr-labs/eigensdk-rs", rev = "046d497" } +incredible-config = { path = "../crates/config/" } +incredible-challenger = { path = "../crates/challenger/" } +incredible-bindings = { path = "../crates/bindings/" } +incredible-testing-utils = { path = "../crates/testing-utils/" } +incredible-task-generator = { path = "../crates/task_generator/" } +incredible-operator = { path = "../crates/operator/", features = [ + "integration_tests", +] } +incredible-aggregator = { path = "../crates/aggregator/" } toml = "0.8" [dev-dependencies] tokio = { version = "1.21", default-features = false } eyre = "0.6.12" -incredible-squaring-avs = {path = "../bin/incredible-squaring-avs/"} -eigen-testing-utils = {git = "https://github.com/layr-labs/eigensdk-rs" , rev = "046d497"} +incredible-squaring-avs = { path = "../bin/incredible-squaring-avs/" } +eigen-testing-utils = { git = "https://github.com/layr-labs/eigensdk-rs", rev = "046d497" } serial_test = "3.1.1" -rust-bls-bn254 = {git = "https://github.com/Layr-Labs/rust-bls-bn254.git", rev = "be3ef87", features = ["std"] } -eigen-crypto-bls = {git = "https://github.com/layr-labs/eigensdk-rs" , rev = "046d497"} +rust-bls-bn254 = { git = "https://github.com/Layr-Labs/rust-bls-bn254.git", rev = "be3ef87", features = [ + "std", +] } +eigen-crypto-bls = { git = "https://github.com/layr-labs/eigensdk-rs", rev = "046d497" } -[workspace] \ No newline at end of file +[workspace] From f08854684ba30e4f2a073ac0b84f3d836099df57 Mon Sep 17 00:00:00 2001 From: Pablo Deymonnaz Date: Fri, 31 Jan 2025 11:50:11 -0300 Subject: [PATCH 07/24] Fix error return type in incredible_square_operator.rs --- .../src/incredible_square_operator.rs | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/crates/operator/src/incredible_square_operator.rs b/crates/operator/src/incredible_square_operator.rs index 2d1fb735..82b5106b 100644 --- a/crates/operator/src/incredible_square_operator.rs +++ b/crates/operator/src/incredible_square_operator.rs @@ -78,16 +78,26 @@ impl IncredibleSquareOperator { pub async fn new(config: IncredibleConfig) -> Result { let _instrumented_client = InstrumentedClient::new(&config.http_rpc_url()).await; // Read BlsKey from path - let keystore = Keystore::from_file(&config.bls_keystore_path())? - .decrypt(&config.bls_keystore_password())?; + let keystore = Keystore::from_file(&config.bls_keystore_path()) + .map_err(|_| OperatorError::RegistrationError)? // TODO: change error type + .decrypt(&config.bls_keystore_password()) + .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type // TODO(supernova): Add this method in sdk in bls crate let fr_key: String = keystore.iter().map(|&value| value as char).collect(); let key_pair = BlsKeyPair::new(fr_key)?; - let operator_id = config.get_operator_id()?; - let registry_coordinator_addr = config.registry_coordinator_addr()?; - let operator_statr_retriever_addr = config.operator_state_retriever_addr()?; - let operator_address = config.operator_address()?; + let operator_id = config + .get_operator_id() + .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type + let registry_coordinator_addr = config + .registry_coordinator_addr() + .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type + let operator_statr_retriever_addr = config + .operator_state_retriever_addr() + .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type + let operator_address = config + .operator_address() + .map_err(|_| OperatorError::RegistrationError)?; // TODO change error type let mut client = ClientAggregator::new(config.aggregator_ip_addr()); let _ = client.dial_aggregator_rpc_client(); Ok(Self { From 5b1558ad056559bb3328e4c20f77a27f00d8b3d3 Mon Sep 17 00:00:00 2001 From: Pablo Deymonnaz Date: Fri, 31 Jan 2025 12:12:22 -0300 Subject: [PATCH 08/24] AVS Builder updated --- Cargo.lock | 5 ++- crates/avs/Cargo.toml | 10 +++-- crates/avs/src/builder/mod.rs | 74 +++++++++++++++++++++++++++-------- 3 files changed, 67 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 758e9677..c1e648c3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4061,8 +4061,10 @@ name = "incredible-avs" version = "0.0.1-alpha" dependencies = [ "alloy", - "clap", + "eigen-client-avsregistry", + "eigen-logging", "eigen-nodeapi", + "eigen-operator", "eyre", "futures", "incredible-aggregator", @@ -4072,7 +4074,6 @@ dependencies = [ "incredible-operator", "incredible-task-generator", "metrics", - "metrics-util", "ntex", "serde", "thiserror 2.0.7", diff --git a/crates/avs/Cargo.toml b/crates/avs/Cargo.toml index b5bba13a..53f53cf0 100644 --- a/crates/avs/Cargo.toml +++ b/crates/avs/Cargo.toml @@ -16,16 +16,21 @@ serde.workspace = true eyre.workspace = true tracing.workspace = true metrics.workspace = true -metrics-util.workspace = true -#incredible +# incredible incredible-config.workspace = true incredible-operator.workspace = true incredible-challenger.workspace = true incredible-aggregator.workspace = true incredible-task-generator.workspace = true incredible-metrics.workspace = true + +# eigen-rs +eigen-client-avsregistry.workspace = true +eigen-logging.workspace = true eigen-nodeapi.workspace = true +eigen-operator.workspace = true + #tokio tokio.workspace = true @@ -35,5 +40,4 @@ futures = "0.3.30" #thiserror thiserror.workspace = true -clap.workspace = true ntex = { version = "2.0", features = ["tokio"] } diff --git a/crates/avs/src/builder/mod.rs b/crates/avs/src/builder/mod.rs index 62777444..f498f2a1 100644 --- a/crates/avs/src/builder/mod.rs +++ b/crates/avs/src/builder/mod.rs @@ -1,15 +1,19 @@ //! Builder module for the AVS. Starts all the services for the AVS using futures simulatenously. +use eigen_client_avsregistry::reader::AvsRegistryChainReader; +use eigen_logging::get_logger; use eigen_nodeapi::{create_server, NodeApi}; +use eigen_operator::traits::Operator; use futures::TryFutureExt; -use incredible_aggregator::{Aggregator, AggregatorConfig, ISTaskProcessor}; +use incredible_aggregator::ISTaskProcessor; +use incredible_aggregator::{Aggregator, AggregatorConfig}; use incredible_challenger::Challenger; use incredible_config::IncredibleConfig; -use incredible_operator::builder::OperatorBuilder; -use incredible_operator_2::builder::OperatorBuilder as OperatorBuilder2; +use incredible_operator::incredible_square_operator::IncredibleSquareOperator; use incredible_task_generator::TaskManager; use ntex::rt::System; -use std::{future::Future, sync::Arc}; +use std::future::Future; use tracing::info; + /// Launch Avs trait pub trait LaunchAvs { /// Launch Avs @@ -51,25 +55,61 @@ impl LaunchAvs for DefaultAvsLauncher { info!("launching crates: incredible-squaring-avs-rs"); incredible_metrics::new(); // start operator - let mut operator_builder = OperatorBuilder::build(avs.config.clone()).await?; - let mut operator_builder2 = OperatorBuilder2::build( - avs.config.clone(), - Some(Arc::new(operator_builder.client.clone())), - ) - .await?; + let operator_builder = IncredibleSquareOperator::new(avs.config.clone()).await?; + let operator_builder2 = IncredibleSquareOperator::new(avs.config.clone()).await?; let mut challenge = Challenger::build(avs.config.clone()).await?; - let operator_service = operator_builder - .start_operator() - .map_err(|e| eyre::eyre!("Operator error: {:?}", e)); + let registry_coordinator = operator_builder.registry_coordinator; + let operator_state_retriever = operator_builder.operator_state_retriever; + let http_rpc_url = avs.config.http_rpc_url().clone(); + let avs_registry_reader = AvsRegistryChainReader::new( + get_logger(), + registry_coordinator, + operator_state_retriever, + http_rpc_url, + ) + .await?; - let operator2_service = operator_builder2 - .start_operator() - .map_err(|e| eyre::eyre!("Operator error: {:?}", e)); + // Start Operator 1 + let key_pair = &operator_builder.key_pair; + let operator_id = &operator_builder.operator_id; + let operator_address = operator_builder.operator_addr; + let operator_name = "operator1"; + let client_aggregator = &operator_builder.client; + let ws_rpc_url = &operator_builder.ws_rpc_url; + let operator_service = IncredibleSquareOperator::start_operator( + &avs_registry_reader, + key_pair, + operator_id, + operator_address, + operator_name, + client_aggregator, + ws_rpc_url, + ) + .map_err(|e| eyre::eyre!("Operator error: {:?}", e)); + + // Start operator 2 + let key_pair = &operator_builder2.key_pair; + let operator_id = &operator_builder2.operator_id; + let operator_address = operator_builder2.operator_addr; + let operator_name = "operator2"; + let client_aggregator = operator_builder.client.clone(); + let ws_rpc_url = &operator_builder2.ws_rpc_url; + let operator2_service = IncredibleSquareOperator::start_operator( + &avs_registry_reader, + key_pair, + operator_id, + operator_address, + operator_name, + &client_aggregator, + ws_rpc_url, + ) + .map_err(|e| eyre::eyre!("Operator error: {:?}", e)); let challenger_service = challenge .start_challenger() .map_err(|e| eyre::eyre!("Challenger error: {:?}", e)); + let task_processor = ISTaskProcessor::new( avs.config.registry_coordinator_addr()?, avs.config.http_rpc_url(), @@ -90,7 +130,7 @@ impl LaunchAvs for DefaultAvsLauncher { let aggregator_service_with_rpc_client = aggregator .start(avs.config.ws_rpc_url().clone()) - .map_err(|e| eyre::eyre!("Aggregator error {e:?}")); + .map_err(|e| eyre::eyre!("Aggregator start error {e:?}")); let task_manager = TaskManager::new( avs.config.task_manager_addr()?, From 2b157cbd26ca1484f87de0ac7e858b2354c66d1b Mon Sep 17 00:00:00 2001 From: Pablo Deymonnaz Date: Fri, 31 Jan 2025 12:17:19 -0300 Subject: [PATCH 09/24] test fixed --- crates/operator/src/incredible_square_operator.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/operator/src/incredible_square_operator.rs b/crates/operator/src/incredible_square_operator.rs index 82b5106b..30dca901 100644 --- a/crates/operator/src/incredible_square_operator.rs +++ b/crates/operator/src/incredible_square_operator.rs @@ -260,7 +260,7 @@ mod tests { assert!(verify_message( bls_key_pair.public_key_g2().g2(), &hash_msg, - signed_task_response.signature().g1_point().g1() + signed_task_response.signature.g1_point().g1() )); } } From 514b63b0bbd7879081a4b34423bd93aebd5d88cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Fri, 31 Jan 2025 12:35:38 -0300 Subject: [PATCH 10/24] test: fix tests --- Cargo.lock | 1 + crates/aggregator/src/lib.rs | 11 ++++- crates/operator/Cargo.toml | 2 + .../src/incredible_square_operator.rs | 44 ++++--------------- 4 files changed, 22 insertions(+), 36 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c1e648c3..314b46d6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4193,6 +4193,7 @@ dependencies = [ "eyre", "futures-util", "hex", + "incredible-aggregator", "incredible-bindings", "incredible-config", "incredible-testing-utils", diff --git a/crates/aggregator/src/lib.rs b/crates/aggregator/src/lib.rs index 803d26e9..d4b74537 100644 --- a/crates/aggregator/src/lib.rs +++ b/crates/aggregator/src/lib.rs @@ -3,7 +3,7 @@ use std::{collections::HashMap, sync::Arc}; use alloy::{ - primitives::{keccak256, Address, B256}, + primitives::{keccak256, Address, B256, U256}, sol_types::SolValue, }; use eigen_aggregator::{ @@ -60,6 +60,15 @@ const BLOCK_TIME_SECONDS: u32 = 12; #[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct ISTaskResponse(pub SolTaskResponse); +impl ISTaskResponse { + pub fn new(task_index: u32, number_squared: U256) -> Self { + ISTaskResponse(SolTaskResponse { + referenceTaskIndex: task_index, + numberSquared: number_squared, + }) + } +} + impl TaskResponse for ISTaskResponse { fn task_index(&self) -> TaskIndex { self.0.referenceTaskIndex diff --git a/crates/operator/Cargo.toml b/crates/operator/Cargo.toml index b7714c45..ca4a9752 100644 --- a/crates/operator/Cargo.toml +++ b/crates/operator/Cargo.toml @@ -18,6 +18,8 @@ incredible-bindings.workspace = true eyre.workspace = true futures-util.workspace = true +incredible-aggregator.workspace = true + # eigen-rs eigen-client-avsregistry.workspace = true eigen-client-eth.workspace = true diff --git a/crates/operator/src/incredible_square_operator.rs b/crates/operator/src/incredible_square_operator.rs index 30dca901..0264069a 100644 --- a/crates/operator/src/incredible_square_operator.rs +++ b/crates/operator/src/incredible_square_operator.rs @@ -1,17 +1,14 @@ use alloy::primitives::Address; -use eigen_aggregator::traits::TaskResponse; use eigen_client_eth::instrumented_client::InstrumentedClient; use eigen_crypto_bls::BlsKeyPair; use eigen_operator::traits::Operator; use eigen_operator::{client::ClientAggregator, error::OperatorError}; -use eigen_types::avs::TaskIndex; use eigen_types::operator::OperatorId; use eyre::Result; -use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::TaskResponse as SolTaskResponse; +use incredible_aggregator::ISTaskResponse; use incredible_bindings::incrediblesquaringtaskmanager::IncredibleSquaringTaskManager::NewTaskCreated; use incredible_config::IncredibleConfig; use rust_bls_bn254::keystores::base_keystore::Keystore; -use serde::{Deserialize, Serialize}; /// Main Operator #[derive(Debug)] @@ -34,24 +31,11 @@ pub struct IncredibleSquareOperator { pub operator_state_retriever: Address, } -#[derive(Debug, Serialize, Deserialize)] -/// Task Response for Incredible Square Operator -pub struct IncredibleTaskResponse(SolTaskResponse); - -impl TaskResponse for IncredibleTaskResponse { - fn task_index(&self) -> TaskIndex { - self.0.referenceTaskIndex - } - fn digest(&self) -> alloy::primitives::B256 { - todo!() - } -} - impl Operator for IncredibleSquareOperator { - type TaskResponse = IncredibleTaskResponse; + type TaskResponse = ISTaskResponse; type NewTaskEvent = NewTaskCreated; - fn process_new_task(new_task_created: NewTaskCreated) -> Self::TaskResponse { + fn process_new_task(new_task_created: Self::NewTaskEvent) -> Self::TaskResponse { #[allow(unused_mut)] #[allow(unused_assignments)] let mut number_to_be_squared = new_task_created.task.numberToBeSquared; @@ -66,10 +50,7 @@ impl Operator for IncredibleSquareOperator { let num_squared = number_to_be_squared * number_to_be_squared; - IncredibleTaskResponse(SolTaskResponse { - referenceTaskIndex: new_task_created.taskIndex, - numberSquared: num_squared, - }) + ISTaskResponse::new(new_task_created.taskIndex, num_squared) } } @@ -116,16 +97,13 @@ impl IncredibleSquareOperator { #[cfg(test)] mod tests { use super::*; - use alloy::{ - primitives::{keccak256, Bytes, U256}, - sol_types::SolValue, - }; + use alloy::primitives::{Bytes, U256}; use ark_ec::AffineRepr; use ark_ff::fields::PrimeField; + use eigen_aggregator::traits::TaskResponse; use eigen_crypto_bn254::utils::verify_message; use eigen_operator::traits::Operator; use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::Task; - use incredible_bindings::incrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::TaskResponse; use incredible_bindings::incrediblesquaringtaskmanager::IncredibleSquaringTaskManager::NewTaskCreated; use incredible_testing_utils::{ get_incredible_squaring_operator_state_retriever, @@ -228,10 +206,7 @@ mod tests { #[tokio::test] async fn test_sign_task_response() { - let task_response = TaskResponse { - referenceTaskIndex: 1, - numberSquared: U256::from(16), - }; + let task_response = ISTaskResponse::new(1, U256::from(16)); let mut incredible_config: IncredibleConfig = toml::from_str(&get_config_path()).unwrap(); incredible_config.set_registry_coordinator_addr( @@ -250,13 +225,12 @@ mod tests { let signed_task_response = IncredibleSquareOperator::sign_task_response( &operator_builder.key_pair, &operator_builder.operator_id, - super::IncredibleTaskResponse(task_response.clone()), + task_response.clone(), ) .unwrap(); let bls_key_pair = &operator_builder.key_pair; - let encoded_response = TaskResponse::abi_encode(&task_response); - let hash_msg = keccak256(encoded_response); + let hash_msg = task_response.digest(); assert!(verify_message( bls_key_pair.public_key_g2().g2(), &hash_msg, From b375e68b0b5e13539737b1feebefe9744deccf1e Mon Sep 17 00:00:00 2001 From: Pablo Deymonnaz Date: Fri, 31 Jan 2025 15:53:49 -0300 Subject: [PATCH 11/24] split AVS builder in 3 files --- .../src/commands/avs/mod.rs | 4 ++- crates/avs/src/{builder/mod.rs => avs.rs} | 29 +++++-------------- crates/avs/src/avs_builder.rs | 14 +++++++++ crates/avs/src/lib.rs | 6 +++- crates/avs/src/traits.rs | 7 +++++ 5 files changed, 37 insertions(+), 23 deletions(-) rename crates/avs/src/{builder/mod.rs => avs.rs} (92%) create mode 100644 crates/avs/src/avs_builder.rs create mode 100644 crates/avs/src/traits.rs diff --git a/bin/incredible-squaring-avs/src/commands/avs/mod.rs b/bin/incredible-squaring-avs/src/commands/avs/mod.rs index 3a37a601..c1e946b3 100644 --- a/bin/incredible-squaring-avs/src/commands/avs/mod.rs +++ b/bin/incredible-squaring-avs/src/commands/avs/mod.rs @@ -22,7 +22,9 @@ use eigen_utils::core::allocationmanager::IAllocationManagerTypes::AllocateParam use eigen_utils::middleware::registrycoordinator::{ IRegistryCoordinator, IStakeRegistry, RegistryCoordinator, }; -use incredible_avs::builder::{AvsBuilder, DefaultAvsLauncher, LaunchAvs}; +use incredible_avs::avs::DefaultAvsLauncher; +use incredible_avs::avs_builder::AvsBuilder; +use incredible_avs::traits::LaunchAvs; use incredible_config::IncredibleConfig; use incredible_testing_utils::{ get_incredible_squaring_operator_state_retriever, get_incredible_squaring_registry_coordinator, diff --git a/crates/avs/src/builder/mod.rs b/crates/avs/src/avs.rs similarity index 92% rename from crates/avs/src/builder/mod.rs rename to crates/avs/src/avs.rs index f498f2a1..4a4e9992 100644 --- a/crates/avs/src/builder/mod.rs +++ b/crates/avs/src/avs.rs @@ -1,4 +1,6 @@ //! Builder module for the AVS. Starts all the services for the AVS using futures simulatenously. +use crate::avs_builder::AvsBuilder; +use crate::traits::LaunchAvs; use eigen_client_avsregistry::reader::AvsRegistryChainReader; use eigen_logging::get_logger; use eigen_nodeapi::{create_server, NodeApi}; @@ -7,32 +9,11 @@ use futures::TryFutureExt; use incredible_aggregator::ISTaskProcessor; use incredible_aggregator::{Aggregator, AggregatorConfig}; use incredible_challenger::Challenger; -use incredible_config::IncredibleConfig; use incredible_operator::incredible_square_operator::IncredibleSquareOperator; use incredible_task_generator::TaskManager; use ntex::rt::System; -use std::future::Future; use tracing::info; -/// Launch Avs trait -pub trait LaunchAvs { - /// Launch Avs - fn launch_avs(self, avs: T) -> impl Future> + Send; -} - -/// Avs builder -#[derive(Debug)] -pub struct AvsBuilder { - config: IncredibleConfig, -} - -impl AvsBuilder { - /// new - pub fn new(config: IncredibleConfig) -> Self { - Self { config } - } -} - /// Default avs launcher #[derive(Debug)] pub struct DefaultAvsLauncher {} @@ -58,6 +39,12 @@ impl LaunchAvs for DefaultAvsLauncher { let operator_builder = IncredibleSquareOperator::new(avs.config.clone()).await?; let operator_builder2 = IncredibleSquareOperator::new(avs.config.clone()).await?; + println!("@@@ operator_builder 1 key {:?}", operator_builder.key_pair); + println!( + "@@@ operator_builder 2 key {:?}", + operator_builder2.key_pair + ); + let mut challenge = Challenger::build(avs.config.clone()).await?; let registry_coordinator = operator_builder.registry_coordinator; let operator_state_retriever = operator_builder.operator_state_retriever; diff --git a/crates/avs/src/avs_builder.rs b/crates/avs/src/avs_builder.rs new file mode 100644 index 00000000..1e2522b9 --- /dev/null +++ b/crates/avs/src/avs_builder.rs @@ -0,0 +1,14 @@ +use incredible_config::IncredibleConfig; + +/// Avs builder +#[derive(Debug)] +pub struct AvsBuilder { + pub(crate) config: IncredibleConfig, +} + +impl AvsBuilder { + /// new + pub fn new(config: IncredibleConfig) -> Self { + Self { config } + } +} diff --git a/crates/avs/src/lib.rs b/crates/avs/src/lib.rs index c0aa99d8..4aa315e2 100644 --- a/crates/avs/src/lib.rs +++ b/crates/avs/src/lib.rs @@ -1,2 +1,6 @@ //! Starts all the services for the AVS using futures -pub mod builder; +pub mod avs; +/// Avs builder +pub mod avs_builder; +/// Launch Avs trait +pub mod traits; diff --git a/crates/avs/src/traits.rs b/crates/avs/src/traits.rs new file mode 100644 index 00000000..3940fb57 --- /dev/null +++ b/crates/avs/src/traits.rs @@ -0,0 +1,7 @@ +use std::future::Future; + +/// Launch Avs trait +pub trait LaunchAvs { + /// Launch Avs + fn launch_avs(self, avs: T) -> impl Future> + Send; +} From 8aeb1f8cceeb38964536d8fd533784a665eacf95 Mon Sep 17 00:00:00 2001 From: Pablo Deymonnaz Date: Fri, 31 Jan 2025 16:00:14 -0300 Subject: [PATCH 12/24] AvsBuilder removed --- .../src/commands/avs/mod.rs | 4 +- crates/avs/src/avs.rs | 40 +++++++++---------- crates/avs/src/avs_builder.rs | 14 ------- crates/avs/src/lib.rs | 2 - 4 files changed, 21 insertions(+), 39 deletions(-) delete mode 100644 crates/avs/src/avs_builder.rs diff --git a/bin/incredible-squaring-avs/src/commands/avs/mod.rs b/bin/incredible-squaring-avs/src/commands/avs/mod.rs index c1e946b3..cc58ef56 100644 --- a/bin/incredible-squaring-avs/src/commands/avs/mod.rs +++ b/bin/incredible-squaring-avs/src/commands/avs/mod.rs @@ -23,7 +23,6 @@ use eigen_utils::middleware::registrycoordinator::{ IRegistryCoordinator, IStakeRegistry, RegistryCoordinator, }; use incredible_avs::avs::DefaultAvsLauncher; -use incredible_avs::avs_builder::AvsBuilder; use incredible_avs::traits::LaunchAvs; use incredible_config::IncredibleConfig; use incredible_testing_utils::{ @@ -670,8 +669,7 @@ impl AvsCommand { } let avs_launcher = DefaultAvsLauncher::new(); - let avs_builder = AvsBuilder::new(config); - let _ = avs_launcher.launch_avs(avs_builder).await; + let _ = avs_launcher.launch_avs(config).await; Ok(()) } diff --git a/crates/avs/src/avs.rs b/crates/avs/src/avs.rs index 4a4e9992..3c0ecf4b 100644 --- a/crates/avs/src/avs.rs +++ b/crates/avs/src/avs.rs @@ -1,5 +1,4 @@ //! Builder module for the AVS. Starts all the services for the AVS using futures simulatenously. -use crate::avs_builder::AvsBuilder; use crate::traits::LaunchAvs; use eigen_client_avsregistry::reader::AvsRegistryChainReader; use eigen_logging::get_logger; @@ -9,6 +8,7 @@ use futures::TryFutureExt; use incredible_aggregator::ISTaskProcessor; use incredible_aggregator::{Aggregator, AggregatorConfig}; use incredible_challenger::Challenger; +use incredible_config::IncredibleConfig; use incredible_operator::incredible_square_operator::IncredibleSquareOperator; use incredible_task_generator::TaskManager; use ntex::rt::System; @@ -31,13 +31,13 @@ impl Default for DefaultAvsLauncher { } } -impl LaunchAvs for DefaultAvsLauncher { - async fn launch_avs(self, avs: AvsBuilder) -> eyre::Result<()> { +impl LaunchAvs for DefaultAvsLauncher { + async fn launch_avs(self, avs_config: IncredibleConfig) -> eyre::Result<()> { info!("launching crates: incredible-squaring-avs-rs"); incredible_metrics::new(); // start operator - let operator_builder = IncredibleSquareOperator::new(avs.config.clone()).await?; - let operator_builder2 = IncredibleSquareOperator::new(avs.config.clone()).await?; + let operator_builder = IncredibleSquareOperator::new(avs_config.clone()).await?; + let operator_builder2 = IncredibleSquareOperator::new(avs_config.clone()).await?; println!("@@@ operator_builder 1 key {:?}", operator_builder.key_pair); println!( @@ -45,10 +45,10 @@ impl LaunchAvs for DefaultAvsLauncher { operator_builder2.key_pair ); - let mut challenge = Challenger::build(avs.config.clone()).await?; + let mut challenge = Challenger::build(avs_config.clone()).await?; let registry_coordinator = operator_builder.registry_coordinator; let operator_state_retriever = operator_builder.operator_state_retriever; - let http_rpc_url = avs.config.http_rpc_url().clone(); + let http_rpc_url = avs_config.http_rpc_url().clone(); let avs_registry_reader = AvsRegistryChainReader::new( get_logger(), registry_coordinator, @@ -98,31 +98,31 @@ impl LaunchAvs for DefaultAvsLauncher { .map_err(|e| eyre::eyre!("Challenger error: {:?}", e)); let task_processor = ISTaskProcessor::new( - avs.config.registry_coordinator_addr()?, - avs.config.http_rpc_url(), - avs.config.get_signer(), + avs_config.registry_coordinator_addr()?, + avs_config.http_rpc_url(), + avs_config.get_signer(), ) .await?; let aggregator_cfg = AggregatorConfig { - server_address: avs.config.aggregator_ip_addr(), - http_rpc_url: avs.config.http_rpc_url(), - ws_rpc_url: avs.config.ws_rpc_url(), - registry_coordinator: avs.config.registry_coordinator_addr()?, - operator_state_retriever: avs.config.operator_state_retriever_addr()?, + server_address: avs_config.aggregator_ip_addr(), + http_rpc_url: avs_config.http_rpc_url(), + ws_rpc_url: avs_config.ws_rpc_url(), + registry_coordinator: avs_config.registry_coordinator_addr()?, + operator_state_retriever: avs_config.operator_state_retriever_addr()?, }; let aggregator = Aggregator::new(aggregator_cfg, task_processor) .await .map_err(|e| eyre::eyre!("Aggregator new error {e:?}"))?; let aggregator_service_with_rpc_client = aggregator - .start(avs.config.ws_rpc_url().clone()) + .start(avs_config.ws_rpc_url().clone()) .map_err(|e| eyre::eyre!("Aggregator start error {e:?}")); let task_manager = TaskManager::new( - avs.config.task_manager_addr()?, - avs.config.http_rpc_url(), - avs.config.task_manager_signer(), + avs_config.task_manager_addr()?, + avs_config.http_rpc_url(), + avs_config.task_manager_signer(), ); let task_spam_service = task_manager @@ -130,7 +130,7 @@ impl LaunchAvs for DefaultAvsLauncher { .map_err(|e| eyre::eyre!("Task manager error {e:?}")); let node_api = NodeApi::new("incredible-squaring", "v0.0.1"); - let node_api_address = avs.config.node_api_port_address(); + let node_api_address = avs_config.node_api_port_address(); info!("node_api_address{:?}", node_api_address); std::thread::spawn(move || { diff --git a/crates/avs/src/avs_builder.rs b/crates/avs/src/avs_builder.rs deleted file mode 100644 index 1e2522b9..00000000 --- a/crates/avs/src/avs_builder.rs +++ /dev/null @@ -1,14 +0,0 @@ -use incredible_config::IncredibleConfig; - -/// Avs builder -#[derive(Debug)] -pub struct AvsBuilder { - pub(crate) config: IncredibleConfig, -} - -impl AvsBuilder { - /// new - pub fn new(config: IncredibleConfig) -> Self { - Self { config } - } -} diff --git a/crates/avs/src/lib.rs b/crates/avs/src/lib.rs index 4aa315e2..b77b3a26 100644 --- a/crates/avs/src/lib.rs +++ b/crates/avs/src/lib.rs @@ -1,6 +1,4 @@ //! Starts all the services for the AVS using futures pub mod avs; -/// Avs builder -pub mod avs_builder; /// Launch Avs trait pub mod traits; From d0caf7e39f1307f04b15b7700dc9b1353f75104d Mon Sep 17 00:00:00 2001 From: Pablo Deymonnaz Date: Fri, 31 Jan 2025 16:02:11 -0300 Subject: [PATCH 13/24] DefaultAvsLauncher methods removed --- .../src/commands/avs/mod.rs | 3 +-- crates/avs/src/avs.rs | 17 ++--------------- crates/avs/src/traits.rs | 2 +- 3 files changed, 4 insertions(+), 18 deletions(-) diff --git a/bin/incredible-squaring-avs/src/commands/avs/mod.rs b/bin/incredible-squaring-avs/src/commands/avs/mod.rs index cc58ef56..dd1d3abe 100644 --- a/bin/incredible-squaring-avs/src/commands/avs/mod.rs +++ b/bin/incredible-squaring-avs/src/commands/avs/mod.rs @@ -668,8 +668,7 @@ impl AvsCommand { mine_anvil_block(&rpc_url, current_block_number); } - let avs_launcher = DefaultAvsLauncher::new(); - let _ = avs_launcher.launch_avs(config).await; + let _ = DefaultAvsLauncher::launch_avs(config).await; Ok(()) } diff --git a/crates/avs/src/avs.rs b/crates/avs/src/avs.rs index 3c0ecf4b..abcd371e 100644 --- a/crates/avs/src/avs.rs +++ b/crates/avs/src/avs.rs @@ -15,24 +15,11 @@ use ntex::rt::System; use tracing::info; /// Default avs launcher -#[derive(Debug)] +#[derive(Debug, Default)] pub struct DefaultAvsLauncher {} -impl DefaultAvsLauncher { - /// new - pub const fn new() -> Self { - Self {} - } -} - -impl Default for DefaultAvsLauncher { - fn default() -> Self { - Self::new() - } -} - impl LaunchAvs for DefaultAvsLauncher { - async fn launch_avs(self, avs_config: IncredibleConfig) -> eyre::Result<()> { + async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { info!("launching crates: incredible-squaring-avs-rs"); incredible_metrics::new(); // start operator diff --git a/crates/avs/src/traits.rs b/crates/avs/src/traits.rs index 3940fb57..21b82006 100644 --- a/crates/avs/src/traits.rs +++ b/crates/avs/src/traits.rs @@ -3,5 +3,5 @@ use std::future::Future; /// Launch Avs trait pub trait LaunchAvs { /// Launch Avs - fn launch_avs(self, avs: T) -> impl Future> + Send; + fn launch_avs(avs: T) -> impl Future> + Send; } From 732edd83b502516f55934e551b536f6f9b71a831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Fri, 31 Jan 2025 16:14:23 -0300 Subject: [PATCH 14/24] refactor: simplify incredible-avs crate --- .../src/commands/avs/mod.rs | 4 +- crates/avs/src/avs.rs | 141 ------------------ crates/avs/src/lib.rs | 139 ++++++++++++++++- crates/avs/src/traits.rs | 7 - 4 files changed, 136 insertions(+), 155 deletions(-) delete mode 100644 crates/avs/src/avs.rs delete mode 100644 crates/avs/src/traits.rs diff --git a/bin/incredible-squaring-avs/src/commands/avs/mod.rs b/bin/incredible-squaring-avs/src/commands/avs/mod.rs index dd1d3abe..46f71fdf 100644 --- a/bin/incredible-squaring-avs/src/commands/avs/mod.rs +++ b/bin/incredible-squaring-avs/src/commands/avs/mod.rs @@ -22,8 +22,6 @@ use eigen_utils::core::allocationmanager::IAllocationManagerTypes::AllocateParam use eigen_utils::middleware::registrycoordinator::{ IRegistryCoordinator, IStakeRegistry, RegistryCoordinator, }; -use incredible_avs::avs::DefaultAvsLauncher; -use incredible_avs::traits::LaunchAvs; use incredible_config::IncredibleConfig; use incredible_testing_utils::{ get_incredible_squaring_operator_state_retriever, get_incredible_squaring_registry_coordinator, @@ -668,7 +666,7 @@ impl AvsCommand { mine_anvil_block(&rpc_url, current_block_number); } - let _ = DefaultAvsLauncher::launch_avs(config).await; + let _ = incredible_avs::launch_avs(config).await; Ok(()) } diff --git a/crates/avs/src/avs.rs b/crates/avs/src/avs.rs deleted file mode 100644 index abcd371e..00000000 --- a/crates/avs/src/avs.rs +++ /dev/null @@ -1,141 +0,0 @@ -//! Builder module for the AVS. Starts all the services for the AVS using futures simulatenously. -use crate::traits::LaunchAvs; -use eigen_client_avsregistry::reader::AvsRegistryChainReader; -use eigen_logging::get_logger; -use eigen_nodeapi::{create_server, NodeApi}; -use eigen_operator::traits::Operator; -use futures::TryFutureExt; -use incredible_aggregator::ISTaskProcessor; -use incredible_aggregator::{Aggregator, AggregatorConfig}; -use incredible_challenger::Challenger; -use incredible_config::IncredibleConfig; -use incredible_operator::incredible_square_operator::IncredibleSquareOperator; -use incredible_task_generator::TaskManager; -use ntex::rt::System; -use tracing::info; - -/// Default avs launcher -#[derive(Debug, Default)] -pub struct DefaultAvsLauncher {} - -impl LaunchAvs for DefaultAvsLauncher { - async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { - info!("launching crates: incredible-squaring-avs-rs"); - incredible_metrics::new(); - // start operator - let operator_builder = IncredibleSquareOperator::new(avs_config.clone()).await?; - let operator_builder2 = IncredibleSquareOperator::new(avs_config.clone()).await?; - - println!("@@@ operator_builder 1 key {:?}", operator_builder.key_pair); - println!( - "@@@ operator_builder 2 key {:?}", - operator_builder2.key_pair - ); - - let mut challenge = Challenger::build(avs_config.clone()).await?; - let registry_coordinator = operator_builder.registry_coordinator; - let operator_state_retriever = operator_builder.operator_state_retriever; - let http_rpc_url = avs_config.http_rpc_url().clone(); - let avs_registry_reader = AvsRegistryChainReader::new( - get_logger(), - registry_coordinator, - operator_state_retriever, - http_rpc_url, - ) - .await?; - - // Start Operator 1 - let key_pair = &operator_builder.key_pair; - let operator_id = &operator_builder.operator_id; - let operator_address = operator_builder.operator_addr; - let operator_name = "operator1"; - let client_aggregator = &operator_builder.client; - let ws_rpc_url = &operator_builder.ws_rpc_url; - let operator_service = IncredibleSquareOperator::start_operator( - &avs_registry_reader, - key_pair, - operator_id, - operator_address, - operator_name, - client_aggregator, - ws_rpc_url, - ) - .map_err(|e| eyre::eyre!("Operator error: {:?}", e)); - - // Start operator 2 - let key_pair = &operator_builder2.key_pair; - let operator_id = &operator_builder2.operator_id; - let operator_address = operator_builder2.operator_addr; - let operator_name = "operator2"; - let client_aggregator = operator_builder.client.clone(); - let ws_rpc_url = &operator_builder2.ws_rpc_url; - let operator2_service = IncredibleSquareOperator::start_operator( - &avs_registry_reader, - key_pair, - operator_id, - operator_address, - operator_name, - &client_aggregator, - ws_rpc_url, - ) - .map_err(|e| eyre::eyre!("Operator error: {:?}", e)); - - let challenger_service = challenge - .start_challenger() - .map_err(|e| eyre::eyre!("Challenger error: {:?}", e)); - - let task_processor = ISTaskProcessor::new( - avs_config.registry_coordinator_addr()?, - avs_config.http_rpc_url(), - avs_config.get_signer(), - ) - .await?; - - let aggregator_cfg = AggregatorConfig { - server_address: avs_config.aggregator_ip_addr(), - http_rpc_url: avs_config.http_rpc_url(), - ws_rpc_url: avs_config.ws_rpc_url(), - registry_coordinator: avs_config.registry_coordinator_addr()?, - operator_state_retriever: avs_config.operator_state_retriever_addr()?, - }; - let aggregator = Aggregator::new(aggregator_cfg, task_processor) - .await - .map_err(|e| eyre::eyre!("Aggregator new error {e:?}"))?; - - let aggregator_service_with_rpc_client = aggregator - .start(avs_config.ws_rpc_url().clone()) - .map_err(|e| eyre::eyre!("Aggregator start error {e:?}")); - - let task_manager = TaskManager::new( - avs_config.task_manager_addr()?, - avs_config.http_rpc_url(), - avs_config.task_manager_signer(), - ); - - let task_spam_service = task_manager - .start() - .map_err(|e| eyre::eyre!("Task manager error {e:?}")); - - let node_api = NodeApi::new("incredible-squaring", "v0.0.1"); - let node_api_address = avs_config.node_api_port_address(); - info!("node_api_address{:?}", node_api_address); - - std::thread::spawn(move || { - let _ = System::new("node_api_system").block_on(async move { - let node_api_server = create_server(node_api, node_api_address).unwrap(); - node_api_server.await - }); - }); - - let _ = futures::future::try_join5( - operator_service, - operator2_service, - challenger_service, - aggregator_service_with_rpc_client, - task_spam_service, - ) - .await?; - - Ok(()) - } -} diff --git a/crates/avs/src/lib.rs b/crates/avs/src/lib.rs index b77b3a26..3cf2a904 100644 --- a/crates/avs/src/lib.rs +++ b/crates/avs/src/lib.rs @@ -1,4 +1,135 @@ -//! Starts all the services for the AVS using futures -pub mod avs; -/// Launch Avs trait -pub mod traits; +//! Starts all the services for the AVS simultaneously. +use eigen_client_avsregistry::reader::AvsRegistryChainReader; +use eigen_logging::get_logger; +use eigen_nodeapi::{create_server, NodeApi}; +use eigen_operator::traits::Operator; +use futures::TryFutureExt; +use incredible_aggregator::ISTaskProcessor; +use incredible_aggregator::{Aggregator, AggregatorConfig}; +use incredible_challenger::Challenger; +use incredible_config::IncredibleConfig; +use incredible_operator::incredible_square_operator::IncredibleSquareOperator; +use incredible_task_generator::TaskManager; +use ntex::rt::System; +use tracing::info; + +/// Launches all the services for the AVS. +pub async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { + info!("launching crates: incredible-squaring-avs-rs"); + incredible_metrics::new(); + // start operator + let operator_builder = IncredibleSquareOperator::new(avs_config.clone()).await?; + let operator_builder2 = IncredibleSquareOperator::new(avs_config.clone()).await?; + + println!("@@@ operator_builder 1 key {:?}", operator_builder.key_pair); + println!( + "@@@ operator_builder 2 key {:?}", + operator_builder2.key_pair + ); + + let mut challenge = Challenger::build(avs_config.clone()).await?; + let registry_coordinator = operator_builder.registry_coordinator; + let operator_state_retriever = operator_builder.operator_state_retriever; + let http_rpc_url = avs_config.http_rpc_url().clone(); + let avs_registry_reader = AvsRegistryChainReader::new( + get_logger(), + registry_coordinator, + operator_state_retriever, + http_rpc_url, + ) + .await?; + + // Start Operator 1 + let key_pair = &operator_builder.key_pair; + let operator_id = &operator_builder.operator_id; + let operator_address = operator_builder.operator_addr; + let operator_name = "operator1"; + let client_aggregator = &operator_builder.client; + let ws_rpc_url = &operator_builder.ws_rpc_url; + let operator_service = IncredibleSquareOperator::start_operator( + &avs_registry_reader, + key_pair, + operator_id, + operator_address, + operator_name, + client_aggregator, + ws_rpc_url, + ) + .map_err(|e| eyre::eyre!("Operator error: {:?}", e)); + + // Start operator 2 + let key_pair = &operator_builder2.key_pair; + let operator_id = &operator_builder2.operator_id; + let operator_address = operator_builder2.operator_addr; + let operator_name = "operator2"; + let client_aggregator = operator_builder.client.clone(); + let ws_rpc_url = &operator_builder2.ws_rpc_url; + let operator2_service = IncredibleSquareOperator::start_operator( + &avs_registry_reader, + key_pair, + operator_id, + operator_address, + operator_name, + &client_aggregator, + ws_rpc_url, + ) + .map_err(|e| eyre::eyre!("Operator error: {:?}", e)); + + let challenger_service = challenge + .start_challenger() + .map_err(|e| eyre::eyre!("Challenger error: {:?}", e)); + + let task_processor = ISTaskProcessor::new( + avs_config.registry_coordinator_addr()?, + avs_config.http_rpc_url(), + avs_config.get_signer(), + ) + .await?; + + let aggregator_cfg = AggregatorConfig { + server_address: avs_config.aggregator_ip_addr(), + http_rpc_url: avs_config.http_rpc_url(), + ws_rpc_url: avs_config.ws_rpc_url(), + registry_coordinator: avs_config.registry_coordinator_addr()?, + operator_state_retriever: avs_config.operator_state_retriever_addr()?, + }; + let aggregator = Aggregator::new(aggregator_cfg, task_processor) + .await + .map_err(|e| eyre::eyre!("Aggregator new error {e:?}"))?; + + let aggregator_service_with_rpc_client = aggregator + .start(avs_config.ws_rpc_url().clone()) + .map_err(|e| eyre::eyre!("Aggregator start error {e:?}")); + + let task_manager = TaskManager::new( + avs_config.task_manager_addr()?, + avs_config.http_rpc_url(), + avs_config.task_manager_signer(), + ); + + let task_spam_service = task_manager + .start() + .map_err(|e| eyre::eyre!("Task manager error {e:?}")); + + let node_api = NodeApi::new("incredible-squaring", "v0.0.1"); + let node_api_address = avs_config.node_api_port_address(); + info!("node_api_address{:?}", node_api_address); + + std::thread::spawn(move || { + let _ = System::new("node_api_system").block_on(async move { + let node_api_server = create_server(node_api, node_api_address).unwrap(); + node_api_server.await + }); + }); + + let _ = futures::future::try_join5( + operator_service, + operator2_service, + challenger_service, + aggregator_service_with_rpc_client, + task_spam_service, + ) + .await?; + + Ok(()) +} diff --git a/crates/avs/src/traits.rs b/crates/avs/src/traits.rs deleted file mode 100644 index 21b82006..00000000 --- a/crates/avs/src/traits.rs +++ /dev/null @@ -1,7 +0,0 @@ -use std::future::Future; - -/// Launch Avs trait -pub trait LaunchAvs { - /// Launch Avs - fn launch_avs(avs: T) -> impl Future> + Send; -} From 218542856e25af343b4b7a9bb91ded3c5a1082e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Fri, 31 Jan 2025 17:19:28 -0300 Subject: [PATCH 15/24] fix: generalize config for N operators --- .../src/commands/avs/mod.rs | 175 +++++--- crates/avs/src/lib.rs | 89 ++-- crates/config/src/lib.rs | 419 +----------------- .../src/incredible_square_operator.rs | 44 +- 4 files changed, 192 insertions(+), 535 deletions(-) diff --git a/bin/incredible-squaring-avs/src/commands/avs/mod.rs b/bin/incredible-squaring-avs/src/commands/avs/mod.rs index 46f71fdf..9cbe238e 100644 --- a/bin/incredible-squaring-avs/src/commands/avs/mod.rs +++ b/bin/incredible-squaring-avs/src/commands/avs/mod.rs @@ -22,7 +22,9 @@ use eigen_utils::core::allocationmanager::IAllocationManagerTypes::AllocateParam use eigen_utils::middleware::registrycoordinator::{ IRegistryCoordinator, IStakeRegistry, RegistryCoordinator, }; -use incredible_config::IncredibleConfig; +use incredible_config::{ + BlsConfig, EcdsaConfig, IncredibleConfig, OperatorConfig, OperatorRegistrationConfig, +}; use incredible_testing_utils::{ get_incredible_squaring_operator_state_retriever, get_incredible_squaring_registry_coordinator, get_incredible_squaring_service_manager, get_incredible_squaring_strategy_address, @@ -418,28 +420,28 @@ impl AvsCommand { config.set_service_manager_address(service_manager_address_anvil.to_string()); config.set_node_api_port_address(node_api_address); config.set_metrics_port_address(metrics_address); - config.set_slash_simulate(slash_simulate); // there's a default value ,so using unwrap is no issue config.set_task_manager_signer(task_manager_signer); config.set_signer(signer); // there's a default value ,so using unwrap is no issue - config.set_operator_set_id(operator_set_id); config.set_chain_id(chain_id); config.set_http_rpc_url(rpc_url.clone()); config.set_ws_rpc_url(ws_rpc_url); - config.set_ecdsa_keystore_path(ecdsa_keystore_path.clone()); - config.set_ecdsa_keystore_pasword(ecdsa_keystore_password.clone()); config.set_aggregator_ip_address(aggregator_ip_address); - config.set_bls_keystore_path(bls_keystore_path.clone()); - config.set_bls_keystore_password(bls_keystore_password.clone()); - config.set_allocation_delay(allocation_delay); - config.set_operator_registration_sig_salt(operator_to_avs_registration_sig_salt); - config.set_socket(socket); - - config.set_quorum_number(quorum_number.clone()); - config.set_operator_id(operator_id); - config.set_operator_address(operator_address); - config.set_operator_2_address(operator_2_address); - config.set_operator_2_id(operator_2_id); + + // config.set_slash_simulate(slash_simulate); + // config.set_operator_set_id(operator_set_id); + // config.set_ecdsa_keystore_path(ecdsa_keystore_path.clone()); + // config.set_ecdsa_keystore_pasword(ecdsa_keystore_password.clone()); + // config.set_bls_keystore_path(bls_keystore_path.clone()); + // config.set_bls_keystore_password(bls_keystore_password.clone()); + // config.set_allocation_delay(allocation_delay); + // config.set_operator_registration_sig_salt(operator_to_avs_registration_sig_salt); + // config.set_socket(socket); + // config.set_quorum_number(quorum_number.clone()); + // config.set_operator_id(operator_id); + // config.set_operator_address(operator_address); + // config.set_operator_2_address(operator_2_address); + // config.set_operator_2_id(operator_2_id); } config.set_erc20_mock_strategy_address( erc20_mock_strategy_address.unwrap_or(erc20_mock_strategy_address_anvil.to_string()), @@ -449,12 +451,9 @@ impl AvsCommand { .clone() .unwrap_or(delegation_manager_address_anvil.to_string()), ); - config.set_operator_2_quorum_number(quorum_number); config.set_avs_directory_address( avs_directory_addr.unwrap_or(avs_directory_address_anvil.to_string()), ); - config.set_operator_signing_key(operator_pvt_key); - config.set_operator_2_signing_key(operator_2_pvt_key); // use value from config , if None , then use anvil config.set_registry_coordinator_addr( registry_coordinator_address @@ -475,10 +474,6 @@ impl AvsCommand { ); config.set_rewards_coordinator_address(rewards_coordinator_address_anvil.to_string()); config.set_permission_controller_address(permission_controller_address_anvil.to_string()); - config.set_ecdsa_keystore_2_path(ecdsa_keystore_2_path.clone()); - config.set_ecdsa_keystore_2_pasword(ecdsa_keystore_2_password.clone()); - config - .set_operator_2_registration_sig_salt(operator_2_to_avs_registration_sig_salt.clone()); let now = SystemTime::now(); let mut expiry: U256 = U256::from(0); if let Ok(duration_since_epoch) = now.duration_since(UNIX_EPOCH) { @@ -490,27 +485,79 @@ impl AvsCommand { debug!("System time seems to be before the UNIX epoch."); } // provided expiry , if not , use default expiry : 10000 seconds - config.set_sig_expiry(sig_expiry.unwrap_or(expiry.to_string()).to_string()); - config.set_bls_keystore_2_path(bls_keystore_2_path.clone()); - config.set_bls_keystore_2_password(bls_keystore_2_password.clone()); - config.set_operator_2_sig_expiry( - operator_2_sig_expiry - .unwrap_or(expiry.to_string()) - .to_string(), - ); - config.set_operator_1_token_amount(operator_1_token_amount); - config.set_operator_2_token_amount(operator_2_token_amount); + let op1_sig_expiry = sig_expiry.unwrap_or(expiry.to_string()).to_string(); + + let operator_1_config = OperatorConfig { + registration_config: Some(OperatorRegistrationConfig { + operator_to_avs_registration_sig_salt, + socket: socket.clone(), + quorum_number: quorum_number.clone(), + sig_expiry: op1_sig_expiry.clone(), + operator_pvt_key: operator_pvt_key.clone(), + ecdsa_config: EcdsaConfig { + keystore_path: ecdsa_keystore_path.clone(), + keystore_password: ecdsa_keystore_password.clone(), + }, + }), + operator_address, + operator_id, + operator_set_id: operator_set_id.clone(), + operator_token_amount: operator_1_token_amount.clone(), + allocation_delay: allocation_delay.clone(), + slash_simulate, + bls_config: BlsConfig { + keystore_path: bls_keystore_path.clone(), + keystore_password: bls_keystore_password.clone(), + }, + }; + config.add_operator(operator_1_config.clone()); + + // provided expiry , if not , use default expiry : 10000 seconds + let op2_sig_expiry = operator_2_sig_expiry + .unwrap_or(expiry.to_string()) + .to_string(); + + let operator_2_config = OperatorConfig { + registration_config: Some(OperatorRegistrationConfig { + operator_to_avs_registration_sig_salt: operator_2_to_avs_registration_sig_salt, + socket: socket.clone(), + quorum_number, + sig_expiry: op2_sig_expiry, + operator_pvt_key: operator_2_pvt_key.clone(), + ecdsa_config: EcdsaConfig { + keystore_path: ecdsa_keystore_2_path.clone(), + keystore_password: ecdsa_keystore_2_password.clone(), + }, + }), + operator_address: operator_2_address, + operator_id: operator_2_id, + operator_set_id: operator_set_id.clone(), + operator_token_amount: operator_2_token_amount.clone(), + allocation_delay: allocation_delay.clone(), + slash_simulate, + bls_config: BlsConfig { + keystore_path: bls_keystore_2_path.clone(), + keystore_password: bls_keystore_2_password.clone(), + }, + }; + config.add_operator(operator_2_config.clone()); + let socket_addr_metrics: SocketAddr = SocketAddr::from_str(&config.metrics_port_address())?; init_registry(socket_addr_metrics); + let operator_1_pvt_key = operator_1_config + .registration_config + .unwrap() + .operator_pvt_key; + // enable operator sets // this can only be called by registry coordinator's owner. // in our case the deployer key in scripts was anvil's 0 index key which is same as operator1 let enable_operator_sets_tx_hash = enable_operator_sets( config.registry_coordinator_addr()?, - config.operator_pvt_key(), - config.ecdsa_keystore_path(), - config.ecdsa_keystore_password(), + Some(operator_1_pvt_key.clone()), + ecdsa_keystore_path.clone(), + ecdsa_keystore_password.clone(), &rpc_url, ) .await?; @@ -519,19 +566,21 @@ impl AvsCommand { let total_delegated_quorum_create_tx_hash = create_total_delegated_stake_quorum( config.erc20_mock_strategy_addr()?, config.registry_coordinator_addr()?, - config.operator_pvt_key(), - config.ecdsa_keystore_path(), - config.ecdsa_keystore_password(), + Some(operator_1_pvt_key.clone()), + ecdsa_keystore_path.clone(), + ecdsa_keystore_password.clone(), &rpc_url, ) .await?; info!(tx_hash = %total_delegated_quorum_create_tx_hash,"total delegated stake quorum create tx_hash"); + let allocation_delay = allocation_delay.parse()?; + if register_operator { let _ = register_operator_with_el_and_deposit_tokens_in_strategy( metadata_uri.clone(), - config.allocation_delay()?, - config.operator_pvt_key(), + allocation_delay, + Some(operator_1_pvt_key.clone()), rpc_url.clone(), ecdsa_keystore_path.clone(), ecdsa_keystore_password.clone(), @@ -543,14 +592,14 @@ impl AvsCommand { config.avs_directory_addr()?, config.strategy_manager_addr()?, config.erc20_mock_strategy_addr()?, - config.operator_1_token_amount()?, + operator_1_token_amount.parse()?, ) .await; let _ = register_operator_with_el_and_deposit_tokens_in_strategy( metadata_uri, - config.allocation_delay()?, - config.operator_2_pvt_key(), + allocation_delay, + Some(operator_2_pvt_key.clone()), rpc_url.clone(), ecdsa_keystore_2_path.clone(), ecdsa_keystore_2_password.clone(), @@ -562,16 +611,16 @@ impl AvsCommand { config.avs_directory_addr()?, config.strategy_manager_addr()?, config.erc20_mock_strategy_addr()?, - config.operator_2_token_amount()?, + operator_2_token_amount.parse()?, ) .await; let allocation_delay_set_tx_hash = set_allocation_delay( - config.allocation_delay()?, + allocation_delay, allocation_manager_address_anvil, - config.operator_pvt_key(), - config.ecdsa_keystore_path(), - config.ecdsa_keystore_password(), + Some(operator_pvt_key.clone()), + ecdsa_keystore_path.clone(), + ecdsa_keystore_password.clone(), &rpc_url, ) .await?; @@ -581,9 +630,9 @@ impl AvsCommand { ); let modify_allocation_for_operator1_tx_hash = modify_allocation_for_operator( - config.operator_set_id()?, + operator_set_id.parse()?, allocation_manager_address_anvil, - config.operator_pvt_key(), + Some(operator_pvt_key.clone()), ecdsa_keystore_path.clone(), ecdsa_keystore_password.clone(), &rpc_url, @@ -596,9 +645,9 @@ impl AvsCommand { info!(tx_hash = %modify_allocation_for_operator1_tx_hash,strategy_address = %config.erc20_mock_strategy_addr()?,"allocation by operator1 for strategy"); let modify_allocation_for_operator2_tx_hash = modify_allocation_for_operator( - config.operator_set_id()?, + operator_set_id.parse()?, allocation_manager_address_anvil, - config.operator_2_pvt_key(), + Some(operator_2_pvt_key.clone()), ecdsa_keystore_2_path.clone(), ecdsa_keystore_2_password.clone(), &rpc_url, @@ -608,42 +657,42 @@ impl AvsCommand { ) .await?; info!(tx_hash = %modify_allocation_for_operator2_tx_hash,strategy_address = %config.erc20_mock_strategy_addr()?,"allocation by operator2 for strategy"); - let keystore = Keystore::from_file(&config.bls_keystore_path())? - .decrypt(&config.bls_keystore_password()) + let keystore = Keystore::from_file(&bls_keystore_path)? + .decrypt(&bls_keystore_password) .unwrap(); let fr_key: String = keystore.iter().map(|&value| value as char).collect(); let key_pair = BlsKeyPair::new(fr_key)?; let register_for_operator_sets_by_operator1_txhash = register_for_operator_sets( - config.operator_set_id()?, + operator_set_id.parse()?, key_pair, config.registry_coordinator_addr()?, allocation_manager_address_anvil, - config.operator_pvt_key(), + Some(operator_pvt_key), ecdsa_keystore_path.clone(), ecdsa_keystore_password.clone(), &rpc_url, service_manager_address_anvil, - config.socket().to_string(), + socket.clone(), ) .await?; info!(tx_hash = %register_for_operator_sets_by_operator1_txhash,"register for operator sets by operator1"); - let keystore = Keystore::from_file(&config.bls_keystore_2_path())? - .decrypt(&config.bls_keystore_2_password()) + let keystore = Keystore::from_file(&bls_keystore_2_path)? + .decrypt(&bls_keystore_2_password) .unwrap(); let fr_key: String = keystore.iter().map(|&value| value as char).collect(); let key_pair_2 = BlsKeyPair::new(fr_key)?; let register_for_operator_sets_by_operator2_txhash = register_for_operator_sets( - config.operator_set_id()?, + operator_set_id.parse()?, key_pair_2, config.registry_coordinator_addr()?, allocation_manager_address_anvil, - config.operator_2_pvt_key(), + Some(operator_2_pvt_key), ecdsa_keystore_2_path.clone(), ecdsa_keystore_2_password.clone(), &rpc_url, service_manager_address_anvil, - config.operator_2_socket().to_string(), + socket, ) .await?; info!(tx_hash = %register_for_operator_sets_by_operator2_txhash,"register for operator sets by operator2"); diff --git a/crates/avs/src/lib.rs b/crates/avs/src/lib.rs index 3cf2a904..5cb75e8c 100644 --- a/crates/avs/src/lib.rs +++ b/crates/avs/src/lib.rs @@ -11,25 +11,16 @@ use incredible_config::IncredibleConfig; use incredible_operator::incredible_square_operator::IncredibleSquareOperator; use incredible_task_generator::TaskManager; use ntex::rt::System; +use tokio::task::JoinSet; use tracing::info; /// Launches all the services for the AVS. pub async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { info!("launching crates: incredible-squaring-avs-rs"); incredible_metrics::new(); - // start operator - let operator_builder = IncredibleSquareOperator::new(avs_config.clone()).await?; - let operator_builder2 = IncredibleSquareOperator::new(avs_config.clone()).await?; - - println!("@@@ operator_builder 1 key {:?}", operator_builder.key_pair); - println!( - "@@@ operator_builder 2 key {:?}", - operator_builder2.key_pair - ); - let mut challenge = Challenger::build(avs_config.clone()).await?; - let registry_coordinator = operator_builder.registry_coordinator; - let operator_state_retriever = operator_builder.operator_state_retriever; + let registry_coordinator = avs_config.registry_coordinator_addr()?; + let operator_state_retriever = avs_config.operator_state_retriever_addr()?; let http_rpc_url = avs_config.http_rpc_url().clone(); let avs_registry_reader = AvsRegistryChainReader::new( get_logger(), @@ -39,41 +30,42 @@ pub async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { ) .await?; + // start operators + let mut joinset = JoinSet::new(); + + for (i, config) in avs_config.get_operator_configs().into_iter().enumerate() { + let operator_builder = + IncredibleSquareOperator::new(avs_config.clone(), config.clone()).await?; + + // println!( + // "@@@ operator_builder 1 key {:?}", + // operator_builders[0].key_pair + // ); + let avs_registry_reader = avs_registry_reader.clone(); + + joinset.spawn(async move { + let key_pair = &operator_builder.key_pair; + let operator_id = &operator_builder.operator_id; + let operator_address = operator_builder.operator_addr; + let operator_name = format!("operator{i}"); + let client_aggregator = &operator_builder.client; + let ws_rpc_url = &operator_builder.ws_rpc_url; + let operator_service = IncredibleSquareOperator::start_operator( + &avs_registry_reader, + key_pair, + operator_id, + operator_address, + &operator_name, + client_aggregator, + ws_rpc_url, + ) + .map_err(|e| eyre::eyre!("Operator error: {:?}", e)); + operator_service.await + }); + } + let mut challenge = Challenger::build(avs_config.clone()).await?; + // Start Operator 1 - let key_pair = &operator_builder.key_pair; - let operator_id = &operator_builder.operator_id; - let operator_address = operator_builder.operator_addr; - let operator_name = "operator1"; - let client_aggregator = &operator_builder.client; - let ws_rpc_url = &operator_builder.ws_rpc_url; - let operator_service = IncredibleSquareOperator::start_operator( - &avs_registry_reader, - key_pair, - operator_id, - operator_address, - operator_name, - client_aggregator, - ws_rpc_url, - ) - .map_err(|e| eyre::eyre!("Operator error: {:?}", e)); - - // Start operator 2 - let key_pair = &operator_builder2.key_pair; - let operator_id = &operator_builder2.operator_id; - let operator_address = operator_builder2.operator_addr; - let operator_name = "operator2"; - let client_aggregator = operator_builder.client.clone(); - let ws_rpc_url = &operator_builder2.ws_rpc_url; - let operator2_service = IncredibleSquareOperator::start_operator( - &avs_registry_reader, - key_pair, - operator_id, - operator_address, - operator_name, - &client_aggregator, - ws_rpc_url, - ) - .map_err(|e| eyre::eyre!("Operator error: {:?}", e)); let challenger_service = challenge .start_challenger() @@ -122,9 +114,8 @@ pub async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { }); }); - let _ = futures::future::try_join5( - operator_service, - operator2_service, + let _ = futures::future::try_join4( + async move { Ok(joinset.join_all().await) }, challenger_service, aggregator_service_with_rpc_client, task_spam_service, diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs index 5c0f7ca0..73a4abf1 100644 --- a/crates/config/src/lib.rs +++ b/crates/config/src/lib.rs @@ -1,10 +1,9 @@ //! config use alloy::hex::FromHex; -use alloy::primitives::{Address, Bytes, FixedBytes, U256}; -use eigen_types::operator::OperatorId; +use alloy::primitives::Address; use error::ConfigError; use serde::{Deserialize, Serialize}; -use std::str::FromStr; + /// Config Error pub mod error; use std::path::PathBuf; @@ -14,20 +13,12 @@ use std::path::PathBuf; pub struct IncredibleConfig { rpc_config: RpcConfig, - ecdsa_config: EcdsaConfig, - - bls_config: BlsConfig, - - operator_config: OperatorConfig, + operator_configs: Vec, aggregator_config: AggregatorConfig, el_config: ELConfig, - operator_registration_config: OperatorRegistrationConfig, - - operator_2_registration_config: Operator2RegistrationConfig, - incredible_contracts_config: IncredibleContractsConfig, task_manager_config: TaskManagerConfig, @@ -74,8 +65,6 @@ pub struct MetricsConfig { #[derive(Debug, Default, Serialize, Deserialize, PartialEq, Eq, Clone)] pub struct OperatorRegistrationConfig { - pub register_operator: bool, - pub operator_to_avs_registration_sig_salt: String, pub socket: String, @@ -84,45 +73,28 @@ pub struct OperatorRegistrationConfig { pub sig_expiry: String, - /// Optional operator pvt key, if not provided, it will be taken from the [`EcdsaConfig`] - pub operator_pvt_key: Option, -} - -#[derive(Debug, Default, Serialize, Deserialize, PartialEq, Eq, Clone)] -pub struct Operator2RegistrationConfig { - pub register_operator: bool, - - pub operator_to_avs_registration_sig_salt: String, - - pub socket: String, + pub operator_pvt_key: String, - pub quorum_number: String, - - pub sig_expiry: String, - - /// Optional operator pvt key, if not provided, it will be taken from the [`EcdsaConfig`] - pub operator_pvt_key: Option, + pub ecdsa_config: EcdsaConfig, } #[derive(Debug, Default, Serialize, Deserialize, PartialEq, Eq, Clone)] pub struct OperatorConfig { + pub registration_config: Option, + pub operator_address: String, pub operator_id: String, - pub operator_2_address: String, - - pub operator_2_id: String, - pub operator_set_id: String, - pub operator_1_token_amount: String, - - pub operator_2_token_amount: String, + pub operator_token_amount: String, pub allocation_delay: String, pub slash_simulate: bool, + + pub bls_config: BlsConfig, } #[derive(Debug, Default, Serialize, Deserialize, PartialEq, Eq, Clone)] @@ -153,10 +125,6 @@ pub struct BlsConfig { pub keystore_path: String, pub keystore_password: String, - - pub keystore_2_path: String, - - pub keystore_2_password: String, } #[derive(Debug, Clone, Default, Deserialize, PartialEq, Eq, Serialize)] @@ -165,10 +133,6 @@ pub struct EcdsaConfig { pub keystore_path: String, pub keystore_password: String, - - pub keystore_2_path: String, - - pub keystore_2_password: String, } impl IncredibleConfig { @@ -187,12 +151,8 @@ impl IncredibleConfig { self.rpc_config.chain_id = chain_id; } - pub fn set_operator_id(&mut self, id: String) { - self.operator_config.operator_id = id; - } - - pub fn set_operator_2_id(&mut self, id: String) { - self.operator_config.operator_2_id = id; + pub fn add_operator(&mut self, operator: OperatorConfig) { + self.operator_configs.push(operator); } pub fn set_signer(&mut self, pvt_key: String) { @@ -207,22 +167,6 @@ impl IncredibleConfig { self.rpc_config.ws_rpc_url = ws_url; } - pub fn set_ecdsa_keystore_path(&mut self, path: String) { - self.ecdsa_config.keystore_path = path; - } - - pub fn set_ecdsa_keystore_pasword(&mut self, password: String) { - self.ecdsa_config.keystore_password = password; - } - - pub fn set_ecdsa_keystore_2_path(&mut self, path: String) { - self.ecdsa_config.keystore_2_path = path; - } - - pub fn set_ecdsa_keystore_2_pasword(&mut self, password: String) { - self.ecdsa_config.keystore_2_password = password; - } - pub fn set_aggregator_ip_address(&mut self, port: String) { self.aggregator_config.ip_address = port; } @@ -231,22 +175,6 @@ impl IncredibleConfig { self.incredible_contracts_config.service_manager_addr = address; } - pub fn set_bls_keystore_path(&mut self, path: String) { - self.bls_config.keystore_path = path; - } - - pub fn set_bls_keystore_2_path(&mut self, path: String) { - self.bls_config.keystore_2_path = path; - } - - pub fn set_bls_keystore_password(&mut self, password: String) { - self.bls_config.keystore_password = password; - } - - pub fn set_bls_keystore_2_password(&mut self, password: String) { - self.bls_config.keystore_2_password = password; - } - pub fn set_registry_coordinator_addr(&mut self, address: String) { self.el_config.registry_coordinator_addr = address; } @@ -262,68 +190,6 @@ impl IncredibleConfig { (self.el_config.operator_state_retriever_addr) = address; } - pub fn set_operator_address(&mut self, address: String) { - self.operator_config.operator_address = address; - } - - pub fn set_operator_2_address(&mut self, address: String) { - self.operator_config.operator_2_address = address; - } - - pub fn set_operator_registration_sig_salt(&mut self, salt: String) { - self.operator_registration_config - .operator_to_avs_registration_sig_salt = salt; - } - - pub fn set_quorum_number(&mut self, quorum_num: String) { - self.operator_registration_config.quorum_number = quorum_num; - } - - pub fn set_operator_set_id(&mut self, operator_set_id: String) { - self.operator_config.operator_set_id = operator_set_id; - } - - pub fn set_socket(&mut self, socket: String) { - self.operator_registration_config.socket = socket; - } - - pub fn set_sig_expiry(&mut self, expiry: String) { - self.operator_registration_config.sig_expiry = expiry; - } - - pub fn set_operator_signing_key(&mut self, pvt_key: String) { - self.operator_registration_config.operator_pvt_key = Some(pvt_key); - } - - pub fn set_operator_2_registration_sig_salt(&mut self, salt: String) { - self.operator_2_registration_config - .operator_to_avs_registration_sig_salt = salt; - } - - pub fn set_operator_2_quorum_number(&mut self, quorum_num: String) { - self.operator_2_registration_config.quorum_number = quorum_num; - } - - pub fn set_operator_2_socket(&mut self, socket: String) { - self.operator_2_registration_config.socket = socket; - } - - pub fn set_operator_2_sig_expiry(&mut self, expiry: String) { - self.operator_2_registration_config.sig_expiry = expiry; - } - - pub fn set_operator_2_signing_key(&mut self, pvt_key: String) { - self.operator_2_registration_config.operator_pvt_key = Some(pvt_key); - } - - pub fn set_operator_1_token_amount(&mut self, amount: String) { - self.operator_config.operator_1_token_amount = amount; - } - - pub fn set_operator_2_token_amount(&mut self, amount: String) { - self.operator_config.operator_2_token_amount = amount; - } - pub fn set_avs_directory_address(&mut self, address: String) { self.el_config.avs_directory_addr = address; } @@ -356,20 +222,8 @@ impl IncredibleConfig { self.el_config.permission_controller_addr = address; } - pub fn set_allocation_delay(&mut self, delay: String) { - self.operator_config.allocation_delay = delay; - } - - pub fn set_slash_simulate(&mut self, slash: bool) { - self.operator_config.slash_simulate = slash; - } - - pub fn slash_simulate(&self) -> bool { - self.operator_config.slash_simulate - } - - pub fn allocation_delay(&mut self) -> Result { - u32::from_str(&self.operator_config.allocation_delay).map_err(ConfigError::ParseIntError) + pub fn get_operator_configs(&self) -> &[OperatorConfig] { + &self.operator_configs } pub fn service_manager_addr(&self) -> Result { @@ -381,28 +235,6 @@ impl IncredibleConfig { .map_err(ConfigError::HexParse) } - pub fn operator_set_id(&mut self) -> Result { - u32::from_str(&self.operator_config.operator_set_id).map_err(ConfigError::ParseIntError) - } - - pub fn ecdsa_keystore_2_path(&mut self) -> String { - self.ecdsa_config.keystore_2_path.clone() - } - - pub fn ecdsa_keystore_2_password(&mut self) -> String { - self.ecdsa_config.keystore_2_password.clone() - } - - pub fn operator_1_token_amount(&mut self) -> Result { - U256::from_str(&self.operator_config.operator_1_token_amount) - .map_err(ConfigError::ParseError) - } - - pub fn operator_2_token_amount(&mut self) -> Result { - U256::from_str(&self.operator_config.operator_2_token_amount) - .map_err(ConfigError::ParseError) - } - pub fn rewards_coordinator_address(&self) -> Result { Address::from_hex(self.el_config.rewards_coordinator_addr.as_bytes()) .map_err(ConfigError::HexParse) @@ -437,45 +269,6 @@ impl IncredibleConfig { self.rpc_config.signer.clone() } - pub fn ecdsa_keystore_path(&self) -> String { - self.ecdsa_config.keystore_path.clone() - } - - pub fn ecdsa_keystore_password(&self) -> String { - self.ecdsa_config.keystore_password.clone() - } - - pub fn bls_keystore_path(&self) -> String { - self.bls_config.keystore_path.clone() - } - - pub fn bls_keystore_2_path(&self) -> String { - self.bls_config.keystore_2_path.clone() - } - - pub fn bls_keystore_password(&self) -> String { - self.bls_config.keystore_password.clone() - } - - pub fn bls_keystore_2_password(&self) -> String { - self.bls_config.keystore_2_password.clone() - } - - pub fn operator_address(&self) -> Result { - Address::from_hex(self.operator_config.operator_address.as_bytes()) - .map_err(ConfigError::HexParse) - } - - pub fn operator_2_address(&self) -> Result { - Address::from_hex(self.operator_config.operator_2_address.as_bytes()) - .map_err(ConfigError::HexParse) - } - - pub fn get_operator_id(&self) -> Result, error::ConfigError> { - FixedBytes::from_hex(self.operator_config.operator_id.as_bytes()) - .map_err(ConfigError::HexParse) - } - pub fn aggregator_ip_addr(&self) -> String { self.aggregator_config.ip_address.clone() } @@ -490,29 +283,6 @@ impl IncredibleConfig { .map_err(ConfigError::HexParse) } - pub fn operator_to_avs_registration_sig_salt(&self) -> Result, ConfigError> { - FixedBytes::<32>::from_str( - &self - .operator_registration_config - .operator_to_avs_registration_sig_salt, - ) - .map_err(ConfigError::HexParse) - } - - pub fn quorum_number(&self) -> Result { - Bytes::from_str(&self.operator_registration_config.quorum_number) - .map_err(ConfigError::HexParse) - } - - pub fn socket(&self) -> &String { - &self.operator_registration_config.socket - } - - pub fn sig_expiry(&self) -> Result { - U256::from_str(&self.operator_registration_config.sig_expiry) - .map_err(ConfigError::ParseError) - } - pub fn delegation_manager_addr(&self) -> Result { Address::from_hex(self.el_config.delegation_manager_addr.as_bytes()) .map_err(ConfigError::HexParse) @@ -549,59 +319,16 @@ impl IncredibleConfig { pub fn task_manager_signer(&self) -> String { self.task_manager_config.signer.clone() } - - pub fn operator_pvt_key(&self) -> Option { - self.operator_registration_config.operator_pvt_key.clone() - } - - pub fn operator_2_to_avs_registration_sig_salt(&self) -> Result, ConfigError> { - FixedBytes::<32>::from_str( - &self - .operator_2_registration_config - .operator_to_avs_registration_sig_salt, - ) - .map_err(ConfigError::HexParse) - } - - pub fn operator_2_quorum_number(&self) -> Result { - Bytes::from_str(&self.operator_2_registration_config.quorum_number) - .map_err(ConfigError::HexParse) - } - - pub fn operator_2_socket(&self) -> &String { - &self.operator_2_registration_config.socket - } - - pub fn operator_2_sig_expiry(&self) -> Result { - U256::from_str(&self.operator_2_registration_config.sig_expiry) - .map_err(ConfigError::ParseError) - } - - pub fn operator_2_pvt_key(&self) -> Option { - self.operator_2_registration_config.operator_pvt_key.clone() - } - - pub fn get_operator_2_id(&self) -> Result { - FixedBytes::from_hex(self.operator_config.operator_2_id.as_bytes()) - .map_err(ConfigError::HexParse) - } } #[cfg(test)] mod tests { - - use std::str::FromStr; - - use alloy::primitives::{Bytes, FixedBytes}; - use super::BlsConfig; use super::PathBuf; use crate::AggregatorConfig; use crate::ELConfig; - use crate::EcdsaConfig; use crate::IncredibleConfig; use crate::OperatorConfig; - use crate::OperatorRegistrationConfig; use crate::RpcConfig; use incredible_testing_utils::{ get_incredible_squaring_operator_state_retriever, @@ -624,8 +351,6 @@ mod tests { let config = BlsConfig { keystore_password: "djsfl".to_string(), keystore_path: "fdshf".to_string(), - keystore_2_password: "34".to_string(), - keystore_2_path: "path".to_string(), }; confy::store_path(config_path, &config).unwrap(); @@ -691,46 +416,6 @@ mod tests { ); } - #[test] - fn test_bls_config() { - let config_file = r#" - keystore_path = "eigenblskeystorepath" - keystore_password = "eigenlovesblskeystorepassword" - "#; - let _config: BlsConfig = toml::from_str(config_file).unwrap(); - - let incredible_config_file = r#" - [bls_config] - keystore_path = "eigenblskeystorepath" - keystore_password = "eigenlovesblskeystorepassword" - "#; - - let incredible_config: IncredibleConfig = toml::from_str(incredible_config_file).unwrap(); - assert_eq!( - incredible_config.bls_keystore_password(), - "eigenlovesblskeystorepassword" - ); - assert_eq!( - incredible_config.bls_keystore_path(), - "eigenblskeystorepath" - ); - } - - #[test] - fn test_check_operator_id_deserialize() { - let id = "0x0202020202020202020202020202020202020202020202020202020202020202"; - let bytes: FixedBytes<32> = FixedBytes::from([ - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, - ]); - - let mut incredible_config = IncredibleConfig::default(); - - incredible_config.set_operator_id(id.to_string()); - assert_eq!(incredible_config.get_operator_id().unwrap(), bytes); - } - #[tokio::test] async fn test_elconfig() { let config_file = r#" @@ -821,80 +506,4 @@ mod tests { "https://localhost:3001" ); } - - #[test] - fn test_ecdsa_config() { - let _config = r#" - keystore_path = "incredibleecdsakeystorepath" - keystore_password = "eigenlovesecdsakeystore" - "#; - - let ecdsa_config: EcdsaConfig = toml::from_str(_config).unwrap(); - - assert_eq!(ecdsa_config.keystore_password, "eigenlovesecdsakeystore"); - assert_eq!(ecdsa_config.keystore_path, "incredibleecdsakeystorepath"); - - let incredible_config_file = r#" - [ecdsa_config] - keystore_path = "incredibleecdsakeystorepath" - keystore_password = "eigenlovesecdsakeystore" - "#; - let incredible_config: IncredibleConfig = toml::from_str(incredible_config_file).unwrap(); - assert_eq!( - incredible_config.ecdsa_keystore_path(), - "incredibleecdsakeystorepath" - ); - - assert_eq!( - incredible_config.ecdsa_keystore_password(), - "eigenlovesecdsakeystore" - ); - } - - #[test] - fn test_operator_registration_config() { - let _config = r#" - register_operator = true - operator_to_avs_registration_sig_salt = "0202020202020202020202020202020202020202020202020202020202020202" - socket = "sockett" - quorum_number = "0x40" - sig_expiry = "3333" - "#; - - let ecdsa_config: OperatorRegistrationConfig = toml::from_str(_config).unwrap(); - - assert!(ecdsa_config.register_operator); - assert_eq!( - ecdsa_config.operator_to_avs_registration_sig_salt, - "0202020202020202020202020202020202020202020202020202020202020202" - ); - assert_eq!(ecdsa_config.socket, "sockett"); - assert_eq!(ecdsa_config.quorum_number, "0x40"); - - let incredible_config_file = r#" - [operator_registration_config] - register_operator = true - operator_to_avs_registration_sig_salt = "0202020202020202020202020202020202020202020202020202020202020202" - socket = "sockett" - quorum_number = "0x40" - sig_expiry = "3333" - "#; - let incredible_config: IncredibleConfig = toml::from_str(incredible_config_file).unwrap(); - assert_eq!( - incredible_config - .operator_to_avs_registration_sig_salt() - .unwrap(), - FixedBytes::from([ - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, - ]) - ); - - assert_eq!(incredible_config.socket(), "sockett"); - assert_eq!( - incredible_config.quorum_number().unwrap(), - Bytes::from_str("0x40").unwrap() - ); - } } diff --git a/crates/operator/src/incredible_square_operator.rs b/crates/operator/src/incredible_square_operator.rs index 0264069a..394d43b3 100644 --- a/crates/operator/src/incredible_square_operator.rs +++ b/crates/operator/src/incredible_square_operator.rs @@ -7,7 +7,7 @@ use eigen_types::operator::OperatorId; use eyre::Result; use incredible_aggregator::ISTaskResponse; use incredible_bindings::incrediblesquaringtaskmanager::IncredibleSquaringTaskManager::NewTaskCreated; -use incredible_config::IncredibleConfig; +use incredible_config::{IncredibleConfig, OperatorConfig}; use rust_bls_bn254::keystores::base_keystore::Keystore; /// Main Operator @@ -56,34 +56,39 @@ impl Operator for IncredibleSquareOperator { impl IncredibleSquareOperator { /// Build the Operator Builder - pub async fn new(config: IncredibleConfig) -> Result { - let _instrumented_client = InstrumentedClient::new(&config.http_rpc_url()).await; + pub async fn new( + incredible_config: IncredibleConfig, + config: OperatorConfig, + ) -> Result { + let _instrumented_client = InstrumentedClient::new(&incredible_config.http_rpc_url()).await; // Read BlsKey from path - let keystore = Keystore::from_file(&config.bls_keystore_path()) + let keystore = Keystore::from_file(&config.bls_config.keystore_path) .map_err(|_| OperatorError::RegistrationError)? // TODO: change error type - .decrypt(&config.bls_keystore_password()) + .decrypt(&config.bls_config.keystore_password) .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type // TODO(supernova): Add this method in sdk in bls crate let fr_key: String = keystore.iter().map(|&value| value as char).collect(); let key_pair = BlsKeyPair::new(fr_key)?; let operator_id = config - .get_operator_id() - .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type - let registry_coordinator_addr = config + .operator_id + .parse() + .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type; + let registry_coordinator_addr = incredible_config .registry_coordinator_addr() - .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type - let operator_statr_retriever_addr = config + .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type; + let operator_statr_retriever_addr = incredible_config .operator_state_retriever_addr() .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type let operator_address = config - .operator_address() - .map_err(|_| OperatorError::RegistrationError)?; // TODO change error type - let mut client = ClientAggregator::new(config.aggregator_ip_addr()); + .operator_address + .parse() + .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type; + let mut client = ClientAggregator::new(incredible_config.aggregator_ip_addr()); let _ = client.dial_aggregator_rpc_client(); Ok(Self { - http_rpc_url: config.http_rpc_url(), - ws_rpc_url: config.ws_rpc_url(), + http_rpc_url: incredible_config.http_rpc_url(), + ws_rpc_url: incredible_config.ws_rpc_url(), operator_addr: operator_address, key_pair, operator_id, @@ -134,7 +139,8 @@ mod tests { .await .to_string(), ); - let operator_builder = IncredibleSquareOperator::new(incredible_config) + let op_cfg = incredible_config.get_operator_configs()[0].clone(); + let operator_builder = IncredibleSquareOperator::new(incredible_config, op_cfg) .await .unwrap(); @@ -199,7 +205,8 @@ mod tests { .await .to_string(), ); - let _ = IncredibleSquareOperator::new(incredible_config) + let op_cfg = incredible_config.get_operator_configs()[0].clone(); + let _ = IncredibleSquareOperator::new(incredible_config, op_cfg) .await .unwrap(); } @@ -219,7 +226,8 @@ mod tests { .await .to_string(), ); - let operator_builder = IncredibleSquareOperator::new(incredible_config) + let op_cfg = incredible_config.get_operator_configs()[0].clone(); + let operator_builder = IncredibleSquareOperator::new(incredible_config, op_cfg) .await .unwrap(); let signed_task_response = IncredibleSquareOperator::sign_task_response( From d5141ca16620c08f4c2f44dcd331a25febd59f6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Fri, 31 Jan 2025 17:20:36 -0300 Subject: [PATCH 16/24] chore: fix clippy --- crates/avs/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/avs/src/lib.rs b/crates/avs/src/lib.rs index 5cb75e8c..ad652765 100644 --- a/crates/avs/src/lib.rs +++ b/crates/avs/src/lib.rs @@ -33,7 +33,7 @@ pub async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { // start operators let mut joinset = JoinSet::new(); - for (i, config) in avs_config.get_operator_configs().into_iter().enumerate() { + for (i, config) in avs_config.get_operator_configs().iter().enumerate() { let operator_builder = IncredibleSquareOperator::new(avs_config.clone(), config.clone()).await?; From 4224b676c9e8b09145430623ab64485902a6cabd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Fri, 31 Jan 2025 17:32:38 -0300 Subject: [PATCH 17/24] chore: add print --- crates/avs/src/lib.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/crates/avs/src/lib.rs b/crates/avs/src/lib.rs index ad652765..e99f398b 100644 --- a/crates/avs/src/lib.rs +++ b/crates/avs/src/lib.rs @@ -37,10 +37,6 @@ pub async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { let operator_builder = IncredibleSquareOperator::new(avs_config.clone(), config.clone()).await?; - // println!( - // "@@@ operator_builder 1 key {:?}", - // operator_builders[0].key_pair - // ); let avs_registry_reader = avs_registry_reader.clone(); joinset.spawn(async move { @@ -50,6 +46,7 @@ pub async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { let operator_name = format!("operator{i}"); let client_aggregator = &operator_builder.client; let ws_rpc_url = &operator_builder.ws_rpc_url; + println!("@@@ {operator_name} key {:?}", key_pair); let operator_service = IncredibleSquareOperator::start_operator( &avs_registry_reader, key_pair, From 4577792def254a6d3aa152aa07deccda2e52c885 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Mon, 3 Feb 2025 13:46:44 -0300 Subject: [PATCH 18/24] Revert "chore: add print" This reverts commit 4224b676c9e8b09145430623ab64485902a6cabd. --- crates/avs/src/lib.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/crates/avs/src/lib.rs b/crates/avs/src/lib.rs index e99f398b..ad652765 100644 --- a/crates/avs/src/lib.rs +++ b/crates/avs/src/lib.rs @@ -37,6 +37,10 @@ pub async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { let operator_builder = IncredibleSquareOperator::new(avs_config.clone(), config.clone()).await?; + // println!( + // "@@@ operator_builder 1 key {:?}", + // operator_builders[0].key_pair + // ); let avs_registry_reader = avs_registry_reader.clone(); joinset.spawn(async move { @@ -46,7 +50,6 @@ pub async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { let operator_name = format!("operator{i}"); let client_aggregator = &operator_builder.client; let ws_rpc_url = &operator_builder.ws_rpc_url; - println!("@@@ {operator_name} key {:?}", key_pair); let operator_service = IncredibleSquareOperator::start_operator( &avs_registry_reader, key_pair, From 1dbd0afedc669ce7af2aee3335b16975e9f136c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Mon, 3 Feb 2025 13:47:12 -0300 Subject: [PATCH 19/24] Revert "chore: fix clippy" This reverts commit d5141ca16620c08f4c2f44dcd331a25febd59f6e. --- crates/avs/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/avs/src/lib.rs b/crates/avs/src/lib.rs index ad652765..5cb75e8c 100644 --- a/crates/avs/src/lib.rs +++ b/crates/avs/src/lib.rs @@ -33,7 +33,7 @@ pub async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { // start operators let mut joinset = JoinSet::new(); - for (i, config) in avs_config.get_operator_configs().iter().enumerate() { + for (i, config) in avs_config.get_operator_configs().into_iter().enumerate() { let operator_builder = IncredibleSquareOperator::new(avs_config.clone(), config.clone()).await?; From 72798309a8d314e3ec93d5bed01ca902ce708be7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Mon, 3 Feb 2025 13:47:24 -0300 Subject: [PATCH 20/24] Revert "fix: generalize config for N operators" This reverts commit 218542856e25af343b4b7a9bb91ded3c5a1082e6. --- .../src/commands/avs/mod.rs | 175 +++----- crates/avs/src/lib.rs | 89 ++-- crates/config/src/lib.rs | 419 +++++++++++++++++- .../src/incredible_square_operator.rs | 44 +- 4 files changed, 535 insertions(+), 192 deletions(-) diff --git a/bin/incredible-squaring-avs/src/commands/avs/mod.rs b/bin/incredible-squaring-avs/src/commands/avs/mod.rs index 9cbe238e..46f71fdf 100644 --- a/bin/incredible-squaring-avs/src/commands/avs/mod.rs +++ b/bin/incredible-squaring-avs/src/commands/avs/mod.rs @@ -22,9 +22,7 @@ use eigen_utils::core::allocationmanager::IAllocationManagerTypes::AllocateParam use eigen_utils::middleware::registrycoordinator::{ IRegistryCoordinator, IStakeRegistry, RegistryCoordinator, }; -use incredible_config::{ - BlsConfig, EcdsaConfig, IncredibleConfig, OperatorConfig, OperatorRegistrationConfig, -}; +use incredible_config::IncredibleConfig; use incredible_testing_utils::{ get_incredible_squaring_operator_state_retriever, get_incredible_squaring_registry_coordinator, get_incredible_squaring_service_manager, get_incredible_squaring_strategy_address, @@ -420,28 +418,28 @@ impl AvsCommand { config.set_service_manager_address(service_manager_address_anvil.to_string()); config.set_node_api_port_address(node_api_address); config.set_metrics_port_address(metrics_address); + config.set_slash_simulate(slash_simulate); // there's a default value ,so using unwrap is no issue config.set_task_manager_signer(task_manager_signer); config.set_signer(signer); // there's a default value ,so using unwrap is no issue + config.set_operator_set_id(operator_set_id); config.set_chain_id(chain_id); config.set_http_rpc_url(rpc_url.clone()); config.set_ws_rpc_url(ws_rpc_url); + config.set_ecdsa_keystore_path(ecdsa_keystore_path.clone()); + config.set_ecdsa_keystore_pasword(ecdsa_keystore_password.clone()); config.set_aggregator_ip_address(aggregator_ip_address); - - // config.set_slash_simulate(slash_simulate); - // config.set_operator_set_id(operator_set_id); - // config.set_ecdsa_keystore_path(ecdsa_keystore_path.clone()); - // config.set_ecdsa_keystore_pasword(ecdsa_keystore_password.clone()); - // config.set_bls_keystore_path(bls_keystore_path.clone()); - // config.set_bls_keystore_password(bls_keystore_password.clone()); - // config.set_allocation_delay(allocation_delay); - // config.set_operator_registration_sig_salt(operator_to_avs_registration_sig_salt); - // config.set_socket(socket); - // config.set_quorum_number(quorum_number.clone()); - // config.set_operator_id(operator_id); - // config.set_operator_address(operator_address); - // config.set_operator_2_address(operator_2_address); - // config.set_operator_2_id(operator_2_id); + config.set_bls_keystore_path(bls_keystore_path.clone()); + config.set_bls_keystore_password(bls_keystore_password.clone()); + config.set_allocation_delay(allocation_delay); + config.set_operator_registration_sig_salt(operator_to_avs_registration_sig_salt); + config.set_socket(socket); + + config.set_quorum_number(quorum_number.clone()); + config.set_operator_id(operator_id); + config.set_operator_address(operator_address); + config.set_operator_2_address(operator_2_address); + config.set_operator_2_id(operator_2_id); } config.set_erc20_mock_strategy_address( erc20_mock_strategy_address.unwrap_or(erc20_mock_strategy_address_anvil.to_string()), @@ -451,9 +449,12 @@ impl AvsCommand { .clone() .unwrap_or(delegation_manager_address_anvil.to_string()), ); + config.set_operator_2_quorum_number(quorum_number); config.set_avs_directory_address( avs_directory_addr.unwrap_or(avs_directory_address_anvil.to_string()), ); + config.set_operator_signing_key(operator_pvt_key); + config.set_operator_2_signing_key(operator_2_pvt_key); // use value from config , if None , then use anvil config.set_registry_coordinator_addr( registry_coordinator_address @@ -474,6 +475,10 @@ impl AvsCommand { ); config.set_rewards_coordinator_address(rewards_coordinator_address_anvil.to_string()); config.set_permission_controller_address(permission_controller_address_anvil.to_string()); + config.set_ecdsa_keystore_2_path(ecdsa_keystore_2_path.clone()); + config.set_ecdsa_keystore_2_pasword(ecdsa_keystore_2_password.clone()); + config + .set_operator_2_registration_sig_salt(operator_2_to_avs_registration_sig_salt.clone()); let now = SystemTime::now(); let mut expiry: U256 = U256::from(0); if let Ok(duration_since_epoch) = now.duration_since(UNIX_EPOCH) { @@ -485,79 +490,27 @@ impl AvsCommand { debug!("System time seems to be before the UNIX epoch."); } // provided expiry , if not , use default expiry : 10000 seconds - let op1_sig_expiry = sig_expiry.unwrap_or(expiry.to_string()).to_string(); - - let operator_1_config = OperatorConfig { - registration_config: Some(OperatorRegistrationConfig { - operator_to_avs_registration_sig_salt, - socket: socket.clone(), - quorum_number: quorum_number.clone(), - sig_expiry: op1_sig_expiry.clone(), - operator_pvt_key: operator_pvt_key.clone(), - ecdsa_config: EcdsaConfig { - keystore_path: ecdsa_keystore_path.clone(), - keystore_password: ecdsa_keystore_password.clone(), - }, - }), - operator_address, - operator_id, - operator_set_id: operator_set_id.clone(), - operator_token_amount: operator_1_token_amount.clone(), - allocation_delay: allocation_delay.clone(), - slash_simulate, - bls_config: BlsConfig { - keystore_path: bls_keystore_path.clone(), - keystore_password: bls_keystore_password.clone(), - }, - }; - config.add_operator(operator_1_config.clone()); - - // provided expiry , if not , use default expiry : 10000 seconds - let op2_sig_expiry = operator_2_sig_expiry - .unwrap_or(expiry.to_string()) - .to_string(); - - let operator_2_config = OperatorConfig { - registration_config: Some(OperatorRegistrationConfig { - operator_to_avs_registration_sig_salt: operator_2_to_avs_registration_sig_salt, - socket: socket.clone(), - quorum_number, - sig_expiry: op2_sig_expiry, - operator_pvt_key: operator_2_pvt_key.clone(), - ecdsa_config: EcdsaConfig { - keystore_path: ecdsa_keystore_2_path.clone(), - keystore_password: ecdsa_keystore_2_password.clone(), - }, - }), - operator_address: operator_2_address, - operator_id: operator_2_id, - operator_set_id: operator_set_id.clone(), - operator_token_amount: operator_2_token_amount.clone(), - allocation_delay: allocation_delay.clone(), - slash_simulate, - bls_config: BlsConfig { - keystore_path: bls_keystore_2_path.clone(), - keystore_password: bls_keystore_2_password.clone(), - }, - }; - config.add_operator(operator_2_config.clone()); - + config.set_sig_expiry(sig_expiry.unwrap_or(expiry.to_string()).to_string()); + config.set_bls_keystore_2_path(bls_keystore_2_path.clone()); + config.set_bls_keystore_2_password(bls_keystore_2_password.clone()); + config.set_operator_2_sig_expiry( + operator_2_sig_expiry + .unwrap_or(expiry.to_string()) + .to_string(), + ); + config.set_operator_1_token_amount(operator_1_token_amount); + config.set_operator_2_token_amount(operator_2_token_amount); let socket_addr_metrics: SocketAddr = SocketAddr::from_str(&config.metrics_port_address())?; init_registry(socket_addr_metrics); - let operator_1_pvt_key = operator_1_config - .registration_config - .unwrap() - .operator_pvt_key; - // enable operator sets // this can only be called by registry coordinator's owner. // in our case the deployer key in scripts was anvil's 0 index key which is same as operator1 let enable_operator_sets_tx_hash = enable_operator_sets( config.registry_coordinator_addr()?, - Some(operator_1_pvt_key.clone()), - ecdsa_keystore_path.clone(), - ecdsa_keystore_password.clone(), + config.operator_pvt_key(), + config.ecdsa_keystore_path(), + config.ecdsa_keystore_password(), &rpc_url, ) .await?; @@ -566,21 +519,19 @@ impl AvsCommand { let total_delegated_quorum_create_tx_hash = create_total_delegated_stake_quorum( config.erc20_mock_strategy_addr()?, config.registry_coordinator_addr()?, - Some(operator_1_pvt_key.clone()), - ecdsa_keystore_path.clone(), - ecdsa_keystore_password.clone(), + config.operator_pvt_key(), + config.ecdsa_keystore_path(), + config.ecdsa_keystore_password(), &rpc_url, ) .await?; info!(tx_hash = %total_delegated_quorum_create_tx_hash,"total delegated stake quorum create tx_hash"); - let allocation_delay = allocation_delay.parse()?; - if register_operator { let _ = register_operator_with_el_and_deposit_tokens_in_strategy( metadata_uri.clone(), - allocation_delay, - Some(operator_1_pvt_key.clone()), + config.allocation_delay()?, + config.operator_pvt_key(), rpc_url.clone(), ecdsa_keystore_path.clone(), ecdsa_keystore_password.clone(), @@ -592,14 +543,14 @@ impl AvsCommand { config.avs_directory_addr()?, config.strategy_manager_addr()?, config.erc20_mock_strategy_addr()?, - operator_1_token_amount.parse()?, + config.operator_1_token_amount()?, ) .await; let _ = register_operator_with_el_and_deposit_tokens_in_strategy( metadata_uri, - allocation_delay, - Some(operator_2_pvt_key.clone()), + config.allocation_delay()?, + config.operator_2_pvt_key(), rpc_url.clone(), ecdsa_keystore_2_path.clone(), ecdsa_keystore_2_password.clone(), @@ -611,16 +562,16 @@ impl AvsCommand { config.avs_directory_addr()?, config.strategy_manager_addr()?, config.erc20_mock_strategy_addr()?, - operator_2_token_amount.parse()?, + config.operator_2_token_amount()?, ) .await; let allocation_delay_set_tx_hash = set_allocation_delay( - allocation_delay, + config.allocation_delay()?, allocation_manager_address_anvil, - Some(operator_pvt_key.clone()), - ecdsa_keystore_path.clone(), - ecdsa_keystore_password.clone(), + config.operator_pvt_key(), + config.ecdsa_keystore_path(), + config.ecdsa_keystore_password(), &rpc_url, ) .await?; @@ -630,9 +581,9 @@ impl AvsCommand { ); let modify_allocation_for_operator1_tx_hash = modify_allocation_for_operator( - operator_set_id.parse()?, + config.operator_set_id()?, allocation_manager_address_anvil, - Some(operator_pvt_key.clone()), + config.operator_pvt_key(), ecdsa_keystore_path.clone(), ecdsa_keystore_password.clone(), &rpc_url, @@ -645,9 +596,9 @@ impl AvsCommand { info!(tx_hash = %modify_allocation_for_operator1_tx_hash,strategy_address = %config.erc20_mock_strategy_addr()?,"allocation by operator1 for strategy"); let modify_allocation_for_operator2_tx_hash = modify_allocation_for_operator( - operator_set_id.parse()?, + config.operator_set_id()?, allocation_manager_address_anvil, - Some(operator_2_pvt_key.clone()), + config.operator_2_pvt_key(), ecdsa_keystore_2_path.clone(), ecdsa_keystore_2_password.clone(), &rpc_url, @@ -657,42 +608,42 @@ impl AvsCommand { ) .await?; info!(tx_hash = %modify_allocation_for_operator2_tx_hash,strategy_address = %config.erc20_mock_strategy_addr()?,"allocation by operator2 for strategy"); - let keystore = Keystore::from_file(&bls_keystore_path)? - .decrypt(&bls_keystore_password) + let keystore = Keystore::from_file(&config.bls_keystore_path())? + .decrypt(&config.bls_keystore_password()) .unwrap(); let fr_key: String = keystore.iter().map(|&value| value as char).collect(); let key_pair = BlsKeyPair::new(fr_key)?; let register_for_operator_sets_by_operator1_txhash = register_for_operator_sets( - operator_set_id.parse()?, + config.operator_set_id()?, key_pair, config.registry_coordinator_addr()?, allocation_manager_address_anvil, - Some(operator_pvt_key), + config.operator_pvt_key(), ecdsa_keystore_path.clone(), ecdsa_keystore_password.clone(), &rpc_url, service_manager_address_anvil, - socket.clone(), + config.socket().to_string(), ) .await?; info!(tx_hash = %register_for_operator_sets_by_operator1_txhash,"register for operator sets by operator1"); - let keystore = Keystore::from_file(&bls_keystore_2_path)? - .decrypt(&bls_keystore_2_password) + let keystore = Keystore::from_file(&config.bls_keystore_2_path())? + .decrypt(&config.bls_keystore_2_password()) .unwrap(); let fr_key: String = keystore.iter().map(|&value| value as char).collect(); let key_pair_2 = BlsKeyPair::new(fr_key)?; let register_for_operator_sets_by_operator2_txhash = register_for_operator_sets( - operator_set_id.parse()?, + config.operator_set_id()?, key_pair_2, config.registry_coordinator_addr()?, allocation_manager_address_anvil, - Some(operator_2_pvt_key), + config.operator_2_pvt_key(), ecdsa_keystore_2_path.clone(), ecdsa_keystore_2_password.clone(), &rpc_url, service_manager_address_anvil, - socket, + config.operator_2_socket().to_string(), ) .await?; info!(tx_hash = %register_for_operator_sets_by_operator2_txhash,"register for operator sets by operator2"); diff --git a/crates/avs/src/lib.rs b/crates/avs/src/lib.rs index 5cb75e8c..3cf2a904 100644 --- a/crates/avs/src/lib.rs +++ b/crates/avs/src/lib.rs @@ -11,16 +11,25 @@ use incredible_config::IncredibleConfig; use incredible_operator::incredible_square_operator::IncredibleSquareOperator; use incredible_task_generator::TaskManager; use ntex::rt::System; -use tokio::task::JoinSet; use tracing::info; /// Launches all the services for the AVS. pub async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { info!("launching crates: incredible-squaring-avs-rs"); incredible_metrics::new(); + // start operator + let operator_builder = IncredibleSquareOperator::new(avs_config.clone()).await?; + let operator_builder2 = IncredibleSquareOperator::new(avs_config.clone()).await?; + + println!("@@@ operator_builder 1 key {:?}", operator_builder.key_pair); + println!( + "@@@ operator_builder 2 key {:?}", + operator_builder2.key_pair + ); - let registry_coordinator = avs_config.registry_coordinator_addr()?; - let operator_state_retriever = avs_config.operator_state_retriever_addr()?; + let mut challenge = Challenger::build(avs_config.clone()).await?; + let registry_coordinator = operator_builder.registry_coordinator; + let operator_state_retriever = operator_builder.operator_state_retriever; let http_rpc_url = avs_config.http_rpc_url().clone(); let avs_registry_reader = AvsRegistryChainReader::new( get_logger(), @@ -30,42 +39,41 @@ pub async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { ) .await?; - // start operators - let mut joinset = JoinSet::new(); - - for (i, config) in avs_config.get_operator_configs().into_iter().enumerate() { - let operator_builder = - IncredibleSquareOperator::new(avs_config.clone(), config.clone()).await?; - - // println!( - // "@@@ operator_builder 1 key {:?}", - // operator_builders[0].key_pair - // ); - let avs_registry_reader = avs_registry_reader.clone(); - - joinset.spawn(async move { - let key_pair = &operator_builder.key_pair; - let operator_id = &operator_builder.operator_id; - let operator_address = operator_builder.operator_addr; - let operator_name = format!("operator{i}"); - let client_aggregator = &operator_builder.client; - let ws_rpc_url = &operator_builder.ws_rpc_url; - let operator_service = IncredibleSquareOperator::start_operator( - &avs_registry_reader, - key_pair, - operator_id, - operator_address, - &operator_name, - client_aggregator, - ws_rpc_url, - ) - .map_err(|e| eyre::eyre!("Operator error: {:?}", e)); - operator_service.await - }); - } - let mut challenge = Challenger::build(avs_config.clone()).await?; - // Start Operator 1 + let key_pair = &operator_builder.key_pair; + let operator_id = &operator_builder.operator_id; + let operator_address = operator_builder.operator_addr; + let operator_name = "operator1"; + let client_aggregator = &operator_builder.client; + let ws_rpc_url = &operator_builder.ws_rpc_url; + let operator_service = IncredibleSquareOperator::start_operator( + &avs_registry_reader, + key_pair, + operator_id, + operator_address, + operator_name, + client_aggregator, + ws_rpc_url, + ) + .map_err(|e| eyre::eyre!("Operator error: {:?}", e)); + + // Start operator 2 + let key_pair = &operator_builder2.key_pair; + let operator_id = &operator_builder2.operator_id; + let operator_address = operator_builder2.operator_addr; + let operator_name = "operator2"; + let client_aggregator = operator_builder.client.clone(); + let ws_rpc_url = &operator_builder2.ws_rpc_url; + let operator2_service = IncredibleSquareOperator::start_operator( + &avs_registry_reader, + key_pair, + operator_id, + operator_address, + operator_name, + &client_aggregator, + ws_rpc_url, + ) + .map_err(|e| eyre::eyre!("Operator error: {:?}", e)); let challenger_service = challenge .start_challenger() @@ -114,8 +122,9 @@ pub async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { }); }); - let _ = futures::future::try_join4( - async move { Ok(joinset.join_all().await) }, + let _ = futures::future::try_join5( + operator_service, + operator2_service, challenger_service, aggregator_service_with_rpc_client, task_spam_service, diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs index 73a4abf1..5c0f7ca0 100644 --- a/crates/config/src/lib.rs +++ b/crates/config/src/lib.rs @@ -1,9 +1,10 @@ //! config use alloy::hex::FromHex; -use alloy::primitives::Address; +use alloy::primitives::{Address, Bytes, FixedBytes, U256}; +use eigen_types::operator::OperatorId; use error::ConfigError; use serde::{Deserialize, Serialize}; - +use std::str::FromStr; /// Config Error pub mod error; use std::path::PathBuf; @@ -13,12 +14,20 @@ use std::path::PathBuf; pub struct IncredibleConfig { rpc_config: RpcConfig, - operator_configs: Vec, + ecdsa_config: EcdsaConfig, + + bls_config: BlsConfig, + + operator_config: OperatorConfig, aggregator_config: AggregatorConfig, el_config: ELConfig, + operator_registration_config: OperatorRegistrationConfig, + + operator_2_registration_config: Operator2RegistrationConfig, + incredible_contracts_config: IncredibleContractsConfig, task_manager_config: TaskManagerConfig, @@ -65,6 +74,8 @@ pub struct MetricsConfig { #[derive(Debug, Default, Serialize, Deserialize, PartialEq, Eq, Clone)] pub struct OperatorRegistrationConfig { + pub register_operator: bool, + pub operator_to_avs_registration_sig_salt: String, pub socket: String, @@ -73,28 +84,45 @@ pub struct OperatorRegistrationConfig { pub sig_expiry: String, - pub operator_pvt_key: String, + /// Optional operator pvt key, if not provided, it will be taken from the [`EcdsaConfig`] + pub operator_pvt_key: Option, +} + +#[derive(Debug, Default, Serialize, Deserialize, PartialEq, Eq, Clone)] +pub struct Operator2RegistrationConfig { + pub register_operator: bool, + + pub operator_to_avs_registration_sig_salt: String, + + pub socket: String, - pub ecdsa_config: EcdsaConfig, + pub quorum_number: String, + + pub sig_expiry: String, + + /// Optional operator pvt key, if not provided, it will be taken from the [`EcdsaConfig`] + pub operator_pvt_key: Option, } #[derive(Debug, Default, Serialize, Deserialize, PartialEq, Eq, Clone)] pub struct OperatorConfig { - pub registration_config: Option, - pub operator_address: String, pub operator_id: String, + pub operator_2_address: String, + + pub operator_2_id: String, + pub operator_set_id: String, - pub operator_token_amount: String, + pub operator_1_token_amount: String, + + pub operator_2_token_amount: String, pub allocation_delay: String, pub slash_simulate: bool, - - pub bls_config: BlsConfig, } #[derive(Debug, Default, Serialize, Deserialize, PartialEq, Eq, Clone)] @@ -125,6 +153,10 @@ pub struct BlsConfig { pub keystore_path: String, pub keystore_password: String, + + pub keystore_2_path: String, + + pub keystore_2_password: String, } #[derive(Debug, Clone, Default, Deserialize, PartialEq, Eq, Serialize)] @@ -133,6 +165,10 @@ pub struct EcdsaConfig { pub keystore_path: String, pub keystore_password: String, + + pub keystore_2_path: String, + + pub keystore_2_password: String, } impl IncredibleConfig { @@ -151,8 +187,12 @@ impl IncredibleConfig { self.rpc_config.chain_id = chain_id; } - pub fn add_operator(&mut self, operator: OperatorConfig) { - self.operator_configs.push(operator); + pub fn set_operator_id(&mut self, id: String) { + self.operator_config.operator_id = id; + } + + pub fn set_operator_2_id(&mut self, id: String) { + self.operator_config.operator_2_id = id; } pub fn set_signer(&mut self, pvt_key: String) { @@ -167,6 +207,22 @@ impl IncredibleConfig { self.rpc_config.ws_rpc_url = ws_url; } + pub fn set_ecdsa_keystore_path(&mut self, path: String) { + self.ecdsa_config.keystore_path = path; + } + + pub fn set_ecdsa_keystore_pasword(&mut self, password: String) { + self.ecdsa_config.keystore_password = password; + } + + pub fn set_ecdsa_keystore_2_path(&mut self, path: String) { + self.ecdsa_config.keystore_2_path = path; + } + + pub fn set_ecdsa_keystore_2_pasword(&mut self, password: String) { + self.ecdsa_config.keystore_2_password = password; + } + pub fn set_aggregator_ip_address(&mut self, port: String) { self.aggregator_config.ip_address = port; } @@ -175,6 +231,22 @@ impl IncredibleConfig { self.incredible_contracts_config.service_manager_addr = address; } + pub fn set_bls_keystore_path(&mut self, path: String) { + self.bls_config.keystore_path = path; + } + + pub fn set_bls_keystore_2_path(&mut self, path: String) { + self.bls_config.keystore_2_path = path; + } + + pub fn set_bls_keystore_password(&mut self, password: String) { + self.bls_config.keystore_password = password; + } + + pub fn set_bls_keystore_2_password(&mut self, password: String) { + self.bls_config.keystore_2_password = password; + } + pub fn set_registry_coordinator_addr(&mut self, address: String) { self.el_config.registry_coordinator_addr = address; } @@ -190,6 +262,68 @@ impl IncredibleConfig { (self.el_config.operator_state_retriever_addr) = address; } + pub fn set_operator_address(&mut self, address: String) { + self.operator_config.operator_address = address; + } + + pub fn set_operator_2_address(&mut self, address: String) { + self.operator_config.operator_2_address = address; + } + + pub fn set_operator_registration_sig_salt(&mut self, salt: String) { + self.operator_registration_config + .operator_to_avs_registration_sig_salt = salt; + } + + pub fn set_quorum_number(&mut self, quorum_num: String) { + self.operator_registration_config.quorum_number = quorum_num; + } + + pub fn set_operator_set_id(&mut self, operator_set_id: String) { + self.operator_config.operator_set_id = operator_set_id; + } + + pub fn set_socket(&mut self, socket: String) { + self.operator_registration_config.socket = socket; + } + + pub fn set_sig_expiry(&mut self, expiry: String) { + self.operator_registration_config.sig_expiry = expiry; + } + + pub fn set_operator_signing_key(&mut self, pvt_key: String) { + self.operator_registration_config.operator_pvt_key = Some(pvt_key); + } + + pub fn set_operator_2_registration_sig_salt(&mut self, salt: String) { + self.operator_2_registration_config + .operator_to_avs_registration_sig_salt = salt; + } + + pub fn set_operator_2_quorum_number(&mut self, quorum_num: String) { + self.operator_2_registration_config.quorum_number = quorum_num; + } + + pub fn set_operator_2_socket(&mut self, socket: String) { + self.operator_2_registration_config.socket = socket; + } + + pub fn set_operator_2_sig_expiry(&mut self, expiry: String) { + self.operator_2_registration_config.sig_expiry = expiry; + } + + pub fn set_operator_2_signing_key(&mut self, pvt_key: String) { + self.operator_2_registration_config.operator_pvt_key = Some(pvt_key); + } + + pub fn set_operator_1_token_amount(&mut self, amount: String) { + self.operator_config.operator_1_token_amount = amount; + } + + pub fn set_operator_2_token_amount(&mut self, amount: String) { + self.operator_config.operator_2_token_amount = amount; + } + pub fn set_avs_directory_address(&mut self, address: String) { self.el_config.avs_directory_addr = address; } @@ -222,8 +356,20 @@ impl IncredibleConfig { self.el_config.permission_controller_addr = address; } - pub fn get_operator_configs(&self) -> &[OperatorConfig] { - &self.operator_configs + pub fn set_allocation_delay(&mut self, delay: String) { + self.operator_config.allocation_delay = delay; + } + + pub fn set_slash_simulate(&mut self, slash: bool) { + self.operator_config.slash_simulate = slash; + } + + pub fn slash_simulate(&self) -> bool { + self.operator_config.slash_simulate + } + + pub fn allocation_delay(&mut self) -> Result { + u32::from_str(&self.operator_config.allocation_delay).map_err(ConfigError::ParseIntError) } pub fn service_manager_addr(&self) -> Result { @@ -235,6 +381,28 @@ impl IncredibleConfig { .map_err(ConfigError::HexParse) } + pub fn operator_set_id(&mut self) -> Result { + u32::from_str(&self.operator_config.operator_set_id).map_err(ConfigError::ParseIntError) + } + + pub fn ecdsa_keystore_2_path(&mut self) -> String { + self.ecdsa_config.keystore_2_path.clone() + } + + pub fn ecdsa_keystore_2_password(&mut self) -> String { + self.ecdsa_config.keystore_2_password.clone() + } + + pub fn operator_1_token_amount(&mut self) -> Result { + U256::from_str(&self.operator_config.operator_1_token_amount) + .map_err(ConfigError::ParseError) + } + + pub fn operator_2_token_amount(&mut self) -> Result { + U256::from_str(&self.operator_config.operator_2_token_amount) + .map_err(ConfigError::ParseError) + } + pub fn rewards_coordinator_address(&self) -> Result { Address::from_hex(self.el_config.rewards_coordinator_addr.as_bytes()) .map_err(ConfigError::HexParse) @@ -269,6 +437,45 @@ impl IncredibleConfig { self.rpc_config.signer.clone() } + pub fn ecdsa_keystore_path(&self) -> String { + self.ecdsa_config.keystore_path.clone() + } + + pub fn ecdsa_keystore_password(&self) -> String { + self.ecdsa_config.keystore_password.clone() + } + + pub fn bls_keystore_path(&self) -> String { + self.bls_config.keystore_path.clone() + } + + pub fn bls_keystore_2_path(&self) -> String { + self.bls_config.keystore_2_path.clone() + } + + pub fn bls_keystore_password(&self) -> String { + self.bls_config.keystore_password.clone() + } + + pub fn bls_keystore_2_password(&self) -> String { + self.bls_config.keystore_2_password.clone() + } + + pub fn operator_address(&self) -> Result { + Address::from_hex(self.operator_config.operator_address.as_bytes()) + .map_err(ConfigError::HexParse) + } + + pub fn operator_2_address(&self) -> Result { + Address::from_hex(self.operator_config.operator_2_address.as_bytes()) + .map_err(ConfigError::HexParse) + } + + pub fn get_operator_id(&self) -> Result, error::ConfigError> { + FixedBytes::from_hex(self.operator_config.operator_id.as_bytes()) + .map_err(ConfigError::HexParse) + } + pub fn aggregator_ip_addr(&self) -> String { self.aggregator_config.ip_address.clone() } @@ -283,6 +490,29 @@ impl IncredibleConfig { .map_err(ConfigError::HexParse) } + pub fn operator_to_avs_registration_sig_salt(&self) -> Result, ConfigError> { + FixedBytes::<32>::from_str( + &self + .operator_registration_config + .operator_to_avs_registration_sig_salt, + ) + .map_err(ConfigError::HexParse) + } + + pub fn quorum_number(&self) -> Result { + Bytes::from_str(&self.operator_registration_config.quorum_number) + .map_err(ConfigError::HexParse) + } + + pub fn socket(&self) -> &String { + &self.operator_registration_config.socket + } + + pub fn sig_expiry(&self) -> Result { + U256::from_str(&self.operator_registration_config.sig_expiry) + .map_err(ConfigError::ParseError) + } + pub fn delegation_manager_addr(&self) -> Result { Address::from_hex(self.el_config.delegation_manager_addr.as_bytes()) .map_err(ConfigError::HexParse) @@ -319,16 +549,59 @@ impl IncredibleConfig { pub fn task_manager_signer(&self) -> String { self.task_manager_config.signer.clone() } + + pub fn operator_pvt_key(&self) -> Option { + self.operator_registration_config.operator_pvt_key.clone() + } + + pub fn operator_2_to_avs_registration_sig_salt(&self) -> Result, ConfigError> { + FixedBytes::<32>::from_str( + &self + .operator_2_registration_config + .operator_to_avs_registration_sig_salt, + ) + .map_err(ConfigError::HexParse) + } + + pub fn operator_2_quorum_number(&self) -> Result { + Bytes::from_str(&self.operator_2_registration_config.quorum_number) + .map_err(ConfigError::HexParse) + } + + pub fn operator_2_socket(&self) -> &String { + &self.operator_2_registration_config.socket + } + + pub fn operator_2_sig_expiry(&self) -> Result { + U256::from_str(&self.operator_2_registration_config.sig_expiry) + .map_err(ConfigError::ParseError) + } + + pub fn operator_2_pvt_key(&self) -> Option { + self.operator_2_registration_config.operator_pvt_key.clone() + } + + pub fn get_operator_2_id(&self) -> Result { + FixedBytes::from_hex(self.operator_config.operator_2_id.as_bytes()) + .map_err(ConfigError::HexParse) + } } #[cfg(test)] mod tests { + + use std::str::FromStr; + + use alloy::primitives::{Bytes, FixedBytes}; + use super::BlsConfig; use super::PathBuf; use crate::AggregatorConfig; use crate::ELConfig; + use crate::EcdsaConfig; use crate::IncredibleConfig; use crate::OperatorConfig; + use crate::OperatorRegistrationConfig; use crate::RpcConfig; use incredible_testing_utils::{ get_incredible_squaring_operator_state_retriever, @@ -351,6 +624,8 @@ mod tests { let config = BlsConfig { keystore_password: "djsfl".to_string(), keystore_path: "fdshf".to_string(), + keystore_2_password: "34".to_string(), + keystore_2_path: "path".to_string(), }; confy::store_path(config_path, &config).unwrap(); @@ -416,6 +691,46 @@ mod tests { ); } + #[test] + fn test_bls_config() { + let config_file = r#" + keystore_path = "eigenblskeystorepath" + keystore_password = "eigenlovesblskeystorepassword" + "#; + let _config: BlsConfig = toml::from_str(config_file).unwrap(); + + let incredible_config_file = r#" + [bls_config] + keystore_path = "eigenblskeystorepath" + keystore_password = "eigenlovesblskeystorepassword" + "#; + + let incredible_config: IncredibleConfig = toml::from_str(incredible_config_file).unwrap(); + assert_eq!( + incredible_config.bls_keystore_password(), + "eigenlovesblskeystorepassword" + ); + assert_eq!( + incredible_config.bls_keystore_path(), + "eigenblskeystorepath" + ); + } + + #[test] + fn test_check_operator_id_deserialize() { + let id = "0x0202020202020202020202020202020202020202020202020202020202020202"; + let bytes: FixedBytes<32> = FixedBytes::from([ + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, + ]); + + let mut incredible_config = IncredibleConfig::default(); + + incredible_config.set_operator_id(id.to_string()); + assert_eq!(incredible_config.get_operator_id().unwrap(), bytes); + } + #[tokio::test] async fn test_elconfig() { let config_file = r#" @@ -506,4 +821,80 @@ mod tests { "https://localhost:3001" ); } + + #[test] + fn test_ecdsa_config() { + let _config = r#" + keystore_path = "incredibleecdsakeystorepath" + keystore_password = "eigenlovesecdsakeystore" + "#; + + let ecdsa_config: EcdsaConfig = toml::from_str(_config).unwrap(); + + assert_eq!(ecdsa_config.keystore_password, "eigenlovesecdsakeystore"); + assert_eq!(ecdsa_config.keystore_path, "incredibleecdsakeystorepath"); + + let incredible_config_file = r#" + [ecdsa_config] + keystore_path = "incredibleecdsakeystorepath" + keystore_password = "eigenlovesecdsakeystore" + "#; + let incredible_config: IncredibleConfig = toml::from_str(incredible_config_file).unwrap(); + assert_eq!( + incredible_config.ecdsa_keystore_path(), + "incredibleecdsakeystorepath" + ); + + assert_eq!( + incredible_config.ecdsa_keystore_password(), + "eigenlovesecdsakeystore" + ); + } + + #[test] + fn test_operator_registration_config() { + let _config = r#" + register_operator = true + operator_to_avs_registration_sig_salt = "0202020202020202020202020202020202020202020202020202020202020202" + socket = "sockett" + quorum_number = "0x40" + sig_expiry = "3333" + "#; + + let ecdsa_config: OperatorRegistrationConfig = toml::from_str(_config).unwrap(); + + assert!(ecdsa_config.register_operator); + assert_eq!( + ecdsa_config.operator_to_avs_registration_sig_salt, + "0202020202020202020202020202020202020202020202020202020202020202" + ); + assert_eq!(ecdsa_config.socket, "sockett"); + assert_eq!(ecdsa_config.quorum_number, "0x40"); + + let incredible_config_file = r#" + [operator_registration_config] + register_operator = true + operator_to_avs_registration_sig_salt = "0202020202020202020202020202020202020202020202020202020202020202" + socket = "sockett" + quorum_number = "0x40" + sig_expiry = "3333" + "#; + let incredible_config: IncredibleConfig = toml::from_str(incredible_config_file).unwrap(); + assert_eq!( + incredible_config + .operator_to_avs_registration_sig_salt() + .unwrap(), + FixedBytes::from([ + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, + ]) + ); + + assert_eq!(incredible_config.socket(), "sockett"); + assert_eq!( + incredible_config.quorum_number().unwrap(), + Bytes::from_str("0x40").unwrap() + ); + } } diff --git a/crates/operator/src/incredible_square_operator.rs b/crates/operator/src/incredible_square_operator.rs index 394d43b3..0264069a 100644 --- a/crates/operator/src/incredible_square_operator.rs +++ b/crates/operator/src/incredible_square_operator.rs @@ -7,7 +7,7 @@ use eigen_types::operator::OperatorId; use eyre::Result; use incredible_aggregator::ISTaskResponse; use incredible_bindings::incrediblesquaringtaskmanager::IncredibleSquaringTaskManager::NewTaskCreated; -use incredible_config::{IncredibleConfig, OperatorConfig}; +use incredible_config::IncredibleConfig; use rust_bls_bn254::keystores::base_keystore::Keystore; /// Main Operator @@ -56,39 +56,34 @@ impl Operator for IncredibleSquareOperator { impl IncredibleSquareOperator { /// Build the Operator Builder - pub async fn new( - incredible_config: IncredibleConfig, - config: OperatorConfig, - ) -> Result { - let _instrumented_client = InstrumentedClient::new(&incredible_config.http_rpc_url()).await; + pub async fn new(config: IncredibleConfig) -> Result { + let _instrumented_client = InstrumentedClient::new(&config.http_rpc_url()).await; // Read BlsKey from path - let keystore = Keystore::from_file(&config.bls_config.keystore_path) + let keystore = Keystore::from_file(&config.bls_keystore_path()) .map_err(|_| OperatorError::RegistrationError)? // TODO: change error type - .decrypt(&config.bls_config.keystore_password) + .decrypt(&config.bls_keystore_password()) .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type // TODO(supernova): Add this method in sdk in bls crate let fr_key: String = keystore.iter().map(|&value| value as char).collect(); let key_pair = BlsKeyPair::new(fr_key)?; let operator_id = config - .operator_id - .parse() - .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type; - let registry_coordinator_addr = incredible_config + .get_operator_id() + .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type + let registry_coordinator_addr = config .registry_coordinator_addr() - .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type; - let operator_statr_retriever_addr = incredible_config + .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type + let operator_statr_retriever_addr = config .operator_state_retriever_addr() .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type let operator_address = config - .operator_address - .parse() - .map_err(|_| OperatorError::RegistrationError)?; // TODO: change error type; - let mut client = ClientAggregator::new(incredible_config.aggregator_ip_addr()); + .operator_address() + .map_err(|_| OperatorError::RegistrationError)?; // TODO change error type + let mut client = ClientAggregator::new(config.aggregator_ip_addr()); let _ = client.dial_aggregator_rpc_client(); Ok(Self { - http_rpc_url: incredible_config.http_rpc_url(), - ws_rpc_url: incredible_config.ws_rpc_url(), + http_rpc_url: config.http_rpc_url(), + ws_rpc_url: config.ws_rpc_url(), operator_addr: operator_address, key_pair, operator_id, @@ -139,8 +134,7 @@ mod tests { .await .to_string(), ); - let op_cfg = incredible_config.get_operator_configs()[0].clone(); - let operator_builder = IncredibleSquareOperator::new(incredible_config, op_cfg) + let operator_builder = IncredibleSquareOperator::new(incredible_config) .await .unwrap(); @@ -205,8 +199,7 @@ mod tests { .await .to_string(), ); - let op_cfg = incredible_config.get_operator_configs()[0].clone(); - let _ = IncredibleSquareOperator::new(incredible_config, op_cfg) + let _ = IncredibleSquareOperator::new(incredible_config) .await .unwrap(); } @@ -226,8 +219,7 @@ mod tests { .await .to_string(), ); - let op_cfg = incredible_config.get_operator_configs()[0].clone(); - let operator_builder = IncredibleSquareOperator::new(incredible_config, op_cfg) + let operator_builder = IncredibleSquareOperator::new(incredible_config) .await .unwrap(); let signed_task_response = IncredibleSquareOperator::sign_task_response( From 73790dc490377a5161025c29c82ffa7f2f6be363 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Mon, 3 Feb 2025 13:57:56 -0300 Subject: [PATCH 21/24] fix: clone config and modify --- crates/avs/src/lib.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/crates/avs/src/lib.rs b/crates/avs/src/lib.rs index 3cf2a904..3f35a0da 100644 --- a/crates/avs/src/lib.rs +++ b/crates/avs/src/lib.rs @@ -18,8 +18,14 @@ pub async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { info!("launching crates: incredible-squaring-avs-rs"); incredible_metrics::new(); // start operator - let operator_builder = IncredibleSquareOperator::new(avs_config.clone()).await?; - let operator_builder2 = IncredibleSquareOperator::new(avs_config.clone()).await?; + let cfg1 = avs_config.clone(); + let operator_builder = IncredibleSquareOperator::new(cfg1).await?; + let mut cfg2 = avs_config.clone(); + cfg2.set_bls_keystore_path(avs_config.bls_keystore_2_path()); + cfg2.set_bls_keystore_password(avs_config.bls_keystore_2_password()); + cfg2.set_operator_address(avs_config.operator_2_address()?.to_string()); + cfg2.set_operator_id(avs_config.get_operator_2_id()?.to_string()); + let operator_builder2 = IncredibleSquareOperator::new(cfg2).await?; println!("@@@ operator_builder 1 key {:?}", operator_builder.key_pair); println!( From 4655676aac52d7ca2b295f6de8396a540597020d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Mon, 3 Feb 2025 14:07:25 -0300 Subject: [PATCH 22/24] refactor: remove prints --- crates/avs/src/lib.rs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/crates/avs/src/lib.rs b/crates/avs/src/lib.rs index 3f35a0da..4f0e104b 100644 --- a/crates/avs/src/lib.rs +++ b/crates/avs/src/lib.rs @@ -20,6 +20,7 @@ pub async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { // start operator let cfg1 = avs_config.clone(); let operator_builder = IncredibleSquareOperator::new(cfg1).await?; + let mut cfg2 = avs_config.clone(); cfg2.set_bls_keystore_path(avs_config.bls_keystore_2_path()); cfg2.set_bls_keystore_password(avs_config.bls_keystore_2_password()); @@ -27,12 +28,6 @@ pub async fn launch_avs(avs_config: IncredibleConfig) -> eyre::Result<()> { cfg2.set_operator_id(avs_config.get_operator_2_id()?.to_string()); let operator_builder2 = IncredibleSquareOperator::new(cfg2).await?; - println!("@@@ operator_builder 1 key {:?}", operator_builder.key_pair); - println!( - "@@@ operator_builder 2 key {:?}", - operator_builder2.key_pair - ); - let mut challenge = Challenger::build(avs_config.clone()).await?; let registry_coordinator = operator_builder.registry_coordinator; let operator_state_retriever = operator_builder.operator_state_retriever; From 41f68e64da57eb688fea83afba6b47726f9ce400 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Mon, 3 Feb 2025 17:20:08 -0300 Subject: [PATCH 23/24] revert: re-add fields to config --- crates/operator/operator_test_config.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/crates/operator/operator_test_config.toml b/crates/operator/operator_test_config.toml index 39df5fea..f4db9673 100644 --- a/crates/operator/operator_test_config.toml +++ b/crates/operator/operator_test_config.toml @@ -19,3 +19,8 @@ operator_address = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" operator_id = "0xb345f720903a3ecfd59f3de456dd9d266c2ce540b05e8c909106962684d9afa3" operator_2_address = "0x0b065a0423f076a340f37e16e1ce22e23d66caf2" operator_2_id = "0x17a0935b43b64cc3536d48621208fddb680ef8998561f0a1669a3ccda66676be" +operator_set_id = "1" +operator_1_token_amount = "5000000000000000000000" +operator_2_token_amount = "7000000000000000000000" +allocation_delay = "1" +slash_simulate = false From 905f9c8e9d5a7cd5b6d060f6a254a67e9df124b2 Mon Sep 17 00:00:00 2001 From: Pablo Deymonnaz Date: Tue, 18 Feb 2025 18:25:41 -0300 Subject: [PATCH 24/24] WIP: updating to sdk-ux-improvment branch of SDK --- Cargo.lock | 1221 ++++++++--------- .../src/commands/avs/mod.rs | 16 +- crates/aggregator/src/lib.rs | 16 +- crates/chainio/src/lib.rs | 2 +- crates/testing-utils/src/lib.rs | 2 +- 5 files changed, 619 insertions(+), 638 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 314b46d6..a7132168 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -45,7 +45,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if 1.0.0", - "getrandom", + "getrandom 0.2.15", "once_cell", "version_check", "zerocopy", @@ -77,6 +77,7 @@ dependencies = [ "alloy-core", "alloy-eips", "alloy-genesis", + "alloy-json-rpc", "alloy-network", "alloy-provider", "alloy-pubsub", @@ -94,13 +95,13 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.1.48" +version = "0.1.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0161082e0edd9013d23083465cc04b20e44b7a15646d36ba7b0cdb7cd6fe18f" +checksum = "1317fde6d2d3cd6082a15144c23230697a5e1a91a27d1facc146715d3b4b2046" dependencies = [ "alloy-primitives", "num_enum", - "strum", + "strum 0.27.1", ] [[package]] @@ -153,14 +154,14 @@ dependencies = [ "alloy-transport", "futures", "futures-util", - "thiserror 2.0.7", + "thiserror 2.0.11", ] [[package]] name = "alloy-core" -version = "0.8.15" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c618bd382f0bc2ac26a7e4bfae01c9b015ca8f21b37ca40059ae35a7e62b3dc6" +checksum = "482f377cebceed4bb1fb5e7970f0805e2ab123d06701be9351b67ed6341e74aa" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -171,9 +172,9 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "0.8.15" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41056bde53ae10ffbbf11618efbe1e0290859e5eab0fe9ef82ebdb62f12a866f" +checksum = "555896f0b8578adb522b1453b6e6cc6704c3027bd0af20058befdde992cee8e9" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -243,9 +244,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.8.15" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c357da577dfb56998d01f574d81ad7a1958d248740a7981b205d69d65a7da404" +checksum = "4012581681b186ba0882007ed873987cc37f86b1b488fe6b91d5efd0b585dc41" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -263,7 +264,7 @@ dependencies = [ "alloy-sol-types", "serde", "serde_json", - "thiserror 2.0.7", + "thiserror 2.0.11", "tracing", ] @@ -289,7 +290,7 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.7", + "thiserror 2.0.11", ] [[package]] @@ -307,9 +308,9 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.15" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6259a506ab13e1d658796c31e6e39d2e2ee89243bcc505ddc613b35732e0a430" +checksum = "478bedf4d24e71ea48428d1bc278553bd7c6ae07c30ca063beb0b09fe58a9e74" dependencies = [ "alloy-rlp", "bytes", @@ -318,8 +319,7 @@ dependencies = [ "derive_more", "foldhash", "hashbrown 0.15.2", - "hex-literal", - "indexmap 2.7.0", + "indexmap 2.7.1", "itoa", "k256", "keccak-asm", @@ -327,7 +327,7 @@ dependencies = [ "proptest", "rand", "ruint", - "rustc-hash 2.1.0", + "rustc-hash 2.1.1", "serde", "sha3", "tiny-keccak", @@ -362,11 +362,11 @@ dependencies = [ "lru", "parking_lot 0.12.3", "pin-project", - "reqwest 0.12.9", + "reqwest 0.12.12", "schnellru", "serde", "serde_json", - "thiserror 2.0.7", + "thiserror 2.0.11", "tokio", "tracing", "url", @@ -394,9 +394,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f542548a609dca89fcd72b3b9f355928cf844d4363c5eed9c5273a3dd225e097" +checksum = "3d6c1d995bff8d011f7cd6c81820d51825e6e06d6db73914c1630ecf544d83d6" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -405,13 +405,13 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a833d97bf8a5f0f878daf2c8451fff7de7f9de38baa5a45d936ec718d81255a" +checksum = "a40e1ef334153322fd878d07e86af7a529bcb86b2439525920a88eba87bcf943" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -429,7 +429,7 @@ dependencies = [ "alloy-transport-ws", "futures", "pin-project", - "reqwest 0.12.9", + "reqwest 0.12.12", "serde", "serde_json", "tokio", @@ -477,7 +477,7 @@ dependencies = [ "alloy-serde", "derive_more", "serde", - "strum", + "strum 0.26.3", ] [[package]] @@ -497,7 +497,7 @@ dependencies = [ "itertools 0.13.0", "serde", "serde_json", - "thiserror 2.0.7", + "thiserror 2.0.11", ] [[package]] @@ -522,7 +522,7 @@ dependencies = [ "auto_impl", "elliptic-curve", "k256", - "thiserror 2.0.7", + "thiserror 2.0.11", ] [[package]] @@ -539,7 +539,7 @@ dependencies = [ "aws-sdk-kms", "k256", "spki", - "thiserror 2.0.7", + "thiserror 2.0.11", "tracing", ] @@ -557,47 +557,47 @@ dependencies = [ "eth-keystore", "k256", "rand", - "thiserror 2.0.7", + "thiserror 2.0.11", ] [[package]] name = "alloy-sol-macro" -version = "0.8.15" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9d64f851d95619233f74b310f12bcf16e0cbc27ee3762b6115c14a84809280a" +checksum = "a2708e27f58d747423ae21d31b7a6625159bd8d867470ddd0256f396a68efa11" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] name = "alloy-sol-macro-expander" -version = "0.8.15" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bf7ed1574b699f48bf17caab4e6e54c6d12bc3c006ab33d58b1e227c1c3559f" +checksum = "c6b7984d7e085dec382d2c5ef022b533fcdb1fe6129200af30ebf5afddb6a361" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", "heck", - "indexmap 2.7.0", + "indexmap 2.7.1", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "0.8.15" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c02997ccef5f34f9c099277d4145f183b422938ed5322dc57a089fe9b9ad9ee" +checksum = "33d6a9fc4ed1a3c70bdb2357bec3924551c1a59f24e5a04a74472c755b37f87d" dependencies = [ "alloy-json-abi", "const-hex", @@ -606,15 +606,15 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.90", + "syn 2.0.98", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "0.8.15" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce13ff37285b0870d0a0746992a4ae48efaf34b766ae4c2640fa15e5305f8e73" +checksum = "1b1b3e9a48a6dd7bb052a111c8d93b5afc7956ed5e2cb4177793dc63bb1d2a36" dependencies = [ "serde", "winnow", @@ -622,9 +622,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.8.15" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1174cafd6c6d810711b4e00383037bdb458efc4fe3dbafafa16567e0320c54d8" +checksum = "6044800da35c38118fd4b98e18306bd3b91af5dedeb54c1b768cf1b4fb68f549" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -645,7 +645,7 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.7", + "thiserror 2.0.11", "tokio", "tower", "tracing", @@ -661,7 +661,7 @@ checksum = "6e1509599021330a31c4a6816b655e34bf67acb1cc03c564e09fd8754ff6c5de" dependencies = [ "alloy-json-rpc", "alloy-transport", - "reqwest 0.12.9", + "reqwest 0.12.12", "serde_json", "tower", "tracing", @@ -697,7 +697,7 @@ dependencies = [ "alloy-transport", "futures", "http 1.2.0", - "rustls 0.23.20", + "rustls 0.23.23", "serde_json", "tokio", "tokio-tungstenite 0.24.0", @@ -707,9 +707,9 @@ dependencies = [ [[package]] name = "alloy-trie" -version = "0.7.6" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a5fd8fea044cc9a8c8a50bb6f28e31f0385d820f116c5b98f6f4e55d6e5590b" +checksum = "d95a94854e420f07e962f7807485856cde359ab99ab6413883e15235ad996e8b" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -777,11 +777,12 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", + "once_cell", "windows-sys 0.59.0", ] @@ -931,7 +932,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -969,7 +970,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -1083,7 +1084,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -1136,9 +1137,9 @@ dependencies = [ [[package]] name = "async-broadcast" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" dependencies = [ "event-listener", "event-listener-strategy", @@ -1177,18 +1178,18 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -1210,13 +1211,13 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "auto_impl" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +checksum = "e12882f59de5360c748c4cbf569a042d5fb0eb515f7bea9c1f470b47f6ffbd73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -1239,9 +1240,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.11.1" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f47bb8cc16b669d267eeccf585aea077d0882f4777b1c1f740217885d6e6e5a3" +checksum = "4c2b7ddaa2c56a367ad27a094ad8ef4faacf8a617c2575acb2ba88949df999ca" dependencies = [ "aws-lc-sys", "paste", @@ -1250,24 +1251,23 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.23.1" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2101df3813227bbaaaa0b04cd61c534c7954b22bd68d399b440be937dc63ff7" +checksum = "54ac4f13dad353b209b34cbec082338202cbc01c8f00336b55c750c13ac91f8f" dependencies = [ "bindgen", "cc", "cmake", "dunce", "fs_extra", - "libc", "paste", ] [[package]] name = "aws-runtime" -version = "1.4.4" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5ac934720fbb46206292d2c75b57e67acfc56fe7dfd34fb9a02334af08409ea" +checksum = "76dd04d39cc12844c0994f2c9c5a6f5184c22e9188ec1ff723de41910a21dcad" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -1285,14 +1285,14 @@ dependencies = [ "percent-encoding", "pin-project-lite", "tracing", - "uuid 1.11.0", + "uuid 1.13.2", ] [[package]] name = "aws-sdk-kms" -version = "1.51.0" +version = "1.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c30f6fd5646b99d9b45ec3a0c22e67112c175b2383100c960d7ee39d96c8d96" +checksum = "adc36035f7393a24719069c9a2f52e20972f7ee8472bd788e863968736acc449" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1312,9 +1312,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.2.6" +version = "1.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d3820e0c08d0737872ff3c7c1f21ebbb6693d832312d6152bf18ef50a5471c2" +checksum = "9bfe75fad52793ce6dec0dc3d4b1f388f038b5eb866c8d4d7f3a8e21b5ea5051" dependencies = [ "aws-credential-types", "aws-smithy-http", @@ -1335,9 +1335,9 @@ dependencies = [ [[package]] name = "aws-smithy-async" -version = "1.2.2" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8aa8ff1492fd9fb99ae28e8467af0dbbb7c31512b16fabf1a0f10d7bb6ef78bb" +checksum = "fa59d1327d8b5053c54bf2eaae63bf629ba9e904434d0835a28ed3c0ed0a614e" dependencies = [ "futures-util", "pin-project-lite", @@ -1346,9 +1346,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.60.11" +version = "0.60.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8bc3e8fdc6b8d07d976e301c02fe553f72a39b7a9fea820e023268467d7ab6" +checksum = "7809c27ad8da6a6a68c454e651d4962479e81472aa19ae99e59f9aba1f9713cc" dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", @@ -1366,18 +1366,18 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.61.1" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4e69cc50921eb913c6b662f8d909131bb3e6ad6cb6090d3a39b66fc5c52095" +checksum = "623a51127f24c30776c8b374295f2df78d92517386f77ba30773f15a30ce1422" dependencies = [ "aws-smithy-types", ] [[package]] name = "aws-smithy-runtime" -version = "1.7.5" +version = "1.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "431a10d0e07e09091284ef04453dae4069283aa108d209974d67e77ae1caa658" +checksum = "d526a12d9ed61fadefda24abe2e682892ba288c2018bcb38b1b4c111d13f6d92" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -1415,9 +1415,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.2.10" +version = "1.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecbf4d5dfb169812e2b240a4350f15ad3c6b03a54074e5712818801615f2dc5" +checksum = "c7b8a53819e42f10d0821f56da995e1470b199686a1809168db6ca485665f042" dependencies = [ "base64-simd", "bytes", @@ -1438,9 +1438,9 @@ dependencies = [ [[package]] name = "aws-types" -version = "1.3.3" +version = "1.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5221b91b3e441e6675310829fd8984801b772cb1546ef6c0e54dec9f1ac13fef" +checksum = "dfbd0a668309ec1f66c0f6bda4840dd6d4796ae26d699ebc266d7cc95c6d040f" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -1523,7 +1523,7 @@ version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cexpr", "clang-sys", "itertools 0.12.1", @@ -1536,7 +1536,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.90", + "syn 2.0.98", "which", ] @@ -1546,7 +1546,16 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" dependencies = [ - "bit-vec", + "bit-vec 0.6.3", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec 0.8.0", ] [[package]] @@ -1555,6 +1564,12 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + [[package]] name = "bitflags" version = "1.3.2" @@ -1563,9 +1578,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" [[package]] name = "bitvec" @@ -1590,9 +1605,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" +checksum = "47c79a94619fade3c0b887670333513a67ac28a6a7e653eb260bf0d4103db38d" dependencies = [ "cc", "glob", @@ -1602,9 +1617,9 @@ dependencies = [ [[package]] name = "bollard" -version = "0.17.1" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d41711ad46fda47cd701f6908e59d1bd6b9a2b7464c0d0aeab95c6d37096ff8a" +checksum = "97ccca1260af6a459d75994ad5acc1651bcabcbdbc41467cc9786519ab854c30" dependencies = [ "base64 0.22.1", "bollard-stubs", @@ -1615,15 +1630,15 @@ dependencies = [ "home", "http 1.2.0", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-named-pipe", - "hyper-rustls 0.27.3", + "hyper-rustls 0.27.5", "hyper-util", "hyperlocal", "log", "pin-project-lite", - "rustls 0.23.20", - "rustls-native-certs 0.7.3", + "rustls 0.23.23", + "rustls-native-certs", "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", @@ -1631,7 +1646,7 @@ dependencies = [ "serde_json", "serde_repr", "serde_urlencoded", - "thiserror 1.0.69", + "thiserror 2.0.11", "tokio", "tokio-util 0.7.13", "tower-service", @@ -1641,9 +1656,9 @@ dependencies = [ [[package]] name = "bollard-stubs" -version = "1.45.0-rc.26.0.1" +version = "1.47.1-rc.27.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7c5415e3a6bc6d3e99eff6268e488fd4ee25e7b28c10f08fa6760bd9de16e4" +checksum = "3f179cfbddb6e77a5472703d4b30436bff32929c0aa8a9008ecf23d1d3cdd0da" dependencies = [ "serde", "serde_repr", @@ -1662,9 +1677,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.11.1" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8" +checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" dependencies = [ "memchr", "serde", @@ -1672,9 +1687,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byte-slice-cast" @@ -1690,9 +1705,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" dependencies = [ "serde", ] @@ -1719,9 +1734,9 @@ dependencies = [ [[package]] name = "bzip2-sys" -version = "0.1.11+1.0.8" +version = "0.1.12+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +checksum = "72ebc2f1a417f01e1da30ef264ee86ae31d2dcd2d603ea283d3c244a883ca2a9" dependencies = [ "cc", "libc", @@ -1769,7 +1784,7 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "thiserror 1.0.69", @@ -1777,9 +1792,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.4" +version = "1.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9157bbaa6b165880c27a4293a474c91cdcf265cc68cc829bf10be0964a391caf" +checksum = "0c3d1b2e905a3a7b00a6141adb0e4c0bb941d11caf55349d863942a1cc44e3c9" dependencies = [ "jobserver", "libc", @@ -1849,9 +1864,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.23" +version = "4.5.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" +checksum = "92b7b18d71fad5313a1e320fa9897994228ce274b60faa4d694fe0ea89cd9e6d" dependencies = [ "clap_builder", "clap_derive", @@ -1859,9 +1874,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.23" +version = "4.5.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" +checksum = "a35db2071778a7344791a4fb4f95308b5673d219dee3ae348b86642574ecc90c" dependencies = [ "anstream", "anstyle", @@ -1871,14 +1886,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -1889,9 +1904,9 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "cmake" -version = "0.1.52" +version = "0.1.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c682c223677e0e5b6b7f63a64b9351844c3f1b1678a68b7ee617e30fb082620e" +checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" dependencies = [ "cc", ] @@ -1994,6 +2009,26 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -2026,11 +2061,22 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "core_affinity" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622892f5635ce1fc38c8f16dfc938553ed64af482edb5e150bf4caedbfcb2304" +dependencies = [ + "libc", + "num_cpus", + "winapi", +] + [[package]] name = "cpufeatures" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -2071,9 +2117,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-bigint" @@ -2104,7 +2150,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" dependencies = [ "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -2147,7 +2193,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -2158,7 +2204,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -2177,9 +2223,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010" [[package]] name = "der" @@ -2229,7 +2275,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", "unicode-xid", ] @@ -2313,7 +2359,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -2362,13 +2408,13 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] name = "eigen-aggregator" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ "alloy", "eigen-client-avsregistry", @@ -2392,13 +2438,10 @@ dependencies = [ [[package]] name = "eigen-client-avsregistry" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ "alloy", - "alloy-primitives", - "alloy-signer", - "alloy-signer-local", "ark-ff 0.5.0", "async-trait", "eigen-client-elcontracts", @@ -2414,11 +2457,10 @@ dependencies = [ [[package]] name = "eigen-client-elcontracts" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ "alloy", - "alloy-primitives", "eigen-common", "eigen-crypto-bls", "eigen-logging", @@ -2430,13 +2472,10 @@ dependencies = [ [[package]] name = "eigen-client-eth" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ "alloy", - "alloy-json-rpc", - "alloy-primitives", - "alloy-rlp", "async-trait", "eigen-logging", "eigen-metrics-collectors-rpc-calls", @@ -2447,21 +2486,17 @@ dependencies = [ [[package]] name = "eigen-common" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ - "alloy-provider", - "alloy-pubsub", - "alloy-signer-local", - "alloy-transport", - "alloy-transport-http", + "alloy", "url", ] [[package]] name = "eigen-config" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ "hex", "ruint", @@ -2471,10 +2506,10 @@ dependencies = [ [[package]] name = "eigen-crypto-bls" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ - "alloy-primitives", + "alloy", "ark-bn254 0.5.0", "ark-ec 0.5.0", "ark-ff 0.5.0", @@ -2488,8 +2523,8 @@ dependencies = [ [[package]] name = "eigen-crypto-bn254" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ "ark-bn254 0.5.0", "ark-ec 0.5.0", @@ -2499,8 +2534,8 @@ dependencies = [ [[package]] name = "eigen-logging" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ "ctor", "once_cell", @@ -2510,8 +2545,8 @@ dependencies = [ [[package]] name = "eigen-metrics" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ "eigen-logging", "metrics", @@ -2521,8 +2556,8 @@ dependencies = [ [[package]] name = "eigen-metrics-collectors-rpc-calls" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ "eigen-logging", "metrics", @@ -2530,8 +2565,8 @@ dependencies = [ [[package]] name = "eigen-nodeapi" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ "ntex", "serde", @@ -2542,11 +2577,10 @@ dependencies = [ [[package]] name = "eigen-operator" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ "alloy", - "alloy-provider", "eigen-aggregator", "eigen-client-avsregistry", "eigen-config", @@ -2558,7 +2592,7 @@ dependencies = [ "futures-util", "hex", "rand_core", - "reqwest 0.12.9", + "reqwest 0.12.12", "rust-bls-bn254 0.2.1", "serde", "serde_json", @@ -2570,10 +2604,10 @@ dependencies = [ [[package]] name = "eigen-services-avsregistry" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ - "alloy-primitives", + "alloy", "ark-bn254 0.5.0", "ark-ec 0.5.0", "async-trait", @@ -2586,11 +2620,10 @@ dependencies = [ [[package]] name = "eigen-services-blsaggregation" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ "alloy", - "alloy-primitives", "ark-bn254 0.5.0", "ark-ec 0.5.0", "eigen-client-avsregistry", @@ -2609,11 +2642,10 @@ dependencies = [ [[package]] name = "eigen-services-operatorsinfo" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ "alloy", - "alloy-primitives", "async-trait", "eigen-client-avsregistry", "eigen-common", @@ -2631,14 +2663,10 @@ dependencies = [ [[package]] name = "eigen-testing-utils" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ "alloy", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-types", - "alloy-transport", "eigen-common", "eigen-utils", "serde", @@ -2649,10 +2677,10 @@ dependencies = [ [[package]] name = "eigen-types" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ - "alloy-primitives", + "alloy", "eigen-crypto-bls", "ethers", "num-bigint", @@ -2662,11 +2690,11 @@ dependencies = [ [[package]] name = "eigen-utils" -version = "0.1.2" -source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#76216cf1d1acc716d1a0b3f354626f7bb458afd3" +version = "0.3.0" +source = "git+https://github.com/Layr-Labs/eigensdk-rs?branch=sdk-ux-improvment#deecc715f7750d5fa37639ee1e79031d77aa3b60" dependencies = [ "alloy", - "reqwest 0.12.9", + "reqwest 0.12.12", ] [[package]] @@ -2753,14 +2781,14 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" @@ -2919,7 +2947,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "syn 2.0.90", + "syn 2.0.98", "toml", "walkdir", ] @@ -2937,7 +2965,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -2962,8 +2990,8 @@ dependencies = [ "rlp", "serde", "serde_json", - "strum", - "syn 2.0.90", + "strum 0.26.3", + "syn 2.0.98", "tempfile", "thiserror 1.0.69", "tiny-keccak", @@ -2979,7 +3007,7 @@ dependencies = [ "chrono", "ethers-core", "reqwest 0.11.27", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "thiserror 1.0.69", @@ -3088,7 +3116,7 @@ dependencies = [ "path-slash", "rayon", "regex", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "solang-parser", @@ -3103,9 +3131,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "5.3.1" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" dependencies = [ "concurrent-queue", "parking", @@ -3218,9 +3246,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" [[package]] name = "foreign-types" @@ -3334,7 +3362,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -3410,10 +3438,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if 1.0.0", - "js-sys", "libc", - "wasi", - "wasm-bindgen", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", ] [[package]] @@ -3424,9 +3462,9 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "globset" @@ -3476,7 +3514,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.7.0", + "indexmap 2.7.1", "slab", "tokio", "tokio-util 0.7.13", @@ -3485,9 +3523,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" dependencies = [ "atomic-waker", "bytes", @@ -3495,7 +3533,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.2.0", - "indexmap 2.7.0", + "indexmap 2.7.1", "slab", "tokio", "tokio-util 0.7.13", @@ -3571,12 +3609,6 @@ dependencies = [ "serde", ] -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - [[package]] name = "hkdf" version = "0.12.4" @@ -3662,9 +3694,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" [[package]] name = "httpdate" @@ -3698,14 +3730,14 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.7", + "h2 0.4.8", "http 1.2.0", "http-body 1.0.1", "httparse", @@ -3724,7 +3756,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278" dependencies = [ "hex", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", "pin-project-lite", "tokio", @@ -3748,21 +3780,20 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", "http 1.2.0", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", - "rustls 0.23.20", - "rustls-native-certs 0.8.1", + "rustls 0.23.23", + "rustls-native-certs", "rustls-pki-types", "tokio", "tokio-rustls 0.26.1", "tower-service", - "webpki-roots 0.26.7", ] [[package]] @@ -3773,7 +3804,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", "native-tls", "tokio", @@ -3792,7 +3823,7 @@ dependencies = [ "futures-util", "http 1.2.0", "http-body 1.0.1", - "hyper 1.5.2", + "hyper 1.6.0", "pin-project-lite", "socket2", "tokio", @@ -3808,7 +3839,7 @@ checksum = "986c5ce3b994526b3cd75578e62554abd09f0899d6206de48b3e96ab34ccc8c7" dependencies = [ "hex", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", "pin-project-lite", "tokio", @@ -3953,7 +3984,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -4018,7 +4049,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -4047,9 +4078,9 @@ dependencies = [ "incredible-testing-utils", "jsonrpc-core", "jsonrpc-http-server", - "reqwest 0.12.9", + "reqwest 0.12.12", "serde", - "thiserror 2.0.7", + "thiserror 2.0.11", "tokio", "tokio-util 0.7.13", "toml", @@ -4076,7 +4107,7 @@ dependencies = [ "metrics", "ntex", "serde", - "thiserror 2.0.7", + "thiserror 2.0.11", "tokio", "tracing", ] @@ -4103,8 +4134,8 @@ dependencies = [ "futures-util", "incredible-bindings", "incredible-config", - "reqwest 0.12.9", - "thiserror 2.0.7", + "reqwest 0.12.12", + "thiserror 2.0.11", "tokio", "tracing", ] @@ -4123,7 +4154,7 @@ dependencies = [ "incredible-config", "incredible-task-generator", "incredible-testing-utils", - "thiserror 2.0.7", + "thiserror 2.0.11", "tokio", "toml", "tracing", @@ -4150,7 +4181,7 @@ dependencies = [ "ruint", "serde", "tempfile", - "thiserror 2.0.7", + "thiserror 2.0.11", "tokio", "toml", "tracing", @@ -4168,8 +4199,8 @@ dependencies = [ "incredible-config", "metrics", "metrics-util", - "reqwest 0.12.9", - "thiserror 2.0.7", + "reqwest 0.12.12", + "thiserror 2.0.11", "tokio", ] @@ -4198,12 +4229,12 @@ dependencies = [ "incredible-config", "incredible-testing-utils", "rand_core", - "reqwest 0.12.9", + "reqwest 0.12.12", "rust-bls-bn254 0.1.0", "serde", "serde_json", "tempfile", - "thiserror 2.0.7", + "thiserror 2.0.11", "tokio", "toml", "tracing", @@ -4257,8 +4288,8 @@ dependencies = [ "incredible-bindings", "incredible-config", "lazy_static", - "reqwest 0.12.9", - "thiserror 2.0.7", + "reqwest 0.12.12", + "thiserror 2.0.11", "tokio", "tracing", ] @@ -4293,9 +4324,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "equivalent", "hashbrown 0.15.2", @@ -4337,9 +4368,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "is_terminal_polyfill" @@ -4400,9 +4431,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ "once_cell", "wasm-bindgen", @@ -4511,7 +4542,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" dependencies = [ "ascii-canvas", - "bit-set", + "bit-set 0.5.3", "ena", "itertools 0.11.0", "lalrpop-util", @@ -4548,9 +4579,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.168" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libloading" @@ -4574,16 +4605,16 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "libc", "redox_syscall 0.5.8", ] [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "litemap" @@ -4603,9 +4634,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" [[package]] name = "lru" @@ -4644,16 +4675,16 @@ dependencies = [ [[package]] name = "metrics-exporter-prometheus" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12779523996a67c13c84906a876ac6fe4d07a6e1adb54978378e13f199251a62" +checksum = "dd7399781913e5393588a8d8c6a2867bf85fb38eaf2502fdce465aad2dc6f034" dependencies = [ "base64 0.22.1", "http-body-util", - "hyper 1.5.2", - "hyper-rustls 0.27.3", + "hyper 1.6.0", + "hyper-rustls 0.27.5", "hyper-util", - "indexmap 2.7.0", + "indexmap 2.7.1", "ipnet", "metrics", "metrics-util", @@ -4673,7 +4704,7 @@ dependencies = [ "crossbeam-epoch", "crossbeam-utils", "hashbrown 0.15.2", - "indexmap 2.7.0", + "indexmap 2.7.1", "metrics", "ordered-float", "quanta", @@ -4697,9 +4728,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "b3b1c9bd4fe1f0f8b387f6eb9eb3b4a1aa26185e5750efb9140301703f62cd1b" dependencies = [ "adler2", ] @@ -4711,7 +4742,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] @@ -4723,9 +4754,9 @@ checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "0dab59f8e050d5df8e4dd87d9206fb6f65a483e20ac9fda365ade4fab353196c" dependencies = [ "libc", "log", @@ -4770,7 +4801,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if 1.0.0", "cfg_aliases", "libc", @@ -4788,12 +4819,12 @@ dependencies = [ [[package]] name = "ntex" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1988f5a24be40f4cd06c5a1d66ff71da4dcf161f19a61013e6f967642c3c5bc" +checksum = "5f9733b93874b834484947eafbbb8136544b20ea8473a46be40e197cb148284b" dependencies = [ "base64 0.22.1", - "bitflags 2.6.0", + "bitflags 2.8.0", "bytes", "encoding_rs", "httparse", @@ -4830,7 +4861,7 @@ version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ffd6ac357a3fd885753ddeb4130ec92474e79d013362532eba4778854466981" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "bytes", "futures-core", "serde", @@ -4847,11 +4878,11 @@ dependencies = [ [[package]] name = "ntex-h2" -version = "1.5.0" +version = "1.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b235208bb51db69da394f3c77361bed9b62dc50b424842952ff636b1b36f800" +checksum = "8f17e4eec506679d78f67b32c42ee4e35d0dcd97451251a4d891184185187520" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "fxhash", "log", "nanorand", @@ -4860,7 +4891,6 @@ dependencies = [ "ntex-http", "ntex-io", "ntex-net", - "ntex-rt", "ntex-service", "ntex-util", "pin-project-lite", @@ -4884,15 +4914,14 @@ dependencies = [ [[package]] name = "ntex-io" -version = "2.9.2" +version = "2.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "857063bbe358ab1d9b49ce3fdcdaf39394aea018818d0bdae3add00ad6dc27c1" +checksum = "3d53ae6ec303f77f56ab6bba7fc32a05932174d088ec24502a1e4942284b32e2" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "log", "ntex-bytes", "ntex-codec", - "ntex-rt", "ntex-service", "ntex-util", "pin-project-lite", @@ -4941,9 +4970,9 @@ dependencies = [ [[package]] name = "ntex-rt" -version = "0.4.23" +version = "0.4.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81c034a141eb612cd22f8699592a049ab528c812272b071484c13fbf6b6a4f3" +checksum = "c6ff00071886fd8f78f335f7bc8d369822c7ea8b0504fa796f8bbd4a33bde29f" dependencies = [ "async-channel", "futures-core", @@ -4954,12 +4983,13 @@ dependencies = [ [[package]] name = "ntex-server" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36cc0ec66ac03f7a76637a1264a57e3234bd95c478fc282ace88c3bde908dc5f" +checksum = "ebf31f5c770cb0244a8125aba1c5dfaca38f145807a42ba33df30c35bb0c33f7" dependencies = [ "async-broadcast", "async-channel", + "core_affinity", "ctrlc", "log", "ntex-bytes", @@ -4984,9 +5014,9 @@ dependencies = [ [[package]] name = "ntex-tls" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b6df536ec6f8f2499f5e3a2e2893cfc1b775408ee0c917d0570821025dc22e3" +checksum = "09365414dfba07030f914123f24631ae04caeed8ead42e219a5d7b54d3f52518" dependencies = [ "log", "ntex-bytes", @@ -5012,11 +5042,11 @@ dependencies = [ [[package]] name = "ntex-util" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73a7a68f2b6508ac7da46cc5b78cd9c997580473b3673a308c0f1e27c643a402" +checksum = "043bbb0b520d813f90c52edc3c8cf225621f4c959ad931e5d8420136f57f63d2" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "futures-core", "futures-sink", "futures-timer", @@ -5102,14 +5132,14 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] name = "nybbles" -version = "0.2.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95f06be0417d97f81fe4e5c86d7d01b392655a9cac9c19a848aa033e18937b23" +checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" dependencies = [ "alloy-rlp", "const-hex", @@ -5120,24 +5150,24 @@ dependencies = [ [[package]] name = "object" -version = "0.36.5" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.20.2" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "oneshot" -version = "0.1.8" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e296cf87e61c9cfc1a61c3c63a0f7f286ed4554e0e22be84e8a38e1d264a2a29" +checksum = "79d72a7c0f743d2ebb0a2ad1d219db75fdc799092ed3a884c9144c42a31225bd" [[package]] name = "open-fastrlp" @@ -5166,11 +5196,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.68" +version = "0.10.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if 1.0.0", "foreign-types", "libc", @@ -5187,20 +5217,20 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.104" +version = "0.9.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" dependencies = [ "cc", "libc", @@ -5216,18 +5246,18 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "ordered-float" -version = "4.5.0" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c65ee1f9701bf938026630b455d5315f490640234259037edb259798b3bcf85e" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" dependencies = [ "num-traits", ] [[package]] name = "outref" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a" +checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" [[package]] name = "overload" @@ -5237,28 +5267,30 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "parity-scale-codec" -version = "3.6.12" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "c9fde3d0718baf5bc92f577d652001da0f8d54cd03a7974e118d04fc888dc23d" dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", + "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "581c837bb6b9541ce7faa9377c20616e4fb7650f6b0f68bc93c827ee504fb7b3" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.98", ] [[package]] @@ -5337,7 +5369,7 @@ dependencies = [ "regex", "regex-syntax", "structmeta", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -5418,7 +5450,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ "memchr", - "thiserror 2.0.7", + "thiserror 2.0.11", "ucd-trie", ] @@ -5429,7 +5461,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.7.0", + "indexmap 2.7.1", ] [[package]] @@ -5444,80 +5476,71 @@ dependencies = [ [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_macros", - "phf_shared 0.11.2", + "phf_shared", ] [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "phf_shared 0.11.2", + "phf_shared", "rand", ] [[package]] name = "phf_macros" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ "phf_generator", - "phf_shared 0.11.2", + "phf_shared", "proc-macro2", "quote", - "syn 2.0.90", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", + "syn 2.0.98", ] [[package]] name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ "siphasher", ] [[package]] name = "pin-project" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -5585,12 +5608,12 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "prettyplease" -version = "0.2.25" +version = "0.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" dependencies = [ "proc-macro2", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -5635,27 +5658,27 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ - "bit-set", - "bit-vec", - "bitflags 2.6.0", + "bit-set 0.8.0", + "bit-vec 0.8.0", + "bitflags 2.8.0", "lazy_static", "num-traits", "rand", @@ -5669,15 +5692,15 @@ dependencies = [ [[package]] name = "quanta" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773ce68d0bb9bc7ef20be3536ffe94e223e1f365bd374108b2659fac0c65cfe6" +checksum = "3bd1fe6824cea6538803de3ff1bc0cf3949024db3d43c9643024bfb33a807c0e" dependencies = [ "crossbeam-utils", "libc", "once_cell", "raw-cpuid", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "web-sys", "winapi", ] @@ -5688,63 +5711,11 @@ version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" -[[package]] -name = "quinn" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" -dependencies = [ - "bytes", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash 2.1.0", - "rustls 0.23.20", - "socket2", - "thiserror 2.0.7", - "tokio", - "tracing", -] - -[[package]] -name = "quinn-proto" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" -dependencies = [ - "bytes", - "getrandom", - "rand", - "ring 0.17.8", - "rustc-hash 2.1.0", - "rustls 0.23.20", - "rustls-pki-types", - "slab", - "thiserror 2.0.7", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-udp" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" -dependencies = [ - "cfg_aliases", - "libc", - "once_cell", - "socket2", - "tracing", - "windows-sys 0.59.0", -] - [[package]] name = "quote" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -5793,7 +5764,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] [[package]] @@ -5816,11 +5787,11 @@ dependencies = [ [[package]] name = "raw-cpuid" -version = "11.2.0" +version = "11.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ab240315c661615f2ee9f0f2cd32d5a7343a84d5ebcccb99d46e6637565e7b0" +checksum = "529468c1335c1c03919960dfefdb1b3648858c20d7ec2d0663e728e4a717efbc" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", ] [[package]] @@ -5873,7 +5844,7 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", ] [[package]] @@ -5882,7 +5853,7 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.15", "libredox", "thiserror 1.0.69", ] @@ -5965,21 +5936,21 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.9" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ "base64 0.22.1", "bytes", "encoding_rs", "futures-core", "futures-util", - "h2 0.4.7", + "h2 0.4.8", "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.2", - "hyper-rustls 0.27.3", + "hyper 1.6.0", + "hyper-rustls 0.27.5", "hyper-tls", "hyper-util", "ipnet", @@ -5990,10 +5961,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "quinn", - "rustls 0.23.20", "rustls-pemfile 2.2.0", - "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", @@ -6001,13 +5969,12 @@ dependencies = [ "system-configuration 0.6.1", "tokio", "tokio-native-tls", - "tokio-rustls 0.26.1", + "tower", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.26.7", "windows-registry", ] @@ -6030,7 +5997,7 @@ dependencies = [ "cc", "libc", "once_cell", - "spin 0.5.2", + "spin", "untrusted 0.7.1", "web-sys", "winapi", @@ -6038,15 +6005,14 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "e75ec5e92c4d8aede845126adc388046234541629e76029599ed35a003c7ed24" dependencies = [ "cc", "cfg-if 1.0.0", - "getrandom", + "getrandom 0.2.15", "libc", - "spin 0.9.8", "untrusted 0.9.0", "windows-sys 0.52.0", ] @@ -6084,9 +6050,9 @@ dependencies = [ [[package]] name = "ruint" -version = "1.12.4" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5ef8fb1dd8de3870cb8400d51b4c2023854bbafd5431a3ac7e7317243e22d2f" +checksum = "825df406ec217a8116bd7b06897c6cc8f65ffefc15d030ae2c9540acc9ed50b6" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", @@ -6183,9 +6149,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc-hex" @@ -6208,16 +6174,16 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.24", + "semver 1.0.25", ] [[package]] name = "rustix" -version = "0.38.42" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "errno", "libc", "linux-raw-sys", @@ -6231,39 +6197,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.17.8", + "ring 0.17.9", "rustls-webpki 0.101.7", "sct", ] [[package]] name = "rustls" -version = "0.23.20" +version = "0.23.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" +checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" dependencies = [ "aws-lc-rs", "once_cell", - "ring 0.17.8", + "ring 0.17.9", "rustls-pki-types", "rustls-webpki 0.102.8", "subtle", "zeroize", ] -[[package]] -name = "rustls-native-certs" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" -dependencies = [ - "openssl-probe", - "rustls-pemfile 2.2.0", - "rustls-pki-types", - "schannel", - "security-framework 2.11.1", -] - [[package]] name = "rustls-native-certs" version = "0.8.1" @@ -6273,7 +6226,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.0.1", + "security-framework 3.2.0", ] [[package]] @@ -6296,12 +6249,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" -dependencies = [ - "web-time", -] +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" [[package]] name = "rustls-webpki" @@ -6309,7 +6259,7 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.8", + "ring 0.17.9", "untrusted 0.9.0", ] @@ -6320,16 +6270,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "aws-lc-rs", - "ring 0.17.8", + "ring 0.17.9", "rustls-pki-types", "untrusted 0.9.0", ] [[package]] name = "rustversion" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] name = "rusty-fork" @@ -6345,9 +6295,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" [[package]] name = "salsa20" @@ -6388,7 +6338,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -6402,9 +6352,9 @@ dependencies = [ [[package]] name = "schnellru" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" +checksum = "356285bbf17bea63d9e52e96bd18f039672ac92b55b8cb997d6162a2a37d1649" dependencies = [ "ahash", "cfg-if 1.0.0", @@ -6447,7 +6397,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.8", + "ring 0.17.9", "untrusted 0.9.0", ] @@ -6471,7 +6421,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -6480,11 +6430,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.0.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1415a607e92bec364ea2cf9264646dcce0f91e6d65281bd6f2819cca3bf39c8" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "core-foundation 0.10.0", "core-foundation-sys", "libc", @@ -6493,9 +6443,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -6512,9 +6462,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" +checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" dependencies = [ "serde", ] @@ -6542,29 +6492,29 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] name = "serde_json" -version = "1.0.133" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" dependencies = [ "itoa", "memchr", @@ -6580,7 +6530,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -6606,15 +6556,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.11.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.7.0", + "indexmap 2.7.1", "serde", "serde_derive", "serde_json", @@ -6624,14 +6574,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.11.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -6733,21 +6683,21 @@ dependencies = [ [[package]] name = "simple_asn1" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror 1.0.69", + "thiserror 2.0.11", "time", ] [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "sketches-ddsketch" @@ -6766,9 +6716,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" dependencies = [ "serde", ] @@ -6803,12 +6753,6 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - [[package]] name = "spki" version = "0.7.3" @@ -6833,14 +6777,13 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "string_cache" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +checksum = "938d512196766101d333398efde81bc1f37b00cb42c2f8350e5df639f040bbbe" dependencies = [ "new_debug_unreachable", - "once_cell", "parking_lot 0.12.3", - "phf_shared 0.10.0", + "phf_shared", "precomputed-hash", ] @@ -6859,7 +6802,7 @@ dependencies = [ "proc-macro2", "quote", "structmeta-derive", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -6870,7 +6813,7 @@ checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -6879,7 +6822,16 @@ version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "strum_macros", + "strum_macros 0.26.4", +] + +[[package]] +name = "strum" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" +dependencies = [ + "strum_macros 0.27.1", ] [[package]] @@ -6892,7 +6844,20 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.90", + "syn 2.0.98", +] + +[[package]] +name = "strum_macros" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.98", ] [[package]] @@ -6912,7 +6877,7 @@ dependencies = [ "hex", "once_cell", "reqwest 0.11.27", - "semver 1.0.24", + "semver 1.0.25", "serde", "serde_json", "sha2", @@ -6934,9 +6899,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.90" +version = "2.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" dependencies = [ "proc-macro2", "quote", @@ -6945,14 +6910,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.15" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219389c1ebe89f8333df8bdfb871f6631c552ff399c23cac02480b6088aad8f0" +checksum = "9c2de690018098e367beeb793991c7d4dc7270f42c9d2ac4ccc876c1368ca430" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -6978,7 +6943,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -6998,7 +6963,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "core-foundation 0.9.4", "system-configuration-sys 0.6.0", ] @@ -7031,12 +6996,13 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.14.0" +version = "3.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" dependencies = [ "cfg-if 1.0.0", "fastrand", + "getrandom 0.3.1", "once_cell", "rustix", "windows-sys 0.59.0", @@ -7055,9 +7021,9 @@ dependencies = [ [[package]] name = "testcontainers" -version = "0.23.1" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f40cc2bd72e17f328faf8ca7687fe337e61bccd8acf9674fa78dd3792b045e1" +checksum = "042009c52a4204476bff461ca8ef17bab6f1a91628504a8a36c6fd2c1cde2d5e" dependencies = [ "async-trait", "bollard", @@ -7074,7 +7040,7 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 1.0.69", + "thiserror 2.0.11", "tokio", "tokio-stream", "tokio-tar", @@ -7093,11 +7059,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.7" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93605438cbd668185516ab499d589afb7ee1859ea3d5fc8f6b0755e1c7443767" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" dependencies = [ - "thiserror-impl 2.0.7", + "thiserror-impl 2.0.11", ] [[package]] @@ -7108,18 +7074,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] name = "thiserror-impl" -version = "2.0.7" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d8749b4531af2117677a5fcd12b1348a3fe2b81e36e61ffeac5c4aa3273e36" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -7193,9 +7159,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" dependencies = [ "tinyvec_macros", ] @@ -7208,9 +7174,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.42.0" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" dependencies = [ "backtrace", "bytes", @@ -7226,13 +7192,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -7261,7 +7227,7 @@ version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ - "rustls 0.23.20", + "rustls 0.23.23", "tokio", ] @@ -7315,12 +7281,12 @@ checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" dependencies = [ "futures-util", "log", - "rustls 0.23.20", + "rustls 0.23.23", "rustls-pki-types", "tokio", "tokio-rustls 0.26.1", "tungstenite 0.24.0", - "webpki-roots 0.26.7", + "webpki-roots 0.26.8", ] [[package]] @@ -7352,9 +7318,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ "serde", "serde_spanned", @@ -7373,11 +7339,11 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ - "indexmap 2.7.0", + "indexmap 2.7.1", "serde", "serde_spanned", "toml_datetime", @@ -7394,6 +7360,7 @@ dependencies = [ "futures-util", "pin-project-lite", "sync_wrapper 1.0.2", + "tokio", "tower-layer", "tower-service", ] @@ -7429,7 +7396,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -7538,7 +7505,7 @@ dependencies = [ "httparse", "log", "rand", - "rustls 0.23.20", + "rustls 0.23.23", "rustls-pki-types", "sha1", "thiserror 1.0.69", @@ -7547,9 +7514,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "ucd-trie" @@ -7577,15 +7544,15 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicase" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" [[package]] name = "unicode-normalization" @@ -7656,21 +7623,21 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom", + "getrandom 0.2.15", "serde", ] [[package]] name = "uuid" -version = "1.11.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +checksum = "8c1f41ffb7cf259f1ecc2876861a17e7142e63ead296f671f81f6ae85903e0d6" [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -7692,9 +7659,9 @@ checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" [[package]] name = "wait-timeout" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" dependencies = [ "libc", ] @@ -7724,36 +7691,46 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if 1.0.0", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.49" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -7764,9 +7741,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7774,22 +7751,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasmtimer" @@ -7807,19 +7787,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -7833,9 +7803,9 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.7" +version = "0.26.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" dependencies = [ "rustls-pki-types", ] @@ -8078,9 +8048,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "59690dea168f2198d1a3b0cac23b8063efcd11012f10ae4698f284808c8ef603" dependencies = [ "memchr", ] @@ -8095,6 +8065,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.8.0", +] + [[package]] name = "write16" version = "1.0.0" @@ -8137,9 +8116,9 @@ dependencies = [ [[package]] name = "xattr" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +checksum = "e105d177a3871454f754b33bb0ee637ecaaac997446375fd3e5d43a2ed00c909" dependencies = [ "libc", "linux-raw-sys", @@ -8172,7 +8151,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", "synstructure", ] @@ -8194,7 +8173,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -8214,7 +8193,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", "synstructure", ] @@ -8235,7 +8214,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] @@ -8257,7 +8236,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.98", ] [[package]] diff --git a/bin/incredible-squaring-avs/src/commands/avs/mod.rs b/bin/incredible-squaring-avs/src/commands/avs/mod.rs index 46f71fdf..3432d57c 100644 --- a/bin/incredible-squaring-avs/src/commands/avs/mod.rs +++ b/bin/incredible-squaring-avs/src/commands/avs/mod.rs @@ -17,11 +17,11 @@ use eigen_testing_utils::anvil_constants::{ get_strategy_manager_address, ANVIL_HTTP_URL, }; use eigen_types::operator::Operator; -use eigen_utils::core::allocationmanager::AllocationManager::{self, OperatorSet}; -use eigen_utils::core::allocationmanager::IAllocationManagerTypes::AllocateParams; -use eigen_utils::middleware::registrycoordinator::{ +use eigen_utils::rewardsv2::middleware::registrycoordinator::{ IRegistryCoordinator, IStakeRegistry, RegistryCoordinator, }; +use eigen_utils::slashing::core::allocationmanager::AllocationManager::{self, OperatorSet}; +use eigen_utils::slashing::core::allocationmanager::IAllocationManagerTypes::AllocateParams; use incredible_config::IncredibleConfig; use incredible_testing_utils::{ get_incredible_squaring_operator_state_retriever, get_incredible_squaring_registry_coordinator, @@ -700,20 +700,20 @@ pub async fn register_operator_with_el_and_deposit_tokens_in_strategy( let s = signer.to_field_bytes(); let el_chain_reader = ELChainReader::new( get_logger(), - allocation_manager, + Some(allocation_manager), delegation_manager_address, rewards_coordinator, avs_directory_address, - permission_controller_address, + Some(permission_controller_address), rpc_url.clone(), ); let el_chain_writer = ELChainWriter::new( delegation_manager_address, strategy_manager_address, - rewards_coordinator, - permission_controller_address, + Some(rewards_coordinator), + Some(permission_controller_address), allocation_manager, - registry_coordinator_address, + Some(registry_coordinator_address), el_chain_reader.clone(), rpc_url.clone(), hex::encode(s).to_string(), diff --git a/crates/aggregator/src/lib.rs b/crates/aggregator/src/lib.rs index d4b74537..f652ce6d 100644 --- a/crates/aggregator/src/lib.rs +++ b/crates/aggregator/src/lib.rs @@ -8,9 +8,10 @@ use alloy::{ }; use eigen_aggregator::{ rpc_server::SignedTaskResponse as SignedTaskResponseImpl, - traits::{box_error, TaskMetadata, TaskProcessor, TaskProcessorError, TaskResponse}, + traits::{box_error, TaskProcessor, TaskProcessorError, TaskResponse}, }; use eigen_crypto_bls::{convert_to_g1_point, convert_to_g2_point}; +use eigen_services_blsaggregation::bls_agg::TaskMetadata; use eigen_services_blsaggregation::bls_aggregation_service_response::BlsAggregationServiceResponse; use eigen_types::avs::TaskIndex; use incredible_bindings::incrediblesquaringtaskmanager::{ @@ -93,7 +94,7 @@ impl TaskProcessor for ISTaskProcessor { } = event; self.tasks.lock().await.insert(task_index, task.clone()); - let mut quorum_nums: Vec = vec![]; + let mut quorum_numbers: Vec = vec![]; let mut quorum_threshold_percentages = Vec::with_capacity(task.quorumNumbers.len()); for _ in &task.quorumNumbers { quorum_threshold_percentages.push( @@ -104,19 +105,20 @@ impl TaskProcessor for ISTaskProcessor { } for val in task.quorumNumbers.iter() { - quorum_nums.push(*val); + quorum_numbers.push(*val); } let time_to_expiry = tokio::time::Duration::from_secs( (TASK_CHALLENGE_WINDOW_BLOCK * BLOCK_TIME_SECONDS).into(), ); - Ok(TaskMetadata { + + Ok(TaskMetadata::new( task_index, - task_created_block: task.taskCreatedBlock, - quorum_nums, + u64::from(task.taskCreatedBlock), + quorum_numbers, quorum_threshold_percentages, time_to_expiry, - }) + )) } async fn process_task_response( diff --git a/crates/chainio/src/lib.rs b/crates/chainio/src/lib.rs index e35b3c34..dbf3d758 100644 --- a/crates/chainio/src/lib.rs +++ b/crates/chainio/src/lib.rs @@ -11,7 +11,7 @@ use alloy::{ }; use eigen_common::{get_provider, get_signer}; use eigen_types::operator::{QuorumNum, QuorumThresholdPercentage}; -use eigen_utils::middleware::registrycoordinator::RegistryCoordinator::{ +use eigen_utils::slashing::middleware::registrycoordinator::RegistryCoordinator::{ self, serviceManagerReturn, }; use error::ChainIoError; diff --git a/crates/testing-utils/src/lib.rs b/crates/testing-utils/src/lib.rs index f68988c8..57a0e9b3 100644 --- a/crates/testing-utils/src/lib.rs +++ b/crates/testing-utils/src/lib.rs @@ -2,7 +2,7 @@ use alloy::primitives::{address, Address}; use eigen_common::get_provider; use eigen_testing_utils::anvil_constants::ANVIL_HTTP_URL; -use eigen_utils::sdk::contractsregistry::ContractsRegistry::{self, contractsReturn}; +use eigen_utils::rewardsv2::sdk::contractsregistry::ContractsRegistry::{self, contractsReturn}; /// Local anvil ContractsRegistry which contains a mapping of all locally deployed EL contracts. pub const CONTRACTS_REGISTRY: Address = address!("5FbDB2315678afecb367f032d93F642f64180aa3");