From 922c0f7fdf277037406ece3fd5cab536da7f6fa3 Mon Sep 17 00:00:00 2001 From: pauldelucia Date: Thu, 17 Apr 2025 20:38:01 +0700 Subject: [PATCH 1/6] fix: add path query back to GroveDBError --- packages/rs-drive-proof-verifier/src/error.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/rs-drive-proof-verifier/src/error.rs b/packages/rs-drive-proof-verifier/src/error.rs index 1d75975dd4e..31cbcc428d0 100644 --- a/packages/rs-drive-proof-verifier/src/error.rs +++ b/packages/rs-drive-proof-verifier/src/error.rs @@ -1,5 +1,6 @@ use dapi_grpc::platform::v0::{Proof, ResponseMetadata}; use dpp::ProtocolError; +use drive::query::PathQuery; /// Errors #[derive(Debug, thiserror::Error)] @@ -20,6 +21,7 @@ pub enum Error { #[error("grovedb: {error}")] GroveDBError { proof_bytes: Vec, + path_query: PathQuery, height: u64, time_ms: u64, error: String, @@ -149,6 +151,7 @@ impl MapGroveDbError for Result { Err(e) => match e { drive::error::Error::GroveDB(e) => Err(Error::GroveDBError { proof_bytes: proof.grovedb_proof.clone(), + path_query: proof.path_query.clone(), height: metadata.height, time_ms: metadata.time_ms, error: e.to_string(), From bc88bbafe1e0074d483199b2b9cb80af8b4c163e Mon Sep 17 00:00:00 2001 From: pauldelucia Date: Fri, 18 Apr 2025 13:40:32 +0700 Subject: [PATCH 2/6] fix --- packages/rs-drive-proof-verifier/src/error.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/rs-drive-proof-verifier/src/error.rs b/packages/rs-drive-proof-verifier/src/error.rs index 31cbcc428d0..30f48400f2d 100644 --- a/packages/rs-drive-proof-verifier/src/error.rs +++ b/packages/rs-drive-proof-verifier/src/error.rs @@ -1,5 +1,6 @@ use dapi_grpc::platform::v0::{Proof, ResponseMetadata}; use dpp::ProtocolError; +use drive::query::GroveError::InvalidProof; use drive::query::PathQuery; /// Errors @@ -21,7 +22,7 @@ pub enum Error { #[error("grovedb: {error}")] GroveDBError { proof_bytes: Vec, - path_query: PathQuery, + path_query: Option, height: u64, time_ms: u64, error: String, @@ -149,9 +150,18 @@ impl MapGroveDbError for Result { match self { Ok(o) => Ok(o), Err(e) => match e { + drive::error::Error::GroveDB(InvalidProof(path_query, _)) => { + Err(Error::GroveDBError { + proof_bytes: proof.grovedb_proof.clone(), + path_query: Some(path_query), + height: metadata.height, + time_ms: metadata.time_ms, + error: e.to_string(), + }) + } drive::error::Error::GroveDB(e) => Err(Error::GroveDBError { proof_bytes: proof.grovedb_proof.clone(), - path_query: proof.path_query.clone(), + path_query: None, height: metadata.height, time_ms: metadata.time_ms, error: e.to_string(), From 38fc96abc2a2dac2de636a58e7e2a89d70996d21 Mon Sep 17 00:00:00 2001 From: pauldelucia Date: Mon, 21 Apr 2025 10:55:47 +0700 Subject: [PATCH 3/6] update grovedb --- Cargo.lock | 125 +++++++++--------- packages/rs-drive-proof-verifier/src/error.rs | 31 +++-- packages/rs-drive/Cargo.toml | 12 +- packages/rs-platform-version/Cargo.toml | 2 +- 4 files changed, 84 insertions(+), 86 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index efa07cbcc35..726e3c36198 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -559,7 +559,7 @@ dependencies = [ "arrayvec", "cc", "cfg-if", - "constant_time_eq", + "constant_time_eq 0.3.1", ] [[package]] @@ -989,6 +989,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + [[package]] name = "constant_time_eq" version = "0.3.1" @@ -1029,21 +1035,6 @@ dependencies = [ "libc", ] -[[package]] -name = "crc" -version = "3.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" -dependencies = [ - "crc-catalog", -] - -[[package]] -name = "crc-catalog" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" - [[package]] name = "crc32fast" version = "1.4.2" @@ -1376,12 +1367,6 @@ dependencies = [ "withdrawals-contract", ] -[[package]] -name = "deflate64" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da692b8d1080ea3045efaab14434d40468c3d8657e42abddfffca87b428f4c1b" - [[package]] name = "delegate" version = "0.13.0" @@ -2185,10 +2170,11 @@ dependencies = [ [[package]] name = "grovedb" version = "3.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=2109876271f35a7c167f91850768e46746a33fa1#2109876271f35a7c167f91850768e46746a33fa1" +source = "git+https://github.com/dashpay/grovedb?rev=6d8ce92abe0c888f0a0115a6c88effa04ea87ed3#6d8ce92abe0c888f0a0115a6c88effa04ea87ed3" dependencies = [ "axum 0.7.5", "bincode", + "bincode_derive", "blake3", "grovedb-costs", "grovedb-merk", @@ -2216,7 +2202,7 @@ dependencies = [ [[package]] name = "grovedb-costs" version = "3.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=2109876271f35a7c167f91850768e46746a33fa1#2109876271f35a7c167f91850768e46746a33fa1" +source = "git+https://github.com/dashpay/grovedb?rev=6d8ce92abe0c888f0a0115a6c88effa04ea87ed3#6d8ce92abe0c888f0a0115a6c88effa04ea87ed3" dependencies = [ "integer-encoding", "intmap", @@ -2226,7 +2212,7 @@ dependencies = [ [[package]] name = "grovedb-epoch-based-storage-flags" version = "3.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=2109876271f35a7c167f91850768e46746a33fa1#2109876271f35a7c167f91850768e46746a33fa1" +source = "git+https://github.com/dashpay/grovedb?rev=6d8ce92abe0c888f0a0115a6c88effa04ea87ed3#6d8ce92abe0c888f0a0115a6c88effa04ea87ed3" dependencies = [ "grovedb-costs", "hex", @@ -2238,9 +2224,10 @@ dependencies = [ [[package]] name = "grovedb-merk" version = "3.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=2109876271f35a7c167f91850768e46746a33fa1#2109876271f35a7c167f91850768e46746a33fa1" +source = "git+https://github.com/dashpay/grovedb?rev=6d8ce92abe0c888f0a0115a6c88effa04ea87ed3#6d8ce92abe0c888f0a0115a6c88effa04ea87ed3" dependencies = [ "bincode", + "bincode_derive", "blake3", "byteorder", "colored", @@ -2261,7 +2248,7 @@ dependencies = [ [[package]] name = "grovedb-path" version = "3.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=2109876271f35a7c167f91850768e46746a33fa1#2109876271f35a7c167f91850768e46746a33fa1" +source = "git+https://github.com/dashpay/grovedb?rev=6d8ce92abe0c888f0a0115a6c88effa04ea87ed3#6d8ce92abe0c888f0a0115a6c88effa04ea87ed3" dependencies = [ "hex", ] @@ -2269,7 +2256,7 @@ dependencies = [ [[package]] name = "grovedb-storage" version = "3.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=2109876271f35a7c167f91850768e46746a33fa1#2109876271f35a7c167f91850768e46746a33fa1" +source = "git+https://github.com/dashpay/grovedb?rev=6d8ce92abe0c888f0a0115a6c88effa04ea87ed3#6d8ce92abe0c888f0a0115a6c88effa04ea87ed3" dependencies = [ "blake3", "grovedb-costs", @@ -2288,7 +2275,7 @@ dependencies = [ [[package]] name = "grovedb-version" version = "3.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=2109876271f35a7c167f91850768e46746a33fa1#2109876271f35a7c167f91850768e46746a33fa1" +source = "git+https://github.com/dashpay/grovedb?rev=6d8ce92abe0c888f0a0115a6c88effa04ea87ed3#6d8ce92abe0c888f0a0115a6c88effa04ea87ed3" dependencies = [ "thiserror 2.0.12", "versioned-feature-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2297,7 +2284,7 @@ dependencies = [ [[package]] name = "grovedb-visualize" version = "3.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=2109876271f35a7c167f91850768e46746a33fa1#2109876271f35a7c167f91850768e46746a33fa1" +source = "git+https://github.com/dashpay/grovedb?rev=6d8ce92abe0c888f0a0115a6c88effa04ea87ed3#6d8ce92abe0c888f0a0115a6c88effa04ea87ed3" dependencies = [ "hex", "itertools 0.14.0", @@ -2306,7 +2293,7 @@ dependencies = [ [[package]] name = "grovedbg-types" version = "3.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=2109876271f35a7c167f91850768e46746a33fa1#2109876271f35a7c167f91850768e46746a33fa1" +source = "git+https://github.com/dashpay/grovedb?rev=6d8ce92abe0c888f0a0115a6c88effa04ea87ed3#6d8ce92abe0c888f0a0115a6c88effa04ea87ed3" dependencies = [ "serde", "serde_with 3.9.0", @@ -3010,16 +2997,6 @@ dependencies = [ "libc", ] -[[package]] -name = "lzma-rs" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e" -dependencies = [ - "byteorder", - "crc", -] - [[package]] name = "masternode-reward-shares-contract" version = "2.0.0-dev.1" @@ -3545,6 +3522,17 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + [[package]] name = "paste" version = "1.0.15" @@ -3553,12 +3541,14 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pbkdf2" -version = "0.12.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ "digest", "hmac", + "password-hash", + "sha2", ] [[package]] @@ -5019,7 +5009,7 @@ dependencies = [ "tonic-build", "ureq", "walkdir", - "zip", + "zip 2.2.0", ] [[package]] @@ -6223,42 +6213,50 @@ dependencies = [ "syn 2.0.96", ] +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq 0.1.5", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac", + "pbkdf2", + "sha1", + "time", + "zstd", +] + [[package]] name = "zip" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" dependencies = [ - "aes", "arbitrary", - "bzip2", - "constant_time_eq", "crc32fast", "crossbeam-utils", - "deflate64", "displaydoc", "flate2", - "hmac", "indexmap 2.7.0", - "lzma-rs", "memchr", - "pbkdf2", - "rand", - "sha1", "thiserror 1.0.64", - "time", - "zeroize", "zopfli", - "zstd", ] [[package]] name = "zip-extensions" -version = "0.8.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "386508a00aae1d8218b9252a41f59bba739ccee3f8e420bb90bcb1c30d960d4a" +checksum = "cecf62554c4ff96bce01a7ef123d160c3ffe9180638820f8b4d545c65b221b8c" dependencies = [ - "zip", + "zip 0.6.6", ] [[package]] @@ -6277,19 +6275,20 @@ dependencies = [ [[package]] name = "zstd" -version = "0.13.2" +version = "0.11.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "7.2.1" +version = "5.0.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" dependencies = [ + "libc", "zstd-sys", ] diff --git a/packages/rs-drive-proof-verifier/src/error.rs b/packages/rs-drive-proof-verifier/src/error.rs index 30f48400f2d..26ed71ab3b8 100644 --- a/packages/rs-drive-proof-verifier/src/error.rs +++ b/packages/rs-drive-proof-verifier/src/error.rs @@ -149,25 +149,24 @@ impl MapGroveDbError for Result { fn map_drive_error(self, proof: &Proof, metadata: &ResponseMetadata) -> Result { match self { Ok(o) => Ok(o), - Err(e) => match e { - drive::error::Error::GroveDB(InvalidProof(path_query, _)) => { - Err(Error::GroveDBError { - proof_bytes: proof.grovedb_proof.clone(), - path_query: Some(path_query), - height: metadata.height, - time_ms: metadata.time_ms, - error: e.to_string(), - }) - } - drive::error::Error::GroveDB(e) => Err(Error::GroveDBError { + + Err(drive::error::Error::GroveDB(grove_err)) => { + // If InvalidProof error is returned, extract the path query from it + let maybe_query = match &grove_err { + InvalidProof(path_query, ..) => Some(path_query.clone()), + _ => None, + }; + + Err(Error::GroveDBError { proof_bytes: proof.grovedb_proof.clone(), - path_query: None, + path_query: maybe_query, height: metadata.height, time_ms: metadata.time_ms, - error: e.to_string(), - }), - _ => Err(e.into()), - }, + error: grove_err.to_string(), + }) + } + + Err(other) => Err(other.into()), } } } diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index 77cee4ec230..c8464132ced 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 = "2109876271f35a7c167f91850768e46746a33fa1", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "2109876271f35a7c167f91850768e46746a33fa1", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "2109876271f35a7c167f91850768e46746a33fa1" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "2109876271f35a7c167f91850768e46746a33fa1", optional = true } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "2109876271f35a7c167f91850768e46746a33fa1" } -grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "2109876271f35a7c167f91850768e46746a33fa1" } +grovedb = { git = "https://github.com/dashpay/grovedb", rev = "6d8ce92abe0c888f0a0115a6c88effa04ea87ed3", optional = true, default-features = false } +grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "6d8ce92abe0c888f0a0115a6c88effa04ea87ed3", optional = true } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "6d8ce92abe0c888f0a0115a6c88effa04ea87ed3" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "6d8ce92abe0c888f0a0115a6c88effa04ea87ed3", optional = true } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "6d8ce92abe0c888f0a0115a6c88effa04ea87ed3" } +grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "6d8ce92abe0c888f0a0115a6c88effa04ea87ed3" } [dev-dependencies] criterion = "0.5" diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 76f6279576c..0ceedde4c6e 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.0-rc.3" } versioned-feature-core = { git = "https://github.com/dashpay/versioned-feature-core", version = "1.0.0" } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "2109876271f35a7c167f91850768e46746a33fa1" } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "6d8ce92abe0c888f0a0115a6c88effa04ea87ed3" } once_cell = "1.19.0" [features] From 5f271d888bcae3aa82a88bae611772ad2939dd67 Mon Sep 17 00:00:00 2001 From: pauldelucia Date: Mon, 21 Apr 2025 11:10:29 +0700 Subject: [PATCH 4/6] fix --- packages/rs-drive-proof-verifier/src/proof.rs | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/rs-drive-proof-verifier/src/proof.rs b/packages/rs-drive-proof-verifier/src/proof.rs index 4bd70763dfd..78496c708e2 100644 --- a/packages/rs-drive-proof-verifier/src/proof.rs +++ b/packages/rs-drive-proof-verifier/src/proof.rs @@ -5,6 +5,7 @@ pub mod token_info; pub mod token_status; pub mod token_total_supply; +use drive::query::GroveError::InvalidProof; use crate::from_request::TryFromRequest; use crate::provider::DataContractProvider; use crate::verify::verify_tenderdash_proof; @@ -417,12 +418,21 @@ impl FromProof for Identit platform_version, ) .map_err(|e| match e { - drive::error::Error::GroveDB(e) => Error::GroveDBError { - proof_bytes: proof.grovedb_proof.clone(), - height: mtd.height, - time_ms: mtd.time_ms, - error: e.to_string(), - }, + drive::error::Error::GroveDB(e) => { + // If InvalidProof error is returned, extract the path query from it + let maybe_query = match &e { + InvalidProof(path_query, ..) => Some(path_query.clone()), + _ => None, + }; + + Error::GroveDBError { + proof_bytes: proof.grovedb_proof.clone(), + path_query: maybe_query, + height: mtd.height, + time_ms: mtd.time_ms, + error: e.to_string(), + } + } _ => e.into(), })?; From c741d279fbec64d4ae80152e3bd9b0b2c5699c84 Mon Sep 17 00:00:00 2001 From: pauldelucia Date: Mon, 21 Apr 2025 11:28:46 +0700 Subject: [PATCH 5/6] fix --- packages/rs-drive-proof-verifier/src/error.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/rs-drive-proof-verifier/src/error.rs b/packages/rs-drive-proof-verifier/src/error.rs index 26ed71ab3b8..30c96c27255 100644 --- a/packages/rs-drive-proof-verifier/src/error.rs +++ b/packages/rs-drive-proof-verifier/src/error.rs @@ -1,6 +1,6 @@ use dapi_grpc::platform::v0::{Proof, ResponseMetadata}; use dpp::ProtocolError; -use drive::query::GroveError::InvalidProof; +use drive::grovedb::Error as GroveError; use drive::query::PathQuery; /// Errors @@ -153,7 +153,7 @@ impl MapGroveDbError for Result { Err(drive::error::Error::GroveDB(grove_err)) => { // If InvalidProof error is returned, extract the path query from it let maybe_query = match &grove_err { - InvalidProof(path_query, ..) => Some(path_query.clone()), + GroveError::InvalidProof(path_query, ..) => Some(path_query.clone()), _ => None, }; From 6e1e11148fc37e77afcdeb0f8e10890f0c28c3f6 Mon Sep 17 00:00:00 2001 From: pauldelucia Date: Mon, 21 Apr 2025 11:35:45 +0700 Subject: [PATCH 6/6] fix --- packages/rs-drive-proof-verifier/src/proof.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/rs-drive-proof-verifier/src/proof.rs b/packages/rs-drive-proof-verifier/src/proof.rs index 78496c708e2..2553c5f076f 100644 --- a/packages/rs-drive-proof-verifier/src/proof.rs +++ b/packages/rs-drive-proof-verifier/src/proof.rs @@ -5,7 +5,6 @@ pub mod token_info; pub mod token_status; pub mod token_total_supply; -use drive::query::GroveError::InvalidProof; use crate::from_request::TryFromRequest; use crate::provider::DataContractProvider; use crate::verify::verify_tenderdash_proof; @@ -47,6 +46,7 @@ use drive::drive::identity::key::fetch::{ }; use drive::drive::Drive; use drive::error::proof::ProofError; +use drive::grovedb::Error as GroveError; use drive::query::contested_resource_votes_given_by_identity_query::ContestedResourceVotesGivenByIdentityQuery; use drive::query::proposer_block_count_query::ProposerQueryType; use drive::query::vote_poll_contestant_votes_query::ContestedDocumentVotePollVotesDriveQuery; @@ -421,7 +421,7 @@ impl FromProof for Identit drive::error::Error::GroveDB(e) => { // If InvalidProof error is returned, extract the path query from it let maybe_query = match &e { - InvalidProof(path_query, ..) => Some(path_query.clone()), + GroveError::InvalidProof(path_query, ..) => Some(path_query.clone()), _ => None, };