diff --git a/.github/grpc-queries-cache.json b/.github/grpc-queries-cache.json index e6ddc5013b4..9612978c5d5 100644 --- a/.github/grpc-queries-cache.json +++ b/.github/grpc-queries-cache.json @@ -161,5 +161,5 @@ "status": "implemented" } }, - "last_updated": "2026-03-05T17:22:30.340784" + "last_updated": "2026-03-09T19:05:06.309464" } \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 2d1533fd6a0..9991ee19708 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2033,7 +2033,7 @@ dependencies = [ "dpp", "enum-map", "grovedb", - "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69)", + "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84)", "grovedb-epoch-based-storage-flags", "grovedb-path", "grovedb-storage", @@ -2727,15 +2727,15 @@ dependencies = [ [[package]] name = "grovedb" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69#a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" +source = "git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84#2c9117cf3d77c2ffda060f45242d238fb01dca84" dependencies = [ "axum 0.8.8", "bincode", "bincode_derive", "blake3", "grovedb-bulk-append-tree", - "grovedb-commitment-tree 4.0.0 (git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69)", - "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69)", + "grovedb-commitment-tree 4.0.0 (git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84)", + "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84)", "grovedb-dense-fixed-sized-merkle-tree", "grovedb-element", "grovedb-merk", @@ -2765,11 +2765,11 @@ dependencies = [ [[package]] name = "grovedb-bulk-append-tree" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69#a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" +source = "git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84#2c9117cf3d77c2ffda060f45242d238fb01dca84" dependencies = [ "bincode", "blake3", - "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69)", + "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84)", "grovedb-dense-fixed-sized-merkle-tree", "grovedb-merkle-mountain-range", "grovedb-query", @@ -2781,10 +2781,12 @@ dependencies = [ [[package]] name = "grovedb-commitment-tree" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=7ecb8465fad750c7cddd5332adb6f97fcceb498b#7ecb8465fad750c7cddd5332adb6f97fcceb498b" +source = "git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84#2c9117cf3d77c2ffda060f45242d238fb01dca84" dependencies = [ "blake3", - "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=7ecb8465fad750c7cddd5332adb6f97fcceb498b)", + "grovedb-bulk-append-tree", + "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84)", + "grovedb-storage", "incrementalmerkletree", "orchard", "thiserror 2.0.18", @@ -2793,12 +2795,10 @@ dependencies = [ [[package]] name = "grovedb-commitment-tree" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69#a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" +source = "git+https://github.com/dashpay/grovedb?rev=7ecb8465fad750c7cddd5332adb6f97fcceb498b#7ecb8465fad750c7cddd5332adb6f97fcceb498b" dependencies = [ "blake3", - "grovedb-bulk-append-tree", - "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69)", - "grovedb-storage", + "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=7ecb8465fad750c7cddd5332adb6f97fcceb498b)", "incrementalmerkletree", "orchard", "thiserror 2.0.18", @@ -2807,7 +2807,7 @@ dependencies = [ [[package]] name = "grovedb-costs" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=7ecb8465fad750c7cddd5332adb6f97fcceb498b#7ecb8465fad750c7cddd5332adb6f97fcceb498b" +source = "git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84#2c9117cf3d77c2ffda060f45242d238fb01dca84" dependencies = [ "integer-encoding", "intmap", @@ -2817,7 +2817,7 @@ dependencies = [ [[package]] name = "grovedb-costs" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69#a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" +source = "git+https://github.com/dashpay/grovedb?rev=7ecb8465fad750c7cddd5332adb6f97fcceb498b#7ecb8465fad750c7cddd5332adb6f97fcceb498b" dependencies = [ "integer-encoding", "intmap", @@ -2827,11 +2827,11 @@ dependencies = [ [[package]] name = "grovedb-dense-fixed-sized-merkle-tree" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69#a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" +source = "git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84#2c9117cf3d77c2ffda060f45242d238fb01dca84" dependencies = [ "bincode", "blake3", - "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69)", + "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84)", "grovedb-query", "grovedb-storage", "thiserror 2.0.18", @@ -2840,7 +2840,7 @@ dependencies = [ [[package]] name = "grovedb-element" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69#a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" +source = "git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84#2c9117cf3d77c2ffda060f45242d238fb01dca84" dependencies = [ "bincode", "bincode_derive", @@ -2855,9 +2855,9 @@ dependencies = [ [[package]] name = "grovedb-epoch-based-storage-flags" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69#a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" +source = "git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84#2c9117cf3d77c2ffda060f45242d238fb01dca84" dependencies = [ - "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69)", + "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84)", "hex", "integer-encoding", "intmap", @@ -2867,7 +2867,7 @@ dependencies = [ [[package]] name = "grovedb-merk" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69#a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" +source = "git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84#2c9117cf3d77c2ffda060f45242d238fb01dca84" dependencies = [ "bincode", "bincode_derive", @@ -2875,7 +2875,7 @@ dependencies = [ "byteorder", "colored", "ed", - "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69)", + "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84)", "grovedb-element", "grovedb-path", "grovedb-query", @@ -2893,18 +2893,18 @@ dependencies = [ [[package]] name = "grovedb-merkle-mountain-range" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69#a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" +source = "git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84#2c9117cf3d77c2ffda060f45242d238fb01dca84" dependencies = [ "bincode", "blake3", - "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69)", + "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84)", "grovedb-storage", ] [[package]] name = "grovedb-path" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69#a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" +source = "git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84#2c9117cf3d77c2ffda060f45242d238fb01dca84" dependencies = [ "hex", ] @@ -2912,12 +2912,12 @@ dependencies = [ [[package]] name = "grovedb-query" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69#a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" +source = "git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84#2c9117cf3d77c2ffda060f45242d238fb01dca84" dependencies = [ "bincode", "byteorder", "ed", - "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69)", + "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84)", "grovedb-storage", "hex", "indexmap 2.13.0", @@ -2928,10 +2928,10 @@ dependencies = [ [[package]] name = "grovedb-storage" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69#a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" +source = "git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84#2c9117cf3d77c2ffda060f45242d238fb01dca84" dependencies = [ "blake3", - "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69)", + "grovedb-costs 4.0.0 (git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84)", "grovedb-path", "grovedb-visualize", "hex", @@ -2947,7 +2947,7 @@ dependencies = [ [[package]] name = "grovedb-version" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69#a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" +source = "git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84#2c9117cf3d77c2ffda060f45242d238fb01dca84" dependencies = [ "thiserror 2.0.18", "versioned-feature-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2956,7 +2956,7 @@ dependencies = [ [[package]] name = "grovedb-visualize" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69#a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" +source = "git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84#2c9117cf3d77c2ffda060f45242d238fb01dca84" dependencies = [ "hex", "itertools 0.14.0", @@ -2965,7 +2965,7 @@ dependencies = [ [[package]] name = "grovedbg-types" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7b878f72279a4893a7e9dc0ab2973ca0b09ce69#a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" +source = "git+https://github.com/dashpay/grovedb?rev=2c9117cf3d77c2ffda060f45242d238fb01dca84#2c9117cf3d77c2ffda060f45242d238fb01dca84" dependencies = [ "serde", "serde_with 3.17.0", @@ -6061,7 +6061,7 @@ dependencies = [ "security-framework", "security-framework-sys", "webpki-root-certs", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index 2e7d036d953..5540ff48d5b 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -52,12 +52,12 @@ enum-map = { version = "2.0.3", optional = true } intmap = { version = "3.0.1", features = ["serde"], optional = true } chrono = { version = "0.4.35", optional = true } itertools = { version = "0.13", optional = true } -grovedb = { git = "https://github.com/dashpay/grovedb", rev = "a7b878f72279a4893a7e9dc0ab2973ca0b09ce69", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "a7b878f72279a4893a7e9dc0ab2973ca0b09ce69", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "a7b878f72279a4893a7e9dc0ab2973ca0b09ce69", optional = true } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" } -grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" } +grovedb = { git = "https://github.com/dashpay/grovedb", rev = "2c9117cf3d77c2ffda060f45242d238fb01dca84", optional = true, default-features = false } +grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "2c9117cf3d77c2ffda060f45242d238fb01dca84", optional = true } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "2c9117cf3d77c2ffda060f45242d238fb01dca84" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "2c9117cf3d77c2ffda060f45242d238fb01dca84", optional = true } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "2c9117cf3d77c2ffda060f45242d238fb01dca84" } +grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "2c9117cf3d77c2ffda060f45242d238fb01dca84" } [dev-dependencies] criterion = "0.5" diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs b/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs index 738cab59ea5..a3396005212 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs @@ -20,7 +20,7 @@ use dpp::fee::Credits; use dpp::prelude::Identifier; use dpp::util::deserializer::ProtocolVersion; use dpp::version::PlatformVersion; -use grovedb::batch::QualifiedGroveDbOp; +use grovedb::batch::{QualifiedGroveDbOp, SubelementsDeletionBehavior}; use grovedb::{Element, TransactionArg, TreeType}; /// Operations on Epochs @@ -297,6 +297,7 @@ impl EpochOperations for Epoch { self.get_path_vec(), KEY_PROPOSERS.to_vec(), TreeType::NormalTree, + SubelementsDeletionBehavior::DeleteChildren, ) } diff --git a/packages/rs-drive/src/drive/initialization/v0/mod.rs b/packages/rs-drive/src/drive/initialization/v0/mod.rs index 7b4243ace3b..148a47f7336 100644 --- a/packages/rs-drive/src/drive/initialization/v0/mod.rs +++ b/packages/rs-drive/src/drive/initialization/v0/mod.rs @@ -1360,7 +1360,7 @@ mod tests { drive_version, ) .expect("expected to get root elements"); - assert_eq!(proof.len(), 251); //it + left + right + parent + sibling + parent sibling + grandparent + assert_eq!(proof.len(), 286); //it + left + right + parent + sibling + parent sibling + grandparent (was 251, +35 from KVValueHashFeatureTypeWithChildHash) let mut query = Query::new(); query.insert_key(vec![RootTree::Pools as u8]); @@ -1381,7 +1381,7 @@ mod tests { drive_version, ) .expect("expected to get root elements"); - assert_eq!(proof.len(), 253); //it + left + parent + sibling + parent sibling + grandparent + assert_eq!(proof.len(), 288); //it + left + parent + sibling + parent sibling + grandparent (was 253, +35 from KVValueHashFeatureTypeWithChildHash) let mut query = Query::new(); query.insert_key(vec![RootTree::WithdrawalTransactions as u8]); @@ -1402,7 +1402,7 @@ mod tests { drive_version, ) .expect("expected to get root elements"); - assert_eq!(proof.len(), 251); //it + left + right + parent + sibling + parent sibling + grandparent + assert_eq!(proof.len(), 286); //it + left + right + parent + sibling + parent sibling + grandparent (was 251, +35 from KVValueHashFeatureTypeWithChildHash) let mut query = Query::new(); query.insert_key(vec![RootTree::Votes as u8]); @@ -1423,7 +1423,7 @@ mod tests { drive_version, ) .expect("expected to get root elements"); - assert_eq!(proof.len(), 251); //it + left + right + parent + sibling + parent sibling + grandparent + assert_eq!(proof.len(), 286); //it + left + right + parent + sibling + parent sibling + grandparent (was 251, +35 from KVValueHashFeatureTypeWithChildHash) // Merk Level 3 @@ -1490,7 +1490,7 @@ mod tests { drive_version, ) .expect("expected to get root elements"); - assert_eq!(proof.len(), 288); //it + parent + sibling + parent sibling + grandparent + grandparent sibling + great-grandparent + assert_eq!(proof.len(), 321); //it + parent + sibling + parent sibling + grandparent + grandparent sibling + great-grandparent (was 288, +33 from KVValueHashFeatureTypeWithChildHash) let mut query = Query::new(); query.insert_key(vec![RootTree::AddressBalances as u8]); @@ -1511,7 +1511,7 @@ mod tests { drive_version, ) .expect("expected to get root elements"); - assert_eq!(proof.len(), 252); //it + parent + sibling + parent sibling + grandparent + grandparent sibling + great-grandparent + assert_eq!(proof.len(), 287); //it + parent + sibling + parent sibling + grandparent + grandparent sibling + great-grandparent (was 252, +35 from KVValueHashFeatureTypeWithChildHash) let mut query = Query::new(); query.insert_key(vec![RootTree::SpentAssetLockTransactions as u8]); @@ -1574,7 +1574,7 @@ mod tests { drive_version, ) .expect("expected to get root elements"); - assert_eq!(proof.len(), 251); //it + parent + sibling + parent sibling + grandparent + grandparent sibling + great-grandparent + assert_eq!(proof.len(), 286); //it + parent + sibling + parent sibling + grandparent + grandparent sibling + great-grandparent (was 251, +35 from KVValueHashFeatureTypeWithChildHash) let mut query = Query::new(); query.insert_key(vec![RootTree::Versions as u8]); @@ -1595,7 +1595,7 @@ mod tests { drive_version, ) .expect("expected to get root elements"); - assert_eq!(proof.len(), 251); //it + parent + sibling + parent sibling + grandparent + grandparent sibling + great-grandparent + assert_eq!(proof.len(), 286); //it + parent + sibling + parent sibling + grandparent + grandparent sibling + great-grandparent (was 251, +35 from KVValueHashFeatureTypeWithChildHash) // Merk Level 4 @@ -1618,6 +1618,6 @@ mod tests { drive_version, ) .expect("expected to get root elements"); - assert_eq!(proof.len(), 287); //it + parent + parent sibling + grandparent + grandparent sibling + great-grandparent + great-grandparent sibling + great-great-grandparent + assert_eq!(proof.len(), 320); //it + parent + parent sibling + grandparent + grandparent sibling + great-grandparent + great-grandparent sibling + great-great-grandparent (was 287, +33 from KVValueHashFeatureTypeWithChildHash) } } diff --git a/packages/rs-drive/src/state_transition_action/action_convert_to_operations/system/penalize_shielded_pool.rs b/packages/rs-drive/src/state_transition_action/action_convert_to_operations/system/penalize_shielded_pool.rs index fee9484df0f..29a3a9d1437 100644 --- a/packages/rs-drive/src/state_transition_action/action_convert_to_operations/system/penalize_shielded_pool.rs +++ b/packages/rs-drive/src/state_transition_action/action_convert_to_operations/system/penalize_shielded_pool.rs @@ -27,14 +27,15 @@ impl DriveHighLevelOperationConverter for PenalizeShieldedPoolAction { } // 2. Deduct penalty from pool total balance - let new_total_balance = - v0.current_total_balance - .checked_sub(v0.penalty_amount) - .ok_or_else(|| { - Error::Drive(DriveError::CorruptedDriveState( - "shielded pool total balance underflow when subtracting penalty_amount".to_string(), - )) - })?; + let new_total_balance = v0 + .current_total_balance + .checked_sub(v0.penalty_amount) + .ok_or_else(|| { + Error::Drive(DriveError::CorruptedDriveState( + "shielded pool total balance underflow when subtracting penalty_amount" + .to_string(), + )) + })?; ops.push(DriveOperation::ShieldedPoolOperation( ShieldedPoolOperationType::UpdateTotalBalance { new_total_balance }, )); diff --git a/packages/rs-drive/src/util/batch/drive_op_batch/finalize_task.rs b/packages/rs-drive/src/util/batch/drive_op_batch/finalize_task.rs index b6d1e5d3d5e..4c85892dcb3 100644 --- a/packages/rs-drive/src/util/batch/drive_op_batch/finalize_task.rs +++ b/packages/rs-drive/src/util/batch/drive_op_batch/finalize_task.rs @@ -18,11 +18,7 @@ pub trait DriveOperationFinalizationTasks { } impl DriveOperationFinalizeTask { - pub fn execute( - self, - drive: &Drive, - _platform_version: &PlatformVersion, - ) -> Result<(), Error> { + pub fn execute(self, drive: &Drive, _platform_version: &PlatformVersion) -> Result<(), Error> { match self { DriveOperationFinalizeTask::RemoveDataContractFromCache { contract_id } => { drive.cache.data_contracts.remove(contract_id.to_buffer()); diff --git a/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs b/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs index 5c95b248bdd..6b1f8a2c60c 100644 --- a/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs +++ b/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs @@ -16,7 +16,10 @@ use dpp::block::epoch::Epoch; use dpp::identity::{Purpose, SecurityLevel}; use dpp::prelude::Identifier; use grovedb::batch::key_info::KeyInfo; -use grovedb::batch::{GroveDbOpConsistencyResults, GroveOp, KeyInfoPath, QualifiedGroveDbOp}; +use grovedb::batch::{ + GroveDbOpConsistencyResults, GroveOp, KeyInfoPath, QualifiedGroveDbOp, + SubelementsDeletionBehavior, +}; use grovedb::operations::proof::util::hex_to_ascii; use grovedb::{Element, TreeType}; use std::borrow::Cow; @@ -590,9 +593,15 @@ impl GroveDbOpBatchV0Methods for GroveDbOpBatch { } /// Adds a `Delete` tree operation to a list of GroveDB ops. + /// Uses `DontCheck` because callers (e.g. `batch_delete_up_tree_while_empty`) + /// have already verified the tree is empty. fn add_delete_tree(&mut self, path: Vec>, key: Vec, tree_type: TreeType) { - self.operations - .push(QualifiedGroveDbOp::delete_tree_op(path, key, tree_type)) + self.operations.push(QualifiedGroveDbOp::delete_tree_op( + path, + key, + tree_type, + SubelementsDeletionBehavior::DontCheck, + )) } /// Adds an `Insert` operation with an element to a list of GroveDB ops. diff --git a/packages/rs-drive/src/util/grove_operations/batch_insert_empty_tree_if_not_exists/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_insert_empty_tree_if_not_exists/v0/mod.rs index 3f1bd9b0b8b..f52c2dfe841 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_insert_empty_tree_if_not_exists/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_insert_empty_tree_if_not_exists/v0/mod.rs @@ -52,7 +52,7 @@ impl Drive { } else if let GroveOperation(grove_op) = previous_drive_operation { if grove_op.key == Some(KeyInfo::KnownKey(key.to_vec())) && grove_op.path == path - && matches!(grove_op.op, GroveOp::DeleteTree(_)) + && matches!(grove_op.op, GroveOp::DeleteTree(_, _)) { found = true; existing_operations.remove(i); @@ -119,7 +119,7 @@ impl Drive { } else if let GroveOperation(grove_op) = previous_drive_operation { if grove_op.key == Some(KeyInfo::KnownKey(key.to_vec())) && grove_op.path == path - && matches!(grove_op.op, GroveOp::DeleteTree(_)) + && matches!(grove_op.op, GroveOp::DeleteTree(_, _)) { found = true; existing_operations.remove(i); @@ -184,7 +184,7 @@ impl Drive { } else if let GroveOperation(grove_op) = previous_drive_operation { if grove_op.key == Some(KeyInfo::KnownKey(key.to_vec())) && grove_op.path == path - && matches!(grove_op.op, GroveOp::DeleteTree(_)) + && matches!(grove_op.op, GroveOp::DeleteTree(_, _)) { found = true; existing_operations.remove(i); @@ -249,7 +249,7 @@ impl Drive { } else if let GroveOperation(grove_op) = previous_drive_operation { if grove_op.key == Some(KeyInfo::KnownKey(key.to_vec())) && grove_op.path == path - && matches!(grove_op.op, GroveOp::DeleteTree(_)) + && matches!(grove_op.op, GroveOp::DeleteTree(_, _)) { found = true; existing_operations.remove(i); diff --git a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs index c2c441cf7d4..9da64b2262c 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs @@ -45,7 +45,7 @@ impl Drive { "we should not be seeing internal grovedb operations", ))); } - Some(GroveOp::Delete) | Some(GroveOp::DeleteTree(_)) => false, + Some(GroveOp::Delete) | Some(GroveOp::DeleteTree(_, _)) => false, _ => true, }; diff --git a/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs index 79b67a77f7d..e44000512d7 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs @@ -65,8 +65,6 @@ impl Drive { Some(BatchApplyOptions { validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, - allow_deleting_non_empty_trees: false, - deleting_non_empty_trees_returns_error: true, disable_operation_consistency_check: !self.config.batching_consistency_verification, base_root_storage_is_free: true, batch_pause_height: None, diff --git a/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs index 9d7a6bc8eba..a736817ab8d 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs @@ -50,8 +50,6 @@ impl Drive { Some(BatchApplyOptions { validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, - allow_deleting_non_empty_trees: false, - deleting_non_empty_trees_returns_error: true, disable_operation_consistency_check: false, base_root_storage_is_free: true, batch_pause_height: None, diff --git a/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs index fb1f867e8d0..77d8d247a5c 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs @@ -26,8 +26,6 @@ impl Drive { Some(BatchApplyOptions { validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, - allow_deleting_non_empty_trees: false, - deleting_non_empty_trees_returns_error: true, disable_operation_consistency_check: false, base_root_storage_is_free: true, batch_pause_height: None, diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 8a1aacfa909..40966c3ba44 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -11,7 +11,7 @@ license = "MIT" thiserror = { version = "2.0.12" } bincode = { version = "=2.0.1" } versioned-feature-core = { git = "https://github.com/dashpay/versioned-feature-core", version = "1.0.0" } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "a7b878f72279a4893a7e9dc0ab2973ca0b09ce69" } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "2c9117cf3d77c2ffda060f45242d238fb01dca84" } [features] mock-versions = []