Skip to content

Commit e619004

Browse files
authored
feat: add starknet provider metrics (#7009)
1 parent 3181c49 commit e619004

File tree

17 files changed

+295
-123
lines changed

17 files changed

+295
-123
lines changed

rust/main/Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/main/chains/hyperlane-starknet/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ url.workspace = true
2828
hyperlane-core = { path = "../../hyperlane-core", features = ["async"] }
2929
hyperlane-operation-verifier = { path = "../../applications/hyperlane-operation-verifier" }
3030
hyperlane-warp-route = { path = "../../applications/hyperlane-warp-route" }
31+
hyperlane-metric = { path = "../../hyperlane-metric" }
3132

3233
[build-dependencies]
3334
abigen = { path = "../../utils/abigen", features = ["starknet"] }

rust/main/chains/hyperlane-starknet/src/indexer.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ use crate::contracts::mailbox::MailboxReader as StarknetMailboxReader;
1313
use crate::contracts::merkle_tree_hook::MerkleTreeHookReader as StarknetMerkleTreeHookReader;
1414
use crate::types::HyH256;
1515
use crate::{
16-
build_json_provider, get_block_height_u32, try_parse_hyperlane_message_from_event,
17-
ConnectionConf, HyperlaneStarknetError, JsonProvider,
16+
get_block_height_u32, try_parse_hyperlane_message_from_event, HyperlaneStarknetError,
17+
JsonProvider, StarknetProvider,
1818
};
1919

2020
const CHUNK_SIZE: u64 = 50;
@@ -29,14 +29,13 @@ pub struct StarknetMailboxIndexer {
2929
impl StarknetMailboxIndexer {
3030
/// create new Starknet Mailbox Indexer
3131
pub fn new(
32-
conf: ConnectionConf,
32+
provider: StarknetProvider,
3333
locator: ContractLocator,
3434
reorg_period: &ReorgPeriod,
3535
) -> ChainResult<Self> {
36-
let rpc_client = build_json_provider(&conf);
3736
let contract = StarknetMailboxReader::new(
3837
Felt::from_bytes_be(&locator.address.to_fixed_bytes()),
39-
rpc_client,
38+
provider.rpc_client().clone(),
4039
);
4140

4241
Ok(Self {
@@ -138,14 +137,13 @@ pub struct StarknetMerkleTreeHookIndexer {
138137
impl StarknetMerkleTreeHookIndexer {
139138
/// create new Starknet MerkleTreeHook Indexer
140139
pub fn new(
141-
conf: ConnectionConf,
140+
provider: StarknetProvider,
142141
locator: ContractLocator,
143142
reorg_period: &ReorgPeriod,
144143
) -> ChainResult<Self> {
145-
let rpc_client = build_json_provider(&conf);
146144
let contract = StarknetMerkleTreeHookReader::new(
147145
Felt::from_bytes_be(&locator.address.to_fixed_bytes()),
148-
rpc_client,
146+
provider.rpc_client().clone(),
149147
);
150148

151149
Ok(Self {

rust/main/chains/hyperlane-starknet/src/interchain_gas.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33

44
use async_trait::async_trait;
55
use hyperlane_core::{
6-
ChainResult, ContractLocator, HyperlaneChain, HyperlaneContract, HyperlaneDomain,
7-
HyperlaneProvider, InterchainGasPaymaster, H256,
6+
ChainResult, HyperlaneChain, HyperlaneContract, HyperlaneDomain, HyperlaneProvider,
7+
InterchainGasPaymaster, H256,
88
};
99

1010
use crate::{ConnectionConf, StarknetProvider};
@@ -18,9 +18,9 @@ pub struct StarknetInterchainGasPaymaster {
1818
}
1919

2020
impl StarknetInterchainGasPaymaster {
21-
pub fn new(conn: &ConnectionConf, locator: &ContractLocator) -> ChainResult<Self> {
21+
pub fn new(provider: StarknetProvider, conn: ConnectionConf) -> ChainResult<Self> {
2222
Ok(Self {
23-
provider: StarknetProvider::new(locator.domain.clone(), conn),
23+
provider,
2424
conn: conn.clone(),
2525
})
2626
}

rust/main/chains/hyperlane-starknet/src/ism/aggregation_ism.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use tracing::instrument;
1212
use crate::contracts::aggregation_ism::{AggregationIsmReader, Message as StarknetMessage};
1313
use crate::error::HyperlaneStarknetError;
1414
use crate::types::HyH256;
15-
use crate::{build_json_provider, ConnectionConf, JsonProvider, StarknetProvider};
15+
use crate::{ConnectionConf, JsonProvider, StarknetProvider};
1616

1717
/// A reference to a AggregationISM contract on some Starknet chain
1818
#[derive(Debug)]
@@ -26,14 +26,18 @@ pub struct StarknetAggregationIsm {
2626
impl StarknetAggregationIsm {
2727
/// Create a reference to a AggregationISM at a specific Starknet address on some
2828
/// chain
29-
pub fn new(conn: &ConnectionConf, locator: &ContractLocator<'_>) -> ChainResult<Self> {
30-
let provider = build_json_provider(conn);
29+
pub fn new(
30+
provider: StarknetProvider,
31+
conn: &ConnectionConf,
32+
locator: &ContractLocator<'_>,
33+
) -> ChainResult<Self> {
3134
let ism_address: Felt = HyH256(locator.address).into();
32-
let contract = AggregationIsmReader::new(ism_address, provider);
35+
let json_provider = provider.rpc_client().clone();
36+
let contract = AggregationIsmReader::new(ism_address, json_provider);
3337

3438
Ok(Self {
3539
contract,
36-
provider: StarknetProvider::new(locator.domain.clone(), conn),
40+
provider,
3741
conn: conn.clone(),
3842
})
3943
}

rust/main/chains/hyperlane-starknet/src/ism/interchain_security_module.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ use tracing::instrument;
1212
use crate::contracts::interchain_security_module::InterchainSecurityModuleReader;
1313
use crate::error::HyperlaneStarknetError;
1414
use crate::types::HyH256;
15-
use crate::{
16-
build_json_provider, to_hpl_module_type, ConnectionConf, JsonProvider, StarknetProvider,
17-
};
15+
use crate::{to_hpl_module_type, ConnectionConf, JsonProvider, StarknetProvider};
1816

1917
/// A reference to a ISM contract on some Starknet chain
2018
#[derive(Debug)]
@@ -28,14 +26,18 @@ pub struct StarknetInterchainSecurityModule {
2826
impl StarknetInterchainSecurityModule {
2927
/// Create a reference to a ISM at a specific Starknet address on some
3028
/// chain
31-
pub fn new(conn: &ConnectionConf, locator: &ContractLocator<'_>) -> ChainResult<Self> {
32-
let provider = build_json_provider(conn);
29+
pub fn new(
30+
provider: StarknetProvider,
31+
conn: &ConnectionConf,
32+
locator: &ContractLocator<'_>,
33+
) -> ChainResult<Self> {
34+
let json_provider = provider.rpc_client().clone();
3335
let ism_address: Felt = HyH256(locator.address).into();
34-
let contract = InterchainSecurityModuleReader::new(ism_address, provider);
36+
let contract = InterchainSecurityModuleReader::new(ism_address, json_provider);
3537

3638
Ok(Self {
3739
contract,
38-
provider: StarknetProvider::new(locator.domain.clone(), conn),
40+
provider,
3941
conn: conn.clone(),
4042
})
4143
}

rust/main/chains/hyperlane-starknet/src/ism/multisig_ism.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use tracing::instrument;
1212
use crate::contracts::multisig_ism::MultisigIsmReader;
1313
use crate::error::HyperlaneStarknetError;
1414
use crate::types::HyH256;
15-
use crate::{build_json_provider, ConnectionConf, JsonProvider, StarknetProvider};
15+
use crate::{ConnectionConf, JsonProvider, StarknetProvider};
1616

1717
/// A reference to a MultisigISM contract on some Starknet chain
1818
#[derive(Debug)]
@@ -26,14 +26,18 @@ pub struct StarknetMultisigIsm {
2626
impl StarknetMultisigIsm {
2727
/// Create a reference to a MultisigISM at a specific Starknet address on some
2828
/// chain
29-
pub fn new(conn: &ConnectionConf, locator: &ContractLocator<'_>) -> ChainResult<Self> {
30-
let provider = build_json_provider(conn);
29+
pub fn new(
30+
provider: StarknetProvider,
31+
conn: &ConnectionConf,
32+
locator: &ContractLocator<'_>,
33+
) -> ChainResult<Self> {
34+
let json_provider = provider.rpc_client().clone();
3135
let ism_address: Felt = HyH256(locator.address).into();
32-
let contract = MultisigIsmReader::new(ism_address, provider);
36+
let contract = MultisigIsmReader::new(ism_address, json_provider);
3337

3438
Ok(Self {
3539
contract,
36-
provider: StarknetProvider::new(locator.domain.clone(), conn),
40+
provider,
3741
conn: conn.clone(),
3842
})
3943
}

rust/main/chains/hyperlane-starknet/src/ism/routing_ism.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use tracing::instrument;
1212
use crate::contracts::routing_ism::RoutingIsmReader;
1313
use crate::error::HyperlaneStarknetError;
1414
use crate::types::HyH256;
15-
use crate::{build_json_provider, ConnectionConf, JsonProvider, StarknetProvider};
15+
use crate::{ConnectionConf, JsonProvider, StarknetProvider};
1616

1717
/// A reference to a RoutingISM contract on some Starknet chain
1818
#[derive(Debug)]
@@ -25,15 +25,18 @@ pub struct StarknetRoutingIsm {
2525

2626
impl StarknetRoutingIsm {
2727
/// Create a reference to a RoutingISM at a specific Starknet address on some
28-
/// chain
29-
pub fn new(conn: &ConnectionConf, locator: &ContractLocator<'_>) -> ChainResult<Self> {
30-
let provider = build_json_provider(conn);
28+
pub fn new(
29+
provider: StarknetProvider,
30+
conn: &ConnectionConf,
31+
locator: &ContractLocator<'_>,
32+
) -> ChainResult<Self> {
33+
let json_provider = provider.rpc_client().clone();
3134
let ism_address: Felt = HyH256(locator.address).into();
32-
let contract = RoutingIsmReader::new(ism_address, provider);
35+
let contract = RoutingIsmReader::new(ism_address, json_provider);
3336

3437
Ok(Self {
3538
contract,
36-
provider: StarknetProvider::new(locator.domain.clone(), conn),
39+
provider,
3740
conn: conn.clone(),
3841
})
3942
}

rust/main/chains/hyperlane-starknet/src/mailbox.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,20 @@ impl StarknetMailbox {
3838
/// Create a reference to a mailbox at a specific Starknet address on some
3939
/// chain
4040
pub async fn new(
41+
provider: StarknetProvider,
4142
conn: &ConnectionConf,
4243
locator: &ContractLocator<'_>,
4344
signer: Option<Signer>,
4445
) -> ChainResult<Self> {
45-
let account = build_single_owner_account(conn.urls.clone(), signer).await?;
46+
let account = build_single_owner_account(signer, provider.rpc_client()).await?;
4647

4748
let mailbox_address: Felt = HyH256(locator.address).into();
4849

4950
let contract = StarknetMailboxInternal::new(mailbox_address, account);
5051

5152
Ok(Self {
5253
contract,
53-
provider: StarknetProvider::new(locator.domain.clone(), conn),
54+
provider,
5455
conn: conn.clone(),
5556
})
5657
}

rust/main/chains/hyperlane-starknet/src/merkle_tree_hook.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,7 @@ use tracing::instrument;
1515
use crate::contracts::merkle_tree_hook::MerkleTreeHookReader;
1616
use crate::error::HyperlaneStarknetError;
1717
use crate::types::HyH256;
18-
use crate::{
19-
build_json_provider, get_block_height_for_reorg_period, ConnectionConf, JsonProvider,
20-
StarknetProvider,
21-
};
18+
use crate::{get_block_height_for_reorg_period, ConnectionConf, JsonProvider, StarknetProvider};
2219

2320
/// A reference to a Merkle Tree Hook contract on some Starknet chain
2421
#[derive(Debug)]
@@ -32,14 +29,17 @@ pub struct StarknetMerkleTreeHook {
3229
impl StarknetMerkleTreeHook {
3330
/// Create a reference to a merkle tree hook at a specific Starknet address on some
3431
/// chain
35-
pub fn new(conn: &ConnectionConf, locator: &ContractLocator<'_>) -> ChainResult<Self> {
36-
let provider = build_json_provider(conn);
32+
pub fn new(
33+
provider: StarknetProvider,
34+
conn: &ConnectionConf,
35+
locator: &ContractLocator<'_>,
36+
) -> ChainResult<Self> {
3737
let hook_address: Felt = HyH256(locator.address).into();
38-
let contract = MerkleTreeHookReader::new(hook_address, provider);
38+
let contract = MerkleTreeHookReader::new(hook_address, provider.rpc_client().clone());
3939

4040
Ok(Self {
4141
contract,
42-
provider: StarknetProvider::new(locator.domain.clone(), conn),
42+
provider,
4343
conn: conn.clone(),
4444
})
4545
}

0 commit comments

Comments
 (0)