Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion config/networks/arbitrum.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
],
"symbol": "ETH",
"tags": [
"arbitrum-based",
Comment thread
zeljkoX marked this conversation as resolved.
"rollup",
"no-mempool"

@zeljkoX zeljkoX Jul 23, 2025

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Potentially we do not need no-mempool tag with introduction of arbitrum_based tag. I do not see need for existance of no-mempool tag.

We can simply calculate lacks_mempool return value based on other tag/s for example.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I agree, but for this PR, lets keep that simple.
I will address that issue later on, but I will keep no-mempool so users can have a way to test that.
PLAT-6876 is the ticket for that.

],
Expand All @@ -42,11 +43,11 @@
"required_confirmations": 1,
"rpc_urls": [
"https://sepolia-rollup.arbitrum.io/rpc",
"https://arbitrum-sepolia.drpc.org",
"https://arbitrum-sepolia-rpc.publicnode.com"
Comment thread
LuisUrrutia marked this conversation as resolved.
],
"symbol": "ETH",
"tags": [
"arbitrum-based",
Comment thread
zeljkoX marked this conversation as resolved.
"deprecated",
"rollup",
"no-mempool"
Expand All @@ -73,6 +74,7 @@
],
"symbol": "ETH",
"tags": [
"arbitrum-based",
Comment thread
zeljkoX marked this conversation as resolved.
"rollup",
"no-mempool"
],
Expand Down
3 changes: 3 additions & 0 deletions docs/modules/ROOT/pages/network_configuration.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,9 @@ Some tags have special meaning and affect relayer behavior:
|`optimism`
Comment thread
zeljkoX marked this conversation as resolved.
|Identifies Optimism-based networks using the OP Stack (e.g., Optimism, Base, World Chain)

|`arbitrum-based`
|Identifies Arbitrum-based networks using the Arbitrum Stack

|`no-mempool`
|Indicates networks that lack a traditional mempool (e.g., Arbitrum)

Expand Down
6 changes: 6 additions & 0 deletions src/constants/evm_transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,9 @@ pub const MIN_BUMP_FACTOR: f64 = 1.1;
pub const MAXIMUM_TX_ATTEMPTS: usize = 50;
// Maximum number of NOOP transactions to attempt
pub const MAXIMUM_NOOP_RETRY_ATTEMPTS: u32 = 50;

/// Time to resubmit for Arbitrum networks
pub const ARBITRUM_TIME_TO_RESUBMIT: i64 = 20_000;

// Gas limit for Arbitrum networks (mainly used for NOOP transactions (with no data), covers L1 + L2 costs)
pub const ARBITRUM_GAS_LIMIT: u64 = 50_000;
32 changes: 31 additions & 1 deletion src/domain/transaction/evm/evm_transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1211,7 +1211,37 @@ mod tests {
.expect_produce_send_notification_job()
.returning(|_, _| Box::pin(ready(Ok(()))));

let mock_network = MockNetworkRepository::new();
// Network repository expectations for cancellation NOOP transaction
let mut mock_network = MockNetworkRepository::new();
mock_network
.expect_get_by_chain_id()
.with(eq(NetworkType::Evm), eq(1))
.returning(|_, _| {
use crate::config::{EvmNetworkConfig, NetworkConfigCommon};
use crate::models::{NetworkConfigData, NetworkRepoModel};

let config = EvmNetworkConfig {
common: NetworkConfigCommon {
network: "mainnet".to_string(),
from: None,
rpc_urls: Some(vec!["https://rpc.example.com".to_string()]),
explorer_urls: None,
average_blocktime_ms: Some(12000),
is_testnet: Some(false),
tags: Some(vec!["mainnet".to_string()]),
},
chain_id: Some(1),
required_confirmations: Some(12),
features: Some(vec!["eip1559".to_string()]),
symbol: Some("ETH".to_string()),
};
Ok(Some(NetworkRepoModel {
id: "evm:mainnet".to_string(),
name: "mainnet".to_string(),
network_type: NetworkType::Evm,
config: NetworkConfigData::Evm(config),
}))
});

// Set up EVM transaction with the mocks
let evm_transaction = EvmRelayerTransaction {
Expand Down
Loading
Loading