diff --git a/.gitignore b/.gitignore index cee48f6a6..4b5c99187 100644 --- a/.gitignore +++ b/.gitignore @@ -20,4 +20,5 @@ typescript/**/tsconfig.tsbuildinfo **/**/tsconfig.tsbuildinfo .yarn/install-state.gz -.yarn/cache \ No newline at end of file +.yarn/cache +yarn-error.log diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 195f12e7f..b046dbe2a 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -1320,7 +1320,7 @@ dependencies = [ [[package]] name = "ethers" version = "0.6.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#fab30887a2373d260d41689e71242ce0ac979c80" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#81e7fea14b4f9bc4c531856f8cb7cd31a5248918" dependencies = [ "ethers-addressbook", "ethers-contract", @@ -1335,7 +1335,7 @@ dependencies = [ [[package]] name = "ethers-addressbook" version = "0.1.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#fab30887a2373d260d41689e71242ce0ac979c80" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#81e7fea14b4f9bc4c531856f8cb7cd31a5248918" dependencies = [ "ethers-core", "once_cell", @@ -1346,7 +1346,7 @@ dependencies = [ [[package]] name = "ethers-contract" version = "0.6.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#fab30887a2373d260d41689e71242ce0ac979c80" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#81e7fea14b4f9bc4c531856f8cb7cd31a5248918" dependencies = [ "ethers-contract-abigen", "ethers-contract-derive", @@ -1364,7 +1364,7 @@ dependencies = [ [[package]] name = "ethers-contract-abigen" version = "0.6.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#fab30887a2373d260d41689e71242ce0ac979c80" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#81e7fea14b4f9bc4c531856f8cb7cd31a5248918" dependencies = [ "Inflector", "cfg-if 1.0.0", @@ -1373,7 +1373,6 @@ dependencies = [ "eyre", "getrandom 0.2.3", "hex", - "once_cell", "proc-macro2", "quote", "reqwest", @@ -1387,7 +1386,7 @@ dependencies = [ [[package]] name = "ethers-contract-derive" version = "0.6.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#fab30887a2373d260d41689e71242ce0ac979c80" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#81e7fea14b4f9bc4c531856f8cb7cd31a5248918" dependencies = [ "ethers-contract-abigen", "ethers-core", @@ -1401,13 +1400,12 @@ dependencies = [ [[package]] name = "ethers-core" version = "0.6.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#fab30887a2373d260d41689e71242ce0ac979c80" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#81e7fea14b4f9bc4c531856f8cb7cd31a5248918" dependencies = [ "arrayvec 0.7.2", "bytes", "cargo_metadata", "convert_case", - "ecdsa", "elliptic-curve", "ethabi", "generic-array 0.14.5", @@ -1415,7 +1413,6 @@ dependencies = [ "k256", "once_cell", "proc-macro2", - "quote", "rand 0.8.5", "rlp", "rlp-derive", @@ -1429,7 +1426,7 @@ dependencies = [ [[package]] name = "ethers-etherscan" version = "0.2.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#fab30887a2373d260d41689e71242ce0ac979c80" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#81e7fea14b4f9bc4c531856f8cb7cd31a5248918" dependencies = [ "ethers-core", "ethers-solc", @@ -1438,12 +1435,13 @@ dependencies = [ "serde-aux", "serde_json", "thiserror", + "tracing", ] [[package]] name = "ethers-middleware" version = "0.6.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#fab30887a2373d260d41689e71242ce0ac979c80" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#81e7fea14b4f9bc4c531856f8cb7cd31a5248918" dependencies = [ "async-trait", "ethers-contract", @@ -1466,7 +1464,7 @@ dependencies = [ [[package]] name = "ethers-providers" version = "0.6.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#fab30887a2373d260d41689e71242ce0ac979c80" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#81e7fea14b4f9bc4c531856f8cb7cd31a5248918" dependencies = [ "async-trait", "auto_impl", @@ -1476,8 +1474,10 @@ dependencies = [ "futures-core", "futures-timer", "futures-util", + "hashers", "hex", "http", + "once_cell", "parking_lot", "pin-project", "reqwest", @@ -1499,7 +1499,7 @@ dependencies = [ [[package]] name = "ethers-signers" version = "0.6.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#fab30887a2373d260d41689e71242ce0ac979c80" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#81e7fea14b4f9bc4c531856f8cb7cd31a5248918" dependencies = [ "async-trait", "coins-bip32", @@ -1507,25 +1507,20 @@ dependencies = [ "elliptic-curve", "eth-keystore", "ethers-core", - "futures-executor", - "futures-util", "hex", - "home", "rand 0.8.5", "rusoto_core", "rusoto_kms", - "semver", "sha2 0.9.8", "spki", "thiserror", "tracing", - "tracing-futures", ] [[package]] name = "ethers-solc" version = "0.3.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#fab30887a2373d260d41689e71242ce0ac979c80" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#81e7fea14b4f9bc4c531856f8cb7cd31a5248918" dependencies = [ "colored", "dunce", @@ -1537,12 +1532,12 @@ dependencies = [ "md-5 0.10.1", "num_cpus", "once_cell", + "path-slash", "rayon", "regex", "semver", "serde 1.0.130", "serde_json", - "sha2 0.9.8", "solang-parser", "thiserror", "tiny-keccak", @@ -1752,6 +1747,15 @@ dependencies = [ "slab", ] +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + [[package]] name = "generic-array" version = "0.12.4" @@ -1846,6 +1850,15 @@ dependencies = [ "ahash", ] +[[package]] +name = "hashers" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" +dependencies = [ + "fxhash", +] + [[package]] name = "headers" version = "0.3.5" @@ -1931,7 +1944,7 @@ checksum = "1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186b" dependencies = [ "bytes", "fnv", - "itoa", + "itoa 0.4.8", ] [[package]] @@ -1987,7 +2000,7 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa", + "itoa 0.4.8", "pin-project-lite", "socket2", "tokio", @@ -2135,6 +2148,12 @@ version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" +[[package]] +name = "itoa" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" + [[package]] name = "jobserver" version = "0.1.24" @@ -2155,9 +2174,9 @@ dependencies = [ [[package]] name = "k256" -version = "0.10.2" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cc5937366afd3b38071f400d1ce5bd8b1d40b5083cc14e6f8dbcc4032a7f5bb" +checksum = "19c3a5e0a0b8450278feda242592512e09f61c72e018b8cd5c859482802daf2d" dependencies = [ "cfg-if 1.0.0", "ecdsa", @@ -2986,6 +3005,12 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58" +[[package]] +name = "path-slash" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cacbb3c4ff353b534a67fb8d7524d00229da4cb1dc8c79f4db96e375ab5b619" + [[package]] name = "pbkdf2" version = "0.8.0" @@ -3244,9 +3269,9 @@ checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" [[package]] name = "proc-macro2" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1" dependencies = [ "unicode-xid", ] @@ -3413,9 +3438,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" +checksum = "fd249e82c21598a9a426a4e00dd7adc1d640b22445ec8545feef801d1a74c221" dependencies = [ "autocfg", "crossbeam-deque 0.8.1", @@ -3425,14 +3450,13 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" +checksum = "9f51245e1e62e1f1629cbfec37b5793bbabcaeb90f30e94d2ba03564687353e4" dependencies = [ "crossbeam-channel 0.5.1", "crossbeam-deque 0.8.1", "crossbeam-utils 0.8.5", - "lazy_static", "num_cpus", ] @@ -3457,9 +3481,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.5.4" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" +checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" dependencies = [ "aho-corasick", "memchr", @@ -3517,9 +3541,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.9" +version = "0.11.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f242f1488a539a79bac6dbe7c8609ae43b7914b7736210f239a37cccb32525" +checksum = "46a1f7aa4f35e5e8b4160449f51afc758f0ce6454315a9fa7d0d113e958c41eb" dependencies = [ "base64 0.13.0", "bytes", @@ -3763,9 +3787,9 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9" +checksum = "1ee86d63972a7c661d1536fefe8c3c8407321c3df668891286de28abcd087360" dependencies = [ "base64 0.13.0", ] @@ -3889,9 +3913,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a3381e03edd24287172047536f20cabde766e2cd3e65e6b00fb3af51c4f38d" +checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4" dependencies = [ "serde 1.0.130", ] @@ -3957,7 +3981,7 @@ version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f690853975602e1bfe1ccbf50504d67174e3bcf340f23b5ea9992e0587a52d8" dependencies = [ - "itoa", + "itoa 0.4.8", "ryu", "serde 1.0.130", ] @@ -3973,12 +3997,12 @@ dependencies = [ [[package]] name = "serde_urlencoded" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa", + "itoa 1.0.1", "ryu", "serde 1.0.130", ] @@ -4135,9 +4159,9 @@ dependencies = [ [[package]] name = "solang-parser" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06b8bfb6c910adbada563211b876b91a058791505e4cb646591b205fa817d01" +checksum = "e6b2ad9c159bd02219a59368133301e6195fdaa2b5d55c628ccdcd611d49235f" dependencies = [ "lalrpop", "lalrpop-util", @@ -4227,9 +4251,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.86" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" +checksum = "7ff7c592601f11445996a06f8ad0c27f094a58857c2f89e97974ab9235b92c52" dependencies = [ "proc-macro2", "quote", @@ -4510,9 +4534,9 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" [[package]] name = "tracing" -version = "0.1.31" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6c650a8ef0cd2dd93736f033d21cbd1224c5a967aa0c258d00fcf7dafef9b9f" +checksum = "5d0ecdcb44a79f0fe9844f0c4f33a342cbcbb5117de8001e6ba0dc2351327d09" dependencies = [ "cfg-if 1.0.0", "log", @@ -5055,9 +5079,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winreg" -version = "0.7.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" dependencies = [ "winapi", ] diff --git a/rust/agents/kathy/src/kathy.rs b/rust/agents/kathy/src/kathy.rs index 6cc0802d6..16504c226 100644 --- a/rust/agents/kathy/src/kathy.rs +++ b/rust/agents/kathy/src/kathy.rs @@ -80,6 +80,11 @@ impl Kathy { let guard = outbox_lock.lock().await; outbox.dispatch(&message).await?; + + let count = outbox.count().await?; + if count > 1 { + outbox.create_checkpoint().await?; + } drop(guard); } _ => { diff --git a/rust/agents/relayer/src/checkpoint_relayer.rs b/rust/agents/relayer/src/checkpoint_relayer.rs index 5f489bfee..34ed13aa1 100644 --- a/rust/agents/relayer/src/checkpoint_relayer.rs +++ b/rust/agents/relayer/src/checkpoint_relayer.rs @@ -119,10 +119,20 @@ impl CheckpointRelayer { ); self.prover_sync.update_from_batch(&batch)?; - self.inbox_contracts + match self + .inbox_contracts .validator_manager .submit_checkpoint(&latest_signed_checkpoint) - .await?; + .await + { + Ok(_) => (), + Err(err) => { + error!(checkpoint=?latest_signed_checkpoint, err=?err, "Checkpoint could not be submitted on-chain"); + // Ignore errors as to not fail the process and just retry after some sleep + sleep(Duration::from_secs(self.submission_latency)).await; + return Ok(onchain_checkpoint_index); + } + } self.inbox_checkpoint_gauge .set(latest_signed_checkpoint.checkpoint.index as i64); @@ -163,64 +173,71 @@ impl CheckpointRelayer { } } - pub(crate) fn spawn(mut self) -> Instrumented>> { - let span = info_span!("CheckpointRelayer"); - tokio::spawn(async move { - let latest_inbox_checkpoint = - self.inbox_contracts.inbox.latest_checkpoint(None).await?; - let mut onchain_checkpoint_index = latest_inbox_checkpoint.index; - self.inbox_checkpoint_gauge - .set(onchain_checkpoint_index as i64); - let mut next_inbox_leaf_index = if onchain_checkpoint_index == 0 { - 0 - } else { - onchain_checkpoint_index + 1 - }; - loop { - sleep(Duration::from_secs(self.polling_interval)).await; - - if let Some(signed_checkpoint_index) = - self.multisig_checkpoint_syncer.latest_index().await? + #[instrument(ret, err, skip(self), fields(inbox_name=self.inbox_contracts.inbox.name()), level = "info")] + async fn main_loop(mut self) -> Result<()> { + let latest_inbox_checkpoint = self.inbox_contracts.inbox.latest_checkpoint(None).await?; + let mut onchain_checkpoint_index = latest_inbox_checkpoint.index; + self.inbox_checkpoint_gauge + .set(onchain_checkpoint_index as i64); + let mut next_inbox_leaf_index = if onchain_checkpoint_index == 0 { + 0 + } else { + onchain_checkpoint_index + 1 + }; + + info!( + onchain_checkpoint_index = onchain_checkpoint_index, + "Starting CheckpointRelayer" + ); + + loop { + sleep(Duration::from_secs(self.polling_interval)).await; + + if let Some(signed_checkpoint_index) = + self.multisig_checkpoint_syncer.latest_index().await? + { + self.signed_checkpoint_gauge + .set(signed_checkpoint_index as i64); + if signed_checkpoint_index <= onchain_checkpoint_index { + debug!( + onchain = onchain_checkpoint_index, + signed = signed_checkpoint_index, + "Signed checkpoint matches known checkpoint on-chain, continue" + ); + continue; + } + + match self + .get_messages_between(next_inbox_leaf_index, signed_checkpoint_index) + .await? { - self.signed_checkpoint_gauge - .set(signed_checkpoint_index as i64); - if signed_checkpoint_index <= onchain_checkpoint_index { + None => debug!("Couldn't fetch the relevant messages, retry this range"), + Some(messages) if messages.is_empty() => { + next_inbox_leaf_index = signed_checkpoint_index + 1; + debug!("New checkpoint does not include messages for inbox") + } + Some(messages) => { + next_inbox_leaf_index = signed_checkpoint_index + 1; debug!( - onchain = onchain_checkpoint_index, - signed = signed_checkpoint_index, - "Signed checkpoint matches known checkpoint on-chain, continue" + len = messages.len(), + "Signed checkpoint allows for processing of new messages" ); - continue; - } - match self - .get_messages_between(next_inbox_leaf_index, signed_checkpoint_index) - .await? - { - None => debug!("Couldn't fetch the relevant messages, retry this range"), - Some(messages) if messages.is_empty() => { - next_inbox_leaf_index = signed_checkpoint_index + 1; - debug!("New checkpoint does not include messages for inbox") - } - Some(messages) => { - next_inbox_leaf_index = signed_checkpoint_index + 1; - debug!( - len = messages.len(), - "Signed checkpoint allows for processing of new messages" - ); - - onchain_checkpoint_index = self - .submit_checkpoint_and_messages( - onchain_checkpoint_index, - signed_checkpoint_index, - messages, - ) - .await?; - } + onchain_checkpoint_index = self + .submit_checkpoint_and_messages( + onchain_checkpoint_index, + signed_checkpoint_index, + messages, + ) + .await?; } } } - }) - .instrument(span) + } + } + + pub(crate) fn spawn(self) -> Instrumented>> { + let span = info_span!("CheckpointRelayer"); + tokio::spawn(async move { self.main_loop().await }).instrument(span) } } diff --git a/rust/agents/relayer/src/message_processor.rs b/rust/agents/relayer/src/message_processor.rs index 00f46111c..2c2c3080b 100644 --- a/rust/agents/relayer/src/message_processor.rs +++ b/rust/agents/relayer/src/message_processor.rs @@ -76,7 +76,7 @@ impl MessageProcessor { } } - #[instrument(ret, err, skip(self), level = "debug")] + #[instrument(ret, err, skip(self), fields(inbox_name=self.inbox.name()), level = "debug")] async fn try_processing_message( &mut self, message_leaf_index: u32, @@ -151,74 +151,90 @@ impl MessageProcessor { } } - pub(crate) fn spawn(mut self) -> Instrumented>> { - let span = info_span!("MessageProcessor"); - + #[instrument(ret, err, skip(self), fields(inbox_name=self.inbox.name()), level = "info")] + async fn main_loop(mut self) -> Result<()> { let mut message_leaf_index = 0; - tokio::spawn(async move { - loop { - self.processor_loop_gauge.set(message_leaf_index as i64); - self.retry_queue_length_gauge.set(self.retry_queue.len() as i64); - if self.db.retrieve_leaf_processing_status(message_leaf_index)?.is_some() { - message_leaf_index += 1; - continue - } - // Sleep to not fire too many view calls in a short duration - sleep(Duration::from_millis(20)).await; + loop { + self.processor_loop_gauge.set(message_leaf_index as i64); + self.retry_queue_length_gauge + .set(self.retry_queue.len() as i64); + if self + .db + .retrieve_leaf_processing_status(message_leaf_index)? + .is_some() + { + message_leaf_index += 1; + continue; + } + // Sleep to not fire too many view calls in a short duration + sleep(Duration::from_millis(20)).await; - match self.db.leaf_by_leaf_index(message_leaf_index)? { - Some(_) => { - // We have unseen messages to process - info!( - destination = self.inbox.local_domain(), - leaf_index=message_leaf_index, - "Process fresh leaf" - ); - match self.try_processing_message(message_leaf_index).await? { - MessageProcessingStatus::Processed => { - self.processed_gauge.set(message_leaf_index as i64); - message_leaf_index += 1 - }, - MessageProcessingStatus::NotYetCheckpointed => { - // If we don't have an up to date checkpoint, sleep and try again - sleep(Duration::from_secs(self.polling_interval)).await; - } - MessageProcessingStatus::NotDestinedForInbox => message_leaf_index += 1, - MessageProcessingStatus::Error => { - warn!(destination = self.inbox.local_domain(), leaf_index=message_leaf_index, "Message could not be processed, queue for retry"); - self.retry_queue - .push(MessageToRetry { - leaf_index: message_leaf_index, - time_to_retry: Reverse(Instant::now()), - retries: 0, - }); - message_leaf_index += 1; - } + match self.db.leaf_by_leaf_index(message_leaf_index)? { + Some(_) => { + // We have unseen messages to process + info!( + destination = self.inbox.local_domain(), + leaf_index = message_leaf_index, + "Process fresh leaf" + ); + match self.try_processing_message(message_leaf_index).await? { + MessageProcessingStatus::Processed => { + self.processed_gauge.set(message_leaf_index as i64); + message_leaf_index += 1 + } + MessageProcessingStatus::NotYetCheckpointed => { + // If we don't have an up to date checkpoint, sleep and try again + sleep(Duration::from_secs(self.polling_interval)).await; + } + MessageProcessingStatus::NotDestinedForInbox => message_leaf_index += 1, + MessageProcessingStatus::Error => { + warn!( + destination = self.inbox.local_domain(), + leaf_index = message_leaf_index, + "Message could not be processed, queue for retry" + ); + self.retry_queue.push(MessageToRetry { + leaf_index: message_leaf_index, + time_to_retry: Reverse(Instant::now()), + retries: 0, + }); + message_leaf_index += 1; } } - None => { - // See if we have messages to retry - if let Some(MessageToRetry{ time_to_retry, .. }) = self.retry_queue.peek() { - // Since we use Reverse, we want time_to_retry to be smaller - if time_to_retry < &Reverse(Instant::now()) { - continue - } + } + None => { + // See if we have messages to retry + if let Some(MessageToRetry { time_to_retry, .. }) = self.retry_queue.peek() { + // Since we use Reverse, we want time_to_retry to be smaller + if time_to_retry < &Reverse(Instant::now()) { + continue; } - match self.retry_queue.pop() { - Some(MessageToRetry { leaf_index, retries, .. }) => { - info!( - destination = self.inbox.local_domain(), - leaf_index = leaf_index, - retries = retries, - retry_queue_length = self.retry_queue.len(), - "Retry processing of message" - ); - match self.try_processing_message(leaf_index).await? { - MessageProcessingStatus::NotDestinedForInbox | MessageProcessingStatus::NotYetCheckpointed => { - error!(leaf_index = leaf_index, "Somehow we tried to retry a message that cant be retried"); - bail!("Somehow we tried to retry a message that cant be retried") + } + match self.retry_queue.pop() { + Some(MessageToRetry { + leaf_index, + retries, + .. + }) => { + info!( + destination = self.inbox.local_domain(), + leaf_index = leaf_index, + retries = retries, + retry_queue_length = self.retry_queue.len(), + "Retry processing of message" + ); + match self.try_processing_message(leaf_index).await? { + MessageProcessingStatus::NotDestinedForInbox + | MessageProcessingStatus::NotYetCheckpointed => { + error!( + leaf_index = leaf_index, + "Somehow we tried to retry a message that cant be retried" + ); + bail!( + "Somehow we tried to retry a message that cant be retried" + ) } - MessageProcessingStatus::Processed => {}, + MessageProcessingStatus::Processed => {} MessageProcessingStatus::Error => { warn!( destination = self.inbox.local_domain(), @@ -229,32 +245,39 @@ impl MessageProcessor { ); if retries >= self.max_retries { error!( - destination = self.inbox.local_domain(), - leaf_index = leaf_index, - retries = retries, - retry_queue_length = self.retry_queue.len(), - "Maximum number of retries exceeded for processing message" - ); - continue + destination = self.inbox.local_domain(), + leaf_index = leaf_index, + retries = retries, + retry_queue_length = self.retry_queue.len(), + "Maximum number of retries exceeded for processing message" + ); + continue; } let retries = retries + 1; - let time_to_retry = Reverse(Instant::now() + Duration::from_secs(2u64.pow(retries as u32))); - self.retry_queue - .push(MessageToRetry{ leaf_index, time_to_retry, retries}); - }, - } - }, - None => { - // Nothing to do, just sleep - sleep(Duration::from_secs(1)).await; + let time_to_retry = Reverse( + Instant::now() + + Duration::from_secs(2u64.pow(retries as u32)), + ); + self.retry_queue.push(MessageToRetry { + leaf_index, + time_to_retry, + retries, + }); + } } } + None => { + // Nothing to do, just sleep + sleep(Duration::from_secs(1)).await; + } } } - - } - }) - .instrument(span) + } + } + + pub(crate) fn spawn(self) -> Instrumented>> { + let span = info_span!("MessageProcessor"); + tokio::spawn(async move { self.main_loop().await }).instrument(span) } } diff --git a/rust/agents/validator/src/submit.rs b/rust/agents/validator/src/submit.rs index 02d5fcfcf..97a1f3ce4 100644 --- a/rust/agents/validator/src/submit.rs +++ b/rust/agents/validator/src/submit.rs @@ -37,6 +37,8 @@ impl ValidatorSubmitter { let reorg_period = Some(self.reorg_period); tokio::spawn(async move { let mut current_index = self.checkpoint_syncer.latest_index().await?.unwrap_or_default(); + + info!(current_index=current_index, "Starting Validator"); loop { sleep(Duration::from_secs(self.interval)).await; diff --git a/rust/chains/abacus-ethereum/src/macros.rs b/rust/chains/abacus-ethereum/src/macros.rs index 1b7b3d97f..c7cae3095 100644 --- a/rust/chains/abacus-ethereum/src/macros.rs +++ b/rust/chains/abacus-ethereum/src/macros.rs @@ -97,7 +97,7 @@ macro_rules! boxed_trait { }}; (@http $url:expr, $($tail:tt)*) => {{ let provider = - Arc::new(ethers::providers::Provider::::try_from($url.as_ref())?); + Arc::new(ethers::providers::Provider::::try_from($url)?); boxed_trait!(@finish provider, $($tail)*) }}; ($name:ident, $abi:ident, $trait:ident, $($n:ident:$t:ty),*) => { diff --git a/rust/config/testnet/alfajores_config.json b/rust/config/testnet/alfajores_config.json new file mode 100644 index 000000000..cffac1564 --- /dev/null +++ b/rust/config/testnet/alfajores_config.json @@ -0,0 +1,114 @@ +{ + "environment": "testnet", + "signers": {}, + "inboxes": { + "kovan": { + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x68311418D79fE8d96599384ED767d225635d88a8", + "validatorManager": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e" + } + }, + "fuji": { + "domain": "43113", + "name": "fuji", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x68311418D79fE8d96599384ED767d225635d88a8", + "validatorManager": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e" + } + }, + "mumbai": { + "domain": "80001", + "name": "mumbai", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x1D5EbC3e15e9ECDe0e3530C85899556797eeaea5", + "validatorManager": "0x304cAb315c93B87AAdb2B826A791b2c1Bf749996" + } + }, + "bsctestnet": { + "domain": "1651715444", + "name": "bsctestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xB08d78F439e55D02C398519eef61606A5926245F", + "validatorManager": "0x589C201a07c26b4725A4A829d772f24423da480B" + } + }, + "arbitrumrinkeby": { + "domain": "1634872690", + "name": "arbitrumrinkeby", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xB08d78F439e55D02C398519eef61606A5926245F", + "validatorManager": "0x589C201a07c26b4725A4A829d772f24423da480B" + } + }, + "optimismkovan": { + "domain": "1869622635", + "name": "optimismkovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xB08d78F439e55D02C398519eef61606A5926245F", + "validatorManager": "0x589C201a07c26b4725A4A829d772f24423da480B" + } + }, + "auroratestnet": { + "domain": "1635069300", + "name": "auroratestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xB08d78F439e55D02C398519eef61606A5926245F", + "validatorManager": "0x589C201a07c26b4725A4A829d772f24423da480B" + } + } + }, + "outbox": { + "addresses": { + "outbox": "0xD0680F80F4f947968206806C2598Cbc5b6FE5b03" + }, + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + } + }, + "tracing": { + "level": "debug", + "fmt": "json" + }, + "db": "db_path" +} diff --git a/rust/config/testnet/arbitrumrinkeby_config.json b/rust/config/testnet/arbitrumrinkeby_config.json new file mode 100644 index 000000000..0b63434c2 --- /dev/null +++ b/rust/config/testnet/arbitrumrinkeby_config.json @@ -0,0 +1,114 @@ +{ + "environment": "testnet", + "signers": {}, + "inboxes": { + "alfajores": { + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xe0B988062A0C6492177d64823Ab95a9c256c2a5F", + "validatorManager": "0xB057Fb841027a8554521DcCdeC3c3474CaC99AB5" + } + }, + "kovan": { + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xD0680F80F4f947968206806C2598Cbc5b6FE5b03", + "validatorManager": "0xc756cFc1b7d0d4646589EDf10eD54b201237F5e8" + } + }, + "fuji": { + "domain": "43113", + "name": "fuji", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xD0680F80F4f947968206806C2598Cbc5b6FE5b03", + "validatorManager": "0xc756cFc1b7d0d4646589EDf10eD54b201237F5e8" + } + }, + "mumbai": { + "domain": "80001", + "name": "mumbai", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x05Ea36Caee7d92C173334C9D97DcD39ABdCB2b69", + "validatorManager": "0x5d56B8a669F50193b54319442c6EEE5edD662381" + } + }, + "bsctestnet": { + "domain": "1651715444", + "name": "bsctestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x666a24F62f7A97BA33c151776Eb3D9441a059eB8", + "validatorManager": "0xd785272D240B07719e417622cbd2cfA0E584d1bd" + } + }, + "optimismkovan": { + "domain": "1869622635", + "name": "optimismkovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x7914A3349107A7295Bbf2374db5A973d73D1b324", + "validatorManager": "0x598facE78a4302f11E3de0bee1894Da0b2Cb71F8" + } + }, + "auroratestnet": { + "domain": "1635069300", + "name": "auroratestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x7914A3349107A7295Bbf2374db5A973d73D1b324", + "validatorManager": "0x598facE78a4302f11E3de0bee1894Da0b2Cb71F8" + } + } + }, + "outbox": { + "addresses": { + "outbox": "0x16B710b86CAd07E6F1C531861a16F5feC29dba37" + }, + "domain": "1634872690", + "name": "arbitrumrinkeby", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + } + }, + "tracing": { + "level": "debug", + "fmt": "json" + }, + "db": "db_path" +} diff --git a/rust/config/testnet/auroratestnet_config.json b/rust/config/testnet/auroratestnet_config.json new file mode 100644 index 000000000..04aa86fb8 --- /dev/null +++ b/rust/config/testnet/auroratestnet_config.json @@ -0,0 +1,114 @@ +{ + "environment": "testnet", + "signers": {}, + "inboxes": { + "alfajores": { + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xc76E477437065093D353b7d56c81ff54D167B0Ab", + "validatorManager": "0xa3AB7E6cE24E6293bD5320A53329Ef2f4DE73fCA" + } + }, + "kovan": { + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C", + "validatorManager": "0x1b33611fCc073aB0737011d5512EF673Bff74962" + } + }, + "fuji": { + "domain": "43113", + "name": "fuji", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C", + "validatorManager": "0x1b33611fCc073aB0737011d5512EF673Bff74962" + } + }, + "mumbai": { + "domain": "80001", + "name": "mumbai", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x07009DA2249c388aD0f416a235AfE90D784e1aAc", + "validatorManager": "0x98AAE089CaD930C64a76dD2247a2aC5773a4B8cE" + } + }, + "bsctestnet": { + "domain": "1651715444", + "name": "bsctestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x5d56B8a669F50193b54319442c6EEE5edD662381", + "validatorManager": "0x527768930D889662Fe7ACF64294871e86e4C2381" + } + }, + "arbitrumrinkeby": { + "domain": "1634872690", + "name": "arbitrumrinkeby", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x5d56B8a669F50193b54319442c6EEE5edD662381", + "validatorManager": "0x527768930D889662Fe7ACF64294871e86e4C2381" + } + }, + "optimismkovan": { + "domain": "1869622635", + "name": "optimismkovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x5d56B8a669F50193b54319442c6EEE5edD662381", + "validatorManager": "0x527768930D889662Fe7ACF64294871e86e4C2381" + } + } + }, + "outbox": { + "addresses": { + "outbox": "0x16B710b86CAd07E6F1C531861a16F5feC29dba37" + }, + "domain": "1635069300", + "name": "auroratestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + } + }, + "tracing": { + "level": "debug", + "fmt": "json" + }, + "db": "db_path" +} diff --git a/rust/config/testnet/bsctestnet_config.json b/rust/config/testnet/bsctestnet_config.json new file mode 100644 index 000000000..38d0a4c00 --- /dev/null +++ b/rust/config/testnet/bsctestnet_config.json @@ -0,0 +1,114 @@ +{ + "environment": "testnet", + "signers": {}, + "inboxes": { + "alfajores": { + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x51A0a100e7BC63Ea7821A3a023B6F17fb94FF011", + "validatorManager": "0xb94F96D398eA5BAB5CA528EE9Fdc19afaA825818" + } + }, + "kovan": { + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x5821f3B6eE05F3dC62b43B74AB1C8F8E6904b1C8", + "validatorManager": "0x19Be55D859368e02d7b9C00803Eb677BDC1359Bd" + } + }, + "fuji": { + "domain": "43113", + "name": "fuji", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x5821f3B6eE05F3dC62b43B74AB1C8F8E6904b1C8", + "validatorManager": "0x19Be55D859368e02d7b9C00803Eb677BDC1359Bd" + } + }, + "mumbai": { + "domain": "80001", + "name": "mumbai", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x3C5154a193D6e2955650f9305c8d80c18C814A68", + "validatorManager": "0x7914A3349107A7295Bbf2374db5A973d73D1b324" + } + }, + "arbitrumrinkeby": { + "domain": "1634872690", + "name": "arbitrumrinkeby", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x666a24F62f7A97BA33c151776Eb3D9441a059eB8", + "validatorManager": "0xd785272D240B07719e417622cbd2cfA0E584d1bd" + } + }, + "optimismkovan": { + "domain": "1869622635", + "name": "optimismkovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x666a24F62f7A97BA33c151776Eb3D9441a059eB8", + "validatorManager": "0xd785272D240B07719e417622cbd2cfA0E584d1bd" + } + }, + "auroratestnet": { + "domain": "1635069300", + "name": "auroratestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x666a24F62f7A97BA33c151776Eb3D9441a059eB8", + "validatorManager": "0xd785272D240B07719e417622cbd2cfA0E584d1bd" + } + } + }, + "outbox": { + "addresses": { + "outbox": "0x16B710b86CAd07E6F1C531861a16F5feC29dba37" + }, + "domain": "1651715444", + "name": "bsctestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + } + }, + "tracing": { + "level": "debug", + "fmt": "json" + }, + "db": "db_path" +} diff --git a/rust/config/testnet/fuji_config.json b/rust/config/testnet/fuji_config.json new file mode 100644 index 000000000..7a3b8a8ec --- /dev/null +++ b/rust/config/testnet/fuji_config.json @@ -0,0 +1,114 @@ +{ + "environment": "testnet", + "signers": {}, + "inboxes": { + "alfajores": { + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xae7a78916Ba4c507aCB2F0e474ace545Ff4bF841", + "validatorManager": "0x66b71A4e18FbE09a6977A6520B47fEDdffA82a1c" + } + }, + "kovan": { + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x6b1bb4ce664Bb4164AEB4d3D2E7DE7450DD8084C", + "validatorManager": "0x863E8c26621c52ACa1849C53500606e73BA272F0" + } + }, + "mumbai": { + "domain": "80001", + "name": "mumbai", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xef48bd850E5827B96B55C4D28FB32Bbaa73616F2", + "validatorManager": "0x666a24F62f7A97BA33c151776Eb3D9441a059eB8" + } + }, + "bsctestnet": { + "domain": "1651715444", + "name": "bsctestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "validatorManager": "0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E" + } + }, + "arbitrumrinkeby": { + "domain": "1634872690", + "name": "arbitrumrinkeby", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "validatorManager": "0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E" + } + }, + "optimismkovan": { + "domain": "1869622635", + "name": "optimismkovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "validatorManager": "0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E" + } + }, + "auroratestnet": { + "domain": "1635069300", + "name": "auroratestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "validatorManager": "0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E" + } + } + }, + "outbox": { + "addresses": { + "outbox": "0x98AAE089CaD930C64a76dD2247a2aC5773a4B8cE" + }, + "domain": "43113", + "name": "fuji", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + } + }, + "tracing": { + "level": "debug", + "fmt": "json" + }, + "db": "db_path" +} diff --git a/rust/config/testnet/kovan_config.json b/rust/config/testnet/kovan_config.json new file mode 100644 index 000000000..cc73392ed --- /dev/null +++ b/rust/config/testnet/kovan_config.json @@ -0,0 +1,114 @@ +{ + "environment": "testnet", + "signers": {}, + "inboxes": { + "alfajores": { + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x783c4a0bB6663359281aD4a637D5af68F83ae213", + "validatorManager": "0x1b33611fCc073aB0737011d5512EF673Bff74962" + } + }, + "fuji": { + "domain": "43113", + "name": "fuji", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x6b1bb4ce664Bb4164AEB4d3D2E7DE7450DD8084C", + "validatorManager": "0x863E8c26621c52ACa1849C53500606e73BA272F0" + } + }, + "mumbai": { + "domain": "80001", + "name": "mumbai", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x0526E47C49742C15F8817ef8cf0d8FFc72139D4F", + "validatorManager": "0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc" + } + }, + "bsctestnet": { + "domain": "1651715444", + "name": "bsctestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xD3d062a5dcBA85ae863618d4c264d2358300c283", + "validatorManager": "0x833Dad7FF66884389D5F0cEcba446ffaa7d2837e" + } + }, + "arbitrumrinkeby": { + "domain": "1634872690", + "name": "arbitrumrinkeby", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xD3d062a5dcBA85ae863618d4c264d2358300c283", + "validatorManager": "0x833Dad7FF66884389D5F0cEcba446ffaa7d2837e" + } + }, + "optimismkovan": { + "domain": "1869622635", + "name": "optimismkovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xD3d062a5dcBA85ae863618d4c264d2358300c283", + "validatorManager": "0x833Dad7FF66884389D5F0cEcba446ffaa7d2837e" + } + }, + "auroratestnet": { + "domain": "1635069300", + "name": "auroratestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xD3d062a5dcBA85ae863618d4c264d2358300c283", + "validatorManager": "0x833Dad7FF66884389D5F0cEcba446ffaa7d2837e" + } + } + }, + "outbox": { + "addresses": { + "outbox": "0x98AAE089CaD930C64a76dD2247a2aC5773a4B8cE" + }, + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + } + }, + "tracing": { + "level": "debug", + "fmt": "json" + }, + "db": "db_path" +} diff --git a/rust/config/testnet/mumbai_config.json b/rust/config/testnet/mumbai_config.json new file mode 100644 index 000000000..d3ce665f4 --- /dev/null +++ b/rust/config/testnet/mumbai_config.json @@ -0,0 +1,114 @@ +{ + "environment": "testnet", + "signers": {}, + "inboxes": { + "alfajores": { + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xFCc63b537e70652A280c4E7883C5BB5a1700e897", + "validatorManager": "0x04438ef7622f5412f82915F59caD4f704C61eA48" + } + }, + "kovan": { + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x86fb9F1c124fB20ff130C41a79a432F770f67AFD", + "validatorManager": "0xAb9B273366D794B7F80B4378bc8Aaca75C6178E2" + } + }, + "fuji": { + "domain": "43113", + "name": "fuji", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x86fb9F1c124fB20ff130C41a79a432F770f67AFD", + "validatorManager": "0xAb9B273366D794B7F80B4378bc8Aaca75C6178E2" + } + }, + "bsctestnet": { + "domain": "1651715444", + "name": "bsctestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc", + "validatorManager": "0xF7F0DaB0BECE4498dAc7eb616e288809D4499371" + } + }, + "arbitrumrinkeby": { + "domain": "1634872690", + "name": "arbitrumrinkeby", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc", + "validatorManager": "0xF7F0DaB0BECE4498dAc7eb616e288809D4499371" + } + }, + "optimismkovan": { + "domain": "1869622635", + "name": "optimismkovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc", + "validatorManager": "0xF7F0DaB0BECE4498dAc7eb616e288809D4499371" + } + }, + "auroratestnet": { + "domain": "1635069300", + "name": "auroratestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc", + "validatorManager": "0xF7F0DaB0BECE4498dAc7eb616e288809D4499371" + } + } + }, + "outbox": { + "addresses": { + "outbox": "0x33dB966328Ea213b0f76eF96CA368AB37779F065" + }, + "domain": "80001", + "name": "mumbai", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + } + }, + "tracing": { + "level": "debug", + "fmt": "json" + }, + "db": "db_path" +} diff --git a/rust/config/testnet/optimismkovan_config.json b/rust/config/testnet/optimismkovan_config.json new file mode 100644 index 000000000..7c5bd7349 --- /dev/null +++ b/rust/config/testnet/optimismkovan_config.json @@ -0,0 +1,114 @@ +{ + "environment": "testnet", + "signers": {}, + "inboxes": { + "alfajores": { + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x628BC518ED1e0E8C6cbcD574EbA0ee29e7F6943E", + "validatorManager": "0xA2cf52064c921C11adCd83588CbEa08cc3bfF5d8" + } + }, + "kovan": { + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x75f3E2a4f424401195A5E176246Ecc9f7e7680ff", + "validatorManager": "0x433f7d6d0cB9eb8FF2902Ad01C1BEd6C09934a33" + } + }, + "fuji": { + "domain": "43113", + "name": "fuji", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x75f3E2a4f424401195A5E176246Ecc9f7e7680ff", + "validatorManager": "0x433f7d6d0cB9eb8FF2902Ad01C1BEd6C09934a33" + } + }, + "mumbai": { + "domain": "80001", + "name": "mumbai", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x679Dc08cC3A4acFeea2f7CAFAa37561aE0b41Ce7", + "validatorManager": "0x58483b754Abb1E8947BE63d6b95DF75b8249543A" + } + }, + "bsctestnet": { + "domain": "1651715444", + "name": "bsctestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x7914A3349107A7295Bbf2374db5A973d73D1b324", + "validatorManager": "0x598facE78a4302f11E3de0bee1894Da0b2Cb71F8" + } + }, + "arbitrumrinkeby": { + "domain": "1634872690", + "name": "arbitrumrinkeby", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x7914A3349107A7295Bbf2374db5A973d73D1b324", + "validatorManager": "0x598facE78a4302f11E3de0bee1894Da0b2Cb71F8" + } + }, + "auroratestnet": { + "domain": "1635069300", + "name": "auroratestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x5d56B8a669F50193b54319442c6EEE5edD662381", + "validatorManager": "0x527768930D889662Fe7ACF64294871e86e4C2381" + } + } + }, + "outbox": { + "addresses": { + "outbox": "0x16B710b86CAd07E6F1C531861a16F5feC29dba37" + }, + "domain": "1869622635", + "name": "optimismkovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + } + }, + "tracing": { + "level": "debug", + "fmt": "json" + }, + "db": "db_path" +} diff --git a/rust/helm/abacus-agent/templates/relayer-external-secret.yaml b/rust/helm/abacus-agent/templates/relayer-external-secret.yaml index 0d0fbc938..960df2814 100644 --- a/rust/helm/abacus-agent/templates/relayer-external-secret.yaml +++ b/rust/helm/abacus-agent/templates/relayer-external-secret.yaml @@ -33,16 +33,16 @@ spec: {{- if eq .keyConfig.type "hexKey" }} - secretKey: {{ printf "%s_signer_key" .name }} remoteRef: - key: {{ printf "abacus-%s-key-relayer" $.Values.abacus.runEnv }} + key: {{ printf "abacus-%s-key-%s-relayer" $.Values.abacus.runEnv $.Values.abacus.outboxChain.name }} property: privateKey {{- end }} {{- end }} {{- if .Values.abacus.relayer.aws }} - secretKey: aws_access_key_id remoteRef: - key: {{ printf "abacus-%s-relayer-aws-access-key-id" .Values.abacus.runEnv }} + key: {{ printf "abacus-%s-%s-relayer-aws-access-key-id" .Values.abacus.runEnv .Values.abacus.outboxChain.name }} - secretKey: aws_secret_access_key remoteRef: - key: {{ printf "abacus-%s-relayer-aws-secret-access-key" .Values.abacus.runEnv }} + key: {{ printf "abacus-%s-%s-relayer-aws-secret-access-key" .Values.abacus.runEnv .Values.abacus.outboxChain.name }} {{- end }} {{- end }} diff --git a/rust/helm/abacus-agent/values.yaml b/rust/helm/abacus-agent/values.yaml index 9b45a5d4c..fca1a52c7 100644 --- a/rust/helm/abacus-agent/values.yaml +++ b/rust/helm/abacus-agent/values.yaml @@ -80,8 +80,8 @@ abacus: name: "" resources: requests: - cpu: 250m - memory: 1Gi + cpu: 100m + memory: 250m # -- Transaction Signing keys for home and replica(s) signer: {} # -- How long to wait between checking for updates diff --git a/rust/tools/abacus-cli/src/subcommands/prove.rs b/rust/tools/abacus-cli/src/subcommands/prove.rs index 6336ef46d..ed5152d66 100644 --- a/rust/tools/abacus-cli/src/subcommands/prove.rs +++ b/rust/tools/abacus-cli/src/subcommands/prove.rs @@ -134,7 +134,7 @@ impl ProveCommand { let provider = self .rpc .as_ref() - .map(|rpc| Provider::::try_from(rpc.as_ref())) + .map(Provider::::try_from) .transpose()? .unwrap_or_else(|| rpc::fetch_rpc_connection(destination).unwrap()); diff --git a/rust/tools/kms-cli/src/main.rs b/rust/tools/kms-cli/src/main.rs index 8cdf3902b..71258d455 100644 --- a/rust/tools/kms-cli/src/main.rs +++ b/rust/tools/kms-cli/src/main.rs @@ -145,7 +145,7 @@ async fn _send_tx(signer: &AwsSigner<'_>, opts: &Opts) -> Result<()> { SubCommands::Info(_) => unreachable!(), }; - let provider = Provider::::try_from(tx.rpc.as_ref())?; + let provider = Provider::::try_from(tx.rpc.clone())?; let tx_req = prep_tx_request(tx); diff --git a/typescript/infra/config/environments/testnet/agent.ts b/typescript/infra/config/environments/testnet/agent.ts new file mode 100644 index 000000000..4e2f1b57d --- /dev/null +++ b/typescript/infra/config/environments/testnet/agent.ts @@ -0,0 +1,50 @@ +import { AgentConfig } from '../../../src/config'; +import { ENVIRONMENTS_ENUM } from '../../../src/config/environment'; + +import { TestnetNetworks, domainNames } from './domains'; +import { validators } from './validators'; + +export const agent: AgentConfig = { + environment: ENVIRONMENTS_ENUM.Testnet, + namespace: ENVIRONMENTS_ENUM.Testnet, + runEnv: ENVIRONMENTS_ENUM.Testnet, + docker: { + repo: 'gcr.io/abacus-labs-dev/abacus-agent', + tag: 'b7ea3edee7d8d6557ae2ba830c2972586d4687fa', + }, + aws: { + region: 'us-east-1', + }, + domainNames, + validatorSets: validators, + validator: { + default: { + interval: 5, + reorgPeriod: 1, + }, + chainOverrides: { + optimismkovan: { + interval: 5, + reorgPeriod: 2, + }, + }, + }, + relayer: { + default: { + pollingInterval: 5, + submissionLatency: 10, + maxRetries: 10, + relayerMessageProcessing: true, + }, + }, + // kathy: { + // default: { + // interval: 30, + // }, + // chainOverrides: { + // kovan: { + // interval: 120, + // }, + // }, + // }, +}; diff --git a/typescript/infra/config/environments/testnet/core.ts b/typescript/infra/config/environments/testnet/core.ts new file mode 100644 index 000000000..6b1c3e2dc --- /dev/null +++ b/typescript/infra/config/environments/testnet/core.ts @@ -0,0 +1,70 @@ +import { CoreConfig } from '../../../src/core'; + +export const core: CoreConfig = { + validatorManagers: { + alfajores: { + validators: [ + '0x5274db49971f14457fb1b1743012e2527804dc73', + '0x636ca13eb829880539c0078ba9d53214b65603a2', + '0x2f5f8c4bb89dfc1c4e905f7e3cd35294b62a572b', + ], + threshold: 2, + }, + kovan: { + validators: [ + '0x84b998a059719d4476959ffbe0a0402ec65a7c62', + '0x5aaf0bbbc15f13bcb5f4b2bff5e2f935f4360bb5', + '0x3d12f6d395a6532de3d45bd668de43685cb500c3', + ], + threshold: 2, + }, + fuji: { + validators: [ + '0x57d4976751978df23be86ec42e27a5749b1beeda', + '0x5149b863416de4fae9e1cb63c9564414f4f0bb18', + '0xd1ea680f4777eb31569aea1768eaf83bf5587a98', + ], + threshold: 2, + }, + mumbai: { + validators: [ + '0x962a63cf73c8beef63ecd753bc57c80241368818', + '0x636d98ed1cd8e5190900ed53a71e8da0076c2672', + '0xf9e86b19152cc8437794d01d4aec8c8a4eb34b20', + ], + threshold: 2, + }, + bsctestnet: { + validators: [ + '0x71a66da2ad833efca67b2257b45f6c6ba11e3816', + '0x7306663d18af55294dfd44782fa5c7e16d94485f', + '0x19cd5f316993ad15d1ac569cd4e70cbc5e1682ac', + ], + threshold: 2, + }, + arbitrumrinkeby: { + validators: [ + '0x4f78b649646b50b1ff41984cde8b7f4f36e1071d', + '0xf71e75225daaf19135b316c76a9105fbdce4b70a', + '0xded3da1c63c37499c627272f46d66e0e46a5bd07', + ], + threshold: 2, + }, + optimismkovan: { + validators: [ + '0x938b35471ff2e968a125f5f3fc02ede89f7b90c0', + '0x3b8f4217153e9bb9ae3aa8d314269dd06584081d', + '0x2a58a8982a06fbb3757d1c614c6f3ab733d93e6d', + ], + threshold: 2, + }, + auroratestnet: { + validators: [ + '0x3dd10f59ec2f18441eb0a3feca489e6d74752260', + '0x10ac12f07488ea10371071fccc6a7a1e2733fe35', + '0xdf0154233855528a114b4bd640a3fde2020c3b3b', + ], + threshold: 2, + }, + }, +}; diff --git a/typescript/infra/config/environments/testnet/core/rust/alfajores_config.json b/typescript/infra/config/environments/testnet/core/rust/alfajores_config.json new file mode 100644 index 000000000..cffac1564 --- /dev/null +++ b/typescript/infra/config/environments/testnet/core/rust/alfajores_config.json @@ -0,0 +1,114 @@ +{ + "environment": "testnet", + "signers": {}, + "inboxes": { + "kovan": { + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x68311418D79fE8d96599384ED767d225635d88a8", + "validatorManager": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e" + } + }, + "fuji": { + "domain": "43113", + "name": "fuji", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x68311418D79fE8d96599384ED767d225635d88a8", + "validatorManager": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e" + } + }, + "mumbai": { + "domain": "80001", + "name": "mumbai", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x1D5EbC3e15e9ECDe0e3530C85899556797eeaea5", + "validatorManager": "0x304cAb315c93B87AAdb2B826A791b2c1Bf749996" + } + }, + "bsctestnet": { + "domain": "1651715444", + "name": "bsctestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xB08d78F439e55D02C398519eef61606A5926245F", + "validatorManager": "0x589C201a07c26b4725A4A829d772f24423da480B" + } + }, + "arbitrumrinkeby": { + "domain": "1634872690", + "name": "arbitrumrinkeby", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xB08d78F439e55D02C398519eef61606A5926245F", + "validatorManager": "0x589C201a07c26b4725A4A829d772f24423da480B" + } + }, + "optimismkovan": { + "domain": "1869622635", + "name": "optimismkovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xB08d78F439e55D02C398519eef61606A5926245F", + "validatorManager": "0x589C201a07c26b4725A4A829d772f24423da480B" + } + }, + "auroratestnet": { + "domain": "1635069300", + "name": "auroratestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xB08d78F439e55D02C398519eef61606A5926245F", + "validatorManager": "0x589C201a07c26b4725A4A829d772f24423da480B" + } + } + }, + "outbox": { + "addresses": { + "outbox": "0xD0680F80F4f947968206806C2598Cbc5b6FE5b03" + }, + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + } + }, + "tracing": { + "level": "debug", + "fmt": "json" + }, + "db": "db_path" +} diff --git a/typescript/infra/config/environments/testnet/core/rust/arbitrumrinkeby_config.json b/typescript/infra/config/environments/testnet/core/rust/arbitrumrinkeby_config.json new file mode 100644 index 000000000..0b63434c2 --- /dev/null +++ b/typescript/infra/config/environments/testnet/core/rust/arbitrumrinkeby_config.json @@ -0,0 +1,114 @@ +{ + "environment": "testnet", + "signers": {}, + "inboxes": { + "alfajores": { + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xe0B988062A0C6492177d64823Ab95a9c256c2a5F", + "validatorManager": "0xB057Fb841027a8554521DcCdeC3c3474CaC99AB5" + } + }, + "kovan": { + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xD0680F80F4f947968206806C2598Cbc5b6FE5b03", + "validatorManager": "0xc756cFc1b7d0d4646589EDf10eD54b201237F5e8" + } + }, + "fuji": { + "domain": "43113", + "name": "fuji", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xD0680F80F4f947968206806C2598Cbc5b6FE5b03", + "validatorManager": "0xc756cFc1b7d0d4646589EDf10eD54b201237F5e8" + } + }, + "mumbai": { + "domain": "80001", + "name": "mumbai", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x05Ea36Caee7d92C173334C9D97DcD39ABdCB2b69", + "validatorManager": "0x5d56B8a669F50193b54319442c6EEE5edD662381" + } + }, + "bsctestnet": { + "domain": "1651715444", + "name": "bsctestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x666a24F62f7A97BA33c151776Eb3D9441a059eB8", + "validatorManager": "0xd785272D240B07719e417622cbd2cfA0E584d1bd" + } + }, + "optimismkovan": { + "domain": "1869622635", + "name": "optimismkovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x7914A3349107A7295Bbf2374db5A973d73D1b324", + "validatorManager": "0x598facE78a4302f11E3de0bee1894Da0b2Cb71F8" + } + }, + "auroratestnet": { + "domain": "1635069300", + "name": "auroratestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x7914A3349107A7295Bbf2374db5A973d73D1b324", + "validatorManager": "0x598facE78a4302f11E3de0bee1894Da0b2Cb71F8" + } + } + }, + "outbox": { + "addresses": { + "outbox": "0x16B710b86CAd07E6F1C531861a16F5feC29dba37" + }, + "domain": "1634872690", + "name": "arbitrumrinkeby", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + } + }, + "tracing": { + "level": "debug", + "fmt": "json" + }, + "db": "db_path" +} diff --git a/typescript/infra/config/environments/testnet/core/rust/auroratestnet_config.json b/typescript/infra/config/environments/testnet/core/rust/auroratestnet_config.json new file mode 100644 index 000000000..04aa86fb8 --- /dev/null +++ b/typescript/infra/config/environments/testnet/core/rust/auroratestnet_config.json @@ -0,0 +1,114 @@ +{ + "environment": "testnet", + "signers": {}, + "inboxes": { + "alfajores": { + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xc76E477437065093D353b7d56c81ff54D167B0Ab", + "validatorManager": "0xa3AB7E6cE24E6293bD5320A53329Ef2f4DE73fCA" + } + }, + "kovan": { + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C", + "validatorManager": "0x1b33611fCc073aB0737011d5512EF673Bff74962" + } + }, + "fuji": { + "domain": "43113", + "name": "fuji", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C", + "validatorManager": "0x1b33611fCc073aB0737011d5512EF673Bff74962" + } + }, + "mumbai": { + "domain": "80001", + "name": "mumbai", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x07009DA2249c388aD0f416a235AfE90D784e1aAc", + "validatorManager": "0x98AAE089CaD930C64a76dD2247a2aC5773a4B8cE" + } + }, + "bsctestnet": { + "domain": "1651715444", + "name": "bsctestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x5d56B8a669F50193b54319442c6EEE5edD662381", + "validatorManager": "0x527768930D889662Fe7ACF64294871e86e4C2381" + } + }, + "arbitrumrinkeby": { + "domain": "1634872690", + "name": "arbitrumrinkeby", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x5d56B8a669F50193b54319442c6EEE5edD662381", + "validatorManager": "0x527768930D889662Fe7ACF64294871e86e4C2381" + } + }, + "optimismkovan": { + "domain": "1869622635", + "name": "optimismkovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x5d56B8a669F50193b54319442c6EEE5edD662381", + "validatorManager": "0x527768930D889662Fe7ACF64294871e86e4C2381" + } + } + }, + "outbox": { + "addresses": { + "outbox": "0x16B710b86CAd07E6F1C531861a16F5feC29dba37" + }, + "domain": "1635069300", + "name": "auroratestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + } + }, + "tracing": { + "level": "debug", + "fmt": "json" + }, + "db": "db_path" +} diff --git a/typescript/infra/config/environments/testnet/core/rust/bsctestnet_config.json b/typescript/infra/config/environments/testnet/core/rust/bsctestnet_config.json new file mode 100644 index 000000000..38d0a4c00 --- /dev/null +++ b/typescript/infra/config/environments/testnet/core/rust/bsctestnet_config.json @@ -0,0 +1,114 @@ +{ + "environment": "testnet", + "signers": {}, + "inboxes": { + "alfajores": { + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x51A0a100e7BC63Ea7821A3a023B6F17fb94FF011", + "validatorManager": "0xb94F96D398eA5BAB5CA528EE9Fdc19afaA825818" + } + }, + "kovan": { + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x5821f3B6eE05F3dC62b43B74AB1C8F8E6904b1C8", + "validatorManager": "0x19Be55D859368e02d7b9C00803Eb677BDC1359Bd" + } + }, + "fuji": { + "domain": "43113", + "name": "fuji", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x5821f3B6eE05F3dC62b43B74AB1C8F8E6904b1C8", + "validatorManager": "0x19Be55D859368e02d7b9C00803Eb677BDC1359Bd" + } + }, + "mumbai": { + "domain": "80001", + "name": "mumbai", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x3C5154a193D6e2955650f9305c8d80c18C814A68", + "validatorManager": "0x7914A3349107A7295Bbf2374db5A973d73D1b324" + } + }, + "arbitrumrinkeby": { + "domain": "1634872690", + "name": "arbitrumrinkeby", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x666a24F62f7A97BA33c151776Eb3D9441a059eB8", + "validatorManager": "0xd785272D240B07719e417622cbd2cfA0E584d1bd" + } + }, + "optimismkovan": { + "domain": "1869622635", + "name": "optimismkovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x666a24F62f7A97BA33c151776Eb3D9441a059eB8", + "validatorManager": "0xd785272D240B07719e417622cbd2cfA0E584d1bd" + } + }, + "auroratestnet": { + "domain": "1635069300", + "name": "auroratestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x666a24F62f7A97BA33c151776Eb3D9441a059eB8", + "validatorManager": "0xd785272D240B07719e417622cbd2cfA0E584d1bd" + } + } + }, + "outbox": { + "addresses": { + "outbox": "0x16B710b86CAd07E6F1C531861a16F5feC29dba37" + }, + "domain": "1651715444", + "name": "bsctestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + } + }, + "tracing": { + "level": "debug", + "fmt": "json" + }, + "db": "db_path" +} diff --git a/typescript/infra/config/environments/testnet/core/rust/fuji_config.json b/typescript/infra/config/environments/testnet/core/rust/fuji_config.json new file mode 100644 index 000000000..7a3b8a8ec --- /dev/null +++ b/typescript/infra/config/environments/testnet/core/rust/fuji_config.json @@ -0,0 +1,114 @@ +{ + "environment": "testnet", + "signers": {}, + "inboxes": { + "alfajores": { + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xae7a78916Ba4c507aCB2F0e474ace545Ff4bF841", + "validatorManager": "0x66b71A4e18FbE09a6977A6520B47fEDdffA82a1c" + } + }, + "kovan": { + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x6b1bb4ce664Bb4164AEB4d3D2E7DE7450DD8084C", + "validatorManager": "0x863E8c26621c52ACa1849C53500606e73BA272F0" + } + }, + "mumbai": { + "domain": "80001", + "name": "mumbai", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xef48bd850E5827B96B55C4D28FB32Bbaa73616F2", + "validatorManager": "0x666a24F62f7A97BA33c151776Eb3D9441a059eB8" + } + }, + "bsctestnet": { + "domain": "1651715444", + "name": "bsctestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "validatorManager": "0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E" + } + }, + "arbitrumrinkeby": { + "domain": "1634872690", + "name": "arbitrumrinkeby", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "validatorManager": "0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E" + } + }, + "optimismkovan": { + "domain": "1869622635", + "name": "optimismkovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "validatorManager": "0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E" + } + }, + "auroratestnet": { + "domain": "1635069300", + "name": "auroratestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "validatorManager": "0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E" + } + } + }, + "outbox": { + "addresses": { + "outbox": "0x98AAE089CaD930C64a76dD2247a2aC5773a4B8cE" + }, + "domain": "43113", + "name": "fuji", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + } + }, + "tracing": { + "level": "debug", + "fmt": "json" + }, + "db": "db_path" +} diff --git a/typescript/infra/config/environments/testnet/core/rust/kovan_config.json b/typescript/infra/config/environments/testnet/core/rust/kovan_config.json new file mode 100644 index 000000000..cc73392ed --- /dev/null +++ b/typescript/infra/config/environments/testnet/core/rust/kovan_config.json @@ -0,0 +1,114 @@ +{ + "environment": "testnet", + "signers": {}, + "inboxes": { + "alfajores": { + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x783c4a0bB6663359281aD4a637D5af68F83ae213", + "validatorManager": "0x1b33611fCc073aB0737011d5512EF673Bff74962" + } + }, + "fuji": { + "domain": "43113", + "name": "fuji", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x6b1bb4ce664Bb4164AEB4d3D2E7DE7450DD8084C", + "validatorManager": "0x863E8c26621c52ACa1849C53500606e73BA272F0" + } + }, + "mumbai": { + "domain": "80001", + "name": "mumbai", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x0526E47C49742C15F8817ef8cf0d8FFc72139D4F", + "validatorManager": "0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc" + } + }, + "bsctestnet": { + "domain": "1651715444", + "name": "bsctestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xD3d062a5dcBA85ae863618d4c264d2358300c283", + "validatorManager": "0x833Dad7FF66884389D5F0cEcba446ffaa7d2837e" + } + }, + "arbitrumrinkeby": { + "domain": "1634872690", + "name": "arbitrumrinkeby", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xD3d062a5dcBA85ae863618d4c264d2358300c283", + "validatorManager": "0x833Dad7FF66884389D5F0cEcba446ffaa7d2837e" + } + }, + "optimismkovan": { + "domain": "1869622635", + "name": "optimismkovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xD3d062a5dcBA85ae863618d4c264d2358300c283", + "validatorManager": "0x833Dad7FF66884389D5F0cEcba446ffaa7d2837e" + } + }, + "auroratestnet": { + "domain": "1635069300", + "name": "auroratestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xD3d062a5dcBA85ae863618d4c264d2358300c283", + "validatorManager": "0x833Dad7FF66884389D5F0cEcba446ffaa7d2837e" + } + } + }, + "outbox": { + "addresses": { + "outbox": "0x98AAE089CaD930C64a76dD2247a2aC5773a4B8cE" + }, + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + } + }, + "tracing": { + "level": "debug", + "fmt": "json" + }, + "db": "db_path" +} diff --git a/typescript/infra/config/environments/testnet/core/rust/mumbai_config.json b/typescript/infra/config/environments/testnet/core/rust/mumbai_config.json new file mode 100644 index 000000000..d3ce665f4 --- /dev/null +++ b/typescript/infra/config/environments/testnet/core/rust/mumbai_config.json @@ -0,0 +1,114 @@ +{ + "environment": "testnet", + "signers": {}, + "inboxes": { + "alfajores": { + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xFCc63b537e70652A280c4E7883C5BB5a1700e897", + "validatorManager": "0x04438ef7622f5412f82915F59caD4f704C61eA48" + } + }, + "kovan": { + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x86fb9F1c124fB20ff130C41a79a432F770f67AFD", + "validatorManager": "0xAb9B273366D794B7F80B4378bc8Aaca75C6178E2" + } + }, + "fuji": { + "domain": "43113", + "name": "fuji", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x86fb9F1c124fB20ff130C41a79a432F770f67AFD", + "validatorManager": "0xAb9B273366D794B7F80B4378bc8Aaca75C6178E2" + } + }, + "bsctestnet": { + "domain": "1651715444", + "name": "bsctestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc", + "validatorManager": "0xF7F0DaB0BECE4498dAc7eb616e288809D4499371" + } + }, + "arbitrumrinkeby": { + "domain": "1634872690", + "name": "arbitrumrinkeby", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc", + "validatorManager": "0xF7F0DaB0BECE4498dAc7eb616e288809D4499371" + } + }, + "optimismkovan": { + "domain": "1869622635", + "name": "optimismkovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc", + "validatorManager": "0xF7F0DaB0BECE4498dAc7eb616e288809D4499371" + } + }, + "auroratestnet": { + "domain": "1635069300", + "name": "auroratestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc", + "validatorManager": "0xF7F0DaB0BECE4498dAc7eb616e288809D4499371" + } + } + }, + "outbox": { + "addresses": { + "outbox": "0x33dB966328Ea213b0f76eF96CA368AB37779F065" + }, + "domain": "80001", + "name": "mumbai", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + } + }, + "tracing": { + "level": "debug", + "fmt": "json" + }, + "db": "db_path" +} diff --git a/typescript/infra/config/environments/testnet/core/rust/optimismkovan_config.json b/typescript/infra/config/environments/testnet/core/rust/optimismkovan_config.json new file mode 100644 index 000000000..7c5bd7349 --- /dev/null +++ b/typescript/infra/config/environments/testnet/core/rust/optimismkovan_config.json @@ -0,0 +1,114 @@ +{ + "environment": "testnet", + "signers": {}, + "inboxes": { + "alfajores": { + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x628BC518ED1e0E8C6cbcD574EbA0ee29e7F6943E", + "validatorManager": "0xA2cf52064c921C11adCd83588CbEa08cc3bfF5d8" + } + }, + "kovan": { + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x75f3E2a4f424401195A5E176246Ecc9f7e7680ff", + "validatorManager": "0x433f7d6d0cB9eb8FF2902Ad01C1BEd6C09934a33" + } + }, + "fuji": { + "domain": "43113", + "name": "fuji", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x75f3E2a4f424401195A5E176246Ecc9f7e7680ff", + "validatorManager": "0x433f7d6d0cB9eb8FF2902Ad01C1BEd6C09934a33" + } + }, + "mumbai": { + "domain": "80001", + "name": "mumbai", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x679Dc08cC3A4acFeea2f7CAFAa37561aE0b41Ce7", + "validatorManager": "0x58483b754Abb1E8947BE63d6b95DF75b8249543A" + } + }, + "bsctestnet": { + "domain": "1651715444", + "name": "bsctestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x7914A3349107A7295Bbf2374db5A973d73D1b324", + "validatorManager": "0x598facE78a4302f11E3de0bee1894Da0b2Cb71F8" + } + }, + "arbitrumrinkeby": { + "domain": "1634872690", + "name": "arbitrumrinkeby", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x7914A3349107A7295Bbf2374db5A973d73D1b324", + "validatorManager": "0x598facE78a4302f11E3de0bee1894Da0b2Cb71F8" + } + }, + "auroratestnet": { + "domain": "1635069300", + "name": "auroratestnet", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + }, + "addresses": { + "inbox": "0x5d56B8a669F50193b54319442c6EEE5edD662381", + "validatorManager": "0x527768930D889662Fe7ACF64294871e86e4C2381" + } + } + }, + "outbox": { + "addresses": { + "outbox": "0x16B710b86CAd07E6F1C531861a16F5feC29dba37" + }, + "domain": "1869622635", + "name": "optimismkovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "" + } + }, + "tracing": { + "level": "debug", + "fmt": "json" + }, + "db": "db_path" +} diff --git a/typescript/infra/config/environments/testnet/core/verification/alfajores.json b/typescript/infra/config/environments/testnet/core/verification/alfajores.json new file mode 100644 index 000000000..bf89a6e71 --- /dev/null +++ b/typescript/infra/config/environments/testnet/core/verification/alfajores.json @@ -0,0 +1,234 @@ +[ + { + "name": "UpgradeBeaconController", + "address": "0x19Be55D859368e02d7b9C00803Eb677BDC1359Bd", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "OutboxValidatorManager", + "address": "0x5821f3B6eE05F3dC62b43B74AB1C8F8E6904b1C8", + "constructorArguments": [ + 1000, + [ + "0x5274Db49971f14457FB1B1743012e2527804Dc73", + "0x636CA13eB829880539c0078Ba9d53214b65603a2", + "0x2F5f8c4Bb89dFC1c4E905f7e3CD35294B62a572B" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Outbox Implementation", + "address": "0x267B6B6eAf6790faE5D5E9070F28a9cE64CbF279", + "constructorArguments": [1000], + "isProxy": false + }, + { + "name": "Outbox UpgradeBeacon", + "address": "0xc756cFc1b7d0d4646589EDf10eD54b201237F5e8", + "constructorArguments": [ + "0x267B6B6eAf6790faE5D5E9070F28a9cE64CbF279", + "0x19Be55D859368e02d7b9C00803Eb677BDC1359Bd" + ], + "isProxy": false + }, + { + "name": "Outbox Proxy", + "address": "0xD0680F80F4f947968206806C2598Cbc5b6FE5b03", + "constructorArguments": [ + "0xc756cFc1b7d0d4646589EDf10eD54b201237F5e8", + "0xc4d66de80000000000000000000000005821f3b6ee05f3dc62b43b74ab1c8f8e6904b1c8" + ], + "isProxy": true + }, + { + "name": "InterchainGasPaymaster", + "address": "0x28B02B97a850872C4D33C3E024fab6499ad96564", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "AbacusConnectionManager", + "address": "0x433f7d6d0cB9eb8FF2902Ad01C1BEd6C09934a33", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "InboxValidatorManager", + "address": "0x1b33611fCc073aB0737011d5512EF673Bff74962", + "constructorArguments": [ + 3000, + [ + "0x84B998A059719d4476959FfbE0A0402EC65A7c62", + "0x5aaf0BBBc15f13BcB5f4B2BFf5E2f935F4360bB5", + "0x3d12F6D395A6532De3D45bd668dE43685cb500c3" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Implementation", + "address": "0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C", + "constructorArguments": [1000], + "isProxy": false + }, + { + "name": "Inbox UpgradeBeacon", + "address": "0x20c44b1E3BeaDA1e9826CFd48BeEDABeE9871cE9", + "constructorArguments": [ + "0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C", + "0x19Be55D859368e02d7b9C00803Eb677BDC1359Bd" + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x783c4a0bB6663359281aD4a637D5af68F83ae213", + "constructorArguments": [ + "0x20c44b1E3BeaDA1e9826CFd48BeEDABeE9871cE9", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000001b33611fcc073ab0737011d5512ef673bff7496200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x66b71A4e18FbE09a6977A6520B47fEDdffA82a1c", + "constructorArguments": [ + 43113, + [ + "0x57D4976751978Df23Be86Ec42E27a5749b1BEEDA", + "0x5149B863416DE4faE9e1CB63c9564414f4f0BB18", + "0xd1eA680f4777eb31569AeA1768eAF83bf5587A98" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xae7a78916Ba4c507aCB2F0e474ace545Ff4bF841", + "constructorArguments": [ + "0x20c44b1E3BeaDA1e9826CFd48BeEDABeE9871cE9", + "0xe7e7a7b7000000000000000000000000000000000000000000000000000000000000a86900000000000000000000000066b71a4e18fbe09a6977a6520b47feddffa82a1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x04438ef7622f5412f82915F59caD4f704C61eA48", + "constructorArguments": [ + 80001, + [ + "0x962a63CF73C8bEeF63Ecd753bC57C80241368818", + "0x636d98ED1Cd8e5190900ed53A71E8DA0076c2672", + "0xF9e86B19152CC8437794D01D4Aec8c8a4eb34B20" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xFCc63b537e70652A280c4E7883C5BB5a1700e897", + "constructorArguments": [ + "0x20c44b1E3BeaDA1e9826CFd48BeEDABeE9871cE9", + "0xe7e7a7b7000000000000000000000000000000000000000000000000000000000001388100000000000000000000000004438ef7622f5412f82915f59cad4f704c61ea4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0xb94F96D398eA5BAB5CA528EE9Fdc19afaA825818", + "constructorArguments": [ + 1651715444, + [ + "0x71A66DA2aD833eFCA67b2257B45F6C6BA11e3816", + "0x7306663d18AF55294DFD44782FA5c7E16d94485F", + "0x19cd5f316993ad15d1ac569cd4e70cbc5e1682AC" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x51A0a100e7BC63Ea7821A3a023B6F17fb94FF011", + "constructorArguments": [ + "0x20c44b1E3BeaDA1e9826CFd48BeEDABeE9871cE9", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000062732d74000000000000000000000000b94f96d398ea5bab5ca528ee9fdc19afaa82581800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0xB057Fb841027a8554521DcCdeC3c3474CaC99AB5", + "constructorArguments": [ + 1634872690, + [ + "0x4f78B649646B50b1ff41984cDe8B7f4F36e1071D", + "0xF71E75225DAaf19135b316c76A9105FBdCE4B70A", + "0xDeD3da1c63C37499c627272F46d66e0e46A5BD07" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xe0B988062A0C6492177d64823Ab95a9c256c2a5F", + "constructorArguments": [ + "0x20c44b1E3BeaDA1e9826CFd48BeEDABeE9871cE9", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000061722d72000000000000000000000000b057fb841027a8554521dccdec3c3474cac99ab500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0xA2cf52064c921C11adCd83588CbEa08cc3bfF5d8", + "constructorArguments": [ + 1869622635, + [ + "0x938B35471FF2e968A125F5F3Fc02eDe89F7b90c0", + "0x3B8F4217153e9BB9ae3aA8d314269DD06584081D", + "0x2a58A8982A06FBb3757D1C614c6F3AB733D93e6D" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x628BC518ED1e0E8C6cbcD574EbA0ee29e7F6943E", + "constructorArguments": [ + "0x20c44b1E3BeaDA1e9826CFd48BeEDABeE9871cE9", + "0xe7e7a7b7000000000000000000000000000000000000000000000000000000006f702d6b000000000000000000000000a2cf52064c921c11adcd83588cbea08cc3bff5d800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0xa3AB7E6cE24E6293bD5320A53329Ef2f4DE73fCA", + "constructorArguments": [ + 1635069300, + [ + "0x3dd10F59Ec2f18441Eb0A3fECa489E6D74752260", + "0x10AC12F07488EA10371071fCCC6a7a1E2733fE35", + "0xdf0154233855528A114b4bd640a3FDE2020c3b3B" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xc76E477437065093D353b7d56c81ff54D167B0Ab", + "constructorArguments": [ + "0x20c44b1E3BeaDA1e9826CFd48BeEDABeE9871cE9", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000061752d74000000000000000000000000a3ab7e6ce24e6293bd5320a53329ef2f4de73fca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + } +] diff --git a/typescript/infra/config/environments/testnet/core/verification/arbitrumrinkeby.json b/typescript/infra/config/environments/testnet/core/verification/arbitrumrinkeby.json new file mode 100644 index 000000000..65cf4f714 --- /dev/null +++ b/typescript/infra/config/environments/testnet/core/verification/arbitrumrinkeby.json @@ -0,0 +1,234 @@ +[ + { + "name": "UpgradeBeaconController", + "address": "0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "OutboxValidatorManager", + "address": "0xfc6e546510dC9d76057F1f76633FCFfC188CB213", + "constructorArguments": [ + 1634872690, + [ + "0x4f78B649646B50b1ff41984cDe8B7f4F36e1071D", + "0xF71E75225DAaf19135b316c76A9105FBdCE4B70A", + "0xDeD3da1c63C37499c627272F46d66e0e46A5BD07" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Outbox Implementation", + "address": "0x275aCcCa81cAD931dC6fB6E49ED233Bc99Bed4A7", + "constructorArguments": [1634872690], + "isProxy": false + }, + { + "name": "Outbox UpgradeBeacon", + "address": "0xeb6f11189197223c656807a83B0DD374f9A6dF44", + "constructorArguments": [ + "0x275aCcCa81cAD931dC6fB6E49ED233Bc99Bed4A7", + "0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8" + ], + "isProxy": false + }, + { + "name": "Outbox Proxy", + "address": "0x16B710b86CAd07E6F1C531861a16F5feC29dba37", + "constructorArguments": [ + "0xeb6f11189197223c656807a83B0DD374f9A6dF44", + "0xc4d66de8000000000000000000000000fc6e546510dc9d76057f1f76633fcffc188cb213" + ], + "isProxy": true + }, + { + "name": "InterchainGasPaymaster", + "address": "0x44b764045BfDC68517e10e783E69B376cef196B2", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "AbacusConnectionManager", + "address": "0xC2E36cd6e32e194EE11f15D9273B64461A4D49A2", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "InboxValidatorManager", + "address": "0x589C201a07c26b4725A4A829d772f24423da480B", + "constructorArguments": [ + 1000, + [ + "0x5274Db49971f14457FB1B1743012e2527804Dc73", + "0x636CA13eB829880539c0078Ba9d53214b65603a2", + "0x2F5f8c4Bb89dFC1c4E905f7e3CD35294B62a572B" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Implementation", + "address": "0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD", + "constructorArguments": [1634872690], + "isProxy": false + }, + { + "name": "Inbox UpgradeBeacon", + "address": "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "constructorArguments": [ + "0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD", + "0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8" + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xB08d78F439e55D02C398519eef61606A5926245F", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b700000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000589c201a07c26b4725a4a829d772f24423da480b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x833Dad7FF66884389D5F0cEcba446ffaa7d2837e", + "constructorArguments": [ + 3000, + [ + "0x84B998A059719d4476959FfbE0A0402EC65A7c62", + "0x5aaf0BBBc15f13BcB5f4B2BFf5E2f935F4360bB5", + "0x3d12F6D395A6532De3D45bd668dE43685cb500c3" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xD3d062a5dcBA85ae863618d4c264d2358300c283", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000833dad7ff66884389d5f0cecba446ffaa7d2837e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E", + "constructorArguments": [ + 43113, + [ + "0x57D4976751978Df23Be86Ec42E27a5749b1BEEDA", + "0x5149B863416DE4faE9e1CB63c9564414f4f0BB18", + "0xd1eA680f4777eb31569AeA1768eAF83bf5587A98" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b7000000000000000000000000000000000000000000000000000000000000a8690000000000000000000000007d498740a4572f2b5c6b0a1ba9d1d9dbe207e89e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0xF7F0DaB0BECE4498dAc7eb616e288809D4499371", + "constructorArguments": [ + 80001, + [ + "0x962a63CF73C8bEeF63Ecd753bC57C80241368818", + "0x636d98ED1Cd8e5190900ed53A71E8DA0076c2672", + "0xF9e86B19152CC8437794D01D4Aec8c8a4eb34B20" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000000013881000000000000000000000000f7f0dab0bece4498dac7eb616e288809d449937100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0xd785272D240B07719e417622cbd2cfA0E584d1bd", + "constructorArguments": [ + 1651715444, + [ + "0x71A66DA2aD833eFCA67b2257B45F6C6BA11e3816", + "0x7306663d18AF55294DFD44782FA5c7E16d94485F", + "0x19cd5f316993ad15d1ac569cd4e70cbc5e1682AC" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x666a24F62f7A97BA33c151776Eb3D9441a059eB8", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000062732d74000000000000000000000000d785272d240b07719e417622cbd2cfa0e584d1bd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x598facE78a4302f11E3de0bee1894Da0b2Cb71F8", + "constructorArguments": [ + 1869622635, + [ + "0x938B35471FF2e968A125F5F3Fc02eDe89F7b90c0", + "0x3B8F4217153e9BB9ae3aA8d314269DD06584081D", + "0x2a58A8982A06FBb3757D1C614c6F3AB733D93e6D" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x7914A3349107A7295Bbf2374db5A973d73D1b324", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b7000000000000000000000000000000000000000000000000000000006f702d6b000000000000000000000000598face78a4302f11e3de0bee1894da0b2cb71f800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x527768930D889662Fe7ACF64294871e86e4C2381", + "constructorArguments": [ + 1635069300, + [ + "0x3dd10F59Ec2f18441Eb0A3fECa489E6D74752260", + "0x10AC12F07488EA10371071fCCC6a7a1E2733fE35", + "0xdf0154233855528A114b4bd640a3FDE2020c3b3B" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x5d56B8a669F50193b54319442c6EEE5edD662381", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000061752d74000000000000000000000000527768930d889662fe7acf64294871e86e4c238100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + } +] diff --git a/typescript/infra/config/environments/testnet/core/verification/auroratestnet.json b/typescript/infra/config/environments/testnet/core/verification/auroratestnet.json new file mode 100644 index 000000000..cb2860438 --- /dev/null +++ b/typescript/infra/config/environments/testnet/core/verification/auroratestnet.json @@ -0,0 +1,234 @@ +[ + { + "name": "UpgradeBeaconController", + "address": "0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "OutboxValidatorManager", + "address": "0xfc6e546510dC9d76057F1f76633FCFfC188CB213", + "constructorArguments": [ + 1635069300, + [ + "0x3dd10F59Ec2f18441Eb0A3fECa489E6D74752260", + "0x10AC12F07488EA10371071fCCC6a7a1E2733fE35", + "0xdf0154233855528A114b4bd640a3FDE2020c3b3B" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Outbox Implementation", + "address": "0x275aCcCa81cAD931dC6fB6E49ED233Bc99Bed4A7", + "constructorArguments": [1635069300], + "isProxy": false + }, + { + "name": "Outbox UpgradeBeacon", + "address": "0xeb6f11189197223c656807a83B0DD374f9A6dF44", + "constructorArguments": [ + "0x275aCcCa81cAD931dC6fB6E49ED233Bc99Bed4A7", + "0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8" + ], + "isProxy": false + }, + { + "name": "Outbox Proxy", + "address": "0x16B710b86CAd07E6F1C531861a16F5feC29dba37", + "constructorArguments": [ + "0xeb6f11189197223c656807a83B0DD374f9A6dF44", + "0xc4d66de8000000000000000000000000fc6e546510dc9d76057f1f76633fcffc188cb213" + ], + "isProxy": true + }, + { + "name": "InterchainGasPaymaster", + "address": "0x44b764045BfDC68517e10e783E69B376cef196B2", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "AbacusConnectionManager", + "address": "0xC2E36cd6e32e194EE11f15D9273B64461A4D49A2", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "InboxValidatorManager", + "address": "0x589C201a07c26b4725A4A829d772f24423da480B", + "constructorArguments": [ + 1000, + [ + "0x5274Db49971f14457FB1B1743012e2527804Dc73", + "0x636CA13eB829880539c0078Ba9d53214b65603a2", + "0x2F5f8c4Bb89dFC1c4E905f7e3CD35294B62a572B" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Implementation", + "address": "0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD", + "constructorArguments": [1635069300], + "isProxy": false + }, + { + "name": "Inbox UpgradeBeacon", + "address": "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "constructorArguments": [ + "0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD", + "0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8" + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xB08d78F439e55D02C398519eef61606A5926245F", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b700000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000589c201a07c26b4725a4a829d772f24423da480b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x833Dad7FF66884389D5F0cEcba446ffaa7d2837e", + "constructorArguments": [ + 3000, + [ + "0x84B998A059719d4476959FfbE0A0402EC65A7c62", + "0x5aaf0BBBc15f13BcB5f4B2BFf5E2f935F4360bB5", + "0x3d12F6D395A6532De3D45bd668dE43685cb500c3" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xD3d062a5dcBA85ae863618d4c264d2358300c283", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000833dad7ff66884389d5f0cecba446ffaa7d2837e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E", + "constructorArguments": [ + 43113, + [ + "0x57D4976751978Df23Be86Ec42E27a5749b1BEEDA", + "0x5149B863416DE4faE9e1CB63c9564414f4f0BB18", + "0xd1eA680f4777eb31569AeA1768eAF83bf5587A98" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b7000000000000000000000000000000000000000000000000000000000000a8690000000000000000000000007d498740a4572f2b5c6b0a1ba9d1d9dbe207e89e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0xF7F0DaB0BECE4498dAc7eb616e288809D4499371", + "constructorArguments": [ + 80001, + [ + "0x962a63CF73C8bEeF63Ecd753bC57C80241368818", + "0x636d98ED1Cd8e5190900ed53A71E8DA0076c2672", + "0xF9e86B19152CC8437794D01D4Aec8c8a4eb34B20" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000000013881000000000000000000000000f7f0dab0bece4498dac7eb616e288809d449937100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0xd785272D240B07719e417622cbd2cfA0E584d1bd", + "constructorArguments": [ + 1651715444, + [ + "0x71A66DA2aD833eFCA67b2257B45F6C6BA11e3816", + "0x7306663d18AF55294DFD44782FA5c7E16d94485F", + "0x19cd5f316993ad15d1ac569cd4e70cbc5e1682AC" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x666a24F62f7A97BA33c151776Eb3D9441a059eB8", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000062732d74000000000000000000000000d785272d240b07719e417622cbd2cfa0e584d1bd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x598facE78a4302f11E3de0bee1894Da0b2Cb71F8", + "constructorArguments": [ + 1634872690, + [ + "0x4f78B649646B50b1ff41984cDe8B7f4F36e1071D", + "0xF71E75225DAaf19135b316c76A9105FBdCE4B70A", + "0xDeD3da1c63C37499c627272F46d66e0e46A5BD07" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x7914A3349107A7295Bbf2374db5A973d73D1b324", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000061722d72000000000000000000000000598face78a4302f11e3de0bee1894da0b2cb71f800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x527768930D889662Fe7ACF64294871e86e4C2381", + "constructorArguments": [ + 1869622635, + [ + "0x938B35471FF2e968A125F5F3Fc02eDe89F7b90c0", + "0x3B8F4217153e9BB9ae3aA8d314269DD06584081D", + "0x2a58A8982A06FBb3757D1C614c6F3AB733D93e6D" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x5d56B8a669F50193b54319442c6EEE5edD662381", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b7000000000000000000000000000000000000000000000000000000006f702d6b000000000000000000000000527768930d889662fe7acf64294871e86e4c238100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + } +] diff --git a/typescript/infra/config/environments/testnet/core/verification/bsctestnet.json b/typescript/infra/config/environments/testnet/core/verification/bsctestnet.json new file mode 100644 index 000000000..a679c1c0b --- /dev/null +++ b/typescript/infra/config/environments/testnet/core/verification/bsctestnet.json @@ -0,0 +1,234 @@ +[ + { + "name": "UpgradeBeaconController", + "address": "0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "OutboxValidatorManager", + "address": "0xfc6e546510dC9d76057F1f76633FCFfC188CB213", + "constructorArguments": [ + 1651715444, + [ + "0x71A66DA2aD833eFCA67b2257B45F6C6BA11e3816", + "0x7306663d18AF55294DFD44782FA5c7E16d94485F", + "0x19cd5f316993ad15d1ac569cd4e70cbc5e1682AC" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Outbox Implementation", + "address": "0x275aCcCa81cAD931dC6fB6E49ED233Bc99Bed4A7", + "constructorArguments": [1651715444], + "isProxy": false + }, + { + "name": "Outbox UpgradeBeacon", + "address": "0xeb6f11189197223c656807a83B0DD374f9A6dF44", + "constructorArguments": [ + "0x275aCcCa81cAD931dC6fB6E49ED233Bc99Bed4A7", + "0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8" + ], + "isProxy": false + }, + { + "name": "Outbox Proxy", + "address": "0x16B710b86CAd07E6F1C531861a16F5feC29dba37", + "constructorArguments": [ + "0xeb6f11189197223c656807a83B0DD374f9A6dF44", + "0xc4d66de8000000000000000000000000fc6e546510dc9d76057f1f76633fcffc188cb213" + ], + "isProxy": true + }, + { + "name": "InterchainGasPaymaster", + "address": "0x44b764045BfDC68517e10e783E69B376cef196B2", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "AbacusConnectionManager", + "address": "0xC2E36cd6e32e194EE11f15D9273B64461A4D49A2", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "InboxValidatorManager", + "address": "0x589C201a07c26b4725A4A829d772f24423da480B", + "constructorArguments": [ + 1000, + [ + "0x5274Db49971f14457FB1B1743012e2527804Dc73", + "0x636CA13eB829880539c0078Ba9d53214b65603a2", + "0x2F5f8c4Bb89dFC1c4E905f7e3CD35294B62a572B" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Implementation", + "address": "0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD", + "constructorArguments": [1651715444], + "isProxy": false + }, + { + "name": "Inbox UpgradeBeacon", + "address": "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "constructorArguments": [ + "0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD", + "0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8" + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xB08d78F439e55D02C398519eef61606A5926245F", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b700000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000589c201a07c26b4725a4a829d772f24423da480b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x833Dad7FF66884389D5F0cEcba446ffaa7d2837e", + "constructorArguments": [ + 3000, + [ + "0x84B998A059719d4476959FfbE0A0402EC65A7c62", + "0x5aaf0BBBc15f13BcB5f4B2BFf5E2f935F4360bB5", + "0x3d12F6D395A6532De3D45bd668dE43685cb500c3" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xD3d062a5dcBA85ae863618d4c264d2358300c283", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000833dad7ff66884389d5f0cecba446ffaa7d2837e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E", + "constructorArguments": [ + 43113, + [ + "0x57D4976751978Df23Be86Ec42E27a5749b1BEEDA", + "0x5149B863416DE4faE9e1CB63c9564414f4f0BB18", + "0xd1eA680f4777eb31569AeA1768eAF83bf5587A98" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b7000000000000000000000000000000000000000000000000000000000000a8690000000000000000000000007d498740a4572f2b5c6b0a1ba9d1d9dbe207e89e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0xF7F0DaB0BECE4498dAc7eb616e288809D4499371", + "constructorArguments": [ + 80001, + [ + "0x962a63CF73C8bEeF63Ecd753bC57C80241368818", + "0x636d98ED1Cd8e5190900ed53A71E8DA0076c2672", + "0xF9e86B19152CC8437794D01D4Aec8c8a4eb34B20" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000000013881000000000000000000000000f7f0dab0bece4498dac7eb616e288809d449937100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0xd785272D240B07719e417622cbd2cfA0E584d1bd", + "constructorArguments": [ + 1634872690, + [ + "0x4f78B649646B50b1ff41984cDe8B7f4F36e1071D", + "0xF71E75225DAaf19135b316c76A9105FBdCE4B70A", + "0xDeD3da1c63C37499c627272F46d66e0e46A5BD07" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x666a24F62f7A97BA33c151776Eb3D9441a059eB8", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000061722d72000000000000000000000000d785272d240b07719e417622cbd2cfa0e584d1bd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x598facE78a4302f11E3de0bee1894Da0b2Cb71F8", + "constructorArguments": [ + 1869622635, + [ + "0x938B35471FF2e968A125F5F3Fc02eDe89F7b90c0", + "0x3B8F4217153e9BB9ae3aA8d314269DD06584081D", + "0x2a58A8982A06FBb3757D1C614c6F3AB733D93e6D" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x7914A3349107A7295Bbf2374db5A973d73D1b324", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b7000000000000000000000000000000000000000000000000000000006f702d6b000000000000000000000000598face78a4302f11e3de0bee1894da0b2cb71f800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x527768930D889662Fe7ACF64294871e86e4C2381", + "constructorArguments": [ + 1635069300, + [ + "0x3dd10F59Ec2f18441Eb0A3fECa489E6D74752260", + "0x10AC12F07488EA10371071fCCC6a7a1E2733fE35", + "0xdf0154233855528A114b4bd640a3FDE2020c3b3B" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x5d56B8a669F50193b54319442c6EEE5edD662381", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000061752d74000000000000000000000000527768930d889662fe7acf64294871e86e4c238100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + } +] diff --git a/typescript/infra/config/environments/testnet/core/verification/fuji.json b/typescript/infra/config/environments/testnet/core/verification/fuji.json new file mode 100644 index 000000000..ff6eff501 --- /dev/null +++ b/typescript/infra/config/environments/testnet/core/verification/fuji.json @@ -0,0 +1,234 @@ +[ + { + "name": "UpgradeBeaconController", + "address": "0xcf5BaaF976C80a66Fa7839715C45788f60041A33", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "OutboxValidatorManager", + "address": "0x58483b754Abb1E8947BE63d6b95DF75b8249543A", + "constructorArguments": [ + 43113, + [ + "0x57D4976751978Df23Be86Ec42E27a5749b1BEEDA", + "0x5149B863416DE4faE9e1CB63c9564414f4f0BB18", + "0xd1eA680f4777eb31569AeA1768eAF83bf5587A98" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Outbox Implementation", + "address": "0x679Dc08cC3A4acFeea2f7CAFAa37561aE0b41Ce7", + "constructorArguments": [43113], + "isProxy": false + }, + { + "name": "Outbox UpgradeBeacon", + "address": "0x4926a10788306D84202A2aDbd290b7743146Cc17", + "constructorArguments": [ + "0x679Dc08cC3A4acFeea2f7CAFAa37561aE0b41Ce7", + "0xcf5BaaF976C80a66Fa7839715C45788f60041A33" + ], + "isProxy": false + }, + { + "name": "Outbox Proxy", + "address": "0x98AAE089CaD930C64a76dD2247a2aC5773a4B8cE", + "constructorArguments": [ + "0x4926a10788306D84202A2aDbd290b7743146Cc17", + "0xc4d66de800000000000000000000000058483b754abb1e8947be63d6b95df75b8249543a" + ], + "isProxy": true + }, + { + "name": "InterchainGasPaymaster", + "address": "0x07009DA2249c388aD0f416a235AfE90D784e1aAc", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "AbacusConnectionManager", + "address": "0xF7561c34f17A32D5620583A3397C304e7038a7F6", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "InboxValidatorManager", + "address": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e", + "constructorArguments": [ + 1000, + [ + "0x5274Db49971f14457FB1B1743012e2527804Dc73", + "0x636CA13eB829880539c0078Ba9d53214b65603a2", + "0x2F5f8c4Bb89dFC1c4E905f7e3CD35294B62a572B" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Implementation", + "address": "0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450", + "constructorArguments": [43113], + "isProxy": false + }, + { + "name": "Inbox UpgradeBeacon", + "address": "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "constructorArguments": [ + "0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450", + "0xcf5BaaF976C80a66Fa7839715C45788f60041A33" + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x68311418D79fE8d96599384ED767d225635d88a8", + "constructorArguments": [ + "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "0xe7e7a7b700000000000000000000000000000000000000000000000000000000000003e80000000000000000000000005ce550e14b82a9f32a0aaf9efc4fce548d8a0b3e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x863E8c26621c52ACa1849C53500606e73BA272F0", + "constructorArguments": [ + 3000, + [ + "0x84B998A059719d4476959FfbE0A0402EC65A7c62", + "0x5aaf0BBBc15f13BcB5f4B2BFf5E2f935F4360bB5", + "0x3d12F6D395A6532De3D45bd668dE43685cb500c3" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x6b1bb4ce664Bb4164AEB4d3D2E7DE7450DD8084C", + "constructorArguments": [ + "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000863e8c26621c52aca1849c53500606e73ba272f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0xAb9B273366D794B7F80B4378bc8Aaca75C6178E2", + "constructorArguments": [ + 80001, + [ + "0x962a63CF73C8bEeF63Ecd753bC57C80241368818", + "0x636d98ED1Cd8e5190900ed53A71E8DA0076c2672", + "0xF9e86B19152CC8437794D01D4Aec8c8a4eb34B20" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x86fb9F1c124fB20ff130C41a79a432F770f67AFD", + "constructorArguments": [ + "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000000013881000000000000000000000000ab9b273366d794b7f80b4378bc8aaca75c6178e200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x19Be55D859368e02d7b9C00803Eb677BDC1359Bd", + "constructorArguments": [ + 1651715444, + [ + "0x71A66DA2aD833eFCA67b2257B45F6C6BA11e3816", + "0x7306663d18AF55294DFD44782FA5c7E16d94485F", + "0x19cd5f316993ad15d1ac569cd4e70cbc5e1682AC" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x5821f3B6eE05F3dC62b43B74AB1C8F8E6904b1C8", + "constructorArguments": [ + "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000062732d7400000000000000000000000019be55d859368e02d7b9c00803eb677bdc1359bd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0xc756cFc1b7d0d4646589EDf10eD54b201237F5e8", + "constructorArguments": [ + 1634872690, + [ + "0x4f78B649646B50b1ff41984cDe8B7f4F36e1071D", + "0xF71E75225DAaf19135b316c76A9105FBdCE4B70A", + "0xDeD3da1c63C37499c627272F46d66e0e46A5BD07" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xD0680F80F4f947968206806C2598Cbc5b6FE5b03", + "constructorArguments": [ + "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000061722d72000000000000000000000000c756cfc1b7d0d4646589edf10ed54b201237f5e800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x433f7d6d0cB9eb8FF2902Ad01C1BEd6C09934a33", + "constructorArguments": [ + 1869622635, + [ + "0x938B35471FF2e968A125F5F3Fc02eDe89F7b90c0", + "0x3B8F4217153e9BB9ae3aA8d314269DD06584081D", + "0x2a58A8982A06FBb3757D1C614c6F3AB733D93e6D" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x75f3E2a4f424401195A5E176246Ecc9f7e7680ff", + "constructorArguments": [ + "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "0xe7e7a7b7000000000000000000000000000000000000000000000000000000006f702d6b000000000000000000000000433f7d6d0cb9eb8ff2902ad01c1bed6c09934a3300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x1b33611fCc073aB0737011d5512EF673Bff74962", + "constructorArguments": [ + 1635069300, + [ + "0x3dd10F59Ec2f18441Eb0A3fECa489E6D74752260", + "0x10AC12F07488EA10371071fCCC6a7a1E2733fE35", + "0xdf0154233855528A114b4bd640a3FDE2020c3b3B" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C", + "constructorArguments": [ + "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000061752d740000000000000000000000001b33611fcc073ab0737011d5512ef673bff7496200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + } +] diff --git a/typescript/infra/config/environments/testnet/core/verification/kovan.json b/typescript/infra/config/environments/testnet/core/verification/kovan.json new file mode 100644 index 000000000..264c9e34d --- /dev/null +++ b/typescript/infra/config/environments/testnet/core/verification/kovan.json @@ -0,0 +1,234 @@ +[ + { + "name": "UpgradeBeaconController", + "address": "0xcf5BaaF976C80a66Fa7839715C45788f60041A33", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "OutboxValidatorManager", + "address": "0x58483b754Abb1E8947BE63d6b95DF75b8249543A", + "constructorArguments": [ + 3000, + [ + "0x84B998A059719d4476959FfbE0A0402EC65A7c62", + "0x5aaf0BBBc15f13BcB5f4B2BFf5E2f935F4360bB5", + "0x3d12F6D395A6532De3D45bd668dE43685cb500c3" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Outbox Implementation", + "address": "0x679Dc08cC3A4acFeea2f7CAFAa37561aE0b41Ce7", + "constructorArguments": [3000], + "isProxy": false + }, + { + "name": "Outbox UpgradeBeacon", + "address": "0x4926a10788306D84202A2aDbd290b7743146Cc17", + "constructorArguments": [ + "0x679Dc08cC3A4acFeea2f7CAFAa37561aE0b41Ce7", + "0xcf5BaaF976C80a66Fa7839715C45788f60041A33" + ], + "isProxy": false + }, + { + "name": "Outbox Proxy", + "address": "0x98AAE089CaD930C64a76dD2247a2aC5773a4B8cE", + "constructorArguments": [ + "0x4926a10788306D84202A2aDbd290b7743146Cc17", + "0xc4d66de800000000000000000000000058483b754abb1e8947be63d6b95df75b8249543a" + ], + "isProxy": true + }, + { + "name": "InterchainGasPaymaster", + "address": "0x07009DA2249c388aD0f416a235AfE90D784e1aAc", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "AbacusConnectionManager", + "address": "0xF7561c34f17A32D5620583A3397C304e7038a7F6", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "InboxValidatorManager", + "address": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e", + "constructorArguments": [ + 1000, + [ + "0x5274Db49971f14457FB1B1743012e2527804Dc73", + "0x636CA13eB829880539c0078Ba9d53214b65603a2", + "0x2F5f8c4Bb89dFC1c4E905f7e3CD35294B62a572B" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Implementation", + "address": "0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450", + "constructorArguments": [3000], + "isProxy": false + }, + { + "name": "Inbox UpgradeBeacon", + "address": "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "constructorArguments": [ + "0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450", + "0xcf5BaaF976C80a66Fa7839715C45788f60041A33" + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x68311418D79fE8d96599384ED767d225635d88a8", + "constructorArguments": [ + "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "0xe7e7a7b700000000000000000000000000000000000000000000000000000000000003e80000000000000000000000005ce550e14b82a9f32a0aaf9efc4fce548d8a0b3e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x863E8c26621c52ACa1849C53500606e73BA272F0", + "constructorArguments": [ + 43113, + [ + "0x57D4976751978Df23Be86Ec42E27a5749b1BEEDA", + "0x5149B863416DE4faE9e1CB63c9564414f4f0BB18", + "0xd1eA680f4777eb31569AeA1768eAF83bf5587A98" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x6b1bb4ce664Bb4164AEB4d3D2E7DE7450DD8084C", + "constructorArguments": [ + "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "0xe7e7a7b7000000000000000000000000000000000000000000000000000000000000a869000000000000000000000000863e8c26621c52aca1849c53500606e73ba272f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0xAb9B273366D794B7F80B4378bc8Aaca75C6178E2", + "constructorArguments": [ + 80001, + [ + "0x962a63CF73C8bEeF63Ecd753bC57C80241368818", + "0x636d98ED1Cd8e5190900ed53A71E8DA0076c2672", + "0xF9e86B19152CC8437794D01D4Aec8c8a4eb34B20" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x86fb9F1c124fB20ff130C41a79a432F770f67AFD", + "constructorArguments": [ + "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000000013881000000000000000000000000ab9b273366d794b7f80b4378bc8aaca75c6178e200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x19Be55D859368e02d7b9C00803Eb677BDC1359Bd", + "constructorArguments": [ + 1651715444, + [ + "0x71A66DA2aD833eFCA67b2257B45F6C6BA11e3816", + "0x7306663d18AF55294DFD44782FA5c7E16d94485F", + "0x19cd5f316993ad15d1ac569cd4e70cbc5e1682AC" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x5821f3B6eE05F3dC62b43B74AB1C8F8E6904b1C8", + "constructorArguments": [ + "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000062732d7400000000000000000000000019be55d859368e02d7b9c00803eb677bdc1359bd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0xc756cFc1b7d0d4646589EDf10eD54b201237F5e8", + "constructorArguments": [ + 1634872690, + [ + "0x4f78B649646B50b1ff41984cDe8B7f4F36e1071D", + "0xF71E75225DAaf19135b316c76A9105FBdCE4B70A", + "0xDeD3da1c63C37499c627272F46d66e0e46A5BD07" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xD0680F80F4f947968206806C2598Cbc5b6FE5b03", + "constructorArguments": [ + "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000061722d72000000000000000000000000c756cfc1b7d0d4646589edf10ed54b201237f5e800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x433f7d6d0cB9eb8FF2902Ad01C1BEd6C09934a33", + "constructorArguments": [ + 1869622635, + [ + "0x938B35471FF2e968A125F5F3Fc02eDe89F7b90c0", + "0x3B8F4217153e9BB9ae3aA8d314269DD06584081D", + "0x2a58A8982A06FBb3757D1C614c6F3AB733D93e6D" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x75f3E2a4f424401195A5E176246Ecc9f7e7680ff", + "constructorArguments": [ + "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "0xe7e7a7b7000000000000000000000000000000000000000000000000000000006f702d6b000000000000000000000000433f7d6d0cb9eb8ff2902ad01c1bed6c09934a3300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x1b33611fCc073aB0737011d5512EF673Bff74962", + "constructorArguments": [ + 1635069300, + [ + "0x3dd10F59Ec2f18441Eb0A3fECa489E6D74752260", + "0x10AC12F07488EA10371071fCCC6a7a1E2733fE35", + "0xdf0154233855528A114b4bd640a3FDE2020c3b3B" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C", + "constructorArguments": [ + "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000061752d740000000000000000000000001b33611fcc073ab0737011d5512ef673bff7496200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + } +] diff --git a/typescript/infra/config/environments/testnet/core/verification/mumbai.json b/typescript/infra/config/environments/testnet/core/verification/mumbai.json new file mode 100644 index 000000000..91c4e2d6f --- /dev/null +++ b/typescript/infra/config/environments/testnet/core/verification/mumbai.json @@ -0,0 +1,234 @@ +[ + { + "name": "UpgradeBeaconController", + "address": "0x6966b0E55883d49BFB24539356a2f8A673E02039", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "OutboxValidatorManager", + "address": "0x54148470292C24345fb828B003461a9444414517", + "constructorArguments": [ + 80001, + [ + "0x962a63CF73C8bEeF63Ecd753bC57C80241368818", + "0x636d98ED1Cd8e5190900ed53A71E8DA0076c2672", + "0xF9e86B19152CC8437794D01D4Aec8c8a4eb34B20" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Outbox Implementation", + "address": "0x589C201a07c26b4725A4A829d772f24423da480B", + "constructorArguments": [80001], + "isProxy": false + }, + { + "name": "Outbox UpgradeBeacon", + "address": "0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD", + "constructorArguments": [ + "0x589C201a07c26b4725A4A829d772f24423da480B", + "0x6966b0E55883d49BFB24539356a2f8A673E02039" + ], + "isProxy": false + }, + { + "name": "Outbox Proxy", + "address": "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "constructorArguments": [ + "0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD", + "0xc4d66de800000000000000000000000054148470292c24345fb828b003461a9444414517" + ], + "isProxy": true + }, + { + "name": "InterchainGasPaymaster", + "address": "0xB08d78F439e55D02C398519eef61606A5926245F", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "AbacusConnectionManager", + "address": "0x46f7C5D896bbeC89bE1B19e4485e59b4Be49e9Cc", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "InboxValidatorManager", + "address": "0x304cAb315c93B87AAdb2B826A791b2c1Bf749996", + "constructorArguments": [ + 1000, + [ + "0x5274Db49971f14457FB1B1743012e2527804Dc73", + "0x636CA13eB829880539c0078Ba9d53214b65603a2", + "0x2F5f8c4Bb89dFC1c4E905f7e3CD35294B62a572B" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Implementation", + "address": "0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E", + "constructorArguments": [80001], + "isProxy": false + }, + { + "name": "Inbox UpgradeBeacon", + "address": "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "constructorArguments": [ + "0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E", + "0x6966b0E55883d49BFB24539356a2f8A673E02039" + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x1D5EbC3e15e9ECDe0e3530C85899556797eeaea5", + "constructorArguments": [ + "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "0xe7e7a7b700000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000304cab315c93b87aadb2b826a791b2c1bf74999600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc", + "constructorArguments": [ + 3000, + [ + "0x84B998A059719d4476959FfbE0A0402EC65A7c62", + "0x5aaf0BBBc15f13BcB5f4B2BFf5E2f935F4360bB5", + "0x3d12F6D395A6532De3D45bd668dE43685cb500c3" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x0526E47C49742C15F8817ef8cf0d8FFc72139D4F", + "constructorArguments": [ + "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000fc8d0d2e15a36f1a3f3ae3cb127b706c1f23aadc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x666a24F62f7A97BA33c151776Eb3D9441a059eB8", + "constructorArguments": [ + 43113, + [ + "0x57D4976751978Df23Be86Ec42E27a5749b1BEEDA", + "0x5149B863416DE4faE9e1CB63c9564414f4f0BB18", + "0xd1eA680f4777eb31569AeA1768eAF83bf5587A98" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xef48bd850E5827B96B55C4D28FB32Bbaa73616F2", + "constructorArguments": [ + "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "0xe7e7a7b7000000000000000000000000000000000000000000000000000000000000a869000000000000000000000000666a24f62f7a97ba33c151776eb3d9441a059eb800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x7914A3349107A7295Bbf2374db5A973d73D1b324", + "constructorArguments": [ + 1651715444, + [ + "0x71A66DA2aD833eFCA67b2257B45F6C6BA11e3816", + "0x7306663d18AF55294DFD44782FA5c7E16d94485F", + "0x19cd5f316993ad15d1ac569cd4e70cbc5e1682AC" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x3C5154a193D6e2955650f9305c8d80c18C814A68", + "constructorArguments": [ + "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000062732d740000000000000000000000007914a3349107a7295bbf2374db5a973d73d1b32400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x5d56B8a669F50193b54319442c6EEE5edD662381", + "constructorArguments": [ + 1634872690, + [ + "0x4f78B649646B50b1ff41984cDe8B7f4F36e1071D", + "0xF71E75225DAaf19135b316c76A9105FBdCE4B70A", + "0xDeD3da1c63C37499c627272F46d66e0e46A5BD07" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x05Ea36Caee7d92C173334C9D97DcD39ABdCB2b69", + "constructorArguments": [ + "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000061722d720000000000000000000000005d56b8a669f50193b54319442c6eee5edd66238100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x58483b754Abb1E8947BE63d6b95DF75b8249543A", + "constructorArguments": [ + 1869622635, + [ + "0x938B35471FF2e968A125F5F3Fc02eDe89F7b90c0", + "0x3B8F4217153e9BB9ae3aA8d314269DD06584081D", + "0x2a58A8982A06FBb3757D1C614c6F3AB733D93e6D" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x679Dc08cC3A4acFeea2f7CAFAa37561aE0b41Ce7", + "constructorArguments": [ + "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "0xe7e7a7b7000000000000000000000000000000000000000000000000000000006f702d6b00000000000000000000000058483b754abb1e8947be63d6b95df75b8249543a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x98AAE089CaD930C64a76dD2247a2aC5773a4B8cE", + "constructorArguments": [ + 1635069300, + [ + "0x3dd10F59Ec2f18441Eb0A3fECa489E6D74752260", + "0x10AC12F07488EA10371071fCCC6a7a1E2733fE35", + "0xdf0154233855528A114b4bd640a3FDE2020c3b3B" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x07009DA2249c388aD0f416a235AfE90D784e1aAc", + "constructorArguments": [ + "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000061752d7400000000000000000000000098aae089cad930c64a76dd2247a2ac5773a4b8ce00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + } +] diff --git a/typescript/infra/config/environments/testnet/core/verification/optimismkovan.json b/typescript/infra/config/environments/testnet/core/verification/optimismkovan.json new file mode 100644 index 000000000..edffbaa1f --- /dev/null +++ b/typescript/infra/config/environments/testnet/core/verification/optimismkovan.json @@ -0,0 +1,234 @@ +[ + { + "name": "UpgradeBeaconController", + "address": "0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "OutboxValidatorManager", + "address": "0xfc6e546510dC9d76057F1f76633FCFfC188CB213", + "constructorArguments": [ + 1869622635, + [ + "0x938B35471FF2e968A125F5F3Fc02eDe89F7b90c0", + "0x3B8F4217153e9BB9ae3aA8d314269DD06584081D", + "0x2a58A8982A06FBb3757D1C614c6F3AB733D93e6D" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Outbox Implementation", + "address": "0x275aCcCa81cAD931dC6fB6E49ED233Bc99Bed4A7", + "constructorArguments": [1869622635], + "isProxy": false + }, + { + "name": "Outbox UpgradeBeacon", + "address": "0xeb6f11189197223c656807a83B0DD374f9A6dF44", + "constructorArguments": [ + "0x275aCcCa81cAD931dC6fB6E49ED233Bc99Bed4A7", + "0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8" + ], + "isProxy": false + }, + { + "name": "Outbox Proxy", + "address": "0x16B710b86CAd07E6F1C531861a16F5feC29dba37", + "constructorArguments": [ + "0xeb6f11189197223c656807a83B0DD374f9A6dF44", + "0xc4d66de8000000000000000000000000fc6e546510dc9d76057f1f76633fcffc188cb213" + ], + "isProxy": true + }, + { + "name": "InterchainGasPaymaster", + "address": "0x44b764045BfDC68517e10e783E69B376cef196B2", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "AbacusConnectionManager", + "address": "0xC2E36cd6e32e194EE11f15D9273B64461A4D49A2", + "constructorArguments": [], + "isProxy": false + }, + { + "name": "InboxValidatorManager", + "address": "0x589C201a07c26b4725A4A829d772f24423da480B", + "constructorArguments": [ + 1000, + [ + "0x5274Db49971f14457FB1B1743012e2527804Dc73", + "0x636CA13eB829880539c0078Ba9d53214b65603a2", + "0x2F5f8c4Bb89dFC1c4E905f7e3CD35294B62a572B" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Implementation", + "address": "0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD", + "constructorArguments": [1869622635], + "isProxy": false + }, + { + "name": "Inbox UpgradeBeacon", + "address": "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "constructorArguments": [ + "0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD", + "0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8" + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xB08d78F439e55D02C398519eef61606A5926245F", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b700000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000589c201a07c26b4725a4a829d772f24423da480b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x833Dad7FF66884389D5F0cEcba446ffaa7d2837e", + "constructorArguments": [ + 3000, + [ + "0x84B998A059719d4476959FfbE0A0402EC65A7c62", + "0x5aaf0BBBc15f13BcB5f4B2BFf5E2f935F4360bB5", + "0x3d12F6D395A6532De3D45bd668dE43685cb500c3" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xD3d062a5dcBA85ae863618d4c264d2358300c283", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000833dad7ff66884389d5f0cecba446ffaa7d2837e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E", + "constructorArguments": [ + 43113, + [ + "0x57D4976751978Df23Be86Ec42E27a5749b1BEEDA", + "0x5149B863416DE4faE9e1CB63c9564414f4f0BB18", + "0xd1eA680f4777eb31569AeA1768eAF83bf5587A98" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x7FE7EA170cf08A25C2ff315814D96D93C311E692", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b7000000000000000000000000000000000000000000000000000000000000a8690000000000000000000000007d498740a4572f2b5c6b0a1ba9d1d9dbe207e89e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0xF7F0DaB0BECE4498dAc7eb616e288809D4499371", + "constructorArguments": [ + 80001, + [ + "0x962a63CF73C8bEeF63Ecd753bC57C80241368818", + "0x636d98ED1Cd8e5190900ed53A71E8DA0076c2672", + "0xF9e86B19152CC8437794D01D4Aec8c8a4eb34B20" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000000013881000000000000000000000000f7f0dab0bece4498dac7eb616e288809d449937100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0xd785272D240B07719e417622cbd2cfA0E584d1bd", + "constructorArguments": [ + 1651715444, + [ + "0x71A66DA2aD833eFCA67b2257B45F6C6BA11e3816", + "0x7306663d18AF55294DFD44782FA5c7E16d94485F", + "0x19cd5f316993ad15d1ac569cd4e70cbc5e1682AC" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x666a24F62f7A97BA33c151776Eb3D9441a059eB8", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000062732d74000000000000000000000000d785272d240b07719e417622cbd2cfa0e584d1bd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x598facE78a4302f11E3de0bee1894Da0b2Cb71F8", + "constructorArguments": [ + 1634872690, + [ + "0x4f78B649646B50b1ff41984cDe8B7f4F36e1071D", + "0xF71E75225DAaf19135b316c76A9105FBdCE4B70A", + "0xDeD3da1c63C37499c627272F46d66e0e46A5BD07" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x7914A3349107A7295Bbf2374db5A973d73D1b324", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000061722d72000000000000000000000000598face78a4302f11e3de0bee1894da0b2cb71f800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + }, + { + "name": "InboxValidatorManager", + "address": "0x527768930D889662Fe7ACF64294871e86e4C2381", + "constructorArguments": [ + 1635069300, + [ + "0x3dd10F59Ec2f18441Eb0A3fECa489E6D74752260", + "0x10AC12F07488EA10371071fCCC6a7a1E2733fE35", + "0xdf0154233855528A114b4bd640a3FDE2020c3b3B" + ], + 2 + ], + "isProxy": false + }, + { + "name": "Inbox Proxy", + "address": "0x5d56B8a669F50193b54319442c6EEE5edD662381", + "constructorArguments": [ + "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "0xe7e7a7b70000000000000000000000000000000000000000000000000000000061752d74000000000000000000000000527768930d889662fe7acf64294871e86e4c238100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "isProxy": true + } +] diff --git a/typescript/infra/config/environments/testnet/domains.ts b/typescript/infra/config/environments/testnet/domains.ts new file mode 100644 index 000000000..8407852a4 --- /dev/null +++ b/typescript/infra/config/environments/testnet/domains.ts @@ -0,0 +1,38 @@ +import { registerDomains } from '@abacus-network/deploy'; +import { MultiProvider } from '@abacus-network/sdk'; + +import { fetchSigner } from '../../../src/config/chain'; +import { ENVIRONMENTS_ENUM } from '../../../src/config/environment'; +import { configs } from '../../networks/testnets'; + +export type TestnetNetworks = + | 'alfajores' + | 'kovan' + | 'fuji' + | 'mumbai' + | 'bsctestnet' + | 'arbitrumrinkeby' + | 'optimismkovan' + | 'auroratestnet'; + +export const domainNames: TestnetNetworks[] = [ + 'alfajores', + 'kovan', + 'fuji', + 'mumbai', + 'bsctestnet', + 'arbitrumrinkeby', + 'optimismkovan', + 'auroratestnet', +]; + +export const registerMultiProvider = async (multiProvider: MultiProvider) => { + registerDomains(domainNames, configs, multiProvider); + + await Promise.all( + domainNames.map(async (name) => { + const signer = await fetchSigner(ENVIRONMENTS_ENUM.Testnet, name); + multiProvider.registerSigner(name, signer); + }), + ); +}; diff --git a/typescript/infra/config/environments/testnet/governance.ts b/typescript/infra/config/environments/testnet/governance.ts new file mode 100644 index 000000000..b02693694 --- /dev/null +++ b/typescript/infra/config/environments/testnet/governance.ts @@ -0,0 +1,32 @@ +import { GovernanceConfig } from '../../../src/governance'; + +export const governance: GovernanceConfig = { + recoveryTimelock: 180, + addresses: { + alfajores: { + recoveryManager: '0xfaD1C94469700833717Fa8a3017278BC1cA8031C', + governor: '0xfaD1C94469700833717Fa8a3017278BC1cA8031C', + }, + kovan: { + recoveryManager: '0xfaD1C94469700833717Fa8a3017278BC1cA8031C', + }, + fuji: { + recoveryManager: '0xfaD1C94469700833717Fa8a3017278BC1cA8031C', + }, + mumbai: { + recoveryManager: '0xfaD1C94469700833717Fa8a3017278BC1cA8031C', + }, + bsctestnet: { + recoveryManager: '0xfaD1C94469700833717Fa8a3017278BC1cA8031C', + }, + arbitrumrinkeby: { + recoveryManager: '0xfaD1C94469700833717Fa8a3017278BC1cA8031C', + }, + optimismkovan: { + recoveryManager: '0xfaD1C94469700833717Fa8a3017278BC1cA8031C', + }, + auroratestnet: { + recoveryManager: '0xfaD1C94469700833717Fa8a3017278BC1cA8031C', + }, + }, +}; diff --git a/typescript/infra/config/environments/testnet/index.ts b/typescript/infra/config/environments/testnet/index.ts new file mode 100644 index 000000000..1c26aca2a --- /dev/null +++ b/typescript/infra/config/environments/testnet/index.ts @@ -0,0 +1,5 @@ +export { agent } from './agent'; +export { core } from './core'; +export { domainNames, registerMultiProvider } from './domains'; +export { governance } from './governance'; +export { infrastructure } from './infrastructure'; diff --git a/typescript/infra/config/environments/testnet/infrastructure.ts b/typescript/infra/config/environments/testnet/infrastructure.ts new file mode 100644 index 000000000..05682d37c --- /dev/null +++ b/typescript/infra/config/environments/testnet/infrastructure.ts @@ -0,0 +1,37 @@ +import { InfrastructureConfig } from '../../../src/config'; + +export const infrastructure: InfrastructureConfig = { + kubernetes: { + clusterName: 'abacus-testnet', + }, + monitoring: { + namespace: 'monitoring', + prometheus: { + deployName: 'prometheus', + // Node exporter does not work with GKE Autopilot + nodeExporterEnabled: false, + helmChart: { + // See https://github.com/prometheus-community/helm-charts#usage + repository: { + name: 'prometheus-community', + url: 'https://prometheus-community.github.io/helm-charts', + }, + name: 'prometheus', + version: '15.0.1', + }, + }, + }, + externalSecrets: { + namespace: 'external-secrets', + helmChart: { + repository: { + name: 'external-secrets', + url: 'https://charts.external-secrets.io', + }, + name: 'external-secrets', + version: '0.5.1', + }, + gcpServiceAccountName: 'k8s-external-secrets-testnet', + accessibleGCPSecretPrefixes: ['abacus-testnet-', 'testnet-'], + }, +}; diff --git a/typescript/infra/config/environments/testnet/validators.ts b/typescript/infra/config/environments/testnet/validators.ts new file mode 100644 index 000000000..d11e3b2bb --- /dev/null +++ b/typescript/infra/config/environments/testnet/validators.ts @@ -0,0 +1,248 @@ +import { ChainName } from '@abacus-network/sdk'; + +import { + ChainValidatorSets, + CheckpointSyncerType, +} from '../../../src/config/agent'; + +import { TestnetNetworks } from './domains'; + +const s3BucketRegion = 'us-east-1'; + +const s3BucketName = (chainName: ChainName, index: number) => + `abacus-testnet-${chainName}-validator-${index}`; + +export const validators: ChainValidatorSets = { + alfajores: { + threshold: 2, + validators: [ + { + address: '0x5274db49971f14457fb1b1743012e2527804dc73', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('alfajores', 0), + region: s3BucketRegion, + }, + }, + { + address: '0x636ca13eb829880539c0078ba9d53214b65603a2', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('alfajores', 1), + region: s3BucketRegion, + }, + }, + { + address: '0x2f5f8c4bb89dfc1c4e905f7e3cd35294b62a572b', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('alfajores', 2), + region: s3BucketRegion, + }, + }, + ], + }, + kovan: { + threshold: 2, + validators: [ + { + address: '0x84b998a059719d4476959ffbe0a0402ec65a7c62', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('kovan', 0), + region: s3BucketRegion, + }, + }, + { + address: '0x5aaf0bbbc15f13bcb5f4b2bff5e2f935f4360bb5', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('kovan', 1), + region: s3BucketRegion, + }, + }, + { + address: '0x3d12f6d395a6532de3d45bd668de43685cb500c3', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('kovan', 2), + region: s3BucketRegion, + }, + }, + ], + }, + fuji: { + threshold: 2, + validators: [ + { + address: '0x57d4976751978df23be86ec42e27a5749b1beeda', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('fuji', 0), + region: s3BucketRegion, + }, + }, + { + address: '0x5149b863416de4fae9e1cb63c9564414f4f0bb18', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('fuji', 1), + region: s3BucketRegion, + }, + }, + { + address: '0xd1ea680f4777eb31569aea1768eaf83bf5587a98', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('fuji', 2), + region: s3BucketRegion, + }, + }, + ], + }, + mumbai: { + threshold: 2, + validators: [ + { + address: '0x962a63cf73c8beef63ecd753bc57c80241368818', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('mumbai', 0), + region: s3BucketRegion, + }, + }, + { + address: '0x636d98ed1cd8e5190900ed53a71e8da0076c2672', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('mumbai', 1), + region: s3BucketRegion, + }, + }, + { + address: '0xf9e86b19152cc8437794d01d4aec8c8a4eb34b20', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('mumbai', 2), + region: s3BucketRegion, + }, + }, + ], + }, + bsctestnet: { + threshold: 2, + validators: [ + { + address: '0x71a66da2ad833efca67b2257b45f6c6ba11e3816', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('bsctestnet', 0), + region: s3BucketRegion, + }, + }, + { + address: '0x7306663d18af55294dfd44782fa5c7e16d94485f', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('bsctestnet', 1), + region: s3BucketRegion, + }, + }, + { + address: '0x19cd5f316993ad15d1ac569cd4e70cbc5e1682ac', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('bsctestnet', 2), + region: s3BucketRegion, + }, + }, + ], + }, + arbitrumrinkeby: { + threshold: 2, + validators: [ + { + address: '0x4f78b649646b50b1ff41984cde8b7f4f36e1071d', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('arbitrumrinkeby', 0), + region: s3BucketRegion, + }, + }, + { + address: '0xf71e75225daaf19135b316c76a9105fbdce4b70a', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('arbitrumrinkeby', 1), + region: s3BucketRegion, + }, + }, + { + address: '0xded3da1c63c37499c627272f46d66e0e46a5bd07', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('arbitrumrinkeby', 2), + region: s3BucketRegion, + }, + }, + ], + }, + optimismkovan: { + threshold: 2, + validators: [ + { + address: '0x938b35471ff2e968a125f5f3fc02ede89f7b90c0', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('optimismkovan', 0), + region: s3BucketRegion, + }, + }, + { + address: '0x3b8f4217153e9bb9ae3aa8d314269dd06584081d', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('optimismkovan', 1), + region: s3BucketRegion, + }, + }, + { + address: '0x2a58a8982a06fbb3757d1c614c6f3ab733d93e6d', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('optimismkovan', 2), + region: s3BucketRegion, + }, + }, + ], + }, + auroratestnet: { + threshold: 2, + validators: [ + { + address: '0x3dd10f59ec2f18441eb0a3feca489e6d74752260', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('auroratestnet', 0), + region: s3BucketRegion, + }, + }, + { + address: '0x10ac12f07488ea10371071fccc6a7a1e2733fe35', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('auroratestnet', 1), + region: s3BucketRegion, + }, + }, + { + address: '0xdf0154233855528a114b4bd640a3fde2020c3b3b', + checkpointSyncer: { + type: CheckpointSyncerType.S3, + bucket: s3BucketName('auroratestnet', 2), + region: s3BucketRegion, + }, + }, + ], + }, +}; diff --git a/typescript/infra/config/networks/testnets.ts b/typescript/infra/config/networks/testnets.ts index fa2eb7507..23bae3be3 100644 --- a/typescript/infra/config/networks/testnets.ts +++ b/typescript/infra/config/networks/testnets.ts @@ -53,6 +53,26 @@ export const ropsten: TransactionConfig = { }, }; +export const bsctestnet: TransactionConfig = { + confirmations: 3, + overrides: {}, +}; + +export const arbitrumrinkeby: TransactionConfig = { + confirmations: 3, + overrides: {}, +}; + +export const optimismkovan: TransactionConfig = { + confirmations: 3, + overrides: {}, +}; + +export const auroratestnet: TransactionConfig = { + confirmations: 3, + overrides: {}, +}; + export const configs: Partial> = { alfajores, fuji, @@ -62,4 +82,8 @@ export const configs: Partial> = { rinkarby, rinkeby, ropsten, + bsctestnet, + arbitrumrinkeby, + optimismkovan, + auroratestnet, }; diff --git a/typescript/infra/scripts/create-keys.ts b/typescript/infra/scripts/create-keys.ts index eca2bbbbe..c1dbcf394 100644 --- a/typescript/infra/scripts/create-keys.ts +++ b/typescript/infra/scripts/create-keys.ts @@ -1,17 +1,12 @@ -import { createAgentGCPKeys } from '../src/agents/gcp'; +import { createAgentKeysIfNotExists } from '../src/agents/key-utils'; -import { getArgs, getDomainNames, getEnvironment } from './utils'; +import { getAgentConfig, getEnvironment } from './utils'; async function main() { const environment = await getEnvironment(); - const domainNames = await getDomainNames(environment); + const agentConfig = await getAgentConfig(environment); - const { v: validatorCount } = await getArgs() - .alias('v', 'validatorCount') - .number('v') - .demandOption('v').argv; - - return createAgentGCPKeys(environment, domainNames, validatorCount); + return createAgentKeysIfNotExists(agentConfig); } main().then(console.log).catch(console.error); diff --git a/typescript/infra/scripts/delete-keys.ts b/typescript/infra/scripts/delete-keys.ts index d8d3fd0f7..cd31c3a63 100644 --- a/typescript/infra/scripts/delete-keys.ts +++ b/typescript/infra/scripts/delete-keys.ts @@ -1,12 +1,12 @@ -import { deleteAgentGCPKeys } from '../src/agents/gcp'; +import { deleteAgentKeys } from '../src/agents/key-utils'; -import { getDomainNames, getEnvironment } from './utils'; +import { getAgentConfig, getEnvironment } from './utils'; async function main() { const environment = await getEnvironment(); - const domainNames = await getDomainNames(environment); + const agentConfig = await getAgentConfig(environment); - return deleteAgentGCPKeys(environment, domainNames); + return deleteAgentKeys(agentConfig); } main().then(console.log).catch(console.error); diff --git a/typescript/infra/scripts/deploy-agents.ts b/typescript/infra/scripts/deploy-agents.ts index 569a4d0dd..d1a455946 100644 --- a/typescript/infra/scripts/deploy-agents.ts +++ b/typescript/infra/scripts/deploy-agents.ts @@ -8,18 +8,23 @@ async function deploy() { const agentConfig = await getAgentConfig(environment); const domainNames = await getDomainNames(environment); - // We intentionally do not Promise.all here to avoid race conditions that could result - // in attempting to create a user or key multiple times. This was found to happen in - // situations where agents for different domains would share the same AWS user or - // AWS KMS key. - for (const name of domainNames) { - await runAgentHelmCommand( - HelmCommand.InstallOrUpgrade, - agentConfig, - name, - domainNames, - ); - } + // Note the create-keys script should be ran prior to running this script. + // At the moment, `runAgentHelmCommand` has the side effect of creating keys / users + // if they do not exist. It's possible for a race condition to occur where creation of + // a key / user that is used by multiple deployments (like Kathy or the Checkpointer, + // whose keys / users are not chain-specific) will be attempted multiple times. + // While this function still has these side effects, the workaround is to just + // run the create-keys script first. + await Promise.all( + domainNames.map((name) => + runAgentHelmCommand( + HelmCommand.InstallOrUpgrade, + agentConfig, + name, + domainNames, + ), + ), + ); } deploy().then(console.log).catch(console.error); diff --git a/typescript/infra/scripts/get-key-addresses.ts b/typescript/infra/scripts/get-key-addresses.ts new file mode 100644 index 000000000..6005eb339 --- /dev/null +++ b/typescript/infra/scripts/get-key-addresses.ts @@ -0,0 +1,28 @@ +import { getAllKeys } from '../src/agents/key-utils'; + +import { getAgentConfig, getEnvironment } from './utils'; + +async function main() { + const environment = await getEnvironment(); + const agentConfig = await getAgentConfig(environment); + + const keys = getAllKeys(agentConfig); + + const keyInfos = await Promise.all( + keys.map(async (key) => { + let address = ''; + try { + await key.fetch(); + address = key.address; + } catch (e) {} + return { + identifier: key.identifier, + address, + }; + }), + ); + + console.log(JSON.stringify(keyInfos, null, 2)); +} + +main().catch(console.error); diff --git a/typescript/infra/scripts/utils.ts b/typescript/infra/scripts/utils.ts index e7c59e48f..5c8e6899e 100644 --- a/typescript/infra/scripts/utils.ts +++ b/typescript/infra/scripts/utils.ts @@ -10,7 +10,7 @@ import { } from '@abacus-network/sdk'; import { types } from '@abacus-network/utils'; -import { KEY_ROLE_ENUM } from '../src/agents'; +import { KEY_ROLE_ENUM } from '../src/agents/roles'; import { ALL_ENVIRONMENTS, AgentConfig, diff --git a/typescript/infra/src/agents/agent.ts b/typescript/infra/src/agents/agent.ts index c5d42ac88..7b3d9426a 100644 --- a/typescript/infra/src/agents/agent.ts +++ b/typescript/infra/src/agents/agent.ts @@ -1,23 +1,75 @@ -import { KEY_ROLE_ENUM } from '../agents'; +import { ChainName } from '@abacus-network/sdk'; + +import { KEY_ROLE_ENUM } from './roles'; + +export abstract class AgentKey { + constructor( + public environment: string, + public readonly role: KEY_ROLE_ENUM, + public readonly chainName?: Networks, + public readonly index?: number, + ) {} -export abstract class AgentKey { abstract get identifier(): string; abstract get address(): string; abstract fetch(): Promise; + + abstract createIfNotExists(): Promise; + abstract delete(): Promise; + // Returns new address + abstract update(): Promise; + + serializeAsAddress() { + return { + identifier: this.identifier, + address: this.address, + }; + } } export function isValidatorKey(role: string) { return role === KEY_ROLE_ENUM.Validator; } -export function identifier( +function identifier( + isKey: boolean, + environment: string, + role: string, + chainName?: ChainName, + index?: number, +) { + const prefix = `abacus-${environment}-${isKey ? 'key-' : ''}`; + switch (role) { + case KEY_ROLE_ENUM.Validator: + if (index === undefined) { + throw Error('Expected index for validator key'); + } + return `${prefix}${chainName}-${role}-${index}`; + case KEY_ROLE_ENUM.Relayer: + if (chainName === undefined) { + throw Error('Expected chainName for relayer key'); + } + return `${prefix}${chainName}-${role}`; + default: + return `${prefix}${role}`; + } +} + +export function keyIdentifier( + environment: string, + role: string, + chainName?: ChainName, + index?: number, +) { + return identifier(true, environment, role, chainName, index); +} + +export function userIdentifier( environment: string, role: string, - chainName: string, - index: number | undefined, + chainName?: ChainName, + index?: number, ) { - return isValidatorKey(role) - ? `abacus-${environment}-key-${chainName}-${role}-${index}` - : `abacus-${environment}-key-${role}`; + return identifier(false, environment, role, chainName, index); } diff --git a/typescript/infra/src/agents/aws/key.ts b/typescript/infra/src/agents/aws/key.ts index e00bdfb34..54764fc34 100644 --- a/typescript/infra/src/agents/aws/key.ts +++ b/typescript/infra/src/agents/aws/key.ts @@ -1,5 +1,5 @@ -import { KEY_ROLE_ENUM } from '..'; import { + AliasListEntry, CreateAliasCommand, CreateKeyCommand, DeleteAliasCommand, @@ -8,6 +8,7 @@ import { KeySpec, KeyUsageType, ListAliasesCommand, + ListAliasesCommandOutput, OriginType, PutKeyPolicyCommand, UpdateAliasCommand, @@ -17,8 +18,9 @@ import { ChainName } from '@abacus-network/sdk'; import { AgentConfig, AwsKeyConfig, KeyType } from '../../config/agent'; import { getEthereumAddress, sleep } from '../../utils/utils'; -import { identifier } from '../agent'; +import { keyIdentifier } from '../agent'; import { AgentKey } from '../agent'; +import { KEY_ROLE_ENUM } from '../roles'; interface UnfetchedKey { fetched: false; @@ -31,26 +33,23 @@ interface FetchedKey { type RemoteKey = UnfetchedKey | FetchedKey; -export class AgentAwsKey extends AgentKey { - private environment: string; +export class AgentAwsKey< + Networks extends ChainName, +> extends AgentKey { private client: KMSClient | undefined; private region: string; public remoteKey: RemoteKey = { fetched: false }; constructor( agentConfig: AgentConfig, - public readonly chainName: Networks, - public readonly role: KEY_ROLE_ENUM, - public readonly index?: number, + role: KEY_ROLE_ENUM, + chainName?: Networks, + index?: number, ) { - super(); + super(agentConfig.environment, role, chainName, index); if (!agentConfig.aws) { throw new Error('Not configured as AWS'); } - if (role === KEY_ROLE_ENUM.Validator && index === undefined) { - throw new Error('Expected index for validator key'); - } - this.environment = agentConfig.environment; this.region = agentConfig.aws.region; } @@ -65,7 +64,7 @@ export class AgentAwsKey extends AgentKey { } get identifier() { - return `alias/${identifier( + return `alias/${keyIdentifier( this.environment, this.role, this.chainName, @@ -103,6 +102,11 @@ export class AgentAwsKey extends AgentKey { // It can take a moment for the change to propagate await sleep(1000); } + await this.fetch(); + } + + async delete() { + throw Error('Not implemented yet'); } // Allows the `userArn` to use the key @@ -142,13 +146,8 @@ export class AgentAwsKey extends AgentKey { // Gets the Key's ID if it exists, undefined otherwise async getId() { - const client = await this.getClient(); - const listAliasResponse = await client.send( - new ListAliasesCommand({ Limit: 100 }), - ); - const match = listAliasResponse.Aliases!.find( - (_) => _.AliasName === this.identifier, - ); + const aliases = await this.getAliases(); + const match = aliases.find((_) => _.AliasName === this.identifier); return match?.TargetKeyId; } @@ -157,7 +156,7 @@ export class AgentAwsKey extends AgentKey { } /** - * Creates the new key but doesn't acutally rotate it + * Creates the new key but doesn't actually rotate it * @returns The address of the new key */ async update() { @@ -175,18 +174,11 @@ export class AgentAwsKey extends AgentKey { const client = await this.getClient(); // Get the key IDs - const listAliasResponse = await client.send( - new ListAliasesCommand({ Limit: 100 }), - ); - const canonicalMatch = listAliasResponse.Aliases!.find( - (_) => _.AliasName === canonicalAlias, - ); - const newMatch = listAliasResponse.Aliases!.find( - (_) => _.AliasName === newAlias, - ); - const oldMatch = listAliasResponse.Aliases!.find( - (_) => _.AliasName === oldAlias, - ); + // TODO handle cases when there are > 100 keys + const aliases = await this.getAliases(); + const canonicalMatch = aliases.find((_) => _.AliasName === canonicalAlias); + const newMatch = aliases.find((_) => _.AliasName === newAlias); + const oldMatch = aliases.find((_) => _.AliasName === oldAlias); if (!canonicalMatch || !newMatch) { throw new Error( `Attempted to rotate keys but one of them does not exist. Old: ${canonicalMatch}, New: ${newMatch}`, @@ -224,7 +216,7 @@ export class AgentAwsKey extends AgentKey { private requireFetched() { if (!this.remoteKey.fetched) { - throw new Error("Can't persist without address"); + throw new Error('Key not fetched'); } } @@ -273,21 +265,9 @@ export class AgentAwsKey extends AgentKey { private async fetchAddressFromAws(keyId?: string) { const client = await this.getClient(); - const alias = this.identifier; if (!keyId) { - const listAliasResponse = await client.send( - new ListAliasesCommand({ Limit: 100 }), - ); - - const match = listAliasResponse.Aliases!.find( - (_) => _.AliasName === alias, - ); - - if (!match || !match.TargetKeyId) { - throw new Error('Couldnt find key'); - } - keyId = match.TargetKeyId; + keyId = await this.getId(); } const publicKeyResponse = await client.send( @@ -296,4 +276,33 @@ export class AgentAwsKey extends AgentKey { return getEthereumAddress(Buffer.from(publicKeyResponse.PublicKey!)); } + + private async getAliases(): Promise { + const client = await this.getClient(); + let aliases: AliasListEntry[] = []; + let marker: string | undefined = undefined; + // List will output a max of 100 at a time, so we need to use marker + // to fetch all of them. + while (true) { + const listAliasResponse: ListAliasesCommandOutput = await client.send( + new ListAliasesCommand({ + Limit: 100, + Marker: marker, + }), + ); + if ( + !listAliasResponse.Aliases || + listAliasResponse.Aliases.length === 0 + ) { + break; + } + aliases = aliases.concat(listAliasResponse.Aliases); + if (listAliasResponse.NextMarker) { + marker = listAliasResponse.NextMarker; + } else { + break; + } + } + return aliases; + } } diff --git a/typescript/infra/src/agents/aws/user.ts b/typescript/infra/src/agents/aws/user.ts index ff1014f77..be52f6490 100644 --- a/typescript/infra/src/agents/aws/user.ts +++ b/typescript/infra/src/agents/aws/user.ts @@ -7,13 +7,14 @@ import { import { ChainName } from '@abacus-network/sdk'; -import { KEY_ROLE_ENUM } from '../../agents'; import { AgentConfig } from '../../config'; import { fetchGCPSecret, gcpSecretExists, setGCPSecret, } from '../../utils/gcloud'; +import { userIdentifier } from '../agent'; +import { KEY_ROLE_ENUM } from '../roles'; import { AgentAwsKey } from './key'; @@ -103,7 +104,14 @@ export class AgentAwsUser { } key(agentConfig: AgentConfig): AgentAwsKey { - return new AgentAwsKey(agentConfig, this.chainName, this.role); + return new AgentAwsKey(agentConfig, this.role, this.chainName); + } + + async createKeyIfNotExists(agentConfig: AgentConfig) { + const key = this.key(agentConfig); + await key.createIfNotExists(); + await key.putKeyPolicy(this.arn); + return key; } get awsTags() { @@ -123,7 +131,7 @@ export class AgentAwsUser { } get userName() { - return `abacus-${this.environment}-${this.role}`; + return userIdentifier(this.environment, this.role, this.chainName); } get accessKeyIdSecretName() { diff --git a/typescript/infra/src/agents/aws/validator-user.ts b/typescript/infra/src/agents/aws/validator-user.ts index 6997d511b..ef8b8ac12 100644 --- a/typescript/infra/src/agents/aws/validator-user.ts +++ b/typescript/infra/src/agents/aws/validator-user.ts @@ -7,8 +7,8 @@ import { import { ChainName } from '@abacus-network/sdk'; -import { KEY_ROLE_ENUM } from '../../agents'; import { AgentConfig } from '../../config'; +import { KEY_ROLE_ENUM } from '../roles'; import { AgentAwsKey } from './key'; import { AgentAwsUser } from './user'; @@ -86,8 +86,8 @@ export class ValidatorAgentAwsUser< key(agentConfig: AgentConfig): AgentAwsKey { return new AgentAwsKey( agentConfig, - this.chainName, this.role, + this.chainName, this.index, ); } diff --git a/typescript/infra/src/agents/gcp.ts b/typescript/infra/src/agents/gcp.ts index 8685ef1fc..36001704c 100644 --- a/typescript/infra/src/agents/gcp.ts +++ b/typescript/infra/src/agents/gcp.ts @@ -1,10 +1,13 @@ import { Wallet } from 'ethers'; -import { KEY_ROLES, KEY_ROLE_ENUM } from '../agents'; +import { ChainName } from '@abacus-network/sdk'; + +import { ENVIRONMENTS_ENUM } from '../config/environment'; import { fetchGCPSecret, setGCPSecret } from '../utils/gcloud'; import { execCmd, include } from '../utils/utils'; -import { AgentKey, identifier, isValidatorKey } from './agent'; +import { AgentKey, isValidatorKey, keyIdentifier } from './agent'; +import { KEY_ROLE_ENUM } from './roles'; // This is the type for how the keys are persisted in GCP export interface SecretManagerPersistedKeys { @@ -17,11 +20,6 @@ export interface SecretManagerPersistedKeys { chainName?: string; } -interface KeyAsAddress { - role: string; - address: string; -} - interface UnfetchedKey { fetched: false; } @@ -34,37 +32,31 @@ interface FetchedKey { type RemoteKey = UnfetchedKey | FetchedKey; -export class AgentGCPKey extends AgentKey { +export class AgentGCPKey< + Networks extends ChainName, +> extends AgentKey { constructor( - public readonly environment: string, - public readonly role: string, - public readonly chainName: string, - public readonly index?: number, + environment: ENVIRONMENTS_ENUM, + role: KEY_ROLE_ENUM, + chainName?: Networks, + index?: number, private remoteKey: RemoteKey = { fetched: false }, ) { - super(); - if (this.isValidatorKey && index === undefined) { - throw Error( - `Expected index to be defined for key with environment ${environment}, role ${role}, and chainName ${chainName}`, - ); - } + super(environment, role, chainName, index); } - static async create( - environment: string, - role: string, - chainName: string, - index?: number, - ) { - const key = new AgentGCPKey(environment, role, chainName, index); - await key.create(); - return key; + async createIfNotExists() { + try { + await this.fetch(); + } catch (err) { + await this.create(); + } } serializeAsAddress() { this.requireFetched(); return { - role: this.memoryKeyIdentifier, + identifier: this.identifier, // @ts-ignore address: this.remoteKey.address, }; @@ -75,12 +67,12 @@ export class AgentGCPKey extends AgentKey { } get identifier() { - return identifier(this.environment, this.role, this.chainName, this.index); - } - - // The identifier for this key within a set of keys for an enrivonment - get memoryKeyIdentifier() { - return memoryKeyIdentifier(this.role, this.chainName, this.index); + return keyIdentifier( + this.environment, + this.role, + this.chainName, + this.index, + ); } get privateKey() { @@ -112,6 +104,7 @@ export class AgentGCPKey extends AgentKey { async update() { this.remoteKey = await this._create(true); + return this.address; } async delete() { @@ -143,7 +136,7 @@ export class AgentGCPKey extends AgentKey { role: this.role, ...include(this.isValidatorKey, { chain: this.chainName, - index: this.index!.toString(), + index: this.index, }), }, ); @@ -155,128 +148,3 @@ export class AgentGCPKey extends AgentKey { }; } } - -export async function deleteAgentGCPKeys( - environment: string, - chainNames: string[], -) { - await Promise.all( - KEY_ROLES.map(async (role) => { - if (isValidatorKey(role)) { - await Promise.all( - chainNames.map((chainName) => { - const key = new AgentGCPKey(environment, role, chainName); - return key.delete(); - }), - ); - } else { - const key = new AgentGCPKey(environment, role, 'any'); - await key.delete(); - } - }), - ); - await execCmd( - `gcloud secrets delete ${addressesIdentifier(environment)} --quiet`, - ); -} - -// The identifier for a key within a memory representation -export function memoryKeyIdentifier( - role: string, - chainName: string, - index?: number, -) { - if (isValidatorKey(role)) { - if (index === undefined) { - throw Error('Expected index'); - } - return `${chainName}-${role}-${index}`; - } - return role; -} - -export async function createAgentGCPKeys( - environment: string, - chainNames: string[], - validatorCount: number, -) { - const keys: AgentGCPKey[] = await Promise.all( - KEY_ROLES.flatMap((role) => { - if (isValidatorKey(role)) { - // For each chainName, create validatorCount keys - return chainNames.flatMap((chainName) => - [...Array(validatorCount).keys()].map((index) => - AgentGCPKey.create(environment, role, chainName, index), - ), - ); - } else { - // Chain name doesnt matter for non attestation keys - return [AgentGCPKey.create(environment, role, 'any')]; - } - }), - ); - - await persistAddresses( - environment, - keys.map((_) => _.serializeAsAddress()), - ); -} - -export async function rotateGCPKey( - environment: string, - role: string, - chainName: string, -) { - const key = new AgentGCPKey(environment, role, chainName); - await key.update(); - const addresses = await fetchGCPKeyAddresses(environment); - const filteredAddresses = addresses.filter((_) => { - const matchingRole = memoryKeyIdentifier(role, chainName); - return _.role !== matchingRole; - }); - - filteredAddresses.push(key.serializeAsAddress()); - await persistAddresses(environment, filteredAddresses); -} - -async function persistAddresses(environment: string, keys: KeyAsAddress[]) { - await setGCPSecret(addressesIdentifier(environment), JSON.stringify(keys), { - environment: environment, - }); -} - -// This function returns all the GCP keys for a given outbox chain in a dictionary where the key is the memoryKeyIdentifier -export async function fetchAgentGCPKeys( - environment: string, - chainName: string, - validatorCount: number, -): Promise> { - const secrets = await Promise.all( - KEY_ROLES.map(async (role) => { - if (role === KEY_ROLE_ENUM.Validator) { - return Promise.all( - [...Array(validatorCount).keys()].map(async (index) => { - const key = new AgentGCPKey(environment, role, chainName, index); - await key.fetch(); - return [key.memoryKeyIdentifier, key]; - }), - ); - } else { - const key = new AgentGCPKey(environment, role, chainName); - await key.fetch(); - return [[key.memoryKeyIdentifier, key]]; - } - }), - ); - - return Object.fromEntries(secrets.flat(1)); -} - -async function fetchGCPKeyAddresses(environment: string) { - const addresses = await fetchGCPSecret(addressesIdentifier(environment)); - return addresses as KeyAsAddress[]; -} - -function addressesIdentifier(environment: string) { - return `abacus-${environment}-key-addresses`; -} diff --git a/typescript/infra/src/agents/index.ts b/typescript/infra/src/agents/index.ts index e6325895c..0af976f31 100644 --- a/typescript/infra/src/agents/index.ts +++ b/typescript/infra/src/agents/index.ts @@ -2,32 +2,18 @@ import { ChainName } from '@abacus-network/sdk'; import { AgentConfig } from '../config'; import { ChainAgentConfig, CheckpointSyncerType } from '../config/agent'; +import { ENVIRONMENTS_ENUM } from '../config/environment'; import { fetchGCPSecret } from '../utils/gcloud'; import { HelmCommand, helmifyValues } from '../utils/helm'; import { ensure0x, execCmd, strip0x } from '../utils/utils'; import { rm, writeFile } from 'fs/promises'; +import { keyIdentifier } from './agent'; import { AgentAwsUser, ValidatorAgentAwsUser } from './aws'; import { AgentAwsKey } from './aws/key'; -import { AgentGCPKey, fetchAgentGCPKeys, memoryKeyIdentifier } from './gcp'; - -export enum KEY_ROLE_ENUM { - Validator = 'validator', - Checkpointer = 'checkpointer', - Relayer = 'relayer', - Deployer = 'deployer', - Bank = 'bank', - Kathy = 'kathy', -} - -export const KEY_ROLES = [ - KEY_ROLE_ENUM.Validator, - KEY_ROLE_ENUM.Checkpointer, - KEY_ROLE_ENUM.Relayer, - KEY_ROLE_ENUM.Deployer, - KEY_ROLE_ENUM.Bank, - KEY_ROLE_ENUM.Kathy, -]; +import { AgentGCPKey } from './gcp'; +import { fetchKeysForChain } from './key-utils'; +import { KEY_ROLES, KEY_ROLE_ENUM } from './roles'; async function helmValuesForChain( chainName: Networks, @@ -62,11 +48,11 @@ async function helmValuesForChain( relayer: { enabled: true, aws: await chainAgentConfig.relayerRequiresAwsCredentials(), - signers: chainAgentConfig.relayerSigners, + signers: await chainAgentConfig.relayerSigners(), config: chainAgentConfig.relayerConfig, }, checkpointer: { - enabled: true, + enabled: chainAgentConfig.checkpointerEnabled, aws: chainAgentConfig.checkpointerRequiresAwsCredentials, signers: await chainAgentConfig.checkpointerSigners(), config: chainAgentConfig.checkpointerConfig, @@ -123,11 +109,10 @@ export async function getAgentEnvVars( // GCP keys if (!agentConfig.aws) { - const gcpKeys = await fetchAgentGCPKeys( - agentConfig.environment, + const gcpKeys = (await fetchKeysForChain( + agentConfig, outboxChainName, - agentConfig.validatorSets[outboxChainName].validators.length, - ); + )) as Record>; // Only checkpointer and relayer need to sign txs if (role === KEY_ROLE_ENUM.Checkpointer || role === KEY_ROLE_ENUM.Relayer) { @@ -141,7 +126,9 @@ export async function getAgentEnvVars( }); } else if (role === KEY_ROLE_ENUM.Validator) { const privateKey = - gcpKeys[memoryKeyIdentifier(role, outboxChainName, index)].privateKey; + gcpKeys[ + keyIdentifier(agentConfig.environment, role, outboxChainName, index) + ].privateKey; envVars.push( `OPT_VALIDATOR_VALIDATOR_KEY=${strip0x(privateKey)}`, @@ -189,10 +176,14 @@ export async function getAgentEnvVars( role === KEY_ROLE_ENUM.Relayer || role === KEY_ROLE_ENUM.Kathy ) { - chainNames.forEach((name) => { - const key = new AgentAwsKey(agentConfig, name, role); + chainNames.forEach((chainName) => { + const key = new AgentAwsKey(agentConfig, role, chainName); envVars = envVars.concat( - configEnvVars(key.keyConfig, 'BASE', 'SIGNERS_'), + configEnvVars( + key.keyConfig, + 'BASE', + `SIGNERS_${outboxChainName.toUpperCase()}_`, + ), ); }); } @@ -213,12 +204,14 @@ export async function getAgentEnvVars( ); break; case KEY_ROLE_ENUM.Checkpointer: - envVars = envVars.concat( - configEnvVars( - valueDict.abacus.checkpointer.config, - KEY_ROLE_ENUM.Checkpointer, - ), - ); + if (valueDict.abacus.checkpointer.config) { + envVars = envVars.concat( + configEnvVars( + valueDict.abacus.checkpointer.config, + KEY_ROLE_ENUM.Checkpointer, + ), + ); + } break; case KEY_ROLE_ENUM.Kathy: if (valueDict.abacus.kathy.config) { @@ -246,7 +239,11 @@ function configEnvVars( if (typeof value === 'object') { envVars = [ ...envVars, - ...configEnvVars(value, role, `${key.toUpperCase()}_`), + ...configEnvVars( + value, + role, + `${key_name_prefix}${key.toUpperCase()}_`, + ), ]; } else { envVars.push( @@ -275,15 +272,15 @@ export async function getSecretAwsCredentials( } export async function getSecretRpcEndpoint( - environment: string, + environment: ENVIRONMENTS_ENUM, chainName: ChainName, ) { return fetchGCPSecret(`${environment}-rpc-endpoint-${chainName}`, false); } export async function getSecretDeployerKey( - environment: string, - chainName: string, + environment: ENVIRONMENTS_ENUM, + chainName: ChainName, ) { const key = new AgentGCPKey(environment, KEY_ROLE_ENUM.Deployer, chainName); await key.fetch(); @@ -356,11 +353,10 @@ export async function runKeymasterHelmCommand( ) { // It's ok to use pick an arbitrary chain here since we are only grabbing the signers const chainName = chainNames[0]; - const gcpKeys = await fetchAgentGCPKeys( - agentConfig.environment, - chainName, - agentConfig.validatorSets[chainName].validators.length, - ); + const gcpKeys = (await fetchKeysForChain(agentConfig, chainName)) as Record< + string, + AgentGCPKey + >; const bankKey = gcpKeys[KEY_ROLE_ENUM.Bank]; const config = { networks: Object.fromEntries( diff --git a/typescript/infra/src/agents/key-utils.ts b/typescript/infra/src/agents/key-utils.ts new file mode 100644 index 000000000..4377ce9c2 --- /dev/null +++ b/typescript/infra/src/agents/key-utils.ts @@ -0,0 +1,133 @@ +import { ChainName } from '@abacus-network/sdk'; + +import { AgentConfig } from '../config'; +import { fetchGCPSecret, setGCPSecret } from '../utils/gcloud'; +import { execCmd } from '../utils/utils'; + +import { AgentKey } from './agent'; +import { AgentAwsKey } from './aws/key'; +import { AgentGCPKey } from './gcp'; +import { KEY_ROLES, KEY_ROLE_ENUM } from './roles'; + +interface KeyAsAddress { + identifier: string; + address: string; +} + +export function getKey( + agentConfig: AgentConfig, + role: KEY_ROLE_ENUM, + chainName?: Networks, + index?: number, +): AgentKey { + if (agentConfig.aws) { + return new AgentAwsKey(agentConfig, role, chainName, index); + } else { + return new AgentGCPKey(agentConfig.environment, role, chainName, index); + } +} + +export function getAllKeys( + agentConfig: AgentConfig, +): Array> { + return KEY_ROLES.flatMap((role) => { + if (role === KEY_ROLE_ENUM.Validator) { + // For each chainName, create validatorCount keys + return agentConfig.domainNames.flatMap((chainName) => + [ + ...Array( + agentConfig.validatorSets[chainName].validators.length, + ).keys(), + ].map((index) => getKey(agentConfig, role, chainName, index)), + ); + } else if (role === KEY_ROLE_ENUM.Relayer) { + return agentConfig.domainNames.map((chainName) => + getKey(agentConfig, role, chainName), + ); + } else { + return [getKey(agentConfig, role)]; + } + }); +} + +export async function deleteAgentKeys( + agentConfig: AgentConfig, +) { + const keys = getAllKeys(agentConfig); + await Promise.all(keys.map((key) => key.delete())); + await execCmd( + `gcloud secrets delete ${addressesIdentifier( + agentConfig.environment, + )} --quiet`, + ); +} + +export async function createAgentKeysIfNotExists( + agentConfig: AgentConfig, +) { + const keys = getAllKeys(agentConfig); + + await Promise.all( + keys.map(async (key) => { + return key.createIfNotExists(); + }), + ); + + await persistAddresses( + agentConfig.environment, + keys.map((key) => key.serializeAsAddress()), + ); +} + +export async function rotateKey( + agentConfig: AgentConfig, + role: KEY_ROLE_ENUM, + chainName: Networks, +) { + const key = getKey(agentConfig, role, chainName); + await key.update(); + const keyIdentifier = key.identifier; + const addresses = await fetchGCPKeyAddresses(agentConfig.environment); + const filteredAddresses = addresses.filter((_) => { + return _.identifier !== keyIdentifier; + }); + + filteredAddresses.push(key.serializeAsAddress()); + await persistAddresses(agentConfig.environment, filteredAddresses); +} + +async function persistAddresses(environment: string, keys: KeyAsAddress[]) { + await setGCPSecret(addressesIdentifier(environment), JSON.stringify(keys), { + environment: environment, + }); +} + +// This function returns all keys for a given outbox chain in a dictionary where the key is the identifier +export async function fetchKeysForChain( + agentConfig: AgentConfig, + chainName: Networks, +): Promise>> { + // Get all keys for the chainName. Include keys where chainName is undefined, + // which are keys that are not chain-specific but should still be included + const keys = await Promise.all( + getAllKeys(agentConfig) + .filter( + (key) => key.chainName === undefined || key.chainName == chainName, + ) + .map(async (key) => { + await key.fetch(); + return [key.identifier, key]; + }), + ); + + return Object.fromEntries(keys); +} + +async function fetchGCPKeyAddresses(environment: string) { + const addresses = await fetchGCPSecret(addressesIdentifier(environment)); + return addresses as KeyAsAddress[]; +} + +function addressesIdentifier(environment: string) { + return `abacus-${environment}-key-addresses`; +} diff --git a/typescript/infra/src/agents/roles.ts b/typescript/infra/src/agents/roles.ts new file mode 100644 index 000000000..21413aba0 --- /dev/null +++ b/typescript/infra/src/agents/roles.ts @@ -0,0 +1,17 @@ +export enum KEY_ROLE_ENUM { + Validator = 'validator', + Checkpointer = 'checkpointer', + Relayer = 'relayer', + Deployer = 'deployer', + Bank = 'bank', + Kathy = 'kathy', +} + +export const KEY_ROLES = [ + KEY_ROLE_ENUM.Validator, + KEY_ROLE_ENUM.Checkpointer, + KEY_ROLE_ENUM.Relayer, + KEY_ROLE_ENUM.Deployer, + KEY_ROLE_ENUM.Bank, + KEY_ROLE_ENUM.Kathy, +]; diff --git a/typescript/infra/src/config/agent.ts b/typescript/infra/src/config/agent.ts index 8d3b5dea9..412350e8d 100644 --- a/typescript/infra/src/config/agent.ts +++ b/typescript/infra/src/config/agent.ts @@ -1,12 +1,12 @@ import { ChainName, ChainSubsetMap } from '@abacus-network/sdk'; import { types } from '@abacus-network/utils'; -import { KEY_ROLE_ENUM } from '../agents'; import { AgentAwsKey, AgentAwsUser, ValidatorAgentAwsUser, } from '../agents/aws'; +import { KEY_ROLE_ENUM } from '../agents/roles'; import { DeployEnvironment } from './environment'; @@ -210,7 +210,7 @@ export interface AgentConfig { validatorSets: ChainValidatorSets; validator: ChainValidatorConfigs; relayer: ChainRelayerConfigs; - checkpointer: ChainCheckpointerConfigs; + checkpointer?: ChainCheckpointerConfigs; kathy?: ChainKathyConfigs; } @@ -264,7 +264,7 @@ export class ChainAgentConfig { // key is pulled from GCP Secret Manager by the helm chart keyConfig(role: KEY_ROLE_ENUM): KeyConfig { if (this.awsKeys) { - const key = new AgentAwsKey(this.agentConfig, this.chainName, role); + const key = new AgentAwsKey(this.agentConfig, role, this.chainName); return key.keyConfig; } return { @@ -307,9 +307,7 @@ export class ChainAgentConfig { type: KeyType.Hex, }; if (this.awsKeys) { - const key = awsUser.key(this.agentConfig); - await key.createIfNotExists(); - await key.putKeyPolicy(awsUser.arn); + const key = await awsUser.createKeyIfNotExists(this.agentConfig); validator = key.keyConfig; } @@ -347,17 +345,29 @@ export class ChainAgentConfig { await awsUser.createIfNotExists(); // If we're using AWS keys, ensure the key is created and the user can use it if (this.awsKeys) { - const key = awsUser.key(this.agentConfig); - await key.createIfNotExists(); - await key.putKeyPolicy(awsUser.arn); + await awsUser.createKeyIfNotExists(this.agentConfig); } return true; } return false; } - get relayerSigners() { - return this.signers(KEY_ROLE_ENUM.Relayer); + async relayerSigners() { + if (!this.awsKeys) { + return this.signers(KEY_ROLE_ENUM.Relayer); + } + const awsUser = new AgentAwsUser( + this.agentConfig.environment, + this.chainName, + KEY_ROLE_ENUM.Relayer, + this.agentConfig.aws!.region, + ); + await awsUser.createIfNotExists(); + const key = await awsUser.createKeyIfNotExists(this.agentConfig); + return this.agentConfig.domainNames.map((name) => ({ + name, + keyConfig: key.keyConfig, + })); } get relayerConfig(): RelayerConfig { @@ -383,36 +393,32 @@ export class ChainAgentConfig { }; } - // Gets signers for a provided role. If AWS keys are used, the corresponding - // key and users are created if necessary. - async getAndPrepareSigners(role: KEY_ROLE_ENUM) { - if (this.awsKeys) { - const awsUser = new AgentAwsUser( - this.agentConfig.environment, - this.chainName, - role, - this.agentConfig.aws!.region, - ); - await awsUser.createIfNotExists(); - const key = awsUser.key(this.agentConfig); - await key.createIfNotExists(); - await key.putKeyPolicy(awsUser.arn); - } - return this.signers(role); + get checkpointerEnabled() { + return this.agentConfig.checkpointer !== undefined; } - // Gets signer info, creating them if necessary checkpointerSigners() { - return this.getAndPrepareSigners(KEY_ROLE_ENUM.Checkpointer); + if (!this.checkpointerEnabled) { + return []; + } + return [ + { + name: this.chainName, + keyConfig: this.keyConfig(KEY_ROLE_ENUM.Kathy), + }, + ]; } get checkpointerRequiresAwsCredentials() { return this.awsKeys; } - get checkpointerConfig(): CheckpointerConfig { + get checkpointerConfig(): CheckpointerConfig | undefined { + if (!this.checkpointerEnabled) { + return undefined; + } return getChainOverriddenConfig( - this.agentConfig.checkpointer, + this.agentConfig.checkpointer!, this.chainName, ); } @@ -422,7 +428,12 @@ export class ChainAgentConfig { if (!this.kathyEnabled) { return []; } - return this.getAndPrepareSigners(KEY_ROLE_ENUM.Kathy); + return [ + { + name: this.chainName, + keyConfig: this.keyConfig(KEY_ROLE_ENUM.Kathy), + }, + ]; } get kathyRequiresAwsCredentials() { diff --git a/typescript/infra/src/config/chain.ts b/typescript/infra/src/config/chain.ts index f3dd418f8..2c30ad91d 100644 --- a/typescript/infra/src/config/chain.ts +++ b/typescript/infra/src/config/chain.ts @@ -6,9 +6,11 @@ import { ChainName } from '@abacus-network/sdk'; import { getSecretDeployerKey, getSecretRpcEndpoint } from '../agents'; -export async function fetchSigner( - environment: string, - chainName: ChainName, +import { ENVIRONMENTS_ENUM } from './environment'; + +export async function fetchSigner( + environment: ENVIRONMENTS_ENUM, + chainName: Networks, ): Promise { const rpc = await getSecretRpcEndpoint(environment, chainName); const key = await getSecretDeployerKey(environment, chainName); diff --git a/typescript/infra/src/config/environment.ts b/typescript/infra/src/config/environment.ts index f3a884f78..6a456c644 100644 --- a/typescript/infra/src/config/environment.ts +++ b/typescript/infra/src/config/environment.ts @@ -1,10 +1,12 @@ export enum ENVIRONMENTS_ENUM { Test = 'test', Dev = 'dev', + Testnet = 'testnet', } export const ALL_ENVIRONMENTS = [ ENVIRONMENTS_ENUM.Test, ENVIRONMENTS_ENUM.Dev, + ENVIRONMENTS_ENUM.Testnet, ] as const; type DeployEnvironmentTuple = typeof ALL_ENVIRONMENTS; export type DeployEnvironment = DeployEnvironmentTuple[number]; diff --git a/typescript/infra/src/infrastructure/monitoring/prometheus.ts b/typescript/infra/src/infrastructure/monitoring/prometheus.ts index 452ce8c69..f671f7512 100644 --- a/typescript/infra/src/infrastructure/monitoring/prometheus.ts +++ b/typescript/infra/src/infrastructure/monitoring/prometheus.ts @@ -94,6 +94,6 @@ async function getPrometheusConfig( // Fetches a secret from GCP Secret Manager. The secret is expected to // be JSON with the shape of `PrometheusSecrets`. async function fetchPrometheusSecrets(): Promise { - const secrets = await fetchGCPSecret('optics-prometheus-remote_write_config'); + const secrets = await fetchGCPSecret('abacus-prometheus-remote_write_config'); return secrets as PrometheusSecrets; } diff --git a/typescript/sdk/src/core/environments/index.ts b/typescript/sdk/src/core/environments/index.ts index 9eb2e419f..9b4dd6df7 100644 --- a/typescript/sdk/src/core/environments/index.ts +++ b/typescript/sdk/src/core/environments/index.ts @@ -2,10 +2,12 @@ import { CoreContractAddresses } from '../'; import { ChainName } from '../../'; import { addresses as test } from './test'; +import { addresses as testnet } from './testnet'; export const addresses: Record< any, Partial> > = { test, + testnet, }; diff --git a/typescript/sdk/src/core/environments/testnet.ts b/typescript/sdk/src/core/environments/testnet.ts new file mode 100644 index 000000000..1bf0a574d --- /dev/null +++ b/typescript/sdk/src/core/environments/testnet.ts @@ -0,0 +1,458 @@ +export const addresses = { + alfajores: { + upgradeBeaconController: '0x19Be55D859368e02d7b9C00803Eb677BDC1359Bd', + abacusConnectionManager: '0x433f7d6d0cB9eb8FF2902Ad01C1BEd6C09934a33', + interchainGasPaymaster: '0x28B02B97a850872C4D33C3E024fab6499ad96564', + outboxValidatorManager: '0x5821f3B6eE05F3dC62b43B74AB1C8F8E6904b1C8', + inboxValidatorManagers: { + kovan: '0x1b33611fCc073aB0737011d5512EF673Bff74962', + fuji: '0x66b71A4e18FbE09a6977A6520B47fEDdffA82a1c', + mumbai: '0x04438ef7622f5412f82915F59caD4f704C61eA48', + bsctestnet: '0xb94F96D398eA5BAB5CA528EE9Fdc19afaA825818', + arbitrumrinkeby: '0xB057Fb841027a8554521DcCdeC3c3474CaC99AB5', + optimismkovan: '0xA2cf52064c921C11adCd83588CbEa08cc3bfF5d8', + auroratestnet: '0xa3AB7E6cE24E6293bD5320A53329Ef2f4DE73fCA', + }, + outbox: { + proxy: '0xD0680F80F4f947968206806C2598Cbc5b6FE5b03', + implementation: '0x267B6B6eAf6790faE5D5E9070F28a9cE64CbF279', + beacon: '0xc756cFc1b7d0d4646589EDf10eD54b201237F5e8', + }, + inboxes: { + kovan: { + proxy: '0x783c4a0bB6663359281aD4a637D5af68F83ae213', + implementation: '0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C', + beacon: '0x20c44b1E3BeaDA1e9826CFd48BeEDABeE9871cE9', + }, + fuji: { + proxy: '0xae7a78916Ba4c507aCB2F0e474ace545Ff4bF841', + implementation: '0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C', + beacon: '0x20c44b1E3BeaDA1e9826CFd48BeEDABeE9871cE9', + }, + mumbai: { + proxy: '0xFCc63b537e70652A280c4E7883C5BB5a1700e897', + implementation: '0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C', + beacon: '0x20c44b1E3BeaDA1e9826CFd48BeEDABeE9871cE9', + }, + bsctestnet: { + proxy: '0x51A0a100e7BC63Ea7821A3a023B6F17fb94FF011', + implementation: '0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C', + beacon: '0x20c44b1E3BeaDA1e9826CFd48BeEDABeE9871cE9', + }, + arbitrumrinkeby: { + proxy: '0xe0B988062A0C6492177d64823Ab95a9c256c2a5F', + implementation: '0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C', + beacon: '0x20c44b1E3BeaDA1e9826CFd48BeEDABeE9871cE9', + }, + optimismkovan: { + proxy: '0x628BC518ED1e0E8C6cbcD574EbA0ee29e7F6943E', + implementation: '0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C', + beacon: '0x20c44b1E3BeaDA1e9826CFd48BeEDABeE9871cE9', + }, + auroratestnet: { + proxy: '0xc76E477437065093D353b7d56c81ff54D167B0Ab', + implementation: '0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C', + beacon: '0x20c44b1E3BeaDA1e9826CFd48BeEDABeE9871cE9', + }, + }, + }, + kovan: { + upgradeBeaconController: '0xcf5BaaF976C80a66Fa7839715C45788f60041A33', + abacusConnectionManager: '0xF7561c34f17A32D5620583A3397C304e7038a7F6', + interchainGasPaymaster: '0x07009DA2249c388aD0f416a235AfE90D784e1aAc', + outboxValidatorManager: '0x58483b754Abb1E8947BE63d6b95DF75b8249543A', + inboxValidatorManagers: { + alfajores: '0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e', + fuji: '0x863E8c26621c52ACa1849C53500606e73BA272F0', + mumbai: '0xAb9B273366D794B7F80B4378bc8Aaca75C6178E2', + bsctestnet: '0x19Be55D859368e02d7b9C00803Eb677BDC1359Bd', + arbitrumrinkeby: '0xc756cFc1b7d0d4646589EDf10eD54b201237F5e8', + optimismkovan: '0x433f7d6d0cB9eb8FF2902Ad01C1BEd6C09934a33', + auroratestnet: '0x1b33611fCc073aB0737011d5512EF673Bff74962', + }, + outbox: { + proxy: '0x98AAE089CaD930C64a76dD2247a2aC5773a4B8cE', + implementation: '0x679Dc08cC3A4acFeea2f7CAFAa37561aE0b41Ce7', + beacon: '0x4926a10788306D84202A2aDbd290b7743146Cc17', + }, + inboxes: { + alfajores: { + proxy: '0x68311418D79fE8d96599384ED767d225635d88a8', + implementation: '0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450', + beacon: '0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9', + }, + fuji: { + proxy: '0x6b1bb4ce664Bb4164AEB4d3D2E7DE7450DD8084C', + implementation: '0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450', + beacon: '0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9', + }, + mumbai: { + proxy: '0x86fb9F1c124fB20ff130C41a79a432F770f67AFD', + implementation: '0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450', + beacon: '0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9', + }, + bsctestnet: { + proxy: '0x5821f3B6eE05F3dC62b43B74AB1C8F8E6904b1C8', + implementation: '0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450', + beacon: '0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9', + }, + arbitrumrinkeby: { + proxy: '0xD0680F80F4f947968206806C2598Cbc5b6FE5b03', + implementation: '0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450', + beacon: '0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9', + }, + optimismkovan: { + proxy: '0x75f3E2a4f424401195A5E176246Ecc9f7e7680ff', + implementation: '0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450', + beacon: '0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9', + }, + auroratestnet: { + proxy: '0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C', + implementation: '0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450', + beacon: '0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9', + }, + }, + }, + fuji: { + upgradeBeaconController: '0xcf5BaaF976C80a66Fa7839715C45788f60041A33', + abacusConnectionManager: '0xF7561c34f17A32D5620583A3397C304e7038a7F6', + interchainGasPaymaster: '0x07009DA2249c388aD0f416a235AfE90D784e1aAc', + outboxValidatorManager: '0x58483b754Abb1E8947BE63d6b95DF75b8249543A', + inboxValidatorManagers: { + alfajores: '0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e', + kovan: '0x863E8c26621c52ACa1849C53500606e73BA272F0', + mumbai: '0xAb9B273366D794B7F80B4378bc8Aaca75C6178E2', + bsctestnet: '0x19Be55D859368e02d7b9C00803Eb677BDC1359Bd', + arbitrumrinkeby: '0xc756cFc1b7d0d4646589EDf10eD54b201237F5e8', + optimismkovan: '0x433f7d6d0cB9eb8FF2902Ad01C1BEd6C09934a33', + auroratestnet: '0x1b33611fCc073aB0737011d5512EF673Bff74962', + }, + outbox: { + proxy: '0x98AAE089CaD930C64a76dD2247a2aC5773a4B8cE', + implementation: '0x679Dc08cC3A4acFeea2f7CAFAa37561aE0b41Ce7', + beacon: '0x4926a10788306D84202A2aDbd290b7743146Cc17', + }, + inboxes: { + alfajores: { + proxy: '0x68311418D79fE8d96599384ED767d225635d88a8', + implementation: '0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450', + beacon: '0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9', + }, + kovan: { + proxy: '0x6b1bb4ce664Bb4164AEB4d3D2E7DE7450DD8084C', + implementation: '0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450', + beacon: '0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9', + }, + mumbai: { + proxy: '0x86fb9F1c124fB20ff130C41a79a432F770f67AFD', + implementation: '0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450', + beacon: '0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9', + }, + bsctestnet: { + proxy: '0x5821f3B6eE05F3dC62b43B74AB1C8F8E6904b1C8', + implementation: '0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450', + beacon: '0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9', + }, + arbitrumrinkeby: { + proxy: '0xD0680F80F4f947968206806C2598Cbc5b6FE5b03', + implementation: '0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450', + beacon: '0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9', + }, + optimismkovan: { + proxy: '0x75f3E2a4f424401195A5E176246Ecc9f7e7680ff', + implementation: '0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450', + beacon: '0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9', + }, + auroratestnet: { + proxy: '0x6c13643B3927C57DB92c790E4E3E7Ee81e13f78C', + implementation: '0xeC7eb4196Bd601DEa7585A744FbFB4CF11278450', + beacon: '0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9', + }, + }, + }, + mumbai: { + upgradeBeaconController: '0x6966b0E55883d49BFB24539356a2f8A673E02039', + abacusConnectionManager: '0x46f7C5D896bbeC89bE1B19e4485e59b4Be49e9Cc', + interchainGasPaymaster: '0xB08d78F439e55D02C398519eef61606A5926245F', + outboxValidatorManager: '0x54148470292C24345fb828B003461a9444414517', + inboxValidatorManagers: { + alfajores: '0x304cAb315c93B87AAdb2B826A791b2c1Bf749996', + kovan: '0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc', + fuji: '0x666a24F62f7A97BA33c151776Eb3D9441a059eB8', + bsctestnet: '0x7914A3349107A7295Bbf2374db5A973d73D1b324', + arbitrumrinkeby: '0x5d56B8a669F50193b54319442c6EEE5edD662381', + optimismkovan: '0x58483b754Abb1E8947BE63d6b95DF75b8249543A', + auroratestnet: '0x98AAE089CaD930C64a76dD2247a2aC5773a4B8cE', + }, + outbox: { + proxy: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + implementation: '0x589C201a07c26b4725A4A829d772f24423da480B', + beacon: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + }, + inboxes: { + alfajores: { + proxy: '0x1D5EbC3e15e9ECDe0e3530C85899556797eeaea5', + implementation: '0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E', + beacon: '0x7FE7EA170cf08A25C2ff315814D96D93C311E692', + }, + kovan: { + proxy: '0x0526E47C49742C15F8817ef8cf0d8FFc72139D4F', + implementation: '0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E', + beacon: '0x7FE7EA170cf08A25C2ff315814D96D93C311E692', + }, + fuji: { + proxy: '0xef48bd850E5827B96B55C4D28FB32Bbaa73616F2', + implementation: '0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E', + beacon: '0x7FE7EA170cf08A25C2ff315814D96D93C311E692', + }, + bsctestnet: { + proxy: '0x3C5154a193D6e2955650f9305c8d80c18C814A68', + implementation: '0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E', + beacon: '0x7FE7EA170cf08A25C2ff315814D96D93C311E692', + }, + arbitrumrinkeby: { + proxy: '0x05Ea36Caee7d92C173334C9D97DcD39ABdCB2b69', + implementation: '0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E', + beacon: '0x7FE7EA170cf08A25C2ff315814D96D93C311E692', + }, + optimismkovan: { + proxy: '0x679Dc08cC3A4acFeea2f7CAFAa37561aE0b41Ce7', + implementation: '0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E', + beacon: '0x7FE7EA170cf08A25C2ff315814D96D93C311E692', + }, + auroratestnet: { + proxy: '0x07009DA2249c388aD0f416a235AfE90D784e1aAc', + implementation: '0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E', + beacon: '0x7FE7EA170cf08A25C2ff315814D96D93C311E692', + }, + }, + }, + bsctestnet: { + upgradeBeaconController: '0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8', + abacusConnectionManager: '0xC2E36cd6e32e194EE11f15D9273B64461A4D49A2', + interchainGasPaymaster: '0x44b764045BfDC68517e10e783E69B376cef196B2', + outboxValidatorManager: '0xfc6e546510dC9d76057F1f76633FCFfC188CB213', + inboxValidatorManagers: { + alfajores: '0x589C201a07c26b4725A4A829d772f24423da480B', + kovan: '0x833Dad7FF66884389D5F0cEcba446ffaa7d2837e', + fuji: '0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E', + mumbai: '0xF7F0DaB0BECE4498dAc7eb616e288809D4499371', + arbitrumrinkeby: '0xd785272D240B07719e417622cbd2cfA0E584d1bd', + optimismkovan: '0x598facE78a4302f11E3de0bee1894Da0b2Cb71F8', + auroratestnet: '0x527768930D889662Fe7ACF64294871e86e4C2381', + }, + outbox: { + proxy: '0x16B710b86CAd07E6F1C531861a16F5feC29dba37', + implementation: '0x275aCcCa81cAD931dC6fB6E49ED233Bc99Bed4A7', + beacon: '0xeb6f11189197223c656807a83B0DD374f9A6dF44', + }, + inboxes: { + alfajores: { + proxy: '0xB08d78F439e55D02C398519eef61606A5926245F', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + kovan: { + proxy: '0xD3d062a5dcBA85ae863618d4c264d2358300c283', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + fuji: { + proxy: '0x7FE7EA170cf08A25C2ff315814D96D93C311E692', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + mumbai: { + proxy: '0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + arbitrumrinkeby: { + proxy: '0x666a24F62f7A97BA33c151776Eb3D9441a059eB8', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + optimismkovan: { + proxy: '0x7914A3349107A7295Bbf2374db5A973d73D1b324', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + auroratestnet: { + proxy: '0x5d56B8a669F50193b54319442c6EEE5edD662381', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + }, + }, + arbitrumrinkeby: { + upgradeBeaconController: '0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8', + abacusConnectionManager: '0xC2E36cd6e32e194EE11f15D9273B64461A4D49A2', + interchainGasPaymaster: '0x44b764045BfDC68517e10e783E69B376cef196B2', + outboxValidatorManager: '0xfc6e546510dC9d76057F1f76633FCFfC188CB213', + inboxValidatorManagers: { + alfajores: '0x589C201a07c26b4725A4A829d772f24423da480B', + kovan: '0x833Dad7FF66884389D5F0cEcba446ffaa7d2837e', + fuji: '0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E', + mumbai: '0xF7F0DaB0BECE4498dAc7eb616e288809D4499371', + bsctestnet: '0xd785272D240B07719e417622cbd2cfA0E584d1bd', + optimismkovan: '0x598facE78a4302f11E3de0bee1894Da0b2Cb71F8', + auroratestnet: '0x527768930D889662Fe7ACF64294871e86e4C2381', + }, + outbox: { + proxy: '0x16B710b86CAd07E6F1C531861a16F5feC29dba37', + implementation: '0x275aCcCa81cAD931dC6fB6E49ED233Bc99Bed4A7', + beacon: '0xeb6f11189197223c656807a83B0DD374f9A6dF44', + }, + inboxes: { + alfajores: { + proxy: '0xB08d78F439e55D02C398519eef61606A5926245F', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + kovan: { + proxy: '0xD3d062a5dcBA85ae863618d4c264d2358300c283', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + fuji: { + proxy: '0x7FE7EA170cf08A25C2ff315814D96D93C311E692', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + mumbai: { + proxy: '0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + bsctestnet: { + proxy: '0x666a24F62f7A97BA33c151776Eb3D9441a059eB8', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + optimismkovan: { + proxy: '0x7914A3349107A7295Bbf2374db5A973d73D1b324', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + auroratestnet: { + proxy: '0x5d56B8a669F50193b54319442c6EEE5edD662381', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + }, + }, + optimismkovan: { + upgradeBeaconController: '0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8', + abacusConnectionManager: '0xC2E36cd6e32e194EE11f15D9273B64461A4D49A2', + interchainGasPaymaster: '0x44b764045BfDC68517e10e783E69B376cef196B2', + outboxValidatorManager: '0xfc6e546510dC9d76057F1f76633FCFfC188CB213', + inboxValidatorManagers: { + alfajores: '0x589C201a07c26b4725A4A829d772f24423da480B', + kovan: '0x833Dad7FF66884389D5F0cEcba446ffaa7d2837e', + fuji: '0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E', + mumbai: '0xF7F0DaB0BECE4498dAc7eb616e288809D4499371', + bsctestnet: '0xd785272D240B07719e417622cbd2cfA0E584d1bd', + arbitrumrinkeby: '0x598facE78a4302f11E3de0bee1894Da0b2Cb71F8', + auroratestnet: '0x527768930D889662Fe7ACF64294871e86e4C2381', + }, + outbox: { + proxy: '0x16B710b86CAd07E6F1C531861a16F5feC29dba37', + implementation: '0x275aCcCa81cAD931dC6fB6E49ED233Bc99Bed4A7', + beacon: '0xeb6f11189197223c656807a83B0DD374f9A6dF44', + }, + inboxes: { + alfajores: { + proxy: '0xB08d78F439e55D02C398519eef61606A5926245F', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + kovan: { + proxy: '0xD3d062a5dcBA85ae863618d4c264d2358300c283', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + fuji: { + proxy: '0x7FE7EA170cf08A25C2ff315814D96D93C311E692', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + mumbai: { + proxy: '0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + bsctestnet: { + proxy: '0x666a24F62f7A97BA33c151776Eb3D9441a059eB8', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + arbitrumrinkeby: { + proxy: '0x7914A3349107A7295Bbf2374db5A973d73D1b324', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + auroratestnet: { + proxy: '0x5d56B8a669F50193b54319442c6EEE5edD662381', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + }, + }, + auroratestnet: { + upgradeBeaconController: '0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8', + abacusConnectionManager: '0xC2E36cd6e32e194EE11f15D9273B64461A4D49A2', + interchainGasPaymaster: '0x44b764045BfDC68517e10e783E69B376cef196B2', + outboxValidatorManager: '0xfc6e546510dC9d76057F1f76633FCFfC188CB213', + inboxValidatorManagers: { + alfajores: '0x589C201a07c26b4725A4A829d772f24423da480B', + kovan: '0x833Dad7FF66884389D5F0cEcba446ffaa7d2837e', + fuji: '0x7d498740A4572f2B5c6b0A1Ba9d1d9DbE207e89E', + mumbai: '0xF7F0DaB0BECE4498dAc7eb616e288809D4499371', + bsctestnet: '0xd785272D240B07719e417622cbd2cfA0E584d1bd', + arbitrumrinkeby: '0x598facE78a4302f11E3de0bee1894Da0b2Cb71F8', + optimismkovan: '0x527768930D889662Fe7ACF64294871e86e4C2381', + }, + outbox: { + proxy: '0x16B710b86CAd07E6F1C531861a16F5feC29dba37', + implementation: '0x275aCcCa81cAD931dC6fB6E49ED233Bc99Bed4A7', + beacon: '0xeb6f11189197223c656807a83B0DD374f9A6dF44', + }, + inboxes: { + alfajores: { + proxy: '0xB08d78F439e55D02C398519eef61606A5926245F', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + kovan: { + proxy: '0xD3d062a5dcBA85ae863618d4c264d2358300c283', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + fuji: { + proxy: '0x7FE7EA170cf08A25C2ff315814D96D93C311E692', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + mumbai: { + proxy: '0xfc8d0D2E15A36f1A3F3aE3Cb127B706c1f23Aadc', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + bsctestnet: { + proxy: '0x666a24F62f7A97BA33c151776Eb3D9441a059eB8', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + arbitrumrinkeby: { + proxy: '0x7914A3349107A7295Bbf2374db5A973d73D1b324', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + optimismkovan: { + proxy: '0x5d56B8a669F50193b54319442c6EEE5edD662381', + implementation: '0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD', + beacon: '0x33dB966328Ea213b0f76eF96CA368AB37779F065', + }, + }, + }, +}; diff --git a/typescript/sdk/src/domains.ts b/typescript/sdk/src/domains.ts index a5efeda8c..479931ec8 100644 --- a/typescript/sdk/src/domains.ts +++ b/typescript/sdk/src/domains.ts @@ -1,5 +1,9 @@ import { ChainName, Domain } from './types'; +// IDs can be generated in many ways-- for example, in JS: +// > Array.from('celo').map((c, i) => c.charCodeAt(0).toString(16).padStart(2, '0')).join('') +// '63656c6f' + /** * Mainnets */ @@ -81,6 +85,26 @@ export const ropsten: Domain = { id: 3, }; +export const bsctestnet: Domain = { + name: 'bsctestnet', + id: 0x62732d74, // b'bs-t' interpreted as an int +}; + +export const arbitrumrinkeby: Domain = { + name: 'arbitrumrinkeby', + id: 0x61722d72, // b'ar-r' interpreted as an int +}; + +export const optimismkovan: Domain = { + name: 'optimismkovan', + id: 0x6f702d6b, // b'op-k' interpreted as an int +}; + +export const auroratestnet: Domain = { + name: 'auroratestnet', + id: 0x61752d74, // b'au-t' interpreted as an int +}; + /** * Test */ @@ -112,6 +136,10 @@ export const domains: Record = { rinkarby, ropsten, kovan, + bsctestnet, + arbitrumrinkeby, + optimismkovan, + auroratestnet, test1, test2, test3, diff --git a/typescript/sdk/src/types.ts b/typescript/sdk/src/types.ts index fbd150778..b7e76dad8 100644 --- a/typescript/sdk/src/types.ts +++ b/typescript/sdk/src/types.ts @@ -26,6 +26,10 @@ export enum Chains { ethereum, avalanche, polygon, + bsctestnet, + arbitrumrinkeby, + optimismkovan, + auroratestnet, test1, test2, test3,