From 5316bd0d0466831ee0835822762cb08b064fee5b Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Tue, 23 Dec 2025 09:48:57 +0700 Subject: [PATCH 1/3] fix(drive-abci)!: call update checkpoints in finalize block --- Cargo.lock | 74 +++++----- Cargo.toml | 2 +- package.json | 2 +- packages/bench-suite/package.json | 2 +- packages/dapi-grpc/package.json | 2 +- packages/dapi/package.json | 2 +- packages/dash-spv/package.json | 2 +- packages/dashmate/package.json | 2 +- packages/dashpay-contract/package.json | 2 +- packages/dpns-contract/package.json | 2 +- packages/feature-flags-contract/package.json | 2 +- packages/js-dapi-client/package.json | 2 +- packages/js-dash-sdk/package.json | 2 +- packages/js-evo-sdk/package.json | 2 +- packages/js-grpc-common/package.json | 2 +- packages/keyword-search-contract/package.json | 2 +- .../package.json | 2 +- packages/platform-test-suite/package.json | 2 +- .../engine/finalize_block_proposal/v0/mod.rs | 2 + .../block_end/update_checkpoints/mod.rs | 5 +- .../drive_abci_method_versions/mod.rs | 3 +- .../drive_abci_method_versions/v1.rs | 2 +- .../drive_abci_method_versions/v2.rs | 2 +- .../drive_abci_method_versions/v3.rs | 2 +- .../drive_abci_method_versions/v4.rs | 2 +- .../drive_abci_method_versions/v5.rs | 2 +- .../drive_abci_method_versions/v6.rs | 2 +- .../drive_abci_method_versions/v7.rs | 127 ++++++++++++++++++ .../src/version/mocks/v3_test.rs | 2 +- .../rs-platform-version/src/version/v11.rs | 6 +- packages/token-history-contract/package.json | 2 +- packages/wallet-lib/package.json | 2 +- packages/wallet-utils-contract/package.json | 2 +- packages/wasm-dpp/package.json | 2 +- packages/wasm-dpp2/package.json | 2 +- packages/wasm-drive-verify/package.json | 2 +- packages/wasm-sdk/package.json | 2 +- packages/withdrawals-contract/package.json | 2 +- 38 files changed, 206 insertions(+), 75 deletions(-) create mode 100644 packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v7.rs diff --git a/Cargo.lock b/Cargo.lock index e1bcc2e4cd1..2c10376dd66 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -871,7 +871,7 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "check-features" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "toml", ] @@ -1296,7 +1296,7 @@ dependencies = [ [[package]] name = "dapi-grpc" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "dash-platform-macros", "futures-core", @@ -1349,7 +1349,7 @@ dependencies = [ [[package]] name = "dash-context-provider" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "dpp", "drive", @@ -1371,7 +1371,7 @@ dependencies = [ [[package]] name = "dash-platform-balance-checker" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "anyhow", "clap", @@ -1386,7 +1386,7 @@ dependencies = [ [[package]] name = "dash-platform-macros" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "heck 0.5.0", "quote", @@ -1395,7 +1395,7 @@ dependencies = [ [[package]] name = "dash-sdk" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "arc-swap", "assert_matches", @@ -1567,7 +1567,7 @@ dependencies = [ [[package]] name = "dashpay-contract" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "platform-value", "platform-version", @@ -1577,7 +1577,7 @@ dependencies = [ [[package]] name = "data-contracts" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "dashpay-contract", "dpns-contract", @@ -1724,7 +1724,7 @@ checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] name = "dpns-contract" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "platform-value", "platform-version", @@ -1734,7 +1734,7 @@ dependencies = [ [[package]] name = "dpp" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "anyhow", "assert_matches", @@ -1791,7 +1791,7 @@ dependencies = [ [[package]] name = "drive" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "arc-swap", "assert_matches", @@ -1832,7 +1832,7 @@ dependencies = [ [[package]] name = "drive-abci" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "arc-swap", "assert_matches", @@ -1886,7 +1886,7 @@ dependencies = [ [[package]] name = "drive-proof-verifier" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "bincode 2.0.0-rc.3", "dapi-grpc", @@ -2139,7 +2139,7 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "feature-flags-contract" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "platform-value", "platform-version", @@ -3336,7 +3336,7 @@ dependencies = [ [[package]] name = "json-schema-compatibility-validator" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "assert_matches", "json-patch", @@ -3455,7 +3455,7 @@ dependencies = [ [[package]] name = "keyword-search-contract" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "base58", "platform-value", @@ -3616,7 +3616,7 @@ dependencies = [ [[package]] name = "masternode-reward-shares-contract" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "platform-value", "platform-version", @@ -4278,7 +4278,7 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "platform-serialization" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "bincode 2.0.0-rc.3", "platform-version", @@ -4286,7 +4286,7 @@ dependencies = [ [[package]] name = "platform-serialization-derive" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "proc-macro2", "quote", @@ -4296,7 +4296,7 @@ dependencies = [ [[package]] name = "platform-value" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "base64 0.22.1", "bincode 2.0.0-rc.3", @@ -4315,7 +4315,7 @@ dependencies = [ [[package]] name = "platform-value-convertible" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "quote", "syn 2.0.106", @@ -4323,7 +4323,7 @@ dependencies = [ [[package]] name = "platform-version" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "bincode 2.0.0-rc.3", "grovedb-version", @@ -4334,7 +4334,7 @@ dependencies = [ [[package]] name = "platform-versioning" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "proc-macro2", "quote", @@ -4343,7 +4343,7 @@ dependencies = [ [[package]] name = "platform-wallet" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "dashcore", "dpp", @@ -5111,7 +5111,7 @@ dependencies = [ [[package]] name = "rs-dapi" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "async-trait", "axum 0.8.4", @@ -5160,7 +5160,7 @@ dependencies = [ [[package]] name = "rs-dapi-client" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "backon", "chrono", @@ -5185,7 +5185,7 @@ dependencies = [ [[package]] name = "rs-dash-event-bus" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "metrics", "tokio", @@ -5194,7 +5194,7 @@ dependencies = [ [[package]] name = "rs-sdk-ffi" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "bincode 2.0.0-rc.3", "bs58", @@ -5223,7 +5223,7 @@ dependencies = [ [[package]] name = "rs-sdk-trusted-context-provider" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "arc-swap", "dash-context-provider", @@ -5885,7 +5885,7 @@ checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "simple-signer" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "base64 0.22.1", "bincode 2.0.0-rc.3", @@ -5982,7 +5982,7 @@ dependencies = [ [[package]] name = "strategy-tests" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "bincode 2.0.0-rc.3", "dpp", @@ -6374,7 +6374,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "token-history-contract" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "platform-value", "platform-version", @@ -7091,7 +7091,7 @@ dependencies = [ [[package]] name = "wallet-utils-contract" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "platform-value", "platform-version", @@ -7232,7 +7232,7 @@ dependencies = [ [[package]] name = "wasm-dpp" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "anyhow", "async-trait", @@ -7273,7 +7273,7 @@ dependencies = [ [[package]] name = "wasm-drive-verify" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "base64 0.22.1", "bincode 2.0.0-rc.3", @@ -7306,7 +7306,7 @@ dependencies = [ [[package]] name = "wasm-sdk" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "base64 0.22.1", "bip39", @@ -7856,7 +7856,7 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "withdrawals-contract" -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" dependencies = [ "num_enum 0.5.11", "platform-value", diff --git a/Cargo.toml b/Cargo.toml index 3cbc2348f00..9b8388a81b7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,5 +45,5 @@ members = [ [workspace.package] -version = "3.0.0-dev.1" +version = "3.0.0-dev.2" rust-version = "1.92" diff --git a/package.json b/package.json index f640ea3fd22..220d97477de 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/platform", - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "private": true, "scripts": { "setup": "yarn install && yarn run build && yarn run configure", diff --git a/packages/bench-suite/package.json b/packages/bench-suite/package.json index 6a436920e5b..9a712bb03b0 100644 --- a/packages/bench-suite/package.json +++ b/packages/bench-suite/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/bench-suite", "private": true, - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "description": "Dash Platform benchmark tool", "scripts": { "bench": "node ./bin/bench.js", diff --git a/packages/dapi-grpc/package.json b/packages/dapi-grpc/package.json index 24451fc8f74..e87c27d1a17 100644 --- a/packages/dapi-grpc/package.json +++ b/packages/dapi-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dapi-grpc", - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "description": "DAPI GRPC definition file and generated clients", "browser": "browser.js", "main": "node.js", diff --git a/packages/dapi/package.json b/packages/dapi/package.json index df7a5f4d38c..5e31a3a2930 100644 --- a/packages/dapi/package.json +++ b/packages/dapi/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/dapi", "private": true, - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "description": "A decentralized API for the Dash network", "scripts": { "api": "node scripts/api.js", diff --git a/packages/dash-spv/package.json b/packages/dash-spv/package.json index a2c2425fd86..7782e7689ca 100644 --- a/packages/dash-spv/package.json +++ b/packages/dash-spv/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dash-spv", - "version": "4.0.0-dev.1", + "version": "4.0.0-dev.2", "description": "Repository containing SPV functions used by @dashevo", "main": "index.js", "scripts": { diff --git a/packages/dashmate/package.json b/packages/dashmate/package.json index 1094a5a34fb..e257833e152 100644 --- a/packages/dashmate/package.json +++ b/packages/dashmate/package.json @@ -1,6 +1,6 @@ { "name": "dashmate", - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "description": "Distribution package for Dash node installation", "scripts": { "lint": "eslint .", diff --git a/packages/dashpay-contract/package.json b/packages/dashpay-contract/package.json index 94440d44291..f1040e23359 100644 --- a/packages/dashpay-contract/package.json +++ b/packages/dashpay-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dashpay-contract", - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "description": "Reference contract of the DashPay DPA on Dash Evolution", "scripts": { "lint": "eslint .", diff --git a/packages/dpns-contract/package.json b/packages/dpns-contract/package.json index e371ca5ae70..ccd3fdab0f4 100644 --- a/packages/dpns-contract/package.json +++ b/packages/dpns-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dpns-contract", - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "description": "A contract and helper scripts for DPNS DApp", "scripts": { "lint": "eslint .", diff --git a/packages/feature-flags-contract/package.json b/packages/feature-flags-contract/package.json index 46051968c24..8c3cd31ee3f 100644 --- a/packages/feature-flags-contract/package.json +++ b/packages/feature-flags-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/feature-flags-contract", - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "description": "Data Contract to store Dash Platform feature flags", "scripts": { "build": "", diff --git a/packages/js-dapi-client/package.json b/packages/js-dapi-client/package.json index ee3ac7554fd..6c5dfa26d49 100644 --- a/packages/js-dapi-client/package.json +++ b/packages/js-dapi-client/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dapi-client", - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "description": "Client library used to access Dash DAPI endpoints", "main": "lib/index.js", "contributors": [ diff --git a/packages/js-dash-sdk/package.json b/packages/js-dash-sdk/package.json index af769f59655..f138f670079 100644 --- a/packages/js-dash-sdk/package.json +++ b/packages/js-dash-sdk/package.json @@ -1,6 +1,6 @@ { "name": "dash", - "version": "6.0.0-dev.1", + "version": "6.0.0-dev.2", "description": "Dash library for JavaScript/TypeScript ecosystem (Wallet, DAPI, Primitives, BLS, ...)", "main": "build/index.js", "unpkg": "dist/dash.min.js", diff --git a/packages/js-evo-sdk/package.json b/packages/js-evo-sdk/package.json index 1c0c46c7c08..3f58e639a87 100644 --- a/packages/js-evo-sdk/package.json +++ b/packages/js-evo-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/evo-sdk", - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "type": "module", "main": "./dist/evo-sdk.module.js", "types": "./dist/sdk.d.ts", diff --git a/packages/js-grpc-common/package.json b/packages/js-grpc-common/package.json index 66b9aad1ced..a9069e64b57 100644 --- a/packages/js-grpc-common/package.json +++ b/packages/js-grpc-common/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/grpc-common", - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "description": "Common GRPC library", "main": "index.js", "scripts": { diff --git a/packages/keyword-search-contract/package.json b/packages/keyword-search-contract/package.json index f8240304bfe..383b242eeb8 100644 --- a/packages/keyword-search-contract/package.json +++ b/packages/keyword-search-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/keyword-search-contract", - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "description": "A contract that allows searching for contracts", "scripts": { "lint": "eslint .", diff --git a/packages/masternode-reward-shares-contract/package.json b/packages/masternode-reward-shares-contract/package.json index 19f1f5fd11d..12a0f6ec300 100644 --- a/packages/masternode-reward-shares-contract/package.json +++ b/packages/masternode-reward-shares-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/masternode-reward-shares-contract", - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "description": "A contract and helper scripts for reward sharing", "scripts": { "lint": "eslint .", diff --git a/packages/platform-test-suite/package.json b/packages/platform-test-suite/package.json index a3b23a5fd0c..d3ff75beb08 100644 --- a/packages/platform-test-suite/package.json +++ b/packages/platform-test-suite/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/platform-test-suite", "private": true, - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "description": "Dash Network end-to-end tests", "scripts": { "test": "yarn exec bin/test.sh", diff --git a/packages/rs-drive-abci/src/execution/engine/finalize_block_proposal/v0/mod.rs b/packages/rs-drive-abci/src/execution/engine/finalize_block_proposal/v0/mod.rs index b85be024c67..8356618ec44 100644 --- a/packages/rs-drive-abci/src/execution/engine/finalize_block_proposal/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/engine/finalize_block_proposal/v0/mod.rs @@ -224,6 +224,8 @@ where self.update_drive_cache(&block_execution_context, platform_version)?; + self.update_checkpoints(&block_execution_context, platform_version)?; + let block_platform_state = block_execution_context.block_platform_state_owned(); self.update_state_cache( diff --git a/packages/rs-drive-abci/src/execution/platform_events/block_end/update_checkpoints/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/block_end/update_checkpoints/mod.rs index 9154afc10f9..949f5701408 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/block_end/update_checkpoints/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/block_end/update_checkpoints/mod.rs @@ -41,8 +41,9 @@ where .block_end .update_checkpoints { - 0 => self.update_checkpoints_v0(block_execution_context, platform_version), - version => Err(Error::Execution(ExecutionError::UnknownVersionMismatch { + None => Ok(()), + Some(0) => self.update_checkpoints_v0(block_execution_context, platform_version), + Some(version) => Err(Error::Execution(ExecutionError::UnknownVersionMismatch { method: "update_checkpoints".to_string(), known_versions: vec![0], received: version, diff --git a/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/mod.rs b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/mod.rs index d677daf90ce..c8bc9cb88aa 100644 --- a/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/mod.rs +++ b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/mod.rs @@ -6,6 +6,7 @@ pub mod v3; pub mod v4; pub mod v5; pub mod v6; +pub mod v7; #[derive(Clone, Debug, Default)] pub struct DriveAbciMethodVersions { @@ -131,7 +132,7 @@ pub struct DriveAbciBlockEndMethodVersions { pub update_state_cache: FeatureVersion, pub update_drive_cache: FeatureVersion, pub validator_set_update: FeatureVersion, - pub update_checkpoints: FeatureVersion, + pub update_checkpoints: OptionalFeatureVersion, } #[derive(Clone, Debug, Default)] diff --git a/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v1.rs b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v1.rs index 78d79d805e3..ccaa0f8bddf 100644 --- a/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v1.rs +++ b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v1.rs @@ -117,7 +117,7 @@ pub const DRIVE_ABCI_METHOD_VERSIONS_V1: DriveAbciMethodVersions = DriveAbciMeth update_state_cache: 0, update_drive_cache: 0, validator_set_update: 0, - update_checkpoints: 0, + update_checkpoints: None, }, platform_state_storage: DriveAbciPlatformStateStorageMethodVersions { fetch_platform_state: 0, diff --git a/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v2.rs b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v2.rs index 6276e0ebd58..0b37a33820c 100644 --- a/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v2.rs +++ b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v2.rs @@ -118,7 +118,7 @@ pub const DRIVE_ABCI_METHOD_VERSIONS_V2: DriveAbciMethodVersions = DriveAbciMeth update_state_cache: 0, update_drive_cache: 0, validator_set_update: 0, - update_checkpoints: 0, + update_checkpoints: None, }, platform_state_storage: DriveAbciPlatformStateStorageMethodVersions { fetch_platform_state: 0, diff --git a/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v3.rs b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v3.rs index ab8d353a852..2ec08cdf954 100644 --- a/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v3.rs +++ b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v3.rs @@ -117,7 +117,7 @@ pub const DRIVE_ABCI_METHOD_VERSIONS_V3: DriveAbciMethodVersions = DriveAbciMeth update_state_cache: 0, update_drive_cache: 0, validator_set_update: 1, - update_checkpoints: 0, + update_checkpoints: None, }, platform_state_storage: DriveAbciPlatformStateStorageMethodVersions { fetch_platform_state: 0, diff --git a/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v4.rs b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v4.rs index 3bf6193ec1b..744f0ffb537 100644 --- a/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v4.rs +++ b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v4.rs @@ -117,7 +117,7 @@ pub const DRIVE_ABCI_METHOD_VERSIONS_V4: DriveAbciMethodVersions = DriveAbciMeth update_state_cache: 0, update_drive_cache: 0, validator_set_update: 2, - update_checkpoints: 0, + update_checkpoints: None, }, platform_state_storage: DriveAbciPlatformStateStorageMethodVersions { fetch_platform_state: 0, diff --git a/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v5.rs b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v5.rs index 4b9df9ab56c..f8b9159762a 100644 --- a/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v5.rs +++ b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v5.rs @@ -121,7 +121,7 @@ pub const DRIVE_ABCI_METHOD_VERSIONS_V5: DriveAbciMethodVersions = DriveAbciMeth update_state_cache: 0, update_drive_cache: 0, validator_set_update: 2, - update_checkpoints: 0, + update_checkpoints: None, }, platform_state_storage: DriveAbciPlatformStateStorageMethodVersions { fetch_platform_state: 0, diff --git a/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v6.rs b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v6.rs index ec0901f06ee..995b931104b 100644 --- a/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v6.rs +++ b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v6.rs @@ -119,7 +119,7 @@ pub const DRIVE_ABCI_METHOD_VERSIONS_V6: DriveAbciMethodVersions = DriveAbciMeth update_state_cache: 0, update_drive_cache: 0, validator_set_update: 2, - update_checkpoints: 0, + update_checkpoints: None, }, platform_state_storage: DriveAbciPlatformStateStorageMethodVersions { fetch_platform_state: 0, diff --git a/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v7.rs b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v7.rs new file mode 100644 index 00000000000..9cb63225f4c --- /dev/null +++ b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v7.rs @@ -0,0 +1,127 @@ +use crate::version::drive_abci_versions::drive_abci_method_versions::{ + DriveAbciBlockEndMethodVersions, DriveAbciBlockFeeProcessingMethodVersions, + DriveAbciBlockStartMethodVersions, DriveAbciCoreBasedUpdatesMethodVersions, + DriveAbciCoreChainLockMethodVersionsAndConstants, DriveAbciCoreInstantSendLockMethodVersions, + DriveAbciEngineMethodVersions, DriveAbciEpochMethodVersions, + DriveAbciFeePoolInwardsDistributionMethodVersions, + DriveAbciFeePoolOutwardsDistributionMethodVersions, + DriveAbciIdentityCreditWithdrawalMethodVersions, DriveAbciInitializationMethodVersions, + DriveAbciMasternodeIdentitiesUpdatesMethodVersions, DriveAbciMethodVersions, + DriveAbciPlatformStateStorageMethodVersions, DriveAbciProtocolUpgradeMethodVersions, + DriveAbciStateTransitionProcessingMethodVersions, DriveAbciTokensProcessingMethodVersions, + DriveAbciVotingMethodVersions, +}; + +// Introduced in Protocol version 11 (3.0.0) for checkpoints +pub const DRIVE_ABCI_METHOD_VERSIONS_V7: DriveAbciMethodVersions = DriveAbciMethodVersions { + engine: DriveAbciEngineMethodVersions { + init_chain: 0, + check_tx: 0, + run_block_proposal: 0, + finalize_block_proposal: 0, + consensus_params_update: 1, + }, + initialization: DriveAbciInitializationMethodVersions { + initial_core_height_and_time: 0, + create_genesis_state: 1, + }, + core_based_updates: DriveAbciCoreBasedUpdatesMethodVersions { + update_core_info: 0, + update_masternode_list: 0, + update_quorum_info: 0, + masternode_updates: DriveAbciMasternodeIdentitiesUpdatesMethodVersions { + get_voter_identity_key: 0, + get_operator_identity_keys: 0, + get_owner_identity_withdrawal_key: 0, + get_owner_identity_owner_key: 0, + get_voter_identifier_from_masternode_list_item: 0, + get_operator_identifier_from_masternode_list_item: 0, + create_operator_identity: 0, + create_owner_identity: 1, + create_voter_identity: 0, + disable_identity_keys: 0, + update_masternode_identities: 0, + update_operator_identity: 0, + update_owner_withdrawal_address: 1, + update_voter_identity: 0, + }, + }, + protocol_upgrade: DriveAbciProtocolUpgradeMethodVersions { + check_for_desired_protocol_upgrade: 1, + upgrade_protocol_version_on_epoch_change: 0, + perform_events_on_first_block_of_protocol_change: Some(0), + protocol_version_upgrade_percentage_needed: 67, + }, + block_fee_processing: DriveAbciBlockFeeProcessingMethodVersions { + add_process_epoch_change_operations: 0, + process_block_fees_and_validate_sum_trees: 1, + }, + tokens_processing: DriveAbciTokensProcessingMethodVersions { + validate_token_aggregated_balance: 0, + }, + core_chain_lock: DriveAbciCoreChainLockMethodVersionsAndConstants { + choose_quorum: 0, + verify_chain_lock: 0, + verify_chain_lock_locally: 0, + verify_chain_lock_through_core: 0, + make_sure_core_is_synced_to_chain_lock: 0, + recent_block_count_amount: 2, + }, + core_instant_send_lock: DriveAbciCoreInstantSendLockMethodVersions { + verify_recent_signature_locally: 0, + }, + fee_pool_inwards_distribution: DriveAbciFeePoolInwardsDistributionMethodVersions { + add_distribute_block_fees_into_pools_operations: 0, + add_distribute_storage_fee_to_epochs_operations: 0, + }, + fee_pool_outwards_distribution: DriveAbciFeePoolOutwardsDistributionMethodVersions { + add_distribute_fees_from_oldest_unpaid_epoch_pool_to_proposers_operations: 1, + add_epoch_pool_to_proposers_payout_operations: 0, + find_oldest_epoch_needing_payment: 0, + fetch_reward_shares_list_for_masternode: 0, + }, + withdrawals: DriveAbciIdentityCreditWithdrawalMethodVersions { + build_untied_withdrawal_transactions_from_documents: 0, + dequeue_and_build_unsigned_withdrawal_transactions: 0, + fetch_transactions_block_inclusion_status: 0, + pool_withdrawals_into_transactions_queue: 1, + update_broadcasted_withdrawal_statuses: 0, + rebroadcast_expired_withdrawal_documents: 1, + append_signatures_and_broadcast_withdrawal_transactions: 0, + cleanup_expired_locks_of_withdrawal_amounts: 0, + }, + voting: DriveAbciVotingMethodVersions { + keep_record_of_finished_contested_resource_vote_poll: 0, + clean_up_after_vote_poll_end: 0, + clean_up_after_contested_resources_vote_poll_end: 1, + check_for_ended_vote_polls: 0, + tally_votes_for_contested_document_resource_vote_poll: 0, + award_document_to_winner: 0, + delay_vote_poll: 0, + run_dao_platform_events: 0, + remove_votes_for_removed_masternodes: 0, + }, + state_transition_processing: DriveAbciStateTransitionProcessingMethodVersions { + execute_event: 0, + process_raw_state_transitions: 0, + decode_raw_state_transitions: 0, + validate_fees_of_event: 0, + }, + epoch: DriveAbciEpochMethodVersions { + gather_epoch_info: 0, + get_genesis_time: 0, + }, + block_start: DriveAbciBlockStartMethodVersions { + clear_drive_block_cache: 0, + }, + block_end: DriveAbciBlockEndMethodVersions { + update_state_cache: 0, + update_drive_cache: 0, + validator_set_update: 2, + update_checkpoints: Some(1), + }, + platform_state_storage: DriveAbciPlatformStateStorageMethodVersions { + fetch_platform_state: 0, + store_platform_state: 0, + }, +}; diff --git a/packages/rs-platform-version/src/version/mocks/v3_test.rs b/packages/rs-platform-version/src/version/mocks/v3_test.rs index e6fa4974049..e8e10efae5b 100644 --- a/packages/rs-platform-version/src/version/mocks/v3_test.rs +++ b/packages/rs-platform-version/src/version/mocks/v3_test.rs @@ -152,7 +152,7 @@ pub const TEST_PLATFORM_V3: PlatformVersion = PlatformVersion { update_state_cache: 0, update_drive_cache: 0, validator_set_update: 0, - update_checkpoints: 0, + update_checkpoints: None, }, platform_state_storage: DriveAbciPlatformStateStorageMethodVersions { fetch_platform_state: 0, diff --git a/packages/rs-platform-version/src/version/v11.rs b/packages/rs-platform-version/src/version/v11.rs index 2c45f9e59a9..bdd50b9ac1c 100644 --- a/packages/rs-platform-version/src/version/v11.rs +++ b/packages/rs-platform-version/src/version/v11.rs @@ -15,7 +15,7 @@ use crate::version::dpp_versions::dpp_validation_versions::v2::DPP_VALIDATION_VE use crate::version::dpp_versions::dpp_voting_versions::v2::VOTING_VERSION_V2; use crate::version::dpp_versions::DPPVersion; use crate::version::drive_abci_versions::drive_abci_checkpoint_parameters::v1::DRIVE_ABCI_CHECKPOINT_PARAMETERS_V1; -use crate::version::drive_abci_versions::drive_abci_method_versions::v6::DRIVE_ABCI_METHOD_VERSIONS_V6; +use crate::version::drive_abci_versions::drive_abci_method_versions::v7::DRIVE_ABCI_METHOD_VERSIONS_V7; use crate::version::drive_abci_versions::drive_abci_query_versions::v1::DRIVE_ABCI_QUERY_VERSIONS_V1; use crate::version::drive_abci_versions::drive_abci_structure_versions::v1::DRIVE_ABCI_STRUCTURE_VERSIONS_V1; use crate::version::drive_abci_versions::drive_abci_validation_versions::v7::DRIVE_ABCI_VALIDATION_VERSIONS_V7; @@ -30,13 +30,13 @@ use crate::version::ProtocolVersion; pub const PROTOCOL_VERSION_11: ProtocolVersion = 11; -/// This version was for Platform release 2.2.0 +/// This version was for Platform release 3.0.0 pub const PLATFORM_V11: PlatformVersion = PlatformVersion { protocol_version: PROTOCOL_VERSION_11, drive: DRIVE_VERSION_V6, // Changed to fix identity update issue drive_abci: DriveAbciVersion { structs: DRIVE_ABCI_STRUCTURE_VERSIONS_V1, - methods: DRIVE_ABCI_METHOD_VERSIONS_V6, + methods: DRIVE_ABCI_METHOD_VERSIONS_V7, //update checkpoints change validation_and_processing: DRIVE_ABCI_VALIDATION_VERSIONS_V7, // changed for validate_unique_identity_public_key_hashes_in_state withdrawal_constants: DRIVE_ABCI_WITHDRAWAL_CONSTANTS_V2, query: DRIVE_ABCI_QUERY_VERSIONS_V1, diff --git a/packages/token-history-contract/package.json b/packages/token-history-contract/package.json index b57c0e53021..f9c78a2ce1b 100644 --- a/packages/token-history-contract/package.json +++ b/packages/token-history-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/token-history-contract", - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "description": "The token history contract", "scripts": { "lint": "eslint .", diff --git a/packages/wallet-lib/package.json b/packages/wallet-lib/package.json index fab037e7786..b8835d509f6 100644 --- a/packages/wallet-lib/package.json +++ b/packages/wallet-lib/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wallet-lib", - "version": "10.0.0-dev.1", + "version": "10.0.0-dev.2", "description": "Light wallet library for Dash", "main": "src/index.js", "unpkg": "dist/wallet-lib.min.js", diff --git a/packages/wallet-utils-contract/package.json b/packages/wallet-utils-contract/package.json index 400bfb3c47d..56507158c0b 100644 --- a/packages/wallet-utils-contract/package.json +++ b/packages/wallet-utils-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wallet-utils-contract", - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "description": "A contract and helper scripts for Wallet DApp", "scripts": { "lint": "eslint .", diff --git a/packages/wasm-dpp/package.json b/packages/wasm-dpp/package.json index 085fbe6f3b0..39762ed8062 100644 --- a/packages/wasm-dpp/package.json +++ b/packages/wasm-dpp/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wasm-dpp", - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "description": "The JavaScript implementation of the Dash Platform Protocol", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/wasm-dpp2/package.json b/packages/wasm-dpp2/package.json index 9b10993370d..01e66832ca2 100644 --- a/packages/wasm-dpp2/package.json +++ b/packages/wasm-dpp2/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wasm-dpp2", - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "type": "module", "main": "./dist/dpp.js", "types": "./dist/dpp.d.ts", diff --git a/packages/wasm-drive-verify/package.json b/packages/wasm-drive-verify/package.json index 472e67f6e68..ca4815506ee 100644 --- a/packages/wasm-drive-verify/package.json +++ b/packages/wasm-drive-verify/package.json @@ -3,7 +3,7 @@ "collaborators": [ "Dash Core Group " ], - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "license": "MIT", "description": "WASM bindings for Drive verify functions", "repository": { diff --git a/packages/wasm-sdk/package.json b/packages/wasm-sdk/package.json index f30ab782352..39369f11a12 100644 --- a/packages/wasm-sdk/package.json +++ b/packages/wasm-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wasm-sdk", - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "type": "module", "main": "./dist/sdk.js", "types": "./dist/sdk.d.ts", diff --git a/packages/withdrawals-contract/package.json b/packages/withdrawals-contract/package.json index d35d987dd8f..7d38cc89777 100644 --- a/packages/withdrawals-contract/package.json +++ b/packages/withdrawals-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/withdrawals-contract", - "version": "3.0.0-dev.1", + "version": "3.0.0-dev.2", "description": "Data Contract to manipulate and track withdrawals", "scripts": { "build": "", From 5e4bc852af2e5562a5287f8d1d59b23db9600c45 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Tue, 23 Dec 2025 10:40:00 +0700 Subject: [PATCH 2/3] fix(drive-abci)!: call update checkpoints in finalize block --- .../drive_abci_versions/drive_abci_method_versions/v7.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v7.rs b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v7.rs index 9cb63225f4c..a767a533777 100644 --- a/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v7.rs +++ b/packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_method_versions/v7.rs @@ -118,7 +118,7 @@ pub const DRIVE_ABCI_METHOD_VERSIONS_V7: DriveAbciMethodVersions = DriveAbciMeth update_state_cache: 0, update_drive_cache: 0, validator_set_update: 2, - update_checkpoints: Some(1), + update_checkpoints: Some(0), }, platform_state_storage: DriveAbciPlatformStateStorageMethodVersions { fetch_platform_state: 0, From 0012c6142bce4ee0ab51d299acf911a30df3974c Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Tue, 23 Dec 2025 12:17:29 +0700 Subject: [PATCH 3/3] fix: checkpoints --- packages/rs-drive-abci/src/config.rs | 4 + .../block_end/update_checkpoints/v0/mod.rs | 6 ++ .../src/platform_types/platform/mod.rs | 12 ++- .../rs-drive-abci/src/test/helpers/setup.rs | 18 +++- .../test_cases/address_tests.rs | 98 +++++++++++++++++++ .../strategy_tests/test_cases/voting_tests.rs | 1 + 6 files changed, 134 insertions(+), 5 deletions(-) diff --git a/packages/rs-drive-abci/src/config.rs b/packages/rs-drive-abci/src/config.rs index 342b928e099..0c26738912d 100644 --- a/packages/rs-drive-abci/src/config.rs +++ b/packages/rs-drive-abci/src/config.rs @@ -879,6 +879,8 @@ pub struct PlatformTestConfig { pub disable_instant_lock_signature_verification: bool, /// Disable temporarily disabled contested documents validation pub disable_contested_documents_is_allowed_validation: bool, + /// Disable checkpoint creation during tests + pub disable_checkpoints: bool, } #[cfg(feature = "testing-config")] @@ -891,6 +893,7 @@ impl PlatformTestConfig { block_commit_signature_verification: false, disable_instant_lock_signature_verification: true, disable_contested_documents_is_allowed_validation: true, + disable_checkpoints: true, } } } @@ -904,6 +907,7 @@ impl Default for PlatformTestConfig { block_commit_signature_verification: true, disable_instant_lock_signature_verification: false, disable_contested_documents_is_allowed_validation: true, + disable_checkpoints: true, } } } diff --git a/packages/rs-drive-abci/src/execution/platform_events/block_end/update_checkpoints/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/block_end/update_checkpoints/v0/mod.rs index b94771dd72c..201de6d0c5c 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/block_end/update_checkpoints/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/block_end/update_checkpoints/v0/mod.rs @@ -22,6 +22,12 @@ where block_execution_context: &BlockExecutionContext, platform_version: &PlatformVersion, ) -> Result<(), Error> { + // Check if checkpoints are disabled in testing config + #[cfg(feature = "testing-config")] + if self.config.testing_configs.disable_checkpoints { + return Ok(()); + } + // How often we want a checkpoint let checkpoint_interval_milliseconds = platform_version.drive_abci.checkpoints.frequency_seconds as u64 * 1000; diff --git a/packages/rs-drive-abci/src/platform_types/platform/mod.rs b/packages/rs-drive-abci/src/platform_types/platform/mod.rs index 2119913389d..8613f453ba6 100644 --- a/packages/rs-drive-abci/src/platform_types/platform/mod.rs +++ b/packages/rs-drive-abci/src/platform_types/platform/mod.rs @@ -125,10 +125,18 @@ impl Platform { where C: CoreRPCLike, { - let config = config.unwrap_or(PlatformConfig::default_testnet()); + let config = match config { + Some(config) => config, + None => { + // When using default config, set db_path to the provided path + let mut config = PlatformConfig::default_testnet(); + config.db_path = path.as_ref().to_path_buf(); + config + } + }; let (drive, current_platform_version) = - Drive::open(path, Some(config.drive.clone())).map_err(Error::Drive)?; + Drive::open(&config.db_path, Some(config.drive.clone())).map_err(Error::Drive)?; if let Some(initial_protocol_version) = initial_protocol_version { if initial_protocol_version > 1 { diff --git a/packages/rs-drive-abci/src/test/helpers/setup.rs b/packages/rs-drive-abci/src/test/helpers/setup.rs index 4a1d2b059be..35158b37d32 100644 --- a/packages/rs-drive-abci/src/test/helpers/setup.rs +++ b/packages/rs-drive-abci/src/test/helpers/setup.rs @@ -71,9 +71,14 @@ impl TestPlatformBuilder { } else { Some(PlatformVersion::latest().protocol_version) }; + // Ensure db_path matches the tempdir path + let config = self.config.map(|mut c| { + c.db_path = self.tempdir.path().to_path_buf(); + c + }); let platform = Platform::::open( self.tempdir.path(), - self.config, + config, use_initial_protocol_version, ) .expect("should open Platform successfully"); @@ -86,7 +91,12 @@ impl TestPlatformBuilder { /// Create a new temp platform with a default core rpc pub fn build_with_default_rpc(self) -> TempPlatform { - let platform = Platform::::open(self.tempdir.path(), self.config) + // Ensure db_path matches the tempdir path + let config = self.config.map(|mut c| { + c.db_path = self.tempdir.path().to_path_buf(); + c + }); + let platform = Platform::::open(self.tempdir.path(), config) .expect("should open Platform successfully"); TempPlatform { @@ -229,7 +239,9 @@ impl TempPlatform { } /// Rebuilds Platform from the tempdir as if it was destroyed and restarted - pub fn open_with_tempdir(tempdir: TempDir, config: PlatformConfig) -> Self { + pub fn open_with_tempdir(tempdir: TempDir, mut config: PlatformConfig) -> Self { + // Ensure db_path matches the tempdir path + config.db_path = tempdir.path().to_path_buf(); let platform = Platform::::open(tempdir.path(), Some(config), None) .expect("should open Platform successfully"); diff --git a/packages/rs-drive-abci/tests/strategy_tests/test_cases/address_tests.rs b/packages/rs-drive-abci/tests/strategy_tests/test_cases/address_tests.rs index 9e1e4eebac9..3ff1ce41378 100644 --- a/packages/rs-drive-abci/tests/strategy_tests/test_cases/address_tests.rs +++ b/packages/rs-drive-abci/tests/strategy_tests/test_cases/address_tests.rs @@ -340,4 +340,102 @@ mod tests { "expected at least one identity to be created" ); } + + #[test] + fn run_chain_address_transitions_with_checkpoints() { + drive_abci::logging::init_for_tests(LogLevel::Debug); + + let strategy = NetworkStrategy { + strategy: Strategy { + start_contracts: vec![], + operations: vec![ + Operation { + op_type: OperationType::AddressTransfer( + dash_to_credits!(5)..=dash_to_credits!(5), + 1..=4, + Some(0.2), + None, + ), + frequency: Frequency { + times_per_block_range: 1..3, + chance_per_block: None, + }, + }, + Operation { + op_type: OperationType::AddressFundingFromCoreAssetLock( + dash_to_credits!(20)..=dash_to_credits!(20), + ), + frequency: Frequency { + times_per_block_range: 1..3, + chance_per_block: None, + }, + }, + ], + start_identities: StartIdentities::default(), + start_addresses: StartAddresses::default(), + identity_inserts: IdentityInsertInfo { + frequency: Frequency { + times_per_block_range: 1..2, + chance_per_block: None, + }, + ..Default::default() + }, + identity_contract_nonce_gaps: None, + signer: None, + }, + total_hpmns: 100, + extra_normal_mns: 0, + validator_quorum_count: 24, + chain_lock_quorum_count: 24, + upgrading_info: None, + + proposer_strategy: Default::default(), + rotate_quorums: false, + failure_testing: None, + query_testing: None, + verify_state_transition_results: true, + sign_instant_locks: true, + ..Default::default() + }; + let config = PlatformConfig { + validator_set: ValidatorSetConfig::default_100_67(), + chain_lock: ChainLockConfig::default_100_67(), + instant_lock: InstantLockConfig::default_100_67(), + execution: ExecutionConfig { + verify_sum_trees: true, + + ..Default::default() + }, + block_spacing_ms: 180000, // 3 mins + testing_configs: PlatformTestConfig { + disable_checkpoints: false, + ..PlatformTestConfig::default_minimal_verifications() + }, + ..Default::default() + }; + let mut platform = TestPlatformBuilder::new() + .with_config(config.clone()) + .build_with_mock_rpc(); + + let outcome = run_chain_for_strategy( + &mut platform, + 12, + strategy, + config, + 15, + &mut None, + &mut None, + ); + + let executed = outcome + .state_transition_results_per_block + .values() + .flat_map(|results| results.iter()) + .filter(|(state_transition, result)| { + result.code == 0 + && matches!(state_transition, StateTransition::AddressFundsTransfer(_)) + }) + .count(); + assert!(executed > 0, "expected at least one address transfer"); + } } diff --git a/packages/rs-drive-abci/tests/strategy_tests/test_cases/voting_tests.rs b/packages/rs-drive-abci/tests/strategy_tests/test_cases/voting_tests.rs index 56fec9a651e..d783b4f1af1 100644 --- a/packages/rs-drive-abci/tests/strategy_tests/test_cases/voting_tests.rs +++ b/packages/rs-drive-abci/tests/strategy_tests/test_cases/voting_tests.rs @@ -53,6 +53,7 @@ mod tests { block_commit_signature_verification: false, disable_instant_lock_signature_verification: true, disable_contested_documents_is_allowed_validation: false, + disable_checkpoints: true, }, chain_lock: ChainLockConfig::default_100_67(), instant_lock: InstantLockConfig::default_100_67(),