Skip to content

Commit 111b1d1

Browse files
committed
chore(relayer): refactor event sources
1 parent 88d9648 commit 111b1d1

File tree

17 files changed

+1182
-1107
lines changed

17 files changed

+1182
-1107
lines changed

omni-relayer/Cargo.toml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ solana-transaction-status = "2.1.9"
3434
solana-rpc-client-api = "2.1.9"
3535

3636
omni-types = { git = "https://github.com/near-one/omni-bridge", package = "omni-types", rev = "ffbdc544c0d7f670942e8bf532c7e023c1c6bfec", features = ["abi", "__abi-generate"] }
37-
bridge-indexer-types = { git = "ssh://git@github.com/near-one/bridge-indexer-rs.git", package = "bridge-indexer-types", rev = "7e99a29f783eb3a15e4f2296a0759773118c1c6d" }
37+
bridge-indexer-types = { git = "ssh://git@github.com/near-one/bridge-indexer-rs.git", package = "bridge-indexer-types", rev = "7e99a29f783eb3a15e4f2296a0759773118c1c6d", optional = true }
3838

39-
near-lake-framework = "0.7.14"
39+
near-lake-framework = { version = "0.7.14", optional = true }
4040
near-jsonrpc-client = "0.20.0"
4141
near-jsonrpc-primitives = "0.34.2"
4242
near-primitives = "0.34.2"
@@ -46,7 +46,7 @@ near-sdk = { version = "5.24.1", features = ["unit-testing"] }
4646
hex = "0.4.3"
4747
alloy = { version = "1.1", features = ["node-bindings", "providers", "rpc-types", "sol-types", "provider-ws", "signers", "signer-local"] }
4848

