From dc3cebcaa1e0e8101ded0a2111112b1e560715d9 Mon Sep 17 00:00:00 2001 From: Renan Date: Mon, 13 Nov 2023 14:22:09 -0300 Subject: [PATCH 1/2] fix(authority-claimer): remove AuthConfig (duplicate from TxSigningConfig) --- offchain/authority-claimer/src/auth.rs | 102 ------------------ offchain/authority-claimer/src/config/cli.rs | 14 +-- .../authority-claimer/src/config/error.rs | 5 - offchain/authority-claimer/src/config/mod.rs | 3 - offchain/authority-claimer/src/lib.rs | 1 - offchain/authority-claimer/src/sender.rs | 2 +- .../authority-claimer/src/signer/signer.rs | 16 +-- 7 files changed, 12 insertions(+), 131 deletions(-) delete mode 100644 offchain/authority-claimer/src/auth.rs diff --git a/offchain/authority-claimer/src/auth.rs b/offchain/authority-claimer/src/auth.rs deleted file mode 100644 index 5d80deb8e..000000000 --- a/offchain/authority-claimer/src/auth.rs +++ /dev/null @@ -1,102 +0,0 @@ -// (c) Cartesi and individual authors (see AUTHORS) -// SPDX-License-Identifier: Apache-2.0 (see LICENSE) - -//! This module handles the authentication configuration used by the transaction manager. -//! -//! It supports local authentication (given a mnemonic) and AWS KMS authentication. - -use clap::Parser; -use rusoto_core::{region::ParseRegionError, Region}; -use snafu::{ResultExt, Snafu}; -use std::{fs, str::FromStr}; - -#[derive(Debug, Snafu)] -pub enum AuthError { - #[snafu(display("Configuration missing mnemonic/key-id"))] - MissingConfiguration, - - #[snafu(display( - "Could not read mnemonic file at path `{}`: {}", - path, - source - ))] - MnemonicFileError { - path: String, - source: std::io::Error, - }, - - #[snafu(display("Missing AWS region"))] - MissingRegion, - - #[snafu(display("Invalid AWS region"))] - InvalidRegion { source: ParseRegionError }, -} - -#[derive(Debug, Clone, Parser)] -#[command(name = "auth_config")] -#[command(about = "Configuration for signing authentication")] -pub struct AuthEnvCLIConfig { - /// Signer mnemonic, overrides `auth_mnemonic_file` and `auth_aws_kms_*` - #[arg(long, env)] - pub auth_mnemonic: Option, - - /// Signer mnemonic file path, overrides `auth_aws_kms_*` - #[arg(long, env)] - pub auth_mnemonic_file: Option, - - /// Mnemonic account index - #[arg(long, env)] - pub auth_mnemonic_account_index: Option, - - /// AWS KMS signer key-id - #[arg(long, env)] - pub auth_aws_kms_key_id: Option, - - /// AWS KMS signer region - #[arg(long, env)] - pub auth_aws_kms_region: Option, -} - -#[derive(Debug, Clone)] -pub enum AuthConfig { - Mnemonic { - mnemonic: String, - account_index: Option, - }, - - Aws { - key_id: String, - region: Region, - }, -} - -impl AuthConfig { - pub fn initialize(cli: AuthEnvCLIConfig) -> Result { - let account_index = cli.auth_mnemonic_account_index; - if let Some(mnemonic) = cli.auth_mnemonic { - Ok(AuthConfig::Mnemonic { - mnemonic, - account_index, - }) - } else if let Some(path) = cli.auth_mnemonic_file { - let mnemonic = fs::read_to_string(path.clone()) - .context(MnemonicFileSnafu { path })? - .trim() - .to_string(); - Ok(AuthConfig::Mnemonic { - mnemonic, - account_index, - }) - } else { - match (cli.auth_aws_kms_key_id, cli.auth_aws_kms_region) { - (None, _) => Err(AuthError::MissingConfiguration), - (Some(_), None) => Err(AuthError::MissingRegion), - (Some(key_id), Some(region)) => { - let region = Region::from_str(®ion) - .context(InvalidRegionSnafu)?; - Ok(AuthConfig::Aws { key_id, region }) - } - } - } - } -} diff --git a/offchain/authority-claimer/src/config/cli.rs b/offchain/authority-claimer/src/config/cli.rs index 7070269cc..9adf3c0e1 100644 --- a/offchain/authority-claimer/src/config/cli.rs +++ b/offchain/authority-claimer/src/config/cli.rs @@ -13,12 +13,11 @@ use snafu::ResultExt; use std::{fs, str::FromStr}; use types::blockchain_config::BlockchainCLIConfig; -use crate::auth::{AuthConfig, AuthEnvCLIConfig}; use crate::config::{ error::{ - AuthSnafu, AuthorityClaimerConfigError, BlockchainSnafu, - InvalidRegionSnafu, MnemonicFileSnafu, TxManagerSnafu, - TxSigningConfigError, TxSigningSnafu, + AuthorityClaimerConfigError, BlockchainSnafu, InvalidRegionSnafu, + MnemonicFileSnafu, TxManagerSnafu, TxSigningConfigError, + TxSigningSnafu, }, AuthorityClaimerConfig, BlockchainConfig, TxSigningConfig, }; @@ -43,9 +42,6 @@ pub(crate) struct AuthorityClaimerCLI { #[command(flatten)] pub log_config: LogEnvCliConfig, - #[command(flatten)] - pub auth_config: AuthEnvCLIConfig, - #[command(flatten)] pub blockchain_config: BlockchainCLIConfig, } @@ -66,9 +62,6 @@ impl TryFrom for AuthorityClaimerConfig { let log_config = LogConfig::initialize(cli_config.log_config); - let auth_config = AuthConfig::initialize(cli_config.auth_config) - .context(AuthSnafu)?; - let blockchain_config = BlockchainConfig::try_from(cli_config.blockchain_config) .context(BlockchainSnafu)?; @@ -79,7 +72,6 @@ impl TryFrom for AuthorityClaimerConfig { tx_manager_priority: Priority::Normal, broker_config, log_config, - auth_config, blockchain_config, }) } diff --git a/offchain/authority-claimer/src/config/error.rs b/offchain/authority-claimer/src/config/error.rs index 8d0435fee..fc2b7aac2 100644 --- a/offchain/authority-claimer/src/config/error.rs +++ b/offchain/authority-claimer/src/config/error.rs @@ -6,8 +6,6 @@ use rusoto_core::region::ParseRegionError; use snafu::Snafu; use types::blockchain_config::BlockchainConfigError; -use crate::auth::AuthError; - #[derive(Debug, Snafu)] #[snafu(visibility(pub(crate)))] pub enum AuthorityClaimerConfigError { @@ -17,9 +15,6 @@ pub enum AuthorityClaimerConfigError { #[snafu(display("TxSigning configuration error"))] TxSigningError { source: TxSigningConfigError }, - #[snafu(display("Auth configuration error"))] - AuthError { source: AuthError }, - #[snafu(display("Blockchain configuration error"))] BlockchainError { source: BlockchainConfigError }, } diff --git a/offchain/authority-claimer/src/config/mod.rs b/offchain/authority-claimer/src/config/mod.rs index a05ed5d70..79340bcf8 100644 --- a/offchain/authority-claimer/src/config/mod.rs +++ b/offchain/authority-claimer/src/config/mod.rs @@ -14,8 +14,6 @@ use rollups_events::BrokerConfig; use rusoto_core::Region; use types::blockchain_config::BlockchainConfig; -use crate::auth::AuthConfig; - #[derive(Debug, Clone)] pub struct Config { pub authority_claimer_config: AuthorityClaimerConfig, @@ -27,7 +25,6 @@ pub struct AuthorityClaimerConfig { pub tx_manager_config: TxManagerConfig, pub tx_signing_config: TxSigningConfig, pub tx_manager_priority: Priority, - pub auth_config: AuthConfig, pub broker_config: BrokerConfig, pub log_config: LogConfig, pub blockchain_config: BlockchainConfig, diff --git a/offchain/authority-claimer/src/lib.rs b/offchain/authority-claimer/src/lib.rs index baba542dc..c7d521386 100644 --- a/offchain/authority-claimer/src/lib.rs +++ b/offchain/authority-claimer/src/lib.rs @@ -1,7 +1,6 @@ // (c) Cartesi and individual authors (see AUTHORS) // SPDX-License-Identifier: Apache-2.0 (see LICENSE) -pub mod auth; pub mod checker; pub mod claimer; pub mod config; diff --git a/offchain/authority-claimer/src/sender.rs b/offchain/authority-claimer/src/sender.rs index ef3bbb944..ab609a49c 100644 --- a/offchain/authority-claimer/src/sender.rs +++ b/offchain/authority-claimer/src/sender.rs @@ -181,7 +181,7 @@ impl DefaultTransactionSender { let chain: Chain = (&config.tx_manager_config).into(); let conditional_signer = - ConditionalSigner::new(chain.id, &config.auth_config) + ConditionalSigner::new(chain.id, &config.tx_signing_config) .await .context(SignerSnafu)?; diff --git a/offchain/authority-claimer/src/signer/signer.rs b/offchain/authority-claimer/src/signer/signer.rs index e01b55143..ce384b129 100644 --- a/offchain/authority-claimer/src/signer/signer.rs +++ b/offchain/authority-claimer/src/signer/signer.rs @@ -14,7 +14,7 @@ use ethers::{ }; use snafu::{ResultExt, Snafu}; -use crate::{auth::AuthConfig, signer::aws_signer::AwsSigner}; +use crate::{config::TxSigningConfig, signer::aws_signer::AwsSigner}; /// The `ConditionalSigner` is implementing conditional dispatch (instead of /// dynamic dispatch) by hand for objects that implement the `Sender` trait. @@ -40,10 +40,10 @@ pub enum ConditionalSignerError { impl ConditionalSigner { pub async fn new( chain_id: u64, - auth_config: &AuthConfig, + tx_signing_config: &TxSigningConfig, ) -> Result { - match auth_config.clone() { - AuthConfig::Mnemonic { + match tx_signing_config.clone() { + TxSigningConfig::Mnemonic { mnemonic, account_index, } => { @@ -58,7 +58,7 @@ impl ConditionalSigner { .with_chain_id(chain_id); Ok(ConditionalSigner::LocalWallet(wallet)) } - AuthConfig::Aws { key_id, region } => { + TxSigningConfig::Aws { key_id, region } => { AwsSigner::new(key_id, chain_id, region) .await .map(ConditionalSigner::AwsSigner) @@ -154,7 +154,7 @@ mod tests { }; use ethers_signers::Signer; - use crate::{auth::AuthConfig, signer::ConditionalSigner}; + use crate::{config::TxSigningConfig, signer::ConditionalSigner}; // -------------------------------------------------------------------------------------------- // new @@ -190,11 +190,11 @@ mod tests { "indoor dish desk flag debris potato excuse depart ticket judge file exit"; async fn local_wallet_conditional_signer() -> ConditionalSigner { - let auth_config = AuthConfig::Mnemonic { + let tx_signing_config = TxSigningConfig::Mnemonic { mnemonic: MNEMONIC.to_string(), account_index: Some(1), }; - ConditionalSigner::new(CHAIN_ID, &auth_config) + ConditionalSigner::new(CHAIN_ID, &tx_signing_config) .await .unwrap() } From f8653ac580e743b742edfeb432060f54224c7d36 Mon Sep 17 00:00:00 2001 From: Renan Date: Mon, 13 Nov 2023 14:22:46 -0300 Subject: [PATCH 2/2] chore(dispatcher): make the log less verbose --- offchain/dispatcher/src/drivers/machine.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/offchain/dispatcher/src/drivers/machine.rs b/offchain/dispatcher/src/drivers/machine.rs index 81b7f99cf..d4e56f370 100644 --- a/offchain/dispatcher/src/drivers/machine.rs +++ b/offchain/dispatcher/src/drivers/machine.rs @@ -55,7 +55,7 @@ impl MachineDriver { dapp_input_box: &DAppInputBox, broker: &impl BrokerSend, ) -> Result<(), BrokerFacadeError> { - tracing::info!( + tracing::trace!( "Last input sent to machine manager `{}`, current input `{}`", context.inputs_sent_count(), dapp_input_box.inputs.len()