From 8dc444529c5305778ba5f36725aca5026fb73550 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marin=20Ver=C5=A1i=C4=87?= Date: Wed, 27 Mar 2024 16:35:26 +0300 Subject: [PATCH] [feature] #4390: include trigger id in trigger entrypoint MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marin Veršić --- .../src/lib.rs | 2 +- .../mint_rose_trigger/src/lib.rs | 6 +- .../integration/triggers/by_call_trigger.rs | 8 +- config/src/parameters/actual.rs | 6 +- config/src/parameters/user.rs | 7 +- config/src/parameters/user/boilerplate.rs | 16 ++-- configs/swarm/executor.wasm | Bin 533713 -> 536353 bytes core/src/smartcontracts/isi/account.rs | 6 +- core/src/smartcontracts/isi/mod.rs | 2 + core/src/smartcontracts/isi/triggers/mod.rs | 66 ++++++++++++++ .../isi/triggers/specialized.rs | 8 ++ core/src/smartcontracts/wasm.rs | 5 +- core/src/state.rs | 7 +- data_model/src/events/data/events.rs | 7 ++ data_model/src/isi.rs | 41 ++++++++- data_model/src/lib.rs | 11 ++- data_model/src/smart_contract.rs | 2 + data_model/src/visit.rs | 6 ++ smart_contract/executor/src/default.rs | 83 +++++++++++++++--- smart_contract/executor/src/default/tokens.rs | 28 ++++-- .../trigger/derive/src/entrypoint.rs | 2 +- tools/kagami/src/genesis.rs | 5 +- 22 files changed, 272 insertions(+), 52 deletions(-) diff --git a/client/tests/integration/smartcontracts/create_nft_for_every_user_trigger/src/lib.rs b/client/tests/integration/smartcontracts/create_nft_for_every_user_trigger/src/lib.rs index 2a725479740..89f1e48aba9 100644 --- a/client/tests/integration/smartcontracts/create_nft_for_every_user_trigger/src/lib.rs +++ b/client/tests/integration/smartcontracts/create_nft_for_every_user_trigger/src/lib.rs @@ -16,7 +16,7 @@ static ALLOC: LockedAllocator = LockedAllocator::new(FreeList getrandom::register_custom_getrandom!(iroha_trigger::stub_getrandom); #[iroha_trigger::main] -fn main(_owner: AccountId, _event: Event) { +fn main(_id: TriggerId, _owner: AccountId, _event: Event) { iroha_trigger::log::info!("Executing trigger"); let accounts_cursor = FindAllAccounts.execute().dbg_unwrap(); diff --git a/client/tests/integration/smartcontracts/mint_rose_trigger/src/lib.rs b/client/tests/integration/smartcontracts/mint_rose_trigger/src/lib.rs index e3558de7c61..396efd60dc6 100644 --- a/client/tests/integration/smartcontracts/mint_rose_trigger/src/lib.rs +++ b/client/tests/integration/smartcontracts/mint_rose_trigger/src/lib.rs @@ -17,12 +17,14 @@ getrandom::register_custom_getrandom!(iroha_trigger::stub_getrandom); /// Mint 1 rose for owner #[iroha_trigger::main] -fn main(owner: AccountId, _event: Event) { +fn main(id: TriggerId, owner: AccountId, _event: Event) { let rose_definition_id = AssetDefinitionId::from_str("rose#wonderland") .dbg_expect("Failed to parse `rose#wonderland` asset definition id"); let rose_id = AssetId::new(rose_definition_id, owner); - Mint::asset_numeric(1u32, rose_id) + let val = FindTriggerKeyValueByIdAndKey::new(id, "VAL".parse().unwrap()).dbg_unwrap(); + + Mint::asset_numeric(val, rose_id) .execute() .dbg_expect("Failed to mint rose"); } diff --git a/client/tests/integration/triggers/by_call_trigger.rs b/client/tests/integration/triggers/by_call_trigger.rs index a2c2ac2b41d..0a77a8bf086 100644 --- a/client/tests/integration/triggers/by_call_trigger.rs +++ b/client/tests/integration/triggers/by_call_trigger.rs @@ -378,8 +378,12 @@ fn trigger_in_genesis_using_base64() -> Result<()> { let prev_value = get_asset_value(&mut test_client, asset_id.clone()); // Executing trigger - let call_trigger = ExecuteTrigger::new(trigger_id); - test_client.submit_blocking(call_trigger)?; + let call_trigger = ExecuteTrigger::new(trigger_id.clone()); + let set_trigger_metadata = SetKeyValue::trigger(trigger_id, "VAL".parse()?, numeric!(1)); + test_client.submit_all_blocking(vec![ + InstructionBox::from(set_trigger_metadata), + call_trigger.into(), + ])?; // Checking result let new_value = get_asset_value(&mut test_client, asset_id); diff --git a/config/src/parameters/actual.rs b/config/src/parameters/actual.rs index df23be982f7..6b10b3d870b 100644 --- a/config/src/parameters/actual.rs +++ b/config/src/parameters/actual.rs @@ -177,10 +177,11 @@ pub struct ChainWide { pub block_time: Duration, pub commit_time: Duration, pub transaction_limits: TransactionLimits, - pub asset_metadata_limits: MetadataLimits, + pub domain_metadata_limits: MetadataLimits, pub asset_definition_metadata_limits: MetadataLimits, pub account_metadata_limits: MetadataLimits, - pub domain_metadata_limits: MetadataLimits, + pub asset_metadata_limits: MetadataLimits, + pub trigger_metadata_limits: MetadataLimits, pub ident_length_limits: LengthLimits, pub executor_runtime: WasmRuntime, pub wasm_runtime: WasmRuntime, @@ -204,6 +205,7 @@ impl Default for ChainWide { account_metadata_limits: defaults::chain_wide::DEFAULT_METADATA_LIMITS, asset_definition_metadata_limits: defaults::chain_wide::DEFAULT_METADATA_LIMITS, asset_metadata_limits: defaults::chain_wide::DEFAULT_METADATA_LIMITS, + trigger_metadata_limits: defaults::chain_wide::DEFAULT_METADATA_LIMITS, ident_length_limits: defaults::chain_wide::DEFAULT_IDENT_LENGTH_LIMITS, executor_runtime: WasmRuntime::default(), wasm_runtime: WasmRuntime::default(), diff --git a/config/src/parameters/user.rs b/config/src/parameters/user.rs index 1a0d7a5ced1..5afae534472 100644 --- a/config/src/parameters/user.rs +++ b/config/src/parameters/user.rs @@ -566,10 +566,11 @@ pub struct ChainWide { pub block_time: Duration, pub commit_time: Duration, pub transaction_limits: TransactionLimits, - pub asset_metadata_limits: MetadataLimits, + pub domain_metadata_limits: MetadataLimits, pub asset_definition_metadata_limits: MetadataLimits, pub account_metadata_limits: MetadataLimits, - pub domain_metadata_limits: MetadataLimits, + pub asset_metadata_limits: MetadataLimits, + pub trigger_metadata_limits: MetadataLimits, pub ident_length_limits: LengthLimits, pub executor_fuel_limit: u64, pub executor_max_memory: HumanBytes, @@ -585,6 +586,7 @@ impl ChainWide { commit_time, transaction_limits, asset_metadata_limits, + trigger_metadata_limits, asset_definition_metadata_limits, account_metadata_limits, domain_metadata_limits, @@ -601,6 +603,7 @@ impl ChainWide { commit_time, transaction_limits, asset_metadata_limits, + trigger_metadata_limits, asset_definition_metadata_limits, account_metadata_limits, domain_metadata_limits, diff --git a/config/src/parameters/user/boilerplate.rs b/config/src/parameters/user/boilerplate.rs index 2e9b8695474..b2863772d71 100644 --- a/config/src/parameters/user/boilerplate.rs +++ b/config/src/parameters/user/boilerplate.rs @@ -656,10 +656,11 @@ pub struct ChainWidePartial { pub block_time: UserField, pub commit_time: UserField, pub transaction_limits: UserField, - pub asset_metadata_limits: UserField, + pub domain_metadata_limits: UserField, pub asset_definition_metadata_limits: UserField, pub account_metadata_limits: UserField, - pub domain_metadata_limits: UserField, + pub asset_metadata_limits: UserField, + pub trigger_metadata_limits: UserField, pub ident_length_limits: UserField, pub executor_fuel_limit: UserField, pub executor_max_memory: UserField>, @@ -682,8 +683,8 @@ impl UnwrapPartial for ChainWidePartial { transaction_limits: self .transaction_limits .unwrap_or(DEFAULT_TRANSACTION_LIMITS), - asset_metadata_limits: self - .asset_metadata_limits + domain_metadata_limits: self + .domain_metadata_limits .unwrap_or(DEFAULT_METADATA_LIMITS), asset_definition_metadata_limits: self .asset_definition_metadata_limits @@ -691,8 +692,11 @@ impl UnwrapPartial for ChainWidePartial { account_metadata_limits: self .account_metadata_limits .unwrap_or(DEFAULT_METADATA_LIMITS), - domain_metadata_limits: self - .domain_metadata_limits + asset_metadata_limits: self + .asset_metadata_limits + .unwrap_or(DEFAULT_METADATA_LIMITS), + trigger_metadata_limits: self + .trigger_metadata_limits .unwrap_or(DEFAULT_METADATA_LIMITS), ident_length_limits: self .ident_length_limits diff --git a/configs/swarm/executor.wasm b/configs/swarm/executor.wasm index fb05db1652ebebd21b800200616392a24d65d64b..b327627fea79aa15c209f811f155c791b0ff9656 100644 GIT binary patch delta 126847 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 delta 123518 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

