-
Notifications
You must be signed in to change notification settings - Fork 56
fix(dpp): bind token config update action_id to payload value (v1) #3346
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
Changes from 8 commits
47acf03
71964ad
ebcb500
740f415
fb77572
ba261c2
2184a81
555a1f6
cdec469
6d290b1
767f889
0c13f47
fb32011
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -66,6 +66,63 @@ pub enum TokenConfigurationChangeItem { | |
| MainControlGroup(Option<GroupContractPosition>), | ||
| } | ||
| impl TokenConfigurationChangeItem { | ||
| pub fn payload_serialization(&self) -> Result<Option<Vec<u8>>, ProtocolError> { | ||
| Ok(match self { | ||
| TokenConfigurationChangeItem::TokenConfigurationNoChange => None, | ||
| TokenConfigurationChangeItem::Conventions(convention) => Some( | ||
| bincode::encode_to_vec(convention, bincode::config::standard()) | ||
| .map_err(|e| ProtocolError::EncodingError(e.to_string()))?, | ||
| ), | ||
| TokenConfigurationChangeItem::ConventionsControlGroup(a) | ||
| | TokenConfigurationChangeItem::ConventionsAdminGroup(a) | ||
| | TokenConfigurationChangeItem::MaxSupplyControlGroup(a) | ||
| | TokenConfigurationChangeItem::MaxSupplyAdminGroup(a) | ||
| | TokenConfigurationChangeItem::PerpetualDistributionControlGroup(a) | ||
| | TokenConfigurationChangeItem::PerpetualDistributionAdminGroup(a) | ||
| | TokenConfigurationChangeItem::NewTokensDestinationIdentityControlGroup(a) | ||
| | TokenConfigurationChangeItem::NewTokensDestinationIdentityAdminGroup(a) | ||
| | TokenConfigurationChangeItem::MintingAllowChoosingDestinationControlGroup(a) | ||
| | TokenConfigurationChangeItem::MintingAllowChoosingDestinationAdminGroup(a) | ||
| | TokenConfigurationChangeItem::ManualMinting(a) | ||
| | TokenConfigurationChangeItem::ManualMintingAdminGroup(a) | ||
| | TokenConfigurationChangeItem::ManualBurning(a) | ||
| | TokenConfigurationChangeItem::ManualBurningAdminGroup(a) | ||
| | TokenConfigurationChangeItem::Freeze(a) | ||
| | TokenConfigurationChangeItem::FreezeAdminGroup(a) | ||
| | TokenConfigurationChangeItem::Unfreeze(a) | ||
| | TokenConfigurationChangeItem::UnfreezeAdminGroup(a) | ||
| | TokenConfigurationChangeItem::DestroyFrozenFunds(a) | ||
| | TokenConfigurationChangeItem::DestroyFrozenFundsAdminGroup(a) | ||
| | TokenConfigurationChangeItem::EmergencyAction(a) | ||
| | TokenConfigurationChangeItem::EmergencyActionAdminGroup(a) | ||
| | TokenConfigurationChangeItem::MarketplaceTradeModeControlGroup(a) | ||
| | TokenConfigurationChangeItem::MarketplaceTradeModeAdminGroup(a) => Some(a.to_bytes()), | ||
| TokenConfigurationChangeItem::MaxSupply(max_supply) => { | ||
| max_supply.map(|amount| amount.to_be_bytes().to_vec()) | ||
| } | ||
| TokenConfigurationChangeItem::PerpetualDistribution(distribution) => distribution | ||
| .as_ref() | ||
| .map(|dist| { | ||
| bincode::encode_to_vec(dist, bincode::config::standard()) | ||
| .map_err(|e| ProtocolError::EncodingError(e.to_string())) | ||
| }) | ||
| .transpose()?, | ||
| TokenConfigurationChangeItem::NewTokensDestinationIdentity(identity) => { | ||
| identity.map(|id| id.to_vec()) | ||
| } | ||
| TokenConfigurationChangeItem::MintingAllowChoosingDestination(allow) => { | ||
| Some(vec![*allow as u8]) | ||
| } | ||
| TokenConfigurationChangeItem::MarketplaceTradeMode(mode) => Some( | ||
| bincode::encode_to_vec(mode, bincode::config::standard()) | ||
| .map_err(|e| ProtocolError::EncodingError(e.to_string()))?, | ||
| ), | ||
| TokenConfigurationChangeItem::MainControlGroup(position) => match position { | ||
| Some(pos) => Some(pos.to_be_bytes().to_vec()), | ||
| None => Some(vec![]), | ||
| }, | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💬 Nitpick: MainControlGroup(None) returns Some(vec![]) while other Option::None variants return None
source: ['claude-rust-quality'] |
||
| }) | ||
| } | ||
| pub fn u8_item_index(&self) -> u8 { | ||
| match self { | ||
| TokenConfigurationChangeItem::TokenConfigurationNoChange => 0, | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,11 @@ | ||
| use crate::ProtocolError; | ||
| use platform_value::Identifier; | ||
| use platform_version::version::PlatformVersion; | ||
|
|
||
| pub trait AllowedAsMultiPartyAction { | ||
| fn calculate_action_id(&self, owner_id: Identifier) -> Identifier; | ||
| fn calculate_action_id( | ||
| &self, | ||
| owner_id: Identifier, | ||
| platform_version: &PlatformVersion, | ||
| ) -> Result<Identifier, ProtocolError>; | ||
| } |
Uh oh!
There was an error while loading. Please reload this page.