eigen_testing_utils/
anvil_constants.rs

1//! Anvil utilities
2use alloy::primitives::{address, Address};
3use eigen_common::get_provider;
4use eigen_utils::rewardsv2::sdk::contracts_registry::ContractsRegistry;
5
6// Addresses and private keys of accounts generated by anvil
7
8/// Address of the first default account generated by anvil
9pub const FIRST_ADDRESS: Address = address!("f39Fd6e51aad88F6F4ce6aB8827279cffFb92266");
10/// Private key of the first default account generated by anvil
11pub const FIRST_PRIVATE_KEY: &str =
12    "ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80";
13
14/// Address of the second default account generated by anvil
15pub const SECOND_ADDRESS: Address = address!("70997970C51812dc3A010C7d01b50e0d17dc79C8");
16/// Private key of the second default account generated by anvil
17pub const SECOND_PRIVATE_KEY: &str =
18    "59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d";
19
20/// Address of the third default account generated by anvil
21pub const THIRD_ADDRESS: Address = address!("3C44CdDdB6a900fa2b585dd299e03d12FA4293BC");
22
23/// Private key of the third default account generated by anvil
24pub const THIRD_PRIVATE_KEY: &str =
25    "5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a";
26
27/// Address of the fifth default account generated by anvil
28pub const FIFTH_ADDRESS: Address = address!("9965507D1a55bcC2695C58ba16FB37d819B0A4dc");
29/// Private key of the fifth default account generated by anvil
30pub const FIFTH_PRIVATE_KEY: &str =
31    "8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba";
32
33/// Local anvil ContractsRegistry which contains a mapping of all locally deployed EL contracts.
34pub const CONTRACTS_REGISTRY: Address = address!("5FbDB2315678afecb367f032d93F642f64180aa3");
35
36/// Bls private key
37pub const OPERATOR_BLS_KEY: &str =
38    "1371012690269088913462269866874713266643928125698382731338806296762673180359922";
39
40/// Bls private key 2
41pub const OPERATOR_BLS_KEY_2: &str =
42    "15610126902690889134622698668747132666439281256983827313388062967626731803501";
43
44/// Local anvil rpc http url
45pub const ANVIL_HTTP_URL: &str = "http://localhost:8545";
46
47/// Local anvil rpc WS url
48pub const ANVIL_WS_URL: &str = "ws://localhost:8545";
49
50/// Service Manager contract address
51pub async fn get_service_manager_address(rpc_url: String) -> Address {
52    let provider = get_provider(&rpc_url);
53    let contracts_registry = ContractsRegistry::new(CONTRACTS_REGISTRY, provider);
54
55    contracts_registry
56        .contracts("mockAvsServiceManager".to_string())
57        .call()
58        .await
59        .unwrap()
60}
61
62/// Registry Coordinator contract address
63pub async fn get_registry_coordinator_address(rpc_url: String) -> Address {
64    let contracts_registry = ContractsRegistry::new(CONTRACTS_REGISTRY, get_provider(&rpc_url));
65
66    contracts_registry
67        .contracts("mockAvsRegistryCoordinator".to_string())
68        .call()
69        .await
70        .unwrap()
71}
72
73/// Operator state retriever contract address
74pub async fn get_operator_state_retriever_address(rpc_url: String) -> Address {
75    let contracts_registry = ContractsRegistry::new(CONTRACTS_REGISTRY, get_provider(&rpc_url));
76
77    contracts_registry
78        .contracts("mockAvsOperatorStateRetriever".to_string())
79        .call()
80        .await
81        .unwrap()
82}
83
84/// Delegation Manager contract address
85pub async fn get_delegation_manager_address(rpc_url: String) -> Address {
86    let contracts_registry = ContractsRegistry::new(CONTRACTS_REGISTRY, get_provider(&rpc_url));
87
88    contracts_registry
89        .contracts("delegationManager".to_string())
90        .call()
91        .await
92        .unwrap()
93}
94
95/// Strategy Mananger contract address
96pub async fn get_strategy_manager_address(rpc_url: String) -> Address {
97    let contracts_registry = ContractsRegistry::new(CONTRACTS_REGISTRY, get_provider(&rpc_url));
98
99    contracts_registry
100        .contracts("strategyManager".to_string())
101        .call()
102        .await
103        .unwrap()
104}
105
106/// Avs Directory contract address
107pub async fn get_avs_directory_address(rpc_url: String) -> Address {
108    let contracts_registry = ContractsRegistry::new(CONTRACTS_REGISTRY, get_provider(&rpc_url));
109
110    contracts_registry
111        .contracts("avsDirectory".to_string())
112        .call()
113        .await
114        .unwrap()
115}
116
117/// erc20 mock strategy contract address
118pub async fn get_erc20_mock_strategy(rpc_url: String) -> Address {
119    let contracts_registry = ContractsRegistry::new(CONTRACTS_REGISTRY, get_provider(&rpc_url));
120
121    contracts_registry
122        .contracts("erc20MockStrategy".to_string())
123        .call()
124        .await
125        .unwrap()
126}
127
128/// proxy admin contract address
129pub async fn get_proxy_admin(rpc_url: String) -> Address {
130    let contracts_registry = ContractsRegistry::new(CONTRACTS_REGISTRY, get_provider(&rpc_url));
131
132    contracts_registry
133        .contracts("ProxyAdmin".to_string())
134        .call()
135        .await
136        .unwrap()
137}
138
139/// Rewards contract address
140pub async fn get_rewards_coordinator_address(rpc_url: String) -> Address {
141    let contracts_registry = ContractsRegistry::new(CONTRACTS_REGISTRY, get_provider(&rpc_url));
142
143    contracts_registry
144        .contracts("rewardsCoordinator".to_string())
145        .call()
146        .await
147        .unwrap()
148}
149
150/// Allocation Manager contract address
151pub async fn get_allocation_manager_address(rpc_url: String) -> Address {
152    let contracts_registry = ContractsRegistry::new(CONTRACTS_REGISTRY, get_provider(&rpc_url));
153
154    contracts_registry
155        .contracts("allocationManager".to_string())
156        .call()
157        .await
158        .unwrap()
159}
160
161/// Permission Controller contract address
162pub async fn get_permission_controller_address(rpc_url: String) -> Address {
163    let contracts_registry = ContractsRegistry::new(CONTRACTS_REGISTRY, get_provider(&rpc_url));
164
165    contracts_registry
166        .contracts("permissionController".to_string())
167        .call()
168        .await
169        .unwrap()
170}
171
172/// Bls Apk Registry contract address
173pub async fn get_bls_apk_registry_address(rpc_url: String) -> Address {
174    let contracts_registry = ContractsRegistry::new(CONTRACTS_REGISTRY, get_provider(&rpc_url));
175
176    contracts_registry
177        .contracts("blsApkRegistry".to_string())
178        .call()
179        .await
180        .unwrap()
181}
182
183/// Socket registry contract address
184pub async fn get_socket_registry_address(rpc_url: String) -> Address {
185    let contracts_registry = ContractsRegistry::new(CONTRACTS_REGISTRY, get_provider(&rpc_url));
186
187    contracts_registry
188        .contracts("socketRegistry".to_string())
189        .call()
190        .await
191        .unwrap()
192}