diff --git a/orm/migrations/2024-05-31-125032_chain_parameters/up.sql b/orm/migrations/2024-05-31-125032_chain_parameters/up.sql index 724e7edf..92d6493e 100644 --- a/orm/migrations/2024-05-31-125032_chain_parameters/up.sql +++ b/orm/migrations/2024-05-31-125032_chain_parameters/up.sql @@ -5,6 +5,7 @@ CREATE TABLE chain_parameters ( epochs_per_year INT NOT NULL, min_num_of_blocks INT NOT NULL, min_duration INT NOT NULL, + max_block_time INT NOT NULL, apr VARCHAR NOT NULL, native_token_address VARCHAR NOT NULL, chain_id VARCHAR NOT NULL, diff --git a/orm/src/parameters.rs b/orm/src/parameters.rs index e92a3910..7438f8ed 100644 --- a/orm/src/parameters.rs +++ b/orm/src/parameters.rs @@ -18,6 +18,7 @@ pub struct ParametersInsertDb { pub epochs_per_year: i32, pub min_num_of_blocks: i32, pub min_duration: i32, + pub max_block_time: i32, pub apr: String, pub native_token_address: String, pub chain_id: String, @@ -36,6 +37,7 @@ pub struct ParametersDb { pub epochs_per_year: i32, pub min_num_of_blocks: i32, pub min_duration: i32, + pub max_block_time: i32, pub apr: String, pub native_token_address: String, pub chain_id: String, @@ -61,6 +63,7 @@ impl From<(Parameters, Genesis, Checksums, EpochSwitchBlocksDelay)> epochs_per_year: parameters.epochs_per_year as i32, min_num_of_blocks: parameters.min_num_of_blocks as i32, min_duration: parameters.min_duration as i32, + max_block_time: parameters.max_block_time as i32, apr: parameters.apr, native_token_address: parameters.native_token_address, chain_id: genesis.chain_id, diff --git a/orm/src/schema.rs b/orm/src/schema.rs index 9e90f252..ba632225 100644 --- a/orm/src/schema.rs +++ b/orm/src/schema.rs @@ -93,6 +93,7 @@ diesel::table! { epochs_per_year -> Int4, min_num_of_blocks -> Int4, min_duration -> Int4, + max_block_time -> Int4, apr -> Varchar, native_token_address -> Varchar, chain_id -> Varchar, diff --git a/parameters/src/services/namada.rs b/parameters/src/services/namada.rs index 2d49299d..8f8aa106 100644 --- a/parameters/src/services/namada.rs +++ b/parameters/src/services/namada.rs @@ -86,7 +86,8 @@ pub async fn get_parameters( .native_token(client) .await .context("Failed to query native token")?; - tracing::info!("Native token address: {:?}", native_token_address); + + let max_block_time = RPC.shell().max_block_time(client).await?; let apr = calc_apr( client, @@ -102,6 +103,7 @@ pub async fn get_parameters( epochs_per_year, min_num_of_blocks: epoch_duration.min_num_of_blocks, min_duration: epoch_duration.min_duration.0, + max_block_time: max_block_time.0, apr, native_token_address: native_token_address.to_string(), }) diff --git a/shared/src/parameters.rs b/shared/src/parameters.rs index 87438c8a..59c797b9 100644 --- a/shared/src/parameters.rs +++ b/shared/src/parameters.rs @@ -4,6 +4,7 @@ pub struct Parameters { pub pipeline_length: u64, pub epochs_per_year: u64, pub min_num_of_blocks: u64, + pub max_block_time: u64, pub min_duration: u64, pub apr: String, pub native_token_address: String, diff --git a/webserver/src/response/governance.rs b/webserver/src/response/governance.rs index 8e929567..2690e060 100644 --- a/webserver/src/response/governance.rs +++ b/webserver/src/response/governance.rs @@ -116,9 +116,11 @@ impl Proposal { pub fn from_proposal_db( value: GovernanceProposalDb, chain_state: &ChainCrawlerStateDb, - min_num_of_blocks: i32, + max_block_time: i32, min_duration: i32, ) -> Self { + let min_num_of_blocks = min_duration / max_block_time; + let epoch_progress = epoch_progress( chain_state.last_processed_block, chain_state.first_block_in_epoch, diff --git a/webserver/src/response/pos.rs b/webserver/src/response/pos.rs index 6555602d..2e6fa267 100644 --- a/webserver/src/response/pos.rs +++ b/webserver/src/response/pos.rs @@ -175,9 +175,11 @@ impl Unbond { withdraw_epoch: i32, db_validator: ValidatorDb, chain_state: &ChainCrawlerStateDb, - min_num_of_blocks: i32, + max_block_time: i32, min_duration: i32, ) -> Self { + let min_num_of_blocks = min_duration / max_block_time; + let epoch_progress = epoch_progress( chain_state.last_processed_block, chain_state.first_block_in_epoch, diff --git a/webserver/src/service/governance.rs b/webserver/src/service/governance.rs index 7f859507..fb12653e 100644 --- a/webserver/src/service/governance.rs +++ b/webserver/src/service/governance.rs @@ -58,7 +58,7 @@ impl GovernanceService { Proposal::from_proposal_db( p, &chain_state, - parameters.min_num_of_blocks, + parameters.max_block_time, parameters.min_duration, ) }) @@ -101,7 +101,7 @@ impl GovernanceService { Proposal::from_proposal_db( p, &chain_state, - parameters.min_num_of_blocks, + parameters.max_block_time, parameters.min_duration, ) }) @@ -134,7 +134,7 @@ impl GovernanceService { Proposal::from_proposal_db( p, &chain_state, - parameters.min_num_of_blocks, + parameters.max_block_time, parameters.min_duration, ) })) diff --git a/webserver/src/service/pos.rs b/webserver/src/service/pos.rs index 09dbf77d..9c26c6e2 100644 --- a/webserver/src/service/pos.rs +++ b/webserver/src/service/pos.rs @@ -217,7 +217,7 @@ impl PosService { withdraw_epoch, validator, &chain_state, - parameters.min_num_of_blocks, + parameters.max_block_time, parameters.min_duration, ); Unbond {