49-
mongodb = "3.2.2"
49+
mongodb = { version = "3.2.2", optional = true }
5050
redis = { version = "0.32.5", features = ["aio", "tokio-comp", "connection-manager", "json"] }
5151
async-nats = "0.45"
5252
reqwest = "0.12"
@@ -65,6 +65,12 @@ light-client = { git = "https://github.com/Near-One/bridge-sdk-rs", package = "l
6565

6666
omni-connector = { git = "https://github.com/Near-One/bridge-sdk-rs", package = "omni-connector", rev = "19f6cc07f1802497aabee9c943358a16c3a6d901" }
6767

68+
[features]
69+
default = ["nats-ingestion"]
70+
nats-ingestion = ["dep:bridge-indexer-types"]
71+
mongo-ingestion = ["dep:mongodb", "dep:bridge-indexer-types"]
72+
native-indexers = ["dep:near-lake-framework"]
73+
6874
# The profile that 'dist' will build with
6975
[profile.dist]
7076
inherits = "release"

omni-relayer/src/main.rs

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ use config::Network;
66
use near_sdk::base64::{Engine, engine::general_purpose};
77
use omni_types::ChainKind;
88
use reqwest::Url;
9-
use solana_sdk::signature::Signature;
109
use tracing::{error, info, warn};
1110
use tracing_subscriber::{EnvFilter, fmt, layer::SubscriberExt, util::SubscriberInitExt};
1211

1312
mod config;
1413
mod startup;
14+
mod types;
1515
mod utils;
1616
mod workers;
1717

@@ -21,27 +21,35 @@ struct CliArgs {
2121
#[clap(short, long, default_value = "config.toml")]
2222
config: String,
2323
/// Start block for Near indexer
24+
#[cfg(feature = "native-indexers")]
2425
#[clap(long)]
2526
near_start_block: Option<u64>,
2627
/// Start block for Ethereum indexer
28+
#[cfg(feature = "native-indexers")]
2729
#[clap(long)]
2830
eth_start_block: Option<u64>,
2931
/// Start block for Base indexer
32+
#[cfg(feature = "native-indexers")]
3033
#[clap(long)]
3134
base_start_block: Option<u64>,
3235
/// Start block for Arbitrum indexer
36+
#[cfg(feature = "native-indexers")]
3337
#[clap(long)]
3438
arb_start_block: Option<u64>,
3539
/// Start block for Bnb indexer
40+
#[cfg(feature = "native-indexers")]
3641
#[clap(long)]
3742
bnb_start_block: Option<u64>,
3843
/// Start block for Pol indexer
44+
#[cfg(feature = "native-indexers")]
3945
#[clap(long)]
4046
pol_start_block: Option<u64>,
4147
/// Start signature for Solana indexer
48+
#[cfg(feature = "native-indexers")]
4249
#[clap(long)]
43-
solana_start_signature: Option<Signature>,
50+
solana_start_signature: Option<solana_sdk::signature::Signature>,
4451
/// Start timestamp for bridge indexer
52+
#[cfg(feature = "mongo-ingestion")]
4553
#[clap(long)]
4654
start_timestamp: Option<u32>,
4755
}
@@ -144,11 +152,11 @@ async fn main() -> Result<()> {
144152

145153
let jsonrpc_client = near_jsonrpc_client::JsonRpcClient::connect(config.near.rpc_url.clone());
146154

147-
let near_omni_signer = startup::near::get_signer(&config, config::NearSignerType::Omni)?;
155+
let near_omni_signer = utils::near::get_signer(&config, config::NearSignerType::Omni)?;
148156
let omni_connector = Arc::new(startup::build_omni_connector(&config, &near_omni_signer).await?);
149157

150158
let (near_fast_signer, fast_connector) = if config.is_fast_relayer_enabled() {
151-
let near_fast_signer = startup::near::get_signer(&config, config::NearSignerType::Fast)?;
159+
let near_fast_signer = utils::near::get_signer(&config, config::NearSignerType::Fast)?;
152160

153161
(
154162
Some(near_fast_signer.clone()),
@@ -176,40 +184,47 @@ async fn main() -> Result<()> {
176184

177185
let mut handles = Vec::new();
178186

187+
#[cfg(feature = "nats-ingestion")]
179188
if config.is_nats_enabled() {
180189
handles.push(tokio::spawn({
181190
let config = config.clone();
182191
let mut redis_connection_manager = redis_connection_manager.clone();
183192
let nats_client = nats_client.clone().unwrap();
184193
async move {
185-
startup::bridge_indexer::start_indexer_nats(
194+
startup::nats_ingestion::start_indexer_nats(
186195
&config,
187196
&mut redis_connection_manager,
188197
nats_client,
189198
)
190199
.await
191200
}
192201
}));
193-
} else if config.is_bridge_indexer_enabled() {
202+
}
203+
204+
#[cfg(feature = "mongo-ingestion")]
205+
if config.is_bridge_indexer_enabled() {
194206
handles.push(tokio::spawn({
195207
let config = config.clone();
196208
let mut redis_connection_manager = redis_connection_manager.clone();
197209
async move {
198-
startup::bridge_indexer::start_indexer(
210+
startup::mongo_ingestion::start_indexer(
199211
&config,
200212
&mut redis_connection_manager,
201213
args.start_timestamp,
202214
)
203215
.await
204216
}
205217
}));
206-
} else {
218+
}
219+
220+
#[cfg(feature = "native-indexers")]
221+
{
207222
handles.push(tokio::spawn({
208223
let config = config.clone();
209224
let mut redis_connection_manager = redis_connection_manager.clone();
210225
let jsonrpc_client = jsonrpc_client.clone();
211226
async move {
212-
startup::near::start_indexer(
227+
startup::native_indexers::near::start_indexer(
213228
&config,
214229
&mut redis_connection_manager,
215230
jsonrpc_client,
@@ -223,7 +238,7 @@ async fn main() -> Result<()> {
223238
let config = config.clone();
224239
let mut redis_connection_manager = redis_connection_manager.clone();
225240
async move {
226-
startup::evm::start_indexer(
241+
startup::native_indexers::evm::start_indexer(
227242
&config,
228243
&mut redis_connection_manager,
229244
ChainKind::Eth,
@@ -238,7 +253,7 @@ async fn main() -> Result<()> {
238253
let config = config.clone();
239254
let mut redis_connection_manager = redis_connection_manager.clone();
240255
async move {
241-
startup::evm::start_indexer(
256+
startup::native_indexers::evm::start_indexer(
242257
&config,
243258
&mut redis_connection_manager,
244259
ChainKind::Base,
@@ -253,7 +268,7 @@ async fn main() -> Result<()> {
253268
let config = config.clone();
254269
let mut redis_connection_manager = redis_connection_manager.clone();
255270
async move {
256-
startup::evm::start_indexer(
271+
startup::native_indexers::evm::start_indexer(
257272
&config,
258273
&mut redis_connection_manager,
259274
ChainKind::Arb,
@@ -268,7 +283,7 @@ async fn main() -> Result<()> {
268283
let config = config.clone();
269284
let mut redis_connection_manager = redis_connection_manager.clone();
270285
async move {
271-
startup::evm::start_indexer(
286+
startup::native_indexers::evm::start_indexer(
272287
&config,
273288
&mut redis_connection_manager,
274289
ChainKind::Bnb,
@@ -283,7 +298,7 @@ async fn main() -> Result<()> {
283298
let config = config.clone();
284299
let mut redis_connection_manager = redis_connection_manager.clone();
285300
async move {
286-
startup::evm::start_indexer(
301+
startup::native_indexers::evm::start_indexer(
287302
&config,
288303
&mut redis_connection_manager,
289304
ChainKind::Pol,
@@ -298,7 +313,7 @@ async fn main() -> Result<()> {
298313
let config = config.clone();
299314
let mut redis_connection_manager = redis_connection_manager.clone();
300315
async move {
301-
startup::solana::start_indexer(
316+
startup::native_indexers::solana::start_indexer(
302317
&config,
303318
&mut redis_connection_manager,
304319
args.solana_start_signature,
@@ -310,7 +325,7 @@ async fn main() -> Result<()> {
310325
let config = config.clone();
311326
let mut redis_connection_manager = redis_connection_manager.clone();
312327
async move {
313-
startup::solana::process_signature(&config, &mut redis_connection_manager).await
328+
startup::native_indexers::solana::process_signature(&config, &mut redis_connection_manager).await
314329
}
315330
}));
316331
}

0 commit comments

Comments
 (0)