From 5b64b81425728d6843b59e8e7e14d26b8a6d257b Mon Sep 17 00:00:00 2001 From: "markin.io" Date: Fri, 17 Feb 2023 16:11:49 +0000 Subject: [PATCH 1/3] fix(rs-dpp): use fetch_latest_platform_block_height in feature_flags_data_trigger --- .../feature_flags_data_triggers/mod.rs | 6 ++--- packages/rs-dpp/src/state_repository.rs | 3 +++ packages/wasm-dpp/src/state_repository.rs | 22 +++++++++++++++++++ 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/packages/rs-dpp/src/data_trigger/feature_flags_data_triggers/mod.rs b/packages/rs-dpp/src/data_trigger/feature_flags_data_triggers/mod.rs index 528128186bf..48f4e442c5c 100644 --- a/packages/rs-dpp/src/data_trigger/feature_flags_data_triggers/mod.rs +++ b/packages/rs-dpp/src/data_trigger/feature_flags_data_triggers/mod.rs @@ -40,15 +40,15 @@ where ) })?; - let core_chain_locked_height = context + let block_height = context .state_repository - .fetch_latest_platform_core_chain_locked_height() + .fetch_latest_platform_block_height() .await? .unwrap_or_default() as i64; let enable_at_height = data.get_i64(PROPERTY_ENABLE_AT_HEIGHT)?; - if enable_at_height < core_chain_locked_height { + if enable_at_height < block_height { let err = create_error( context, dt_create, diff --git a/packages/rs-dpp/src/state_repository.rs b/packages/rs-dpp/src/state_repository.rs index 72695c24fbb..8edde4bfd69 100644 --- a/packages/rs-dpp/src/state_repository.rs +++ b/packages/rs-dpp/src/state_repository.rs @@ -214,6 +214,9 @@ pub trait StateRepositoryLike: Sync { // Get latest (in a queue) withdrawal transaction index async fn fetch_latest_platform_core_chain_locked_height(&self) -> AnyResult>; + // Get latest platform block height + async fn fetch_latest_platform_block_height(&self) -> AnyResult>; + // Enqueue withdrawal transaction async fn enqueue_withdrawal_transaction( &self, diff --git a/packages/wasm-dpp/src/state_repository.rs b/packages/wasm-dpp/src/state_repository.rs index 61c47cc3fb9..11b229ea655 100644 --- a/packages/wasm-dpp/src/state_repository.rs +++ b/packages/wasm-dpp/src/state_repository.rs @@ -141,6 +141,11 @@ extern "C" { this: &ExternalStateRepositoryLike, ) -> Result; + #[wasm_bindgen(catch, structural, method, js_name=fetchLatestPlatformBlockHeight)] + pub async fn fetch_latest_platform_block_height( + this: &ExternalStateRepositoryLike, + ) -> Result; + #[wasm_bindgen(catch, structural, method, js_name=fetchTransaction)] pub async fn fetch_transaction( this: &ExternalStateRepositoryLike, @@ -529,6 +534,23 @@ impl StateRepositoryLike for ExternalStateRepositoryLikeWrapper { Ok(Some(height as u32)) } + async fn fetch_latest_platform_block_height(&self) -> Result> { + let maybe_height = self + .0 + .fetch_latest_platform_block_height() + .await + .map_err(from_js_error)?; + + if maybe_height.is_undefined() { + return Ok(None); + } + + let height = maybe_height + .as_f64() + .ok_or_else(|| anyhow!("Value is not a number"))?; + Ok(Some(height as u32)) + } + async fn verify_instant_lock( &self, instant_lock: &InstantLock, From f6d20fc8bbea919375a59b8440705b81eac60fdb Mon Sep 17 00:00:00 2001 From: "markin.io" Date: Mon, 20 Feb 2023 13:44:16 +0000 Subject: [PATCH 2/3] refactor(wasm-dpp): make fetch_latest_platform_block_height return u32 instead of Option --- .../data_trigger/feature_flags_data_triggers/mod.rs | 3 +-- packages/rs-dpp/src/state_repository.rs | 2 +- packages/wasm-dpp/src/state_repository.rs | 12 ++++-------- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/packages/rs-dpp/src/data_trigger/feature_flags_data_triggers/mod.rs b/packages/rs-dpp/src/data_trigger/feature_flags_data_triggers/mod.rs index 48f4e442c5c..584c6c56a2c 100644 --- a/packages/rs-dpp/src/data_trigger/feature_flags_data_triggers/mod.rs +++ b/packages/rs-dpp/src/data_trigger/feature_flags_data_triggers/mod.rs @@ -43,8 +43,7 @@ where let block_height = context .state_repository .fetch_latest_platform_block_height() - .await? - .unwrap_or_default() as i64; + .await? as i64; let enable_at_height = data.get_i64(PROPERTY_ENABLE_AT_HEIGHT)?; diff --git a/packages/rs-dpp/src/state_repository.rs b/packages/rs-dpp/src/state_repository.rs index a5436d9a438..f8a3393c9cd 100644 --- a/packages/rs-dpp/src/state_repository.rs +++ b/packages/rs-dpp/src/state_repository.rs @@ -215,5 +215,5 @@ pub trait StateRepositoryLike: Sync { async fn fetch_latest_platform_core_chain_locked_height(&self) -> AnyResult>; // Get latest platform block height - async fn fetch_latest_platform_block_height(&self) -> AnyResult>; + async fn fetch_latest_platform_block_height(&self) -> AnyResult; } diff --git a/packages/wasm-dpp/src/state_repository.rs b/packages/wasm-dpp/src/state_repository.rs index db19f0f2c30..54e0e24a2ac 100644 --- a/packages/wasm-dpp/src/state_repository.rs +++ b/packages/wasm-dpp/src/state_repository.rs @@ -534,21 +534,17 @@ impl StateRepositoryLike for ExternalStateRepositoryLikeWrapper { Ok(Some(height as u32)) } - async fn fetch_latest_platform_block_height(&self) -> Result> { - let maybe_height = self + async fn fetch_latest_platform_block_height(&self) -> Result { + let height = self .0 .fetch_latest_platform_block_height() .await .map_err(from_js_error)?; - if maybe_height.is_undefined() { - return Ok(None); - } - - let height = maybe_height + let height = height .as_f64() .ok_or_else(|| anyhow!("Value is not a number"))?; - Ok(Some(height as u32)) + Ok(height as u32) } async fn verify_instant_lock( From 4d3fb94d1439fb320541b4c4f84e24e25483308c Mon Sep 17 00:00:00 2001 From: "markin.io" Date: Tue, 21 Feb 2023 20:08:35 +0000 Subject: [PATCH 3/3] fix(wasm-dpp): fetch_latest_platform_block_height return u64 instead of u32 --- packages/rs-dpp/src/state_repository.rs | 2 +- packages/wasm-dpp/src/state_repository.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/rs-dpp/src/state_repository.rs b/packages/rs-dpp/src/state_repository.rs index f8a3393c9cd..2f9be60f0f6 100644 --- a/packages/rs-dpp/src/state_repository.rs +++ b/packages/rs-dpp/src/state_repository.rs @@ -215,5 +215,5 @@ pub trait StateRepositoryLike: Sync { async fn fetch_latest_platform_core_chain_locked_height(&self) -> AnyResult>; // Get latest platform block height - async fn fetch_latest_platform_block_height(&self) -> AnyResult; + async fn fetch_latest_platform_block_height(&self) -> AnyResult; } diff --git a/packages/wasm-dpp/src/state_repository.rs b/packages/wasm-dpp/src/state_repository.rs index 54e0e24a2ac..385e4a842d3 100644 --- a/packages/wasm-dpp/src/state_repository.rs +++ b/packages/wasm-dpp/src/state_repository.rs @@ -534,7 +534,7 @@ impl StateRepositoryLike for ExternalStateRepositoryLikeWrapper { Ok(Some(height as u32)) } - async fn fetch_latest_platform_block_height(&self) -> Result { + async fn fetch_latest_platform_block_height(&self) -> Result { let height = self .0 .fetch_latest_platform_block_height() @@ -544,7 +544,7 @@ impl StateRepositoryLike for ExternalStateRepositoryLikeWrapper { let height = height .as_f64() .ok_or_else(|| anyhow!("Value is not a number"))?; - Ok(height as u32) + Ok(height as u64) } async fn verify_instant_lock(