-
Notifications
You must be signed in to change notification settings - Fork 43
feat: group queries #2432
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: group queries #2432
Conversation
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the WalkthroughThis pull request introduces significant enhancements to the group action and group action signers functionality across multiple packages in the Dash Platform repository. The changes span protocol buffer definitions, Rust implementation modules, and versioning structures. Key modifications include adding new methods for retrieving and proving group actions, implementing action status tracking, and expanding the verification capabilities for group-related operations. Changes
Sequence DiagramsequenceDiagram
participant Client
participant DAPI
participant Platform
participant Drive
Client->>DAPI: getGroupActions(request)
DAPI->>Platform: Process request
Platform->>Drive: Fetch group actions
Drive-->>Platform: Return group actions
Platform-->>DAPI: Respond with actions
DAPI-->>Client: Return group actions
Client->>DAPI: getGroupActionSigners(request)
DAPI->>Platform: Process request
Platform->>Drive: Fetch action signers
Drive-->>Platform: Return signers
Platform-->>DAPI: Respond with signers
DAPI-->>Client: Return action signers
Possibly related PRs
Suggested reviewers
Poem
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 13
🧹 Nitpick comments (31)
packages/rs-drive/src/verify/group/verify_group_info/v0/mod.rs (1)
41-45
: Improve error message for clarityThe error message "we should always get back one element" could be more informative. Consider specifying the expected and actual lengths to aid debugging.
Apply this diff to enhance the error message:
return Err(Error::Proof(ProofError::CorruptedProof( - "we should always get back one element".to_string(), + format!("expected exactly one element, but got {}", proved_key_values.len()), )));packages/rs-drive-abci/src/query/group_queries/group_actions/mod.rs (2)
23-24
: Enhance error message for decoding failureConsider providing more details in the error message to help diagnose decoding issues, such as specifying which part of the request is invalid or missing.
Apply this diff to improve the error message:
"could not decode active group actions query".to_string(), +"Missing 'version' field in GetGroupActionsRequest.".to_string(),
34-36
: Future-proof the version handling in match expressionCurrently, the match expression handles only
RequestVersion::V0(_)
. To make the code more robust and maintainable for future versions, consider adding a wildcard arm or handling other potential versions explicitly.Apply this diff to adjust the match expression:
let feature_version = match &version { RequestVersion::V0(_) => 0, + //_ => return Ok(QueryValidationResult::new_with_error( + // QueryError::UnsupportedQueryVersion(...) + //)), };packages/rs-drive/src/verify/group/verify_action_signers/v0/mod.rs (1)
40-59
: Enhance error handling and clarity infilter_map
closureThe closure within
filter_map
can be improved for better readability and error handling. Explicitly handle unexpectedelement
types and provide detailed error messages to aid in debugging.Consider restructuring the closure as follows:
.filter_map(|(_, key, element)| { let id: Identifier = match key.try_into() { Ok(id) => id, Err(_) => { return Some(Err(Error::Proof(ProofError::IncorrectProof( "identifier was not 32 bytes long".to_string(), )))); } }; match element { Some(SumItem(value, ..)) => { let signing_power: GroupMemberPower = match value.try_into() { Ok(signing_power) => signing_power, Err(_) => { return Some(Err(Error::Proof(ProofError::IncorrectProof( "signing power should be encodable as a u32 integer".to_string(), )))); } }; Some(Ok((id, signing_power))) }, + Some(unexpected_element) => { + return Some(Err(Error::Proof(ProofError::IncorrectProof( + format!("expected SumItem, found {:?}", unexpected_element), + )))); + }, None => None, } })packages/rs-drive/src/drive/group/fetch/fetch_action_signers/v0/mod.rs (2)
67-68
: Include the original error for better debuggingIn the error handling when converting
value
withtry_into()
, the original errore
is being discarded. Including the original error message can provide more context and aid in debugging.Consider modifying the error mapping to include the original error:
Ok(( key.try_into()?, - value.try_into().map_err(|e| Error::Drive(DriveError::CorruptedDriveState("signed power should be encodable on a u32 integer".to_string())))? + value.try_into().map_err(|e| Error::Drive(DriveError::CorruptedDriveState(format!("signed power should be encodable on a u32 integer: {}", e))))? ))
69-71
: Enhance the error message with element detailsThe error message in the
_
arm of the match statement provides a general description. Including the unexpectedelement
type can help with troubleshooting.Modify the error message to include the element type:
Err(Error::Drive(DriveError::CorruptedDriveState( - "element should be a sum item representing member signed power".to_string(), + format!("expected SumItem representing member signed power, found {:?}", element), )))packages/rs-drive/src/verify/group/verify_active_action_infos/v0/mod.rs (2)
44-53
: Simplify error handling when accessing the last path componentThe current usage of
let Some(last_path_component) = path.last() else { ... };
can be simplified for better readability, especially considering error handling.Consider using
match
orok_or_else
for clearer control flow:let last_path_component = path.last().ok_or_else(|| { Error::Proof(ProofError::IncorrectProof("last path component is empty".to_string())) })?;
55-68
: Provide more context in deserialization errorWhen deserialization of
GroupAction
fails, the error returned lacks context about theaction_id
and the problematic data, which can be valuable for debugging.Enhance the error handling to include
action_id
and the serialization error:match GroupAction::deserialize_from_bytes(&value) { Ok(active_action) => active_action, Err(e) => return Some(Err(Error::Proof(ProofError::InvalidData(format!( - "failed to deserialize GroupAction" + "failed to deserialize GroupAction for action ID {:?}: {}", + action_id, e ))))), };packages/rs-drive/src/verify/group/verify_group_info/mod.rs (1)
48-68
: Prepare for future version support inverify_group_info
The current implementation only handles version
0
. To ensure forward compatibility and easier maintenance, it's advisable to handle potential future versions more gracefully.Consider implementing a match arm for future versions or using a default case:
match platform_version.drive.methods.verify.group.verify_group_info { 0 => Self::verify_group_info_v0( proof, contract_id, group_contract_position, verify_subset_of_proof, platform_version, ), // Prepare for future versions version => Err(Error::Drive(DriveError::UnknownVersionMismatch { method: "verify_group_info".to_string(), known_versions: vec![0], received: version, })), }Alternatively, if all future versions should default to the current implementation:
_ => Self::verify_group_info_v0( proof, contract_id, group_contract_position, verify_subset_of_proof, platform_version, ),packages/rs-drive/src/drive/group/fetch/fetch_action_infos/v0/mod.rs (5)
70-74
: Enhance Error Message for Empty PathThe error message "we should always have a path not be empty" could be more descriptive to aid in debugging. Providing more context will help identify the issue faster.
Consider updating the error message as follows:
- return Err(Error::Drive(DriveError::CorruptedDriveState( - "we should always have a path not be empty".to_string(), - ))); + return Err(Error::Drive(DriveError::CorruptedDriveState( + "Expected non-empty path when fetching action infos but found an empty path.".to_string(), + )));
75-75
: Handle Potential Conversion Errors GracefullyWhen converting
last_path_component
to anIdentifier
, any failure will result in an error. Consider adding context to the error to facilitate debugging.Modify the code to include the problematic bytes in the error:
- let action_id = Identifier::from_bytes(last_path_component)?; + let action_id = Identifier::from_bytes(last_path_component).map_err(|e| { + Error::Drive(DriveError::CorruptedDriveState(format!( + "Failed to convert last path component to Identifier: {:?}, error: {}", + last_path_component, e + ))) + })?;
78-82
: Improve Error Message for Unexpected Element TypeThe error message when an unexpected element type is encountered could be more informative by specifying the actual type received.
Update the error message to include the unexpected element type:
- _ => Err(Error::Drive(DriveError::CorruptedDriveState( - "element should be an item representing the group action".to_string(), - ))), + other_element => Err(Error::Drive(DriveError::CorruptedDriveState(format!( + "Expected an Item element representing the group action, but found: {}", + other_element.get_element_type() + )))),Ensure that
get_element_type
properly retrieves the element type as a string.
19-38
: Consider Documenting Public MethodThe public method
fetch_action_infos_v0
lacks documentation. Adding a brief doc comment explaining its purpose and parameters would improve code readability and maintainability.Add a doc comment above the method:
+ /// Fetches action infos for a given contract and group position. pub(super) fn fetch_action_infos_v0(
40-85
: Optimize Error Handling and Code ClarityConsider refactoring the method to improve readability and error handling by breaking down complex expressions and using helper functions where appropriate.
While the current implementation is correct, refactoring could enhance maintainability.
packages/rs-drive/src/verify/group/verify_group_infos_in_contract/v0/mod.rs (3)
41-47
: Enhance Error Message for Empty Path in ProofThe error message when the path is empty could be more descriptive. Providing additional context can assist in troubleshooting.
Update the error message:
Some(contract_position_bytes) => contract_position_bytes, None => { return Err(Error::Proof(ProofError::CorruptedProof( - "path can't be empty in proof".to_string(), + "Expected non-empty path in proof when verifying group infos.".to_string(), ))) }
49-57
: Include Actual Size in Incorrect Value Size ErrorWhen reporting an incorrect value size, including the actual size encountered can aid in debugging.
Modify the error handling to include the size:
let key_bytes: [u8; 2] = match key_bytes.clone().try_into().map_err(|_| { Error::Proof(ProofError::IncorrectValueSize( - "group contract position incorrect size", + format!("Group contract position incorrect size: expected 2 bytes, got {}", key_bytes.len()), )) }) { Ok(bytes) => bytes,
19-78
: Add Documentation for Public MethodThe method
verify_group_infos_in_contract_v0
lacks documentation. Providing a doc comment will improve clarity for other developers.Include a doc comment describing the method's purpose and parameters.
packages/rs-drive/src/verify/group/verify_group_infos_in_contract/mod.rs (1)
70-74
: Ensure All Known Versions Are HandledIn the match statement for version handling, consider adding a default case or logging to handle unexpected versions more gracefully.
While the current error returned is appropriate, proactively handling future versions can improve robustness.
packages/rs-drive-abci/src/query/group_queries/group_action_signers/v0/mod.rs (1)
19-104
: Ensure comprehensive validation of input parametersThe method validates
contract_id
,action_id
, andgroup_contract_position
, but it would be prudent to validate thestatus
parameter as well. Althoughstatus
is converted usingtry_into()
, adding explicit validation could improve error messaging and robustness.Consider adding validation for
status
:let group_status: GroupActionStatus = check_validation_result_with_data!(status.try_into().map_err(|_| { QueryError::InvalidArgument( "group action status must be Active or Closed".to_string(), ) })); + + if !matches!(group_status, GroupActionStatus::Active | GroupActionStatus::Closed) { + return Ok(QueryValidationResult::new_with_error(QueryError::InvalidArgument( + "group action status must be Active or Closed".to_string(), + ))); + }packages/rs-drive/src/drive/group/fetch/queries.rs (2)
59-66
: Refactor duplicatedaction_status
match statements into a helper functionThe
match
statements onaction_status
in bothgroup_action_infos_query
andgroup_action_signers_query
are identical. Consider refactoring this logic into a helper function to eliminate code duplication and improve maintainability.Also applies to: 98-105
Line range hint
90-123
: Add parameter documentation forgroup_action_signers_query
The method
group_action_signers_query
lacks parameter descriptions in its doc comments. For consistency and better maintainability, please add documentation for each parameter similar to the other methods in the module.packages/rs-drive/src/drive/group/prove/prove_action_signers/v0/mod.rs (1)
85-104
: Refactor Repeated Identity Setup in TestsThe identity creation code is duplicated across multiple tests (
should_prove_action_signers_with_multiple_actions
,should_prove_no_action_signers_for_non_existent_action
, andshould_prove_action_signers_for_closed_action_if_still_active
). Consider refactoring this code into a helper function to enhance maintainability and reduce redundancy.You can extract the identity setup into a helper function as follows:
+// Add this helper function outside of the tests +fn create_test_identities( + platform_version: &PlatformVersion, +) -> (Identity, Identity, Identity) { + let identity_1 = Identity::random_identity(3, Some(14), platform_version) + .expect("expected a platform identity"); + let identity_2 = Identity::random_identity(3, Some(506), platform_version) + .expect("expected a platform identity"); + let identity_3 = Identity::random_identity(3, Some(9), platform_version) + .expect("expected a platform identity"); + (identity_1, identity_2, identity_3) +}Then, update each test to use this helper function:
- let identity_1 = Identity::random_identity(3, Some(14), platform_version) - .expect("expected a platform identity"); - - let identity_2 = Identity::random_identity(3, Some(506), platform_version) - .expect("expected a platform identity"); - - let identity_3 = Identity::random_identity(3, Some(9), platform_version) - .expect("expected a platform identity"); - - let identity_1_id = identity_1.id(); - let identity_2_id = identity_2.id(); - let identity_3_id = identity_3.id(); + let (identity_1, identity_2, identity_3) = create_test_identities(platform_version); + let identity_1_id = identity_1.id(); + let identity_2_id = identity_2.id(); + let identity_3_id = identity_3.id();Also applies to: 276-285, 364-373
packages/rs-drive/src/drive/group/prove/prove_action_infos/v0/mod.rs (1)
90-104
: Refactor Repeated Identity Setup in TestsSimilar to other test modules, the identity creation code is repeated across multiple tests (
should_prove_action_infos_with_multiple_actions
,should_prove_no_action_infos_for_non_existent_contract
, andshould_fetch_and_prove_action_infos_with_start_action_id
). Refactoring this code into a shared helper function would improve code reuse and readability.Here's how you can refactor the identity creation:
+// Add this helper function outside of the tests +fn create_test_identities( + platform_version: &PlatformVersion, +) -> (Identity, Identity, Identity) { + let identity_1 = Identity::random_identity(3, Some(14), platform_version) + .expect("expected a platform identity"); + let identity_2 = Identity::random_identity(3, Some(506), platform_version) + .expect("expected a platform identity"); + let identity_3 = Identity::random_identity(3, Some(9), platform_version) + .expect("expected a platform identity"); + (identity_1, identity_2, identity_3) +}Update the tests to use the helper function:
- let identity_1 = Identity::random_identity(3, Some(14), platform_version) - .expect("expected a platform identity"); - - let identity_2 = Identity::random_identity(3, Some(506), platform_version) - .expect("expected a platform identity"); - - let identity_3 = Identity::random_identity(3, Some(9), platform_version) - .expect("expected a platform identity"); - - let identity_1_id = identity_1.id(); - let identity_2_id = identity_2.id(); - let identity_3_id = identity_3.id(); + let (identity_1, identity_2, identity_3) = create_test_identities(platform_version); + let identity_1_id = identity_1.id(); + let identity_2_id = identity_2.id(); + let identity_3_id = identity_3.id();Also applies to: 276-285, 314-326
packages/rs-dpp/src/group/group_action_status.rs (1)
9-29
: Consider refactoring duplicate conversion logic and adding documentation.
- The conversion logic is duplicated between
TryFrom<u8>
andTryFrom<i32>
. Consider extracting it into a private helper function.- Add documentation to specify the valid values (0 for Active, 1 for Closed) to help API consumers.
Example refactor:
+ /// Represents the status of a group action. + /// + /// Valid values: + /// * 0 - Active + /// * 1 - Closed #[derive(Debug, PartialEq, PartialOrd, Clone, Eq)] pub enum GroupActionStatus { ActionActive, ActionClosed, } + fn convert_to_status(value: impl Into<i32>) -> Result<GroupActionStatus, anyhow::Error> { + match value.into() { + 0 => Ok(GroupActionStatus::ActionActive), + 1 => Ok(GroupActionStatus::ActionClosed), + value => bail!("unrecognized action status: {}", value), + } + } + impl TryFrom<u8> for GroupActionStatus { type Error = anyhow::Error; fn try_from(value: u8) -> Result<Self, Self::Error> { - match value { - 0 => Ok(Self::ActionActive), - 1 => Ok(Self::ActionClosed), - value => bail!("unrecognized action status: {}", value), - } + convert_to_status(value) } } impl TryFrom<i32> for GroupActionStatus { type Error = anyhow::Error; fn try_from(value: i32) -> Result<Self, Self::Error> { - match value { - 0 => Ok(Self::ActionActive), - 1 => Ok(Self::ActionClosed), - value => bail!("unrecognized action status: {}", value), - } + convert_to_status(value) } }packages/rs-drive-abci/src/query/group_queries/group_action_signers/mod.rs (2)
13-14
: Enhance method documentation.While the method has a basic doc comment, it would benefit from more detailed documentation including:
- Parameter descriptions
- Return value details
- Possible error scenarios
Add comprehensive documentation similar to other query methods:
- /// Querying of group action signers + /// Queries information about signers associated with a group action. + /// + /// # Parameters + /// * `request` - The request containing version information + /// * `platform_state` - Current state of the platform + /// * `platform_version` - Version information for feature compatibility + /// + /// # Returns + /// * `Ok(QueryValidationResult<GetGroupActionSignersResponse>)` - The query result or validation error + /// * `Err(Error)` - If an internal error occurs
20-26
: Improve error message clarity.The error message for decoding failure could be more specific about what failed.
- "could not decode active group action signers query".to_string(), + "version field is required in GetGroupActionSignersRequest".to_string(),packages/rs-drive/src/drive/tokens/system/prove_token_total_supply_and_aggregated_identity_balances/v0/mod.rs (1)
200-202
: LGTM! Consider adding a comment explaining zero base supply.The explicit initialization of base supply to 0 improves clarity. Consider adding a comment explaining why a zero base supply is used in this test case.
TokenConfiguration::V0( + // Initialize with zero base supply to test empty token state TokenConfigurationV0::default_most_restrictive().with_base_supply(0), ),
packages/rs-drive/src/drive/group/prove/prove_group_infos/v0/mod.rs (3)
72-195
: Test coverage could be enhanced for edge cases.While the test covers the basic functionality of proving multiple groups, consider adding test cases for:
- Groups with maximum number of members
- Groups with maximum power values
- Groups with duplicate members
197-332
: Consider testing boundary conditions for pagination.The pagination test could be enhanced by testing:
- Maximum limit value
- Zero limit value
- Start position at the last group
334-366
: Add more empty/error scenarios.The empty contract test is good, but consider adding tests for:
- Contract with deleted groups
- Invalid contract ID
- Invalid group positions
packages/dapi-grpc/protos/platform/v0/platform.proto (1)
Line range hint
1539-1668
: Consider adding documentation for event types.While the message structure is good, consider adding detailed documentation for:
- Each event type's purpose and usage
- Field constraints and validation rules
- Example usage scenarios
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (57)
packages/dapi-grpc/protos/platform/v0/platform.proto
(3 hunks)packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs
(2 hunks)packages/rs-dpp/src/group/group_action_status.rs
(1 hunks)packages/rs-dpp/src/group/mod.rs
(1 hunks)packages/rs-drive-abci/src/execution/platform_events/protocol_upgrade/perform_events_on_first_block_of_protocol_change/v0/mod.rs
(0 hunks)packages/rs-drive-abci/src/query/group_queries/group_action_signers/mod.rs
(1 hunks)packages/rs-drive-abci/src/query/group_queries/group_action_signers/v0/mod.rs
(1 hunks)packages/rs-drive-abci/src/query/group_queries/group_actions/mod.rs
(1 hunks)packages/rs-drive-abci/src/query/group_queries/group_actions/v0/mod.rs
(1 hunks)packages/rs-drive-abci/src/query/group_queries/group_info/v0/mod.rs
(1 hunks)packages/rs-drive-abci/src/query/group_queries/group_infos/v0/mod.rs
(1 hunks)packages/rs-drive-abci/src/query/group_queries/mod.rs
(1 hunks)packages/rs-drive-abci/src/query/service.rs
(2 hunks)packages/rs-drive/src/drive/group/estimated_costs/for_add_group_action/v0/mod.rs
(2 hunks)packages/rs-drive/src/drive/group/fetch/fetch_action_infos/mod.rs
(1 hunks)packages/rs-drive/src/drive/group/fetch/fetch_action_infos/v0/mod.rs
(1 hunks)packages/rs-drive/src/drive/group/fetch/fetch_action_signers/mod.rs
(1 hunks)packages/rs-drive/src/drive/group/fetch/fetch_action_signers/v0/mod.rs
(1 hunks)packages/rs-drive/src/drive/group/fetch/fetch_active_action_info/mod.rs
(5 hunks)packages/rs-drive/src/drive/group/fetch/fetch_active_action_info/v0/mod.rs
(2 hunks)packages/rs-drive/src/drive/group/fetch/mod.rs
(1 hunks)packages/rs-drive/src/drive/group/fetch/queries.rs
(4 hunks)packages/rs-drive/src/drive/group/insert/add_group_action/v0/mod.rs
(2 hunks)packages/rs-drive/src/drive/group/paths.rs
(2 hunks)packages/rs-drive/src/drive/group/prove/mod.rs
(1 hunks)packages/rs-drive/src/drive/group/prove/prove_action_infos/mod.rs
(1 hunks)packages/rs-drive/src/drive/group/prove/prove_action_infos/v0/mod.rs
(1 hunks)packages/rs-drive/src/drive/group/prove/prove_action_signers/mod.rs
(1 hunks)packages/rs-drive/src/drive/group/prove/prove_action_signers/v0/mod.rs
(1 hunks)packages/rs-drive/src/drive/group/prove/prove_group_info/mod.rs
(1 hunks)packages/rs-drive/src/drive/group/prove/prove_group_info/v0/mod.rs
(1 hunks)packages/rs-drive/src/drive/group/prove/prove_group_infos/mod.rs
(0 hunks)packages/rs-drive/src/drive/group/prove/prove_group_infos/v0/mod.rs
(1 hunks)packages/rs-drive/src/drive/tokens/balance/queries.rs
(1 hunks)packages/rs-drive/src/drive/tokens/calculate_total_tokens_balance/mod.rs
(0 hunks)packages/rs-drive/src/drive/tokens/info/queries.rs
(1 hunks)packages/rs-drive/src/drive/tokens/system/prove_token_total_supply_and_aggregated_identity_balances/mod.rs
(1 hunks)packages/rs-drive/src/drive/tokens/system/prove_token_total_supply_and_aggregated_identity_balances/v0/mod.rs
(1 hunks)packages/rs-drive/src/verify/group/mod.rs
(1 hunks)packages/rs-drive/src/verify/group/verify_action_signers/mod.rs
(1 hunks)packages/rs-drive/src/verify/group/verify_action_signers/v0/mod.rs
(1 hunks)packages/rs-drive/src/verify/group/verify_active_action_infos/mod.rs
(1 hunks)packages/rs-drive/src/verify/group/verify_active_action_infos/v0/mod.rs
(1 hunks)packages/rs-drive/src/verify/group/verify_group_info/mod.rs
(1 hunks)packages/rs-drive/src/verify/group/verify_group_info/v0/mod.rs
(1 hunks)packages/rs-drive/src/verify/group/verify_group_infos_in_contract/mod.rs
(1 hunks)packages/rs-drive/src/verify/group/verify_group_infos_in_contract/v0/mod.rs
(1 hunks)packages/rs-drive/src/verify/mod.rs
(1 hunks)packages/rs-drive/src/verify/tokens/verify_token_statuses/mod.rs
(0 hunks)packages/rs-drive/src/verify/tokens/verify_token_total_supply_and_aggregated_identity_balance/mod.rs
(1 hunks)packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_query_versions/mod.rs
(1 hunks)packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_query_versions/v1.rs
(1 hunks)packages/rs-platform-version/src/version/drive_versions/drive_group_method_versions/mod.rs
(1 hunks)packages/rs-platform-version/src/version/drive_versions/drive_group_method_versions/v1.rs
(1 hunks)packages/rs-platform-version/src/version/drive_versions/drive_verify_method_versions/mod.rs
(2 hunks)packages/rs-platform-version/src/version/drive_versions/drive_verify_method_versions/v1.rs
(2 hunks)packages/rs-platform-version/src/version/mocks/v2_test.rs
(1 hunks)
💤 Files with no reviewable changes (4)
- packages/rs-drive/src/verify/tokens/verify_token_statuses/mod.rs
- packages/rs-drive/src/drive/tokens/calculate_total_tokens_balance/mod.rs
- packages/rs-drive/src/drive/group/prove/prove_group_infos/mod.rs
- packages/rs-drive-abci/src/execution/platform_events/protocol_upgrade/perform_events_on_first_block_of_protocol_change/v0/mod.rs
✅ Files skipped from review due to trivial changes (8)
- packages/rs-dpp/src/group/mod.rs
- packages/rs-drive-abci/src/query/group_queries/mod.rs
- packages/rs-drive/src/drive/tokens/info/queries.rs
- packages/rs-drive/src/drive/tokens/balance/queries.rs
- packages/rs-drive/src/drive/group/prove/mod.rs
- packages/rs-drive/src/drive/tokens/system/prove_token_total_supply_and_aggregated_identity_balances/mod.rs
- packages/rs-drive/src/drive/group/fetch/fetch_active_action_info/v0/mod.rs
- packages/rs-drive/src/verify/group/mod.rs
🔇 Additional comments (42)
packages/rs-drive/src/verify/group/verify_group_infos_in_contract/v0/mod.rs (1)
60-74
:⚠️ Potential issueHandle Missing Elements Explicitly
In cases where
element
isNone
, it's important to handle it explicitly to avoid potential issues.Add handling for
None
elements:match element { Some(Item(value, ..)) => { // existing code... } + None => { + return Err(Error::Proof(ProofError::CorruptedProof( + "Missing element in proof for group info.".to_string(), + ))); + } Some(element) => Err(Error::Proof(ProofError::IncorrectProof(format!( "Group should be in an Item, but found {}", element.type_str()Likely invalid or redundant comment.
packages/rs-drive/src/verify/group/verify_group_infos_in_contract/mod.rs (1)
47-76
: Method Documentation is ComprehensiveThe
verify_group_infos_in_contract
method is thoroughly documented, which enhances maintainability and developer understanding.packages/rs-drive/src/drive/group/fetch/fetch_action_infos/mod.rs (2)
36-68
: Implementation offetch_action_infos
is correctThe method correctly matches on
platform_version
and delegates to the appropriate versioned implementation. Error handling is properly implemented.
92-125
: Implementation offetch_action_infos_and_add_operations
is correctThe method correctly matches on
platform_version
and delegates to the appropriate versioned implementation. Error handling is properly implemented.packages/rs-drive/src/drive/group/prove/prove_action_infos/mod.rs (2)
38-68
: Implementation ofprove_action_infos
is correctThe method correctly delegates to the versioned implementation based on the
platform_version
. Error handling is properly managed.
96-129
: Implementation ofprove_action_infos_operations
is correctThe method correctly delegates to the versioned implementation based on the
platform_version
. Error handling is properly managed.packages/rs-drive-abci/src/query/group_queries/group_actions/v0/mod.rs (2)
73-241
: Implementation ofquery_group_actions_v0
is correctThe method correctly processes the request, validates input parameters, and constructs the response appropriately. The mapping of internal
GroupAction
events to the response types is handled correctly.
59-72
:⚠️ Potential issueCorrect the limit validation logic and error message
There is an inconsistency in the limit validation. The condition checks if
limit_value as u16
is greater thanconfig.default_query_limit
, but the error message refers toconfig.max_query_limit
. Ensure that the validation correctly enforces the maximum limit and that the error message accurately reflects the condition.Here's the suggested correction:
|| limit_value as u16 > config.default_query_limit + || limit_value as u16 > config.max_query_limit { None } ... .ok_or(drive::error::Error::Query(QuerySyntaxError::InvalidLimit( - format!("limit greater than max limit {}", config.max_query_limit), + format!("limit greater than max limit {}", config.default_query_limit), )))?;Likely invalid or redundant comment.
packages/rs-drive/src/drive/group/prove/prove_action_signers/v0/mod.rs (1)
10-53
: Well-Structured Implementation of Proving Action SignersThe
prove_action_signers_v0
andprove_action_signers_operations_v0
methods are well-implemented. They follow consistent patterns and maintain clear separation of concerns. The use of parameters and error handling is appropriate.packages/rs-drive/src/drive/group/prove/prove_action_infos/v0/mod.rs (1)
11-58
: Consistent Implementation of Proving Action InfosThe methods
prove_action_infos_v0
andprove_action_infos_operations_v0
are implemented consistently with existing patterns in the codebase. They effectively handle parameters and error scenarios, maintaining code clarity.packages/rs-drive/src/drive/group/fetch/mod.rs (1)
4-6
: Module Declarations Updated AppropriatelyThe addition of
fetch_action_infos
,fetch_action_signers
, andfetch_active_action_info
modules aligns with the new functionalities introduced in the codebase. The module organization remains clean and logical.packages/rs-drive/src/verify/mod.rs (1)
13-19
: LGTM! Well-structured module declarations with clear documentation.The new module declarations for group, tokens, and voting follow the established pattern and include descriptive documentation comments that clearly state their purpose.
packages/rs-dpp/src/group/group_action_status.rs (1)
3-7
: LGTM! Well-designed enum with appropriate derive traits.The
GroupActionStatus
enum has clear, descriptive variants and includes all necessary derive traits for comparison and debugging.packages/rs-platform-version/src/version/drive_versions/drive_group_method_versions/v1.rs (1)
9-15
: LGTM! Consistent version initialization for new group-related methods.The new fields for action infos and signers follow the established pattern of initializing feature versions at 0.
Also applies to: 20-21
packages/rs-platform-version/src/version/drive_versions/drive_group_method_versions/mod.rs (1)
16-22
: LGTM! Well-structured version definitions for new group functionality.The new fields for action infos and signers are well-organized and maintain consistency with the existing versioning structure.
Also applies to: 29-30
packages/rs-drive-abci/src/query/group_queries/group_action_signers/mod.rs (2)
28-47
: LGTM! Version handling implementation.The version validation logic follows the established pattern:
- Retrieves version bounds from platform configuration
- Validates the requested version against bounds
- Returns appropriate error for unsupported versions
49-57
: LGTM! Response handling implementation.The version-specific response handling and wrapping is implemented correctly.
packages/rs-drive/src/verify/tokens/verify_token_total_supply_and_aggregated_identity_balance/mod.rs (1)
7-7
: LGTM! Import cleanup.Good cleanup removing unused imports while retaining the essential
TotalSingleTokenBalance
.packages/rs-platform-version/src/version/drive_versions/drive_verify_method_versions/v1.rs (1)
32-36
: LGTM! Group verification methods integration.The new group verification methods are properly integrated into the versioning system:
- verify_group_info
- verify_group_infos_in_contract
- verify_action_infos
All methods are initialized at version 0, consistent with other features.
packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_query_versions/mod.rs (1)
40-41
: LGTM! Group query versioning extension.The DriveAbciQueryGroupVersions struct is properly extended with:
- group_actions: FeatureVersionBounds
- group_action_signers: FeatureVersionBounds
This maintains consistency with other query version structures.
packages/rs-drive-abci/src/query/group_queries/group_info/v0/mod.rs (1)
34-34
: LGTM! Error message accurately reflects the parameter type.The error message now correctly identifies that a "contract id" is being validated, improving clarity and maintainability.
packages/rs-platform-version/src/version/drive_versions/drive_verify_method_versions/mod.rs (2)
10-10
: LGTM! Group verification methods integrated into versioning structure.The addition of the
group
field toDriveVerifyMethodVersions
follows the established pattern and maintains consistency with other verification method categories.
47-52
: LGTM! Well-structured group verification method versioning.The
DriveVerifyGroupMethodVersions
struct provides comprehensive versioning support for group-related verification methods:
- Group info verification
- Contract-scoped group info verification
- Action info verification
packages/rs-drive/src/drive/group/prove/prove_group_info/mod.rs (1)
7-7
: LGTM! Clean import statement.Unused imports have been removed while retaining only the necessary
TransactionArg
, improving code maintainability.packages/rs-drive-abci/src/query/group_queries/group_infos/v0/mod.rs (3)
36-36
: LGTM! Consistent error message across group query implementations.The error message update maintains consistency with other group query implementations while accurately reflecting the parameter type.
Line range hint
1-1
: Request PR description updates.While the code changes look good, please update the PR description with:
- Details about testing procedures and test coverage
- Information about any breaking changes
- Complete the PR checklist items
This will help ensure proper documentation and review of the changes.
Line range hint
41-51
: Verify the limit validation logic.The limit validation includes multiple conditions:
- Non-zero check
- Maximum value check (u16::MAX)
- Configuration-based limit check
Please ensure these limits align with the expected query performance characteristics and system constraints.
✅ Verification successful
Limit validation logic is correctly implemented and consistent with system constraints
The validation logic properly enforces:
- Non-zero values to prevent empty results
- Type safety through u16::MAX boundary check
- Performance constraints via configuration-based limits
The implementation aligns with other group queries in the codebase and maintains consistent validation patterns.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Search for other limit validations to ensure consistency rg -A 5 "default_query_limit|max_query_limit"Length of output: 23441
packages/rs-drive/src/drive/group/fetch/fetch_active_action_info/mod.rs (2)
Line range hint
35-63
: LGTM! Method renaming improves clarity.The renaming from
fetch_action_id_info
tofetch_active_action_info
better reflects that this method specifically deals with active group actions.
Line range hint
86-119
: LGTM! Method renaming maintains consistency.The renaming from
fetch_action_id_info_and_add_operations
tofetch_active_action_info_and_add_operations
aligns with the previous method's renaming and maintains consistency.packages/rs-drive/src/drive/group/paths.rs (2)
Line range hint
72-83
: LGTM! Path construction is well-structured.The renaming to
group_active_action_root_path
and its implementation correctly uses theGROUP_ACTIVE_ACTIONS_KEY
constant.
Line range hint
86-96
: LGTM! Vector path construction maintains consistency.The renaming to
group_active_action_root_path_vec
aligns with the previous method and correctly implements the vector version of the path construction.packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_query_versions/v1.rs (1)
212-221
: LGTM! Version bounds for new group action queries.The addition of
group_actions
andgroup_action_signers
with appropriate version bounds enables proper versioning support for the new group action queries.packages/rs-drive/src/drive/group/prove/prove_group_info/v0/mod.rs (2)
64-141
: LGTM! Comprehensive test for existing group.The test thoroughly verifies the proof generation and verification for an existing group, including proper setup and assertions.
143-198
: LGTM! Good negative test case coverage.The test properly verifies that non-existent groups return None while still generating valid proofs with non-empty root hashes.
packages/rs-drive/src/drive/group/estimated_costs/for_add_group_action/v0/mod.rs (1)
130-133
: LGTM! Path change maintains cost estimation logic.The update to use
group_active_action_root_path
is consistent with the group action status changes while preserving the existing cost estimation logic.packages/rs-platform-version/src/version/mocks/v2_test.rs (1)
350-359
: LGTM! Version configuration is consistent.The version bounds for group actions and signers follow the same pattern as other features in the platform.
packages/rs-drive-abci/src/query/service.rs (2)
683-693
: LGTM! Implementation follows service patterns.The get_group_actions implementation correctly uses handle_blocking_query and follows the established pattern of other query methods.
695-702
: LGTM! Error handling is consistent.The get_group_action_signers implementation properly integrates with the platform's error handling and metrics system.
packages/dapi-grpc/protos/platform/v0/platform.proto (2)
1515-1538
: LGTM! Well-structured request message for group actions.The GetGroupActionsRequest design is clean and includes:
- Clear status enum for active/closed actions
- Proper pagination support
- Optional proof generation
1671-1709
: LGTM! Clean design for action signers API.The GetGroupActionSigners messages are well-structured and consistent with platform patterns.
packages/rs-drive/src/drive/group/insert/add_group_action/v0/mod.rs (2)
2-3
: LGTM! Import changes align with active/closed group action separation.The updated import reflects the new distinction between active and closed group actions, which is consistent with the broader changes in the PR.
136-139
: Verify the impact of path changes on existing group action queries.The renaming from
group_action_root_path
togroup_active_action_root_path
suggests a new distinction between active and closed group actions. While this change improves clarity, we should ensure that:
- Existing queries are updated to handle this new path structure
- Data migration is handled if needed for existing group actions
Let's verify the usage and potential impact:
✅ Verification successful
Path changes are properly handled across the codebase ✅
The renaming to
group_active_action_root_path
is safe as the codebase already supports different action states. The query system properly handles both active and closed actions through theGroupActionStatus
enum, and all operations consistently use the appropriate path construction methods.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Search for other occurrences of group action path functions # to ensure consistent updates across the codebase echo "Checking for any remaining uses of old path function..." rg "group_action_root_path\(" --type rust echo "Checking for new path function usage..." rg "group_active_action_root_path\(" --type rust echo "Checking for potential group action query implementations..." rg "fn.*group.*action.*query" --type rustLength of output: 946
Script:
#!/bin/bash # Check implementation of query functions and path construction echo "Checking query implementations..." rg -A 10 "fn group_action_infos_query|fn group_action_signers_query" --type rust echo "Checking for path-related functions in queries module..." rg "fn.*path|path.*=|->.*path" packages/rs-drive/src/drive/group/fetch/queries.rs echo "Checking for path construction in group modules..." rg "path.*=.*group.*action" --type rustLength of output: 5219
packages/rs-drive/src/verify/group/verify_group_infos_in_contract/v0/mod.rs
Show resolved
Hide resolved
packages/rs-drive/src/verify/group/verify_action_signers/mod.rs
Outdated
Show resolved
Hide resolved
packages/rs-drive/src/verify/group/verify_action_signers/mod.rs
Outdated
Show resolved
Hide resolved
packages/rs-drive/src/verify/group/verify_active_action_infos/mod.rs
Outdated
Show resolved
Hide resolved
packages/rs-drive/src/drive/group/fetch/fetch_action_infos/mod.rs
Outdated
Show resolved
Hide resolved
packages/rs-drive/src/drive/group/prove/prove_action_infos/mod.rs
Outdated
Show resolved
Hide resolved
packages/rs-drive/src/drive/group/prove/prove_action_infos/mod.rs
Outdated
Show resolved
Hide resolved
packages/rs-drive/src/drive/group/prove/prove_action_infos/mod.rs
Outdated
Show resolved
Hide resolved
packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs
Show resolved
Hide resolved
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…mod.rs Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
commit 6776651 Author: QuantumExplorer <quantum@dash.org> Date: Sat Mar 1 22:23:41 2025 +0700 chore: update to latest dash core 37 (#2483) commit 1501103 Merge: a7c7a0f da17fc5 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Thu Feb 27 14:21:41 2025 +0700 chore: merge master and resolve conflicts (#2481) commit da17fc5 Author: pshenmic <pshenmic@gmail.com> Date: Thu Feb 27 13:31:51 2025 +0700 feat(js-dash-sdk): fix tests after merge commit c7e40cb Merge: c57e8b2 f9eb069 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Thu Feb 27 09:35:02 2025 +0700 Merge remote-tracking branch 'origin/chore/merge-master' into chore/merge-master commit c57e8b2 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Thu Feb 27 09:34:40 2025 +0700 test(dpp): fix assertion with the same value commit 045b6fa Author: Ivan Shumkov <ivan@shumkov.ru> Date: Thu Feb 27 09:32:33 2025 +0700 chore(dpp): remove unnecessary type conversion commit 8160ccd Author: Ivan Shumkov <ivan@shumkov.ru> Date: Thu Feb 27 09:31:32 2025 +0700 chore: remove duplicated commented code commit f9eb069 Merge: 05d0085 a7c7a0f Author: pshenmic <pshenmic@gmail.com> Date: Wed Feb 26 20:03:00 2025 +0700 Merge branch 'v2.0-dev' into chore/merge-master commit a7c7a0f Author: pshenmic <pshenmic@gmail.com> Date: Wed Feb 26 19:52:02 2025 +0700 build: bump rust version to 1.85 (#2480) commit 05d0085 Merge: bcf1785 196976c Author: Ivan Shumkov <ivan@shumkov.ru> Date: Wed Feb 26 18:03:38 2025 +0700 Merge branch 'master' into v2.0-dev commit bcf1785 Author: lklimek <842586+lklimek@users.noreply.github.com> Date: Fri Feb 21 08:43:35 2025 +0100 feat: wasm sdk build proof-of-concept (#2405) Co-authored-by: Ivan Shumkov <ivan@shumkov.ru> commit 5e32426 Author: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com> Date: Thu Feb 20 19:22:52 2025 +0700 fix: token already paused unpaused and frozen validation (#2466) commit 374a036 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Thu Feb 20 17:46:57 2025 +0700 test: fix slowdown of JS SDK unit tests (#2475) commit 1fed09b Author: Ivan Shumkov <ivan@shumkov.ru> Date: Thu Feb 20 13:46:36 2025 +0700 fix(dpp): invalid feature flag usage (#2477) commit 33507bb Author: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com> Date: Thu Feb 20 13:18:55 2025 +0700 fix: destroy frozen funds used wrong identity and proof verification (#2467) commit 91a9766 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Wed Feb 19 16:57:32 2025 +0700 feat(sdk): return state transition execution error (#2454) commit cb915a7 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Wed Feb 19 16:46:54 2025 +0700 test: fix token history contract tests (#2470) commit 04276d5 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Tue Feb 18 21:00:05 2025 +0700 fix: xss vulnerability in mocha (#2469) commit 196976c Author: pshenmic <pshenmic@gmail.com> Date: Fri Feb 14 18:50:08 2025 +0700 fix(sdk)!: bigint for uint64 values (#2443) commit 0bd29a6 Author: pshenmic <pshenmic@gmail.com> Date: Fri Feb 14 17:29:35 2025 +0700 feat(dpp): extra methods for state transitions in wasm (#2462) commit 1eae781 Author: pshenmic <pshenmic@gmail.com> Date: Fri Feb 14 15:29:17 2025 +0700 chore(platform): npm audit fix (#2463) commit ddf4e67 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Fri Feb 14 11:28:08 2025 +0700 test: fix `fetchProofForStateTransition` tests and warnings (#2460) commit d88ea46 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Fri Feb 14 09:52:53 2025 +0700 fix(dpp): invalid imports and tests (#2459) commit 82e4d4c Merge: 125cfe7 4becf5f Author: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com> Date: Thu Feb 13 19:05:51 2025 +0700 fix: check if token is paused on token transfers (#2458) commit 4becf5f Author: pauldelucia <pauldelucia2@gmail.com> Date: Thu Feb 13 18:34:24 2025 +0700 add costs commit 907971d Merge: 9026669 125cfe7 Author: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com> Date: Thu Feb 13 18:05:06 2025 +0700 Merge branch 'v2.0-dev' into feat/token-paused-validation commit 125cfe7 Merge: 91f65c6 c286ec0 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Thu Feb 13 15:51:46 2025 +0700 Merge branch 'v2.0-dev' into v2.0-tokens-dev commit 9026669 Author: pauldelucia <pauldelucia2@gmail.com> Date: Thu Feb 13 13:41:19 2025 +0700 feat: check if token is paused on token transfers commit c286ec0 Author: pshenmic <pshenmic@gmail.com> Date: Wed Feb 12 15:41:21 2025 +0700 feat(sdk): add option to request all keys (#2445) commit 91f65c6 Merge: d6b40e6 1a1c50b Author: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com> Date: Wed Feb 12 12:04:58 2025 +0700 fix: wrong order of parameters in UnauthorizedTokenActionError (#2456) commit 1a1c50b Author: pauldelucia <pauldelucia2@gmail.com> Date: Wed Feb 12 11:51:31 2025 +0700 fix: wrong order of parameters in UnauthorizedTokenActionError commit 26aff36 Author: lklimek <842586+lklimek@users.noreply.github.com> Date: Tue Feb 11 13:06:54 2025 +0100 build: bump Alpine version to 3.21 (#2074) commit 9daa195 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Tue Feb 11 14:38:55 2025 +0700 ci: use github-hosted arm runner for release workflow (#2452) commit 2b1c252 Author: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com> Date: Tue Feb 4 16:40:34 2025 +0700 fix: proof result error for credit transfers in sdk (#2451) commit d6b40e6 Author: QuantumExplorer <quantum@dash.org> Date: Tue Feb 4 06:49:03 2025 +0700 feat(platform): token distribution part two (#2450) commit 93f7d44 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Wed Jan 29 14:07:55 2025 +0700 fix(dpp): invalid feature flag instructions (#2448) commit 6d5af88 Author: QuantumExplorer <quantum@dash.org> Date: Mon Jan 27 16:59:39 2025 +0700 feat(dpp): token distribution model (#2447) commit e735313 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Mon Jan 27 14:24:26 2025 +0700 feat: add token transitions to SDK and DAPI (#2434) commit 0743be2 Author: pshenmic <pshenmic@gmail.com> Date: Sun Jan 26 22:00:40 2025 +0700 feat(dpp): extra methods for state transitions in wasm (#2401) commit f609bcf Merge: 3733f56 cbddb8d Author: Ivan Shumkov <ivan@shumkov.ru> Date: Fri Jan 24 18:16:38 2025 +0700 Merge branch 'v2.0-dev' into v2.0-tokens-dev commit cbddb8d Author: QuantumExplorer <quantum@dash.org> Date: Fri Jan 24 17:59:16 2025 +0700 chore(platform): make bls sig compatibility an optional feature (#2440) Co-authored-by: Ivan Shumkov <ivan@shumkov.ru> commit 764684b Author: Ivan Shumkov <ivan@shumkov.ru> Date: Fri Jan 24 17:57:27 2025 +0700 chore: ignore deprecated `lodash.get` (#2441) commit 3733f56 Author: QuantumExplorer <quantum@dash.org> Date: Thu Jan 23 09:16:12 2025 +0700 feat(platform)!: enhance token configuration and validation mechanisms (#2439) commit 2480ceb Author: QuantumExplorer <quantum@dash.org> Date: Wed Jan 22 16:33:13 2025 +0700 chore: dapi grpc queries (#2437) commit c9ab154 Author: QuantumExplorer <quantum@dash.org> Date: Wed Jan 22 15:50:25 2025 +0700 feat(platform)!: improved token validation and token config update transition (#2435) commit d9647cc Author: QuantumExplorer <quantum@dash.org> Date: Tue Jan 21 10:28:58 2025 +0700 feat: get proofs for tokens (#2433) commit e5964b8 Author: QuantumExplorer <quantum@dash.org> Date: Mon Jan 20 23:31:50 2025 +0700 feat: group queries (#2432) commit 0220302 Author: QuantumExplorer <quantum@dash.org> Date: Sun Jan 19 14:43:51 2025 +0700 feat(platform): proof verification for many queries and a few more queries (#2431) commit cd1527d Author: QuantumExplorer <quantum@dash.org> Date: Fri Jan 17 19:39:37 2025 +0700 fix(dpp)!: wrapping overflow issue (#2430) commit fd7ee85 Merge: d7143cc e4e156c Author: Ivan Shumkov <ivan@shumkov.ru> Date: Thu Jan 16 21:45:47 2025 +0700 Merge branch 'master' into v1.9-dev commit e4e156c Author: QuantumExplorer <quantum@dash.org> Date: Thu Jan 16 18:11:57 2025 +0700 chore(release): update change log and release v1.8.0 (#2427) Co-authored-by: Ivan Shumkov <ivan@shumkov.ru> commit 55a1e03 Author: QuantumExplorer <quantum@dash.org> Date: Thu Jan 16 15:30:42 2025 +0700 feat(platform)!: token base support (#2383) commit 59bf0af Author: QuantumExplorer <quantum@dash.org> Date: Thu Jan 16 13:10:39 2025 +0700 chore(release): bump to v1.8.0-rc.2 (#2426) commit 410eb09 Author: QuantumExplorer <quantum@dash.org> Date: Thu Jan 16 06:31:26 2025 +0700 fix(drive-abci): rebroadcasting should not only take first 2 quorums too (#2425) commit 2abce8e Author: Ivan Shumkov <ivan@shumkov.ru> Date: Wed Jan 15 22:51:58 2025 +0700 chore(release): update changelog and bump version to 1.8.0-rc.1 (#2423) commit ad5f604 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Wed Jan 15 22:14:13 2025 +0700 chore: update bls library (#2424) commit c6feb5b Author: QuantumExplorer <quantum@dash.org> Date: Wed Jan 15 18:57:49 2025 +0700 feat(platform)!: distribute prefunded specialized balances after vote (#2422) Co-authored-by: Ivan Shumkov <ivan@shumkov.ru> commit 94dcbb2 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Wed Jan 15 05:51:45 2025 +0700 chore(drive): increase withdrawal limits to 2000 Dash per day (#2287) commit 6a0aede Author: Ivan Shumkov <ivan@shumkov.ru> Date: Tue Jan 14 21:42:59 2025 +0700 chore: fix test suite configuration script (#2402) commit e94b7bb Author: QuantumExplorer <quantum@dash.org> Date: Tue Jan 14 19:23:46 2025 +0700 fix(drive-abci): document purchase on mutable document from different epoch had issue (#2420) commit 4ee57a6 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Tue Jan 14 19:12:20 2025 +0700 fix(drive): more than one key was returned when expecting only one result (#2421) commit be5cd6d Author: Ivan Shumkov <ivan@shumkov.ru> Date: Mon Jan 13 15:12:33 2025 +0700 fix(sdk): failed to deserialize consensus error (#2410) commit e07271e Author: Ivan Shumkov <ivan@shumkov.ru> Date: Mon Jan 13 14:57:08 2025 +0700 chore: resolve NPM audit warnings (#2417) commit a809df7 Author: QuantumExplorer <quantum@dash.org> Date: Sun Jan 12 09:21:48 2025 +0700 test: unify identity versioned cost coverage (#2416) commit 6d637fe Author: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com> Date: Fri Dec 27 09:42:04 2024 -0500 fix: try DriveDocumentQuery from DocumentQuery start field (#2407) commit cfd9c4d Author: Ivan Shumkov <ivan@shumkov.ru> Date: Thu Dec 19 18:30:06 2024 +0700 chore(release): update changelog and bump version to 1.8.0-dev.2 (#2404) commit fecda31 Merge: 37d5732 fc7d994 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Thu Dec 19 15:33:45 2024 +0700 Merge branch 'master' into v1.8-dev commit fc7d994 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Thu Dec 19 14:40:44 2024 +0700 chore(release): update changelog and bump version to 1.7.1 (#2403) commit adcd3b8 Author: QuantumExplorer <quantum@dash.org> Date: Thu Dec 19 09:54:07 2024 +0300 fix!: emergency hard fork to fix masternode voting (#2397) commit 37d5732 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Wed Dec 18 22:24:37 2024 +0700 fix(dashmate): some group commands fail with mtime not found (#2400) commit 01a5b7a Author: Ivan Shumkov <ivan@shumkov.ru> Date: Wed Dec 18 20:44:44 2024 +0700 refactor(dpp): using deprecated param to init wasm module (#2399) commit c5f5878 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Wed Dec 18 18:04:14 2024 +0700 fix(dashmate): local network starting issues (#2394) commit 71c41ff Author: Ivan Shumkov <ivan@shumkov.ru> Date: Wed Dec 18 18:03:55 2024 +0700 perf(dpp): reduce JS binding size by 3x (#2396) commit 21ec393 Author: lklimek <842586+lklimek@users.noreply.github.com> Date: Wed Dec 18 10:47:58 2024 +0100 build!: update rust to 1.83 - backport #2393 to v1.7 (#2398) commit d7143cc Author: lklimek <842586+lklimek@users.noreply.github.com> Date: Wed Dec 18 08:53:53 2024 +0100 build!: optimize for x86-64-v3 cpu microarchitecture (Haswell+) (#2374) commit d318b1c Author: lklimek <842586+lklimek@users.noreply.github.com> Date: Tue Dec 17 14:56:15 2024 +0100 build: bump wasm-bindgen to 0.2.99 (#2395) commit 889d192 Author: Ivan Shumkov <ivan@shumkov.ru> Date: Tue Dec 17 19:25:58 2024 +0700 chore(release): update changelog and bump version to 1.8.0-dev.1 (#2391) commit 8185d21 Author: lklimek <842586+lklimek@users.noreply.github.com> Date: Tue Dec 17 10:47:53 2024 +0100 feat(sdk)!: allow setting CA cert (#1924) commit 82a6217 Author: lklimek <842586+lklimek@users.noreply.github.com> Date: Tue Dec 17 02:51:18 2024 +0100 build!: update rust to 1.83 (#2393) commit 494054a Author: QuantumExplorer <quantum@dash.org> Date: Mon Dec 16 13:47:58 2024 +0300 refactor(platform): replace bls library (#2257) Co-authored-by: Lukasz Klimek <842586+lklimek@users.noreply.github.com> commit 4c203e4 Author: lklimek <842586+lklimek@users.noreply.github.com> Date: Mon Dec 16 10:38:34 2024 +0100 test(sdk): generate test vectors using testnet (#2381) commit 0ff6b27 Author: lklimek <842586+lklimek@users.noreply.github.com> Date: Mon Dec 16 10:37:35 2024 +0100 chore: remove deprecated check_network_version.sh (#2084) commit b265bb8 Author: lklimek <842586+lklimek@users.noreply.github.com> Date: Fri Dec 13 13:25:40 2024 +0100 ci: fix artifact upload issue on release build (#2389) commit 40ae73f Author: Ivan Shumkov <ivan@shumkov.ru> Date: Fri Dec 13 17:35:40 2024 +0700 chore(release): update changelog and bump version to 1.7.0 (#2387) commit 257e3da Author: Ivan Shumkov <ivan@shumkov.ru> Date: Fri Dec 13 15:44:10 2024 +0700 chore(dashmate)!: update Core to version 22 (#2384) commit 19a4c6d Author: Ivan Shumkov <ivan@shumkov.ru> Date: Thu Dec 12 18:30:14 2024 +0700 chore(dashmate): set tenderdash version to 1 (#2385) commit 0e9d4dc Author: lklimek <842586+lklimek@users.noreply.github.com> Date: Thu Dec 12 11:39:35 2024 +0100 chore: address vulnerabilty GHSA-mwcw-c2x4-8c55 (#2382) Co-authored-by: Ivan Shumkov <ivan@shumkov.ru> commit bdae90c Author: Ivan Shumkov <ivan@shumkov.ru> Date: Thu Dec 12 13:36:04 2024 +0700 chore(dashmate): increase subsidy for devnet (#2353)
Summary by CodeRabbit
Based on the comprehensive summary, here are the release notes:
New Features
Improvements
Changes
Technical Enhancements
Checklist:
For repository code-owners and collaborators only