-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 Woycz-zw!Le=NBx}_aBnD=KlcSBtAj_ diff --git a/core/src/smartcontracts/isi/account.rs b/core/src/smartcontracts/isi/account.rs index aa814e37f7a..fd238417169 100644 --- a/core/src/smartcontracts/isi/account.rs +++ b/core/src/smartcontracts/isi/account.rs @@ -285,8 +285,8 @@ pub mod isi { state_transaction .world .emit_events(Some(AccountEvent::MetadataInserted(MetadataChanged { - target_id: account_id.clone(), - key: self.key.clone(), + target_id: account_id, + key: self.key, value: self.value, }))); @@ -316,7 +316,7 @@ pub mod isi { state_transaction .world .emit_events(Some(AccountEvent::MetadataRemoved(MetadataChanged { - target_id: account_id.clone(), + target_id: account_id, key: self.key, value, }))); diff --git a/core/src/smartcontracts/isi/mod.rs b/core/src/smartcontracts/isi/mod.rs index 7d04c07c6ba..2c8dde57a15 100644 --- a/core/src/smartcontracts/isi/mod.rs +++ b/core/src/smartcontracts/isi/mod.rs @@ -181,6 +181,7 @@ impl Execute for SetKeyValueBox { Self::Account(isi) => isi.execute(authority, state_transaction), Self::AssetDefinition(isi) => isi.execute(authority, state_transaction), Self::Asset(isi) => isi.execute(authority, state_transaction), + Self::Trigger(isi) => isi.execute(authority, state_transaction), } } } @@ -196,6 +197,7 @@ impl Execute for RemoveKeyValueBox { Self::Account(isi) => isi.execute(authority, state_transaction), Self::AssetDefinition(isi) => isi.execute(authority, state_transaction), Self::Asset(isi) => isi.execute(authority, state_transaction), + Self::Trigger(isi) => isi.execute(authority, state_transaction), } } } diff --git a/core/src/smartcontracts/isi/triggers/mod.rs b/core/src/smartcontracts/isi/triggers/mod.rs index 611f87e01db..00ea4338215 100644 --- a/core/src/smartcontracts/isi/triggers/mod.rs +++ b/core/src/smartcontracts/isi/triggers/mod.rs @@ -177,6 +177,72 @@ pub mod isi { } } + impl Execute for SetKeyValue { + #[metrics(+"set_trigger_key_value")] + fn execute( + self, + _authority: &AccountId, + state_transaction: &mut StateTransaction<'_, '_>, + ) -> Result<(), Error> { + let trigger_id = self.object_id; + + let trigger_metadata_limits = state_transaction.config.account_metadata_limits; + state_transaction + .world + .triggers + .inspect_by_id_mut(&trigger_id, |action| { + action.metadata_mut().insert_with_limits( + self.key.clone(), + self.value.clone(), + trigger_metadata_limits, + ) + }) + .ok_or(FindError::Trigger(trigger_id.clone()))??; + + state_transaction + .world + .emit_events(Some(TriggerEvent::MetadataInserted(MetadataChanged { + target_id: trigger_id, + key: self.key, + value: self.value, + }))); + + Ok(()) + } + } + + impl Execute for RemoveKeyValue { + #[metrics(+"remove_trigger_key_value")] + fn execute( + self, + _authority: &AccountId, + state_transaction: &mut StateTransaction<'_, '_>, + ) -> Result<(), Error> { + let trigger_id = self.object_id; + + let value = state_transaction + .world + .triggers + .inspect_by_id_mut(&trigger_id, |action| { + action + .metadata_mut() + .remove(&self.key) + .ok_or_else(|| FindError::MetadataKey(self.key.clone())) + }) + .ok_or(FindError::Trigger(trigger_id.clone()))??; + + state_transaction + .world + .emit_events(Some(TriggerEvent::MetadataRemoved(MetadataChanged { + target_id: trigger_id, + key: self.key, + value, + }))); + + Ok(()) + } + } + impl Execute for ExecuteTrigger { #[metrics(+"execute_trigger")] fn execute( diff --git a/core/src/smartcontracts/isi/triggers/specialized.rs b/core/src/smartcontracts/isi/triggers/specialized.rs index 09e898b126d..cb0957f114c 100644 --- a/core/src/smartcontracts/isi/triggers/specialized.rs +++ b/core/src/smartcontracts/isi/triggers/specialized.rs @@ -152,6 +152,9 @@ pub trait LoadedActionTrait { /// Get action metadata fn metadata(&self) -> &Metadata; + /// Get action metadata + fn metadata_mut(&mut self) -> &mut Metadata; + /// Check if action is mintable. fn mintable(&self) -> bool; @@ -181,10 +184,15 @@ impl + Clone> LoadedActionTrait &self.authority } + /// Get action metadata fn metadata(&self) -> &Metadata { &self.metadata } + fn metadata_mut(&mut self) -> &mut Metadata { + &mut self.metadata + } + fn mintable(&self) -> bool { self.filter.mintable() } diff --git a/core/src/smartcontracts/wasm.rs b/core/src/smartcontracts/wasm.rs index dd8df4bd163..034ea428db6 100644 --- a/core/src/smartcontracts/wasm.rs +++ b/core/src/smartcontracts/wasm.rs @@ -464,6 +464,8 @@ pub mod state { /// Trigger execution state #[derive(Constructor)] pub struct Trigger { + pub(in super::super) id: TriggerId, + /// Event which activated this trigger pub(in super::super) triggering_event: Event, } @@ -985,7 +987,7 @@ impl<'wrld, 'block: 'wrld, 'state: 'block> Runtime Runtime payloads::Trigger { payloads::Trigger { + id: state.specific_state.id.clone(), owner: state.authority.clone(), event: state.specific_state.triggering_event.clone(), } diff --git a/core/src/state.rs b/core/src/state.rs index b9291530cbf..9b85eb84fa2 100644 --- a/core/src/state.rs +++ b/core/src/state.rs @@ -285,7 +285,7 @@ impl World { } } - /// Create struct to apply block's changes while reverting changes made in the latest block + /// Create struct to apply block's changes while reverting changes made in the latest block pub fn block_and_revert(&self) -> WorldBlock { WorldBlock { parameters: self.parameters.block_and_revert(), @@ -1333,10 +1333,11 @@ impl<'state> StateBlock<'state> { } update_params! { - WSV_ASSET_METADATA_LIMITS => self.config.asset_metadata_limits, + WSV_DOMAIN_METADATA_LIMITS => self.config.domain_metadata_limits, WSV_ASSET_DEFINITION_METADATA_LIMITS => self.config.asset_definition_metadata_limits, WSV_ACCOUNT_METADATA_LIMITS => self.config.account_metadata_limits, - WSV_DOMAIN_METADATA_LIMITS => self.config.domain_metadata_limits, + WSV_ASSET_METADATA_LIMITS => self.config.asset_metadata_limits, + WSV_TRIGGER_METADATA_LIMITS => self.config.trigger_metadata_limits, WSV_IDENT_LENGTH_LIMITS => self.config.ident_length_limits, EXECUTOR_FUEL_LIMIT => self.config.executor_runtime.fuel_limit, EXECUTOR_MAX_MEMORY => self.config.executor_runtime.max_memory_bytes, diff --git a/data_model/src/events/data/events.rs b/data_model/src/events/data/events.rs index 156be776be1..3c6fc21b909 100644 --- a/data_model/src/events/data/events.rs +++ b/data_model/src/events/data/events.rs @@ -486,6 +486,9 @@ mod trigger { pub use self::model::*; use super::*; + // type alias required by `Filter` macro + type TriggerMetadataChanged = MetadataChanged; + data_event! { #[has_origin(origin = Trigger)] pub enum TriggerEvent { @@ -495,6 +498,10 @@ mod trigger { Extended(TriggerNumberOfExecutionsChanged), #[has_origin(number_of_executions_changed => &number_of_executions_changed.trigger_id)] Shortened(TriggerNumberOfExecutionsChanged), + #[has_origin(metadata_changed => &metadata_changed.target_id)] + MetadataInserted(TriggerMetadataChanged), + #[has_origin(metadata_changed => &metadata_changed.target_id)] + MetadataRemoved(TriggerMetadataChanged), } } diff --git a/data_model/src/isi.rs b/data_model/src/isi.rs index 1ecd901aba7..40cdcc316d3 100644 --- a/data_model/src/isi.rs +++ b/data_model/src/isi.rs @@ -134,13 +134,15 @@ macro_rules! impl_instruction { impl_instruction! { SetKeyValue, - SetKeyValue, SetKeyValue, + SetKeyValue, SetKeyValue, + SetKeyValue, RemoveKeyValue, - RemoveKeyValue, RemoveKeyValue, + RemoveKeyValue, RemoveKeyValue, + RemoveKeyValue, Register, Register, Register, @@ -339,6 +341,21 @@ mod transparent { } } + impl SetKeyValue { + /// Constructs a new [`SetKeyValue`] for a [`Trigger`] with the given `key` and `value`. + pub fn trigger( + trigger_id: TriggerId, + key: Name, + value: impl Into, + ) -> Self { + Self { + object_id: trigger_id, + key, + value: value.into(), + } + } + } + impl_display! { SetKeyValue where @@ -353,7 +370,8 @@ mod transparent { SetKeyValue | SetKeyValue | SetKeyValue | - SetKeyValue + SetKeyValue | + SetKeyValue => SetKeyValueBox => InstructionBox[SetKeyValue], => SetKeyValueBoxRef<'a> => InstructionBoxRef<'a>[SetKeyValue] } @@ -410,6 +428,16 @@ mod transparent { } } + impl RemoveKeyValue { + /// Constructs a new [`RemoveKeyValue`] for an [`Asset`] with the given `key`. + pub fn trigger(trigger_id: TriggerId, key: Name) -> Self { + Self { + object_id: trigger_id, + key, + } + } + } + impl_display! { RemoveKeyValue where @@ -424,7 +452,8 @@ mod transparent { RemoveKeyValue | RemoveKeyValue | RemoveKeyValue | - RemoveKeyValue + RemoveKeyValue | + RemoveKeyValue => RemoveKeyValueBox => InstructionBox[RemoveKeyValue], => RemoveKeyValueBoxRef<'a> => InstructionBoxRef<'a>[RemoveKeyValue] } @@ -1059,6 +1088,8 @@ isi_box! { AssetDefinition(SetKeyValue), /// Set key value for [`Asset`]. Asset(SetKeyValue), + /// Set key value for [`Trigger`]. + Trigger(SetKeyValue), } } @@ -1078,6 +1109,8 @@ isi_box! { AssetDefinition(RemoveKeyValue), /// Remove key value from [`Asset`]. Asset(RemoveKeyValue), + /// Remove key value for [`Trigger`]. + Trigger(RemoveKeyValue), } } diff --git a/data_model/src/lib.rs b/data_model/src/lib.rs index 87352bead15..ab1fadfa65b 100644 --- a/data_model/src/lib.rs +++ b/data_model/src/lib.rs @@ -70,14 +70,16 @@ mod seal { InstructionBox, SetKeyValue, - SetKeyValue, SetKeyValue, + SetKeyValue, SetKeyValue, + SetKeyValue, RemoveKeyValue, - RemoveKeyValue, RemoveKeyValue, + RemoveKeyValue, RemoveKeyValue, + RemoveKeyValue, Register, Register, @@ -231,10 +233,11 @@ pub mod parameter { pub const BLOCK_TIME: &str = "BlockTime"; pub const COMMIT_TIME_LIMIT: &str = "CommitTimeLimit"; pub const TRANSACTION_LIMITS: &str = "TransactionLimits"; - pub const WSV_ASSET_METADATA_LIMITS: &str = "WSVAssetMetadataLimits"; + pub const WSV_DOMAIN_METADATA_LIMITS: &str = "WSVDomainMetadataLimits"; pub const WSV_ASSET_DEFINITION_METADATA_LIMITS: &str = "WSVAssetDefinitionMetadataLimits"; pub const WSV_ACCOUNT_METADATA_LIMITS: &str = "WSVAccountMetadataLimits"; - pub const WSV_DOMAIN_METADATA_LIMITS: &str = "WSVDomainMetadataLimits"; + pub const WSV_ASSET_METADATA_LIMITS: &str = "WSVAssetMetadataLimits"; + pub const WSV_TRIGGER_METADATA_LIMITS: &str = "WSVTriggerMetadataLimits"; pub const WSV_IDENT_LENGTH_LIMITS: &str = "WSVIdentLengthLimits"; pub const EXECUTOR_FUEL_LIMIT: &str = "ExecutorFuelLimit"; pub const EXECUTOR_MAX_MEMORY: &str = "ExecutorMaxMemory"; diff --git a/data_model/src/smart_contract.rs b/data_model/src/smart_contract.rs index 379da0585d9..928eee6f827 100644 --- a/data_model/src/smart_contract.rs +++ b/data_model/src/smart_contract.rs @@ -17,6 +17,8 @@ pub mod payloads { /// Payload for trigger entrypoint #[derive(Debug, Clone, Encode, Decode)] pub struct Trigger { + /// Id of this trigger + pub id: TriggerId, /// Trigger owner who registered the trigger pub owner: AccountId, /// Event which triggered the execution diff --git a/data_model/src/visit.rs b/data_model/src/visit.rs index b626e8bcde7..f25fc3dc9e0 100644 --- a/data_model/src/visit.rs +++ b/data_model/src/visit.rs @@ -128,12 +128,14 @@ pub trait Visit { visit_set_account_key_value(&SetKeyValue), visit_set_asset_definition_key_value(&SetKeyValue), visit_set_asset_key_value(&SetKeyValue), + visit_set_trigger_key_value(&SetKeyValue), // Visit RemoveKeyValueBox visit_remove_domain_key_value(&RemoveKeyValue), visit_remove_account_key_value(&RemoveKeyValue), visit_remove_asset_definition_key_value(&RemoveKeyValue), visit_remove_asset_key_value(&RemoveKeyValue), + visit_remove_trigger_key_value(&RemoveKeyValue), // Visit GrantBox visit_grant_account_permission(&Grant), @@ -350,6 +352,7 @@ pub fn visit_set_key_value( visitor.visit_set_asset_definition_key_value(authority, obj) } SetKeyValueBox::Asset(obj) => visitor.visit_set_asset_key_value(authority, obj), + SetKeyValueBox::Trigger(obj) => visitor.visit_set_trigger_key_value(authority, obj), } } @@ -365,6 +368,7 @@ pub fn visit_remove_key_value( visitor.visit_remove_asset_definition_key_value(authority, obj) } RemoveKeyValueBox::Asset(obj) => visitor.visit_remove_asset_key_value(authority, obj), + RemoveKeyValueBox::Trigger(obj) => visitor.visit_remove_trigger_key_value(authority, obj), } } @@ -409,6 +413,8 @@ leaf_visitors! { visit_transfer_asset_store(&Transfer), visit_set_asset_key_value(&SetKeyValue), visit_remove_asset_key_value(&RemoveKeyValue), + visit_set_trigger_key_value(&SetKeyValue), + visit_remove_trigger_key_value(&RemoveKeyValue), visit_register_asset_definition(&Register), visit_unregister_asset_definition(&Unregister), visit_transfer_asset_definition(&Transfer), diff --git a/smart_contract/executor/src/default.rs b/smart_contract/executor/src/default.rs index c409a082878..f37af837c27 100644 --- a/smart_contract/executor/src/default.rs +++ b/smart_contract/executor/src/default.rs @@ -376,10 +376,10 @@ pub mod domain { AnyPermissionToken::CanMintUserSignatureCheckConditions(permission) => { permission.account_id.domain_id() == domain_id } - AnyPermissionToken::CanSetKeyValueInUserAccount(permission) => { + AnyPermissionToken::CanSetKeyValueInAccount(permission) => { permission.account_id.domain_id() == domain_id } - AnyPermissionToken::CanRemoveKeyValueInUserAccount(permission) => { + AnyPermissionToken::CanRemoveKeyValueInAccount(permission) => { permission.account_id.domain_id() == domain_id } AnyPermissionToken::CanUnregisterUserTrigger(permission) => { @@ -566,10 +566,9 @@ pub mod account { Ok(true) => execute!(executor, isi), Ok(false) => {} } - let can_set_key_value_in_user_account_token = - tokens::account::CanSetKeyValueInUserAccount { - account_id: account_id.clone(), - }; + let can_set_key_value_in_user_account_token = tokens::account::CanSetKeyValueInAccount { + account_id: account_id.clone(), + }; if can_set_key_value_in_user_account_token.is_owned_by(authority) { execute!(executor, isi); } @@ -596,7 +595,7 @@ pub mod account { Ok(false) => {} } let can_remove_key_value_in_user_account_token = - tokens::account::CanRemoveKeyValueInUserAccount { + tokens::account::CanRemoveKeyValueInAccount { account_id: account_id.clone(), }; if can_remove_key_value_in_user_account_token.is_owned_by(authority) { @@ -626,10 +625,10 @@ pub mod account { AnyPermissionToken::CanMintUserSignatureCheckConditions(permission) => { &permission.account_id == account_id } - AnyPermissionToken::CanSetKeyValueInUserAccount(permission) => { + AnyPermissionToken::CanSetKeyValueInAccount(permission) => { &permission.account_id == account_id } - AnyPermissionToken::CanRemoveKeyValueInUserAccount(permission) => { + AnyPermissionToken::CanRemoveKeyValueInAccount(permission) => { &permission.account_id == account_id } AnyPermissionToken::CanBurnUserAsset(permission) => { @@ -893,8 +892,8 @@ pub mod asset_definition { | AnyPermissionToken::CanMintUserPublicKeys(_) | AnyPermissionToken::CanBurnUserPublicKeys(_) | AnyPermissionToken::CanMintUserSignatureCheckConditions(_) - | AnyPermissionToken::CanSetKeyValueInUserAccount(_) - | AnyPermissionToken::CanRemoveKeyValueInUserAccount(_) + | AnyPermissionToken::CanSetKeyValueInAccount(_) + | AnyPermissionToken::CanRemoveKeyValueInAccount(_) | AnyPermissionToken::CanUnregisterUserTrigger(_) | AnyPermissionToken::CanExecuteUserTrigger(_) | AnyPermissionToken::CanBurnUserTrigger(_) @@ -1394,7 +1393,7 @@ pub mod role { } pub mod trigger { - use iroha_smart_contract::data_model::{permission::PermissionToken, trigger::TriggerId}; + use iroha_smart_contract::data_model::{permission::PermissionToken, trigger::Trigger}; use permission::{accounts_permission_tokens, trigger::is_trigger_owner}; use tokens::AnyPermissionToken; @@ -1524,6 +1523,62 @@ pub mod trigger { deny!(executor, "Can't execute trigger owned by another account"); } + pub fn visit_set_trigger_key_value( + executor: &mut V, + authority: &AccountId, + isi: &SetKeyValue, + ) { + let trigger_id = isi.object_id(); + + if is_genesis(executor) { + execute!(executor, isi); + } + match is_trigger_owner(trigger_id, authority) { + Err(err) => deny!(executor, err), + Ok(true) => execute!(executor, isi), + Ok(false) => {} + } + let can_set_key_value_in_user_trigger_token = tokens::trigger::CanSetKeyValueInTrigger { + trigger_id: trigger_id.clone(), + }; + if can_set_key_value_in_user_trigger_token.is_owned_by(authority) { + execute!(executor, isi); + } + + deny!( + executor, + "Can't set value to the metadata of another trigger" + ); + } + + pub fn visit_remove_trigger_key_value( + executor: &mut V, + authority: &AccountId, + isi: &RemoveKeyValue, + ) { + let trigger_id = isi.object_id(); + + if is_genesis(executor) { + execute!(executor, isi); + } + match is_trigger_owner(trigger_id, authority) { + Err(err) => deny!(executor, err), + Ok(true) => execute!(executor, isi), + Ok(false) => {} + } + let can_remove_key_value_in_trigger_token = tokens::trigger::CanRemoveKeyValueInTrigger { + trigger_id: trigger_id.clone(), + }; + if can_remove_key_value_in_trigger_token.is_owned_by(authority) { + execute!(executor, isi); + } + + deny!( + executor, + "Can't remove value from the metadata of another trigger" + ); + } + fn is_token_trigger_associated(permission: &PermissionToken, trigger_id: &TriggerId) -> bool { let Ok(permission) = AnyPermissionToken::try_from(permission) else { return false; @@ -1551,8 +1606,8 @@ pub mod trigger { | AnyPermissionToken::CanMintUserPublicKeys(_) | AnyPermissionToken::CanBurnUserPublicKeys(_) | AnyPermissionToken::CanMintUserSignatureCheckConditions(_) - | AnyPermissionToken::CanSetKeyValueInUserAccount(_) - | AnyPermissionToken::CanRemoveKeyValueInUserAccount(_) + | AnyPermissionToken::CanSetKeyValueInAccount(_) + | AnyPermissionToken::CanRemoveKeyValueInAccount(_) | AnyPermissionToken::CanUnregisterAssetDefinition(_) | AnyPermissionToken::CanSetKeyValueInAssetDefinition(_) | AnyPermissionToken::CanRemoveKeyValueInAssetDefinition(_) diff --git a/smart_contract/executor/src/default/tokens.rs b/smart_contract/executor/src/default/tokens.rs index 92289ffa755..3aaa5baf65f 100644 --- a/smart_contract/executor/src/default/tokens.rs +++ b/smart_contract/executor/src/default/tokens.rs @@ -105,8 +105,8 @@ declare_tokens! { crate::default::tokens::account::{CanMintUserPublicKeys}, crate::default::tokens::account::{CanBurnUserPublicKeys}, crate::default::tokens::account::{CanMintUserSignatureCheckConditions}, - crate::default::tokens::account::{CanSetKeyValueInUserAccount}, - crate::default::tokens::account::{CanRemoveKeyValueInUserAccount}, + crate::default::tokens::account::{CanSetKeyValueInAccount}, + crate::default::tokens::account::{CanRemoveKeyValueInAccount}, crate::default::tokens::asset_definition::{CanUnregisterAssetDefinition}, crate::default::tokens::asset_definition::{CanSetKeyValueInAssetDefinition}, @@ -229,14 +229,14 @@ pub mod account { token! { #[derive(ValidateGrantRevoke, permission::derive_conversions::account::Owner)] #[validate(permission::account::Owner)] - pub struct CanSetKeyValueInUserAccount { + pub struct CanSetKeyValueInAccount { pub account_id: AccountId, } } token! { #[derive(ValidateGrantRevoke, permission::derive_conversions::account::Owner)] #[validate(permission::account::Owner)] - pub struct CanRemoveKeyValueInUserAccount { + pub struct CanRemoveKeyValueInAccount { pub account_id: AccountId, } } @@ -507,11 +507,29 @@ pub mod trigger { } } + token! { + #[derive(ValidateGrantRevoke)] + #[validate(permission::trigger::Owner)] + pub struct CanSetKeyValueInTrigger { + pub trigger_id: TriggerId, + } + } + + token! { + #[derive(ValidateGrantRevoke)] + #[validate(permission::trigger::Owner)] + pub struct CanRemoveKeyValueInTrigger { + pub trigger_id: TriggerId, + } + } + impl_froms!( - CanExecuteUserTrigger, CanUnregisterUserTrigger, CanMintUserTrigger, CanBurnUserTrigger, + CanExecuteUserTrigger, + CanSetKeyValueInTrigger, + CanRemoveKeyValueInTrigger, ); } diff --git a/smart_contract/trigger/derive/src/entrypoint.rs b/smart_contract/trigger/derive/src/entrypoint.rs index a054363cdfe..fba9a75df6b 100644 --- a/smart_contract/trigger/derive/src/entrypoint.rs +++ b/smart_contract/trigger/derive/src/entrypoint.rs @@ -47,7 +47,7 @@ pub fn impl_entrypoint(emitter: &mut Emitter, item: syn::ItemFn) -> TokenStream #[doc(hidden)] unsafe extern "C" fn #main_fn_name() { let payload = ::iroha_trigger::get_trigger_payload(); - #fn_name(payload.owner, payload.event) + #fn_name(payload.trigger_id, payload.owner, payload.event) } // NOTE: Host objects are always passed by value to wasm diff --git a/tools/kagami/src/genesis.rs b/tools/kagami/src/genesis.rs index 94c851f0e91..73a1367e998 100644 --- a/tools/kagami/src/genesis.rs +++ b/tools/kagami/src/genesis.rs @@ -143,13 +143,14 @@ pub fn generate_default( Numeric::new(DEFAULT_COMMIT_TIME.as_millis(), 0), )? .add_parameter(TRANSACTION_LIMITS, DEFAULT_TRANSACTION_LIMITS)? - .add_parameter(WSV_ASSET_METADATA_LIMITS, DEFAULT_METADATA_LIMITS)? + .add_parameter(WSV_DOMAIN_METADATA_LIMITS, DEFAULT_METADATA_LIMITS)? .add_parameter( WSV_ASSET_DEFINITION_METADATA_LIMITS, DEFAULT_METADATA_LIMITS, )? .add_parameter(WSV_ACCOUNT_METADATA_LIMITS, DEFAULT_METADATA_LIMITS)? - .add_parameter(WSV_DOMAIN_METADATA_LIMITS, DEFAULT_METADATA_LIMITS)? + .add_parameter(WSV_ASSET_METADATA_LIMITS, DEFAULT_METADATA_LIMITS)? + .add_parameter(WSV_TRIGGER_METADATA_LIMITS, DEFAULT_METADATA_LIMITS)? .add_parameter(WSV_IDENT_LENGTH_LIMITS, DEFAULT_IDENT_LENGTH_LIMITS)? .add_parameter( EXECUTOR_FUEL_LIMIT,