Daniel Savu 11 months ago committed by GitHub
parent 5c8d483b37
commit f73ee0b273
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      rust/agents/relayer/src/processor.rs
  2. 92
      rust/config/test_sealevel_config.json
  3. 28
      rust/hyperlane-base/src/settings/chains.rs
  4. 4
      rust/hyperlane-base/src/settings/parser/mod.rs

@ -5,7 +5,7 @@ use derive_new::new;
use eyre::Result; use eyre::Result;
use hyperlane_core::HyperlaneDomain; use hyperlane_core::HyperlaneDomain;
use tokio::task::JoinHandle; use tokio::task::JoinHandle;
use tracing::{info_span, instrument, instrument::Instrumented, Instrument}; use tracing::instrument;
#[async_trait] #[async_trait]
pub trait ProcessorExt: Send + Debug { pub trait ProcessorExt: Send + Debug {
@ -23,9 +23,8 @@ pub struct Processor {
} }
impl Processor { impl Processor {
pub fn spawn(self) -> Instrumented<JoinHandle<Result<()>>> { pub fn spawn(self) -> JoinHandle<Result<()>> {
let span = info_span!("MessageProcessor"); tokio::spawn(async move { self.main_loop().await })
tokio::spawn(async move { self.main_loop().await }).instrument(span)
} }
#[instrument(ret, err, skip(self), level = "info", fields(domain=%self.ticker.domain()))] #[instrument(ret, err, skip(self), level = "info", fields(domain=%self.ticker.domain()))]

@ -1,48 +1,50 @@
{ {
"chains": { "chains": {
"sealeveltest1": { "sealeveltest1": {
"name": "sealeveltest1", "name": "sealeveltest1",
"chainId": 13375, "chainId": 13375,
"domainId": 13375, "domainId": 13375,
"mailbox": "692KZJaoe2KRcD6uhCQDLLXnLNA5ZLnfvdqjE4aX9iu1", "mailbox": "692KZJaoe2KRcD6uhCQDLLXnLNA5ZLnfvdqjE4aX9iu1",
"interchainGasPaymaster": "DrFtxirPPsfdY4HQiNZj2A9o4Ux7JaL3gELANgAoihhp", "merkleTreeHook": "692KZJaoe2KRcD6uhCQDLLXnLNA5ZLnfvdqjE4aX9iu1",
"validatorAnnounce": "DH43ae1LwemXAboWwSh8zc9pG8j72gKUEXNi57w8fEnn", "interchainGasPaymaster": "DrFtxirPPsfdY4HQiNZj2A9o4Ux7JaL3gELANgAoihhp",
"protocol": "sealevel", "validatorAnnounce": "DH43ae1LwemXAboWwSh8zc9pG8j72gKUEXNi57w8fEnn",
"blocks": { "protocol": "sealevel",
"reorgPeriod": 0, "blocks": {
"confirmations": 0 "reorgPeriod": 0,
}, "confirmations": 0
"rpcUrls": [ },
{ "rpcUrls": [
"http": "http://localhost:8899" {
} "http": "http://localhost:8899"
],
"index": {
"from": 1,
"mode": "sequence"
}
},
"sealeveltest2": {
"name": "sealeveltest2",
"chainId": 13376,
"domainId": 13376,
"mailbox": "9tCUWNjpqcf3NUSrtp7vquYVCwbEByvLjZUrhG5dgvhj",
"interchainGasPaymaster": "G5rGigZBL8NmxCaukK2CAKr9Jq4SUfAhsjzeri7GUraK",
"validatorAnnounce": "3Uo5j2Bti9aZtrDqJmAyuwiFaJFPFoNL5yxTpVCNcUhb",
"protocol": "sealevel",
"blocks": {
"reorgPeriod": 0,
"confirmations": 0
},
"rpcUrls": [
{
"http": "http://localhost:8899"
}
],
"index": {
"from": 1,
"mode": "sequence"
}
} }
],
"index": {
"from": 1,
"mode": "sequence"
}
},
"sealeveltest2": {
"name": "sealeveltest2",
"chainId": 13376,
"domainId": 13376,
"mailbox": "9tCUWNjpqcf3NUSrtp7vquYVCwbEByvLjZUrhG5dgvhj",
"merkleTreeHook": "9tCUWNjpqcf3NUSrtp7vquYVCwbEByvLjZUrhG5dgvhj",
"interchainGasPaymaster": "G5rGigZBL8NmxCaukK2CAKr9Jq4SUfAhsjzeri7GUraK",
"validatorAnnounce": "3Uo5j2Bti9aZtrDqJmAyuwiFaJFPFoNL5yxTpVCNcUhb",
"protocol": "sealevel",
"blocks": {
"reorgPeriod": 0,
"confirmations": 0
},
"rpcUrls": [
{
"http": "http://localhost:8899"
}
],
"index": {
"from": 1,
"mode": "sequence"
}
} }
} }
}

@ -85,7 +85,7 @@ pub struct CoreContractAddresses {
/// Address of the ValidatorAnnounce contract /// Address of the ValidatorAnnounce contract
pub validator_announce: H256, pub validator_announce: H256,
/// Address of the MerkleTreeHook contract /// Address of the MerkleTreeHook contract
pub merkle_tree_hook: Option<H256>, pub merkle_tree_hook: H256,
} }
/// Indexing settings /// Indexing settings
@ -173,13 +173,7 @@ impl ChainConf {
metrics: &CoreMetrics, metrics: &CoreMetrics,
) -> Result<Box<dyn MerkleTreeHook>> { ) -> Result<Box<dyn MerkleTreeHook>> {
let ctx = "Building merkle tree hook"; let ctx = "Building merkle tree hook";
// TODO: if the merkle tree hook is set for sealevel, it's still a mailbox program let locator = self.locator(self.addresses.merkle_tree_hook);
// that the connection is made to using the pda seeds, which will not be usable.
let address = self
.addresses
.merkle_tree_hook
.unwrap_or(self.addresses.mailbox);
let locator = self.locator(address);
match &self.connection { match &self.connection {
ChainConnectionConf::Ethereum(conf) => { ChainConnectionConf::Ethereum(conf) => {
@ -368,11 +362,7 @@ impl ChainConf {
metrics: &CoreMetrics, metrics: &CoreMetrics,
) -> Result<Box<dyn SequenceIndexer<MerkleTreeInsertion>>> { ) -> Result<Box<dyn SequenceIndexer<MerkleTreeInsertion>>> {
let ctx = "Building merkle tree hook indexer"; let ctx = "Building merkle tree hook indexer";
let address = self let locator = self.locator(self.addresses.merkle_tree_hook);
.addresses
.merkle_tree_hook
.unwrap_or(self.addresses.mailbox);
let locator = self.locator(address);
match &self.connection { match &self.connection {
ChainConnectionConf::Ethereum(conf) => { ChainConnectionConf::Ethereum(conf) => {
@ -704,13 +694,11 @@ impl ChainConf {
self.addresses.interchain_gas_paymaster, self.addresses.interchain_gas_paymaster,
EthereumInterchainGasPaymasterAbi::fn_map_owned(), EthereumInterchainGasPaymasterAbi::fn_map_owned(),
); );
if let Some(address) = self.addresses.merkle_tree_hook { register_contract(
register_contract( "merkle_tree_hook",
"merkle_tree_hook", self.addresses.merkle_tree_hook,
address, EthereumInterchainGasPaymasterAbi::fn_map_owned(),
EthereumInterchainGasPaymasterAbi::fn_map_owned(), );
);
}
cfg cfg
} }

@ -221,7 +221,7 @@ fn parse_chain(
.end(); .end();
let merkle_tree_hook = chain let merkle_tree_hook = chain
.chain(&mut err) .chain(&mut err)
.get_opt_key("merkleTreeHook") .get_key("merkleTreeHook")
.parse_address_hash() .parse_address_hash()
.end(); .end();
@ -234,7 +234,7 @@ fn parse_chain(
default_rpc_consensus_type, default_rpc_consensus_type,
); );
cfg_unwrap_all!(&chain.cwp, err: [connection, mailbox, interchain_gas_paymaster, validator_announce]); cfg_unwrap_all!(&chain.cwp, err: [connection, mailbox, interchain_gas_paymaster, validator_announce, merkle_tree_hook]);
err.into_result(ChainConf { err.into_result(ChainConf {
domain, domain,
signer, signer,

Loading…
Cancel
Save