Skip to content

Commit

Permalink
Revert "Implement single signer task in validator (#2342)"
Browse files Browse the repository at this point in the history
This reverts commit a93daec.
  • Loading branch information
yorhodes committed Jun 13, 2023
1 parent 5090712 commit 71b92c5
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 134 deletions.
2 changes: 1 addition & 1 deletion rust/agents/relayer/src/relayer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ impl BaseAgent for Relayer {
}

#[allow(clippy::async_yields_async)]
async fn run(self) -> Instrumented<JoinHandle<Result<()>>> {
async fn run(&self) -> Instrumented<JoinHandle<Result<()>>> {
let mut tasks = vec![];

// send channels by destination chain
Expand Down
2 changes: 1 addition & 1 deletion rust/agents/scraper/src/agent.rs
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ impl BaseAgent for Scraper {
}

#[allow(clippy::async_yields_async)]
async fn run(self) -> Instrumented<JoinHandle<eyre::Result<()>>> {
async fn run(&self) -> Instrumented<JoinHandle<eyre::Result<()>>> {
let mut tasks = Vec::with_capacity(self.scrapers.len());
for domain in self.scrapers.keys() {
tasks.push(self.scrape(*domain).await);
Expand Down
14 changes: 8 additions & 6 deletions rust/agents/validator/src/submit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,25 @@ use std::time::{Duration, Instant};
use std::vec;

use eyre::Result;
use hyperlane_base::db::HyperlaneRocksDB;
use hyperlane_core::accumulator::incremental::IncrementalMerkle;
use prometheus::IntGauge;
use tokio::time::sleep;
use tracing::instrument;
use tracing::{debug, info};

use hyperlane_base::{db::HyperlaneRocksDB, CheckpointSyncer, CoreMetrics};
use hyperlane_base::{CheckpointSyncer, CoreMetrics};

use hyperlane_core::{
accumulator::incremental::IncrementalMerkle, Checkpoint, CheckpointWithMessageId,
HyperlaneChain, HyperlaneContract, HyperlaneDomain, HyperlaneSignerExt, Mailbox,
Checkpoint, CheckpointWithMessageId, HyperlaneChain, HyperlaneContract, HyperlaneDomain,
HyperlaneSigner, HyperlaneSignerExt, Mailbox,
};
use hyperlane_ethereum::SingletonSignerHandle;

#[derive(Clone)]
pub(crate) struct ValidatorSubmitter {
interval: Duration,
reorg_period: Option<NonZeroU64>,
signer: SingletonSignerHandle,
signer: Arc<dyn HyperlaneSigner>,
mailbox: Arc<dyn Mailbox>,
checkpoint_syncer: Arc<dyn CheckpointSyncer>,
message_db: HyperlaneRocksDB,
Expand All @@ -32,7 +34,7 @@ impl ValidatorSubmitter {
interval: Duration,
reorg_period: u64,
mailbox: Arc<dyn Mailbox>,
signer: SingletonSignerHandle,
signer: Arc<dyn HyperlaneSigner>,
checkpoint_syncer: Arc<dyn CheckpointSyncer>,
message_db: HyperlaneRocksDB,
metrics: ValidatorSubmitterMetrics,
Expand Down
47 changes: 19 additions & 28 deletions rust/agents/validator/src/validator.rs
Original file line number Diff line number Diff line change
@@ -1,22 +1,24 @@
use std::num::NonZeroU64;
use std::sync::Arc;
use std::time::Duration;

use async_trait::async_trait;
use eyre::Result;
use hyperlane_base::db::HyperlaneRocksDB;
use hyperlane_base::MessageContractSync;
use hyperlane_core::accumulator::incremental::IncrementalMerkle;
use std::num::NonZeroU64;
use tokio::{task::JoinHandle, time::sleep};
use tracing::{error, info, info_span, instrument::Instrumented, warn, Instrument};

use hyperlane_base::{
db::{HyperlaneRocksDB, DB},
run_all, BaseAgent, CheckpointSyncer, ContractSyncMetrics, CoreMetrics, HyperlaneAgentCore,
MessageContractSync,
db::DB, run_all, BaseAgent, CheckpointSyncer, ContractSyncMetrics, CoreMetrics,
HyperlaneAgentCore,
};

use hyperlane_core::{
accumulator::incremental::IncrementalMerkle, Announcement, HyperlaneChain, HyperlaneContract,
HyperlaneDomain, HyperlaneSigner, HyperlaneSignerExt, Mailbox, ValidatorAnnounce, H256, U256,
Announcement, HyperlaneChain, HyperlaneContract, HyperlaneDomain, HyperlaneSigner,
HyperlaneSignerExt, Mailbox, ValidatorAnnounce, H256, U256,
};
use hyperlane_ethereum::{SingletonSigner, SingletonSignerHandle};

use crate::{
settings::ValidatorSettings, submit::ValidatorSubmitter, submit::ValidatorSubmitterMetrics,
Expand All @@ -31,9 +33,7 @@ pub struct Validator {
message_sync: Arc<MessageContractSync>,
mailbox: Arc<dyn Mailbox>,
validator_announce: Arc<dyn ValidatorAnnounce>,
signer: SingletonSignerHandle,
// temporary holder until `run` is called
signer_instance: Option<Box<SingletonSigner>>,
signer: Arc<dyn HyperlaneSigner>,
reorg_period: u64,
interval: Duration,
checkpoint_syncer: Arc<dyn CheckpointSyncer>,
Expand All @@ -58,9 +58,12 @@ impl BaseAgent for Validator {
let db = DB::from_path(&settings.db)?;
let msg_db = HyperlaneRocksDB::new(&settings.origin_chain, db);

// Intentionally using hyperlane_ethereum for the validator's signer
let (signer_instance, signer) = SingletonSigner::new(settings.validator.build().await?);

let signer = settings
.validator
// Intentionally using hyperlane_ethereum for the validator's signer
.build::<hyperlane_ethereum::Signers>()
.await
.map(|validator| Arc::new(validator) as Arc<dyn HyperlaneSigner>)?;
let core = settings.build_hyperlane_core(metrics.clone());
let checkpoint_syncer = settings.checkpoint_syncer.build(None)?.into();

Expand Down Expand Up @@ -92,28 +95,14 @@ impl BaseAgent for Validator {
message_sync,
validator_announce: validator_announce.into(),
signer,
signer_instance: Some(Box::new(signer_instance)),
reorg_period: settings.reorg_period,
interval: settings.interval,
checkpoint_syncer,
})
}

#[allow(clippy::async_yields_async)]
async fn run(mut self) -> Instrumented<JoinHandle<Result<()>>> {
let mut tasks = vec![];

if let Some(signer_instance) = self.signer_instance.take() {
tasks.push(
tokio::spawn(async move {
signer_instance.run().await;
Ok(())
})
.instrument(info_span!("SingletonSigner")),
);
}

// announce the validator after spawning the signer task
async fn run(&self) -> Instrumented<JoinHandle<Result<()>>> {
self.announce().await.expect("Failed to announce validator");

let reorg_period = NonZeroU64::new(self.reorg_period);
Expand All @@ -131,6 +120,8 @@ impl BaseAgent for Validator {
sleep(self.interval).await;
}

let mut tasks = vec![];

tasks.push(self.run_message_sync().await);
for checkpoint_sync_task in self.run_checkpoint_submitters().await {
tasks.push(checkpoint_sync_task);
Expand Down
5 changes: 1 addition & 4 deletions rust/chains/hyperlane-ethereum/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use ethers::prelude::{abi, Lazy, Middleware};
#[cfg(not(doctest))]
pub use self::{
config::*, interchain_gas::*, interchain_security_module::*, mailbox::*, multisig_ism::*,
provider::*, routing_ism::*, rpc_clients::*, signers::*, singleton_signer::*, trait_builder::*,
provider::*, routing_ism::*, rpc_clients::*, signers::*, trait_builder::*,
validator_announce::*,
};

Expand Down Expand Up @@ -58,9 +58,6 @@ mod rpc_clients;

mod signers;

#[cfg(not(doctest))]
mod singleton_signer;

mod config;

fn extract_fn_map(abi: &'static Lazy<abi::Abi>) -> HashMap<Vec<u8>, &'static str> {
Expand Down
93 changes: 0 additions & 93 deletions rust/chains/hyperlane-ethereum/src/singleton_signer.rs

This file was deleted.

2 changes: 1 addition & 1 deletion rust/hyperlane-base/src/agent.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ pub trait BaseAgent: Send + Sync + Debug {

/// Start running this agent.
#[allow(clippy::async_yields_async)]
async fn run(self) -> Instrumented<JoinHandle<Result<()>>>;
async fn run(&self) -> Instrumented<JoinHandle<Result<()>>>;
}

/// Call this from `main` to fully initialize and run the agent for its entire
Expand Down

0 comments on commit 71b92c5

Please sign in to comment.