From 559326970e7d91a758e648b97e3b8aa724614c72 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ć --- client/tests/integration/events/data.rs | 4 +- client/tests/integration/queries/role.rs | 2 +- client/tests/integration/roles.rs | 10 +- .../src/lib.rs | 2 +- .../mint_rose_trigger/src/lib.rs | 11 ++- .../query_assets_and_save_cursor/Cargo.toml | 1 + .../query_assets_and_save_cursor/src/lib.rs | 30 ++++-- .../integration/triggers/by_call_trigger.rs | 7 ++ config/src/parameters/actual.rs | 6 +- config/src/parameters/user.rs | 7 +- config/src/parameters/user/boilerplate.rs | 16 ++-- config/tests/fixtures.rs | 13 ++- configs/swarm/executor.wasm | Bin 535234 -> 542798 bytes configs/swarm/genesis.json | 11 ++- 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 | 7 ++ core/src/smartcontracts/wasm.rs | 5 +- core/src/state.rs | 5 +- data_model/src/events/data/events.rs | 9 +- 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 ++ docs/source/references/schema.json | 72 ++++++++++++++ schema/gen/src/lib.rs | 3 + smart_contract/executor/derive/src/default.rs | 2 + smart_contract/executor/src/default.rs | 88 ++++++++++++++---- smart_contract/executor/src/default/tokens.rs | 28 +++++- smart_contract/executor/src/permission.rs | 9 +- smart_contract/src/lib.rs | 8 +- .../trigger/derive/src/entrypoint.rs | 2 +- tools/kagami/src/genesis.rs | 9 +- 34 files changed, 411 insertions(+), 90 deletions(-) diff --git a/client/tests/integration/events/data.rs b/client/tests/integration/events/data.rs index 9a6d6986cc2..d77e303c9c9 100644 --- a/client/tests/integration/events/data.rs +++ b/client/tests/integration/events/data.rs @@ -199,11 +199,11 @@ fn produce_multiple_events() -> Result<()> { let alice_id = AccountId::from_str("alice@wonderland")?; let role_id = RoleId::from_str("TEST_ROLE")?; let token_1 = PermissionToken::new( - "CanRemoveKeyValueInUserAccount".parse()?, + "CanRemoveKeyValueInAccount".parse()?, &json!({ "account_id": alice_id }), ); let token_2 = PermissionToken::new( - "CanSetKeyValueInUserAccount".parse()?, + "CanSetKeyValueInAccount".parse()?, &json!({ "account_id": alice_id }), ); let role = iroha_client::data_model::role::Role::new(role_id.clone()) diff --git a/client/tests/integration/queries/role.rs b/client/tests/integration/queries/role.rs index 9d18b523910..d437b6f6926 100644 --- a/client/tests/integration/queries/role.rs +++ b/client/tests/integration/queries/role.rs @@ -131,7 +131,7 @@ fn find_roles_by_account_id() -> Result<()> { .cloned() .map(|role_id| { Register::role(Role::new(role_id).add_permission(PermissionToken::new( - "CanSetKeyValueInUserAccount".parse().unwrap(), + "CanSetKeyValueInAccount".parse().unwrap(), &json!({ "account_id": alice_id }), ))) }) diff --git a/client/tests/integration/roles.rs b/client/tests/integration/roles.rs index 6f260e3709f..3a3bcd7aff6 100644 --- a/client/tests/integration/roles.rs +++ b/client/tests/integration/roles.rs @@ -69,11 +69,11 @@ fn register_and_grant_role_for_metadata_access() -> Result<()> { let role_id = RoleId::from_str("ACCESS_TO_MOUSE_METADATA")?; let role = Role::new(role_id.clone()) .add_permission(PermissionToken::new( - "CanSetKeyValueInUserAccount".parse()?, + "CanSetKeyValueInAccount".parse()?, &json!({ "account_id": mouse_id }), )) .add_permission(PermissionToken::new( - "CanRemoveKeyValueInUserAccount".parse()?, + "CanRemoveKeyValueInAccount".parse()?, &json!({ "account_id": mouse_id }), )); let register_role = Register::role(role); @@ -119,7 +119,7 @@ fn unregistered_role_removed_from_account() -> Result<()> { // Register root role let register_role = Register::role(Role::new(role_id.clone()).add_permission( PermissionToken::new( - "CanSetKeyValueInUserAccount".parse()?, + "CanSetKeyValueInAccount".parse()?, &json!({ "account_id": alice_id }), ), )); @@ -156,7 +156,7 @@ fn role_with_invalid_permissions_is_not_accepted() -> Result<()> { let role_id = RoleId::from_str("ACCESS_TO_ACCOUNT_METADATA")?; let rose_asset_id = AssetId::from_str("rose##alice@wonderland")?; let role = Role::new(role_id).add_permission(PermissionToken::new( - "CanSetKeyValueInUserAccount".parse()?, + "CanSetKeyValueInAccount".parse()?, &json!({ "account_id": rose_asset_id }), )); @@ -257,7 +257,7 @@ fn grant_revoke_role_permissions() -> Result<()> { "value".to_owned(), ); let permission = PermissionToken::new( - "CanSetKeyValueInUserAccount".parse()?, + "CanSetKeyValueInAccount".parse()?, &json!({ "account_id": mouse_id }), ); let grant_role_permission = Grant::role_permission(permission.clone(), role_id.clone()); 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 8eff37089b2..1f62efe9689 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: EventBox) { +fn main(_id: TriggerId, _owner: AccountId, _event: EventBox) { 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 701956c8ad8..1420b7fd394 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,19 @@ getrandom::register_custom_getrandom!(iroha_trigger::stub_getrandom); /// Mint 1 rose for owner #[iroha_trigger::main] -fn main(owner: AccountId, _event: EventBox) { +fn main(id: TriggerId, owner: AccountId, _event: EventBox) { 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: u32 = FindTriggerKeyValueByIdAndKey::new(id, "VAL".parse().unwrap()) + .execute() + .dbg_unwrap() + .into_inner() + .try_into() + .dbg_unwrap(); + + Mint::asset_numeric(val, rose_id) .execute() .dbg_expect("Failed to mint rose"); } diff --git a/client/tests/integration/smartcontracts/query_assets_and_save_cursor/Cargo.toml b/client/tests/integration/smartcontracts/query_assets_and_save_cursor/Cargo.toml index 313e8e91319..9b4ccbcb1f0 100644 --- a/client/tests/integration/smartcontracts/query_assets_and_save_cursor/Cargo.toml +++ b/client/tests/integration/smartcontracts/query_assets_and_save_cursor/Cargo.toml @@ -16,4 +16,5 @@ iroha_smart_contract.workspace = true panic-halt.workspace = true lol_alloc.workspace = true getrandom.workspace = true +parity-scale-codec.workspace = true serde_json = { version = "1.0.108", default-features = false } diff --git a/client/tests/integration/smartcontracts/query_assets_and_save_cursor/src/lib.rs b/client/tests/integration/smartcontracts/query_assets_and_save_cursor/src/lib.rs index feadea44447..ba048b48815 100644 --- a/client/tests/integration/smartcontracts/query_assets_and_save_cursor/src/lib.rs +++ b/client/tests/integration/smartcontracts/query_assets_and_save_cursor/src/lib.rs @@ -10,29 +10,43 @@ extern crate alloc; use alloc::string::ToString as _; use core::num::NonZeroU32; -use iroha_smart_contract::{data_model::metadata::MetadataValueBox, parse, prelude::*}; +use iroha_smart_contract::{ + data_model::{metadata::MetadataValueBox, query::cursor::ForwardCursor}, + parse, + prelude::*, +}; use lol_alloc::{FreeListAllocator, LockedAllocator}; +use parity_scale_codec::{Decode, DecodeAll, Encode}; #[global_allocator] static ALLOC: LockedAllocator = LockedAllocator::new(FreeListAllocator::new()); getrandom::register_custom_getrandom!(iroha_smart_contract::stub_getrandom); +#[derive(Debug, Decode)] +struct QueryOutputCursor { + _batch: alloc::vec::Vec, + cursor: ForwardCursor, +} + /// Execute [`FindAllAssets`] and save cursor to the owner's metadata. #[iroha_smart_contract::main] fn main(owner: AccountId) { - let asset_cursor = FindAllAssets - .fetch_size(FetchSize::new(Some(NonZeroU32::try_from(1).dbg_unwrap()))) - .execute() - .dbg_unwrap(); - - let (_batch, cursor) = asset_cursor.into_parts(); + // NOTE: Fields of QueryOutputCursor are private so we guess the layout by encoding/decoding + let asset_cursor = QueryOutputCursor::decode_all( + &mut &FindAllAssets + .fetch_size(FetchSize::new(Some(NonZeroU32::try_from(1).dbg_unwrap()))) + .execute() + .dbg_unwrap() + .encode()[..], + ) + .dbg_unwrap(); SetKeyValue::account( owner, parse!("cursor" as Name), MetadataValueBox::String( - serde_json::to_value(cursor) + serde_json::to_value(&asset_cursor.cursor) .dbg_expect("Failed to convert cursor to JSON") .to_string(), ), diff --git a/client/tests/integration/triggers/by_call_trigger.rs b/client/tests/integration/triggers/by_call_trigger.rs index ff76caf34f2..37ccf66d12e 100644 --- a/client/tests/integration/triggers/by_call_trigger.rs +++ b/client/tests/integration/triggers/by_call_trigger.rs @@ -376,6 +376,13 @@ fn trigger_in_genesis_using_base64() -> Result<()> { let prev_value = get_asset_value(&mut test_client, asset_id.clone()); // Executing trigger + test_client + .submit_blocking(SetKeyValue::trigger( + trigger_id.clone(), + "VAL".parse()?, + numeric!(1), + )) + .unwrap(); let call_trigger = ExecuteTrigger::new(trigger_id); test_client.submit_blocking(call_trigger)?; 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/config/tests/fixtures.rs b/config/tests/fixtures.rs index 0c0c5c586ca..1f95e1650aa 100644 --- a/config/tests/fixtures.rs +++ b/config/tests/fixtures.rs @@ -138,7 +138,7 @@ fn minimal_config_snapshot() -> Result<()> { max_instruction_number: 4096, max_wasm_size_bytes: 4194304, }, - asset_metadata_limits: Limits { + domain_metadata_limits: Limits { capacity: 1048576, max_entry_len: 4096, }, @@ -150,7 +150,11 @@ fn minimal_config_snapshot() -> Result<()> { capacity: 1048576, max_entry_len: 4096, }, - domain_metadata_limits: Limits { + asset_metadata_limits: Limits { + capacity: 1048576, + max_entry_len: 4096, + }, + trigger_metadata_limits: Limits { capacity: 1048576, max_entry_len: 4096, }, @@ -410,10 +414,11 @@ fn full_envs_set_is_consumed() -> Result<()> { block_time: None, commit_time: None, transaction_limits: None, - asset_metadata_limits: None, + domain_metadata_limits: None, asset_definition_metadata_limits: None, account_metadata_limits: None, - domain_metadata_limits: None, + asset_metadata_limits: None, + trigger_metadata_limits: None, ident_length_limits: None, executor_fuel_limit: None, executor_max_memory: None, diff --git a/configs/swarm/executor.wasm b/configs/swarm/executor.wasm index c6700b3d1e4b9fd734494f8e48c78e8b792f470e..b0ed7abcbc3f145a97ebed3342791319d4cfcdc7 100644 GIT binary patch delta 177350 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

s7*33jwQiOOAG#tLd);*l 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 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 24aa7b34500..126ef452603 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; @@ -185,6 +188,10 @@ impl + Clone> LoadedActionTrait &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 25f27e25675..bb836227aee 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: EventBox, } @@ -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 20255cdfe51..81ec0c79dec 100644 --- a/core/src/state.rs +++ b/core/src/state.rs @@ -1356,10 +1356,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 6ee1e5b8dde..f98090573a4 100644 --- a/data_model/src/events/data/events.rs +++ b/data_model/src/events/data/events.rs @@ -106,7 +106,6 @@ mod asset { pub use self::model::*; use super::*; - // type alias required by `Filter` macro type AssetMetadataChanged = MetadataChanged; type AssetDefinitionMetadataChanged = MetadataChanged; @@ -335,7 +334,6 @@ mod account { use super::*; use crate::name::Name; - // type alias required by `Filter` macro type AccountMetadataChanged = MetadataChanged; data_event! { @@ -428,7 +426,6 @@ mod domain { pub use self::model::*; use super::*; - // type alias required by `Filter` macro type DomainMetadataChanged = MetadataChanged; data_event! { @@ -486,6 +483,8 @@ mod trigger { pub use self::model::*; use super::*; + type TriggerMetadataChanged = MetadataChanged; + data_event! { #[has_origin(origin = Trigger)] pub enum TriggerEvent { @@ -495,6 +494,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 66a2b706e38..2e9a73504e3 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 7112685653b..bd6e9b2b13d 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 5d51c2f89d3..d7957b8ad4c 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/docs/source/references/schema.json b/docs/source/references/schema.json index 5e5c102ebce..e9196b814df 100644 --- a/docs/source/references/schema.json +++ b/docs/source/references/schema.json @@ -2175,6 +2175,22 @@ } ] }, + "MetadataChanged": { + "Struct": [ + { + "name": "target_id", + "type": "TriggerId" + }, + { + "name": "key", + "type": "Name" + }, + { + "name": "value", + "type": "MetadataValueBox" + } + ] + }, "MetadataError": { "Enum": [ { @@ -3175,6 +3191,18 @@ } ] }, + "RemoveKeyValue": { + "Struct": [ + { + "name": "object_id", + "type": "TriggerId" + }, + { + "name": "key", + "type": "Name" + } + ] + }, "RemoveKeyValueBox": { "Enum": [ { @@ -3196,6 +3224,11 @@ "tag": "Asset", "discriminant": 3, "type": "RemoveKeyValue" + }, + { + "tag": "Trigger", + "discriminant": 4, + "type": "RemoveKeyValue" } ] }, @@ -3479,6 +3512,22 @@ } ] }, + "SetKeyValue": { + "Struct": [ + { + "name": "object_id", + "type": "TriggerId" + }, + { + "name": "key", + "type": "Name" + }, + { + "name": "value", + "type": "MetadataValueBox" + } + ] + }, "SetKeyValueBox": { "Enum": [ { @@ -3500,6 +3549,11 @@ "tag": "Asset", "discriminant": 3, "type": "SetKeyValue" + }, + { + "tag": "Trigger", + "discriminant": 4, + "type": "SetKeyValue" } ] }, @@ -4101,6 +4155,16 @@ "tag": "Shortened", "discriminant": 3, "type": "TriggerNumberOfExecutionsChanged" + }, + { + "tag": "MetadataInserted", + "discriminant": 4, + "type": "MetadataChanged" + }, + { + "tag": "MetadataRemoved", + "discriminant": 5, + "type": "MetadataChanged" } ] }, @@ -4135,6 +4199,14 @@ { "name": "Shortened", "mask": 8 + }, + { + "name": "MetadataInserted", + "mask": 16 + }, + { + "name": "MetadataRemoved", + "mask": 32 } ] } diff --git a/schema/gen/src/lib.rs b/schema/gen/src/lib.rs index 874dc171663..e3c56afd90c 100644 --- a/schema/gen/src/lib.rs +++ b/schema/gen/src/lib.rs @@ -213,6 +213,7 @@ types!( MetadataChanged, MetadataChanged, MetadataChanged, + MetadataChanged, MetadataError, MetadataLimits, MetadataValueBox, @@ -292,6 +293,7 @@ types!( RemoveKeyValue, RemoveKeyValue, RemoveKeyValue, + RemoveKeyValue, RemoveKeyValueBox, Repeats, RepetitionError, @@ -311,6 +313,7 @@ types!( SetKeyValue, SetKeyValue, SetKeyValue, + SetKeyValue, SetKeyValueBox, SetParameter, Signature, diff --git a/smart_contract/executor/derive/src/default.rs b/smart_contract/executor/derive/src/default.rs index 441bc8d7c87..cb2778b85e5 100644 --- a/smart_contract/executor/derive/src/default.rs +++ b/smart_contract/executor/derive/src/default.rs @@ -138,6 +138,8 @@ pub fn impl_derive_visit(emitter: &mut Emitter, input: &syn::DeriveInput) -> Tok "fn visit_transfer_asset_store(operation: &Transfer)", "fn visit_set_asset_key_value(operation: &SetKeyValue)", "fn visit_remove_asset_key_value(operation: &RemoveKeyValue)", + "fn visit_set_trigger_key_value(operation: &SetKeyValue)", + "fn visit_remove_trigger_key_value(operation: &RemoveKeyValue)", "fn visit_register_asset_definition(operation: &Register)", "fn visit_unregister_asset_definition(operation: &Unregister)", "fn visit_transfer_asset_definition(operation: &Transfer)", diff --git a/smart_contract/executor/src/default.rs b/smart_contract/executor/src/default.rs index 50b951d85a8..f791727318f 100644 --- a/smart_contract/executor/src/default.rs +++ b/smart_contract/executor/src/default.rs @@ -37,7 +37,8 @@ pub use role::{ }; pub use trigger::{ visit_burn_trigger_repetitions, visit_execute_trigger, visit_mint_trigger_repetitions, - visit_register_trigger, visit_unregister_trigger, + visit_register_trigger, visit_remove_trigger_key_value, visit_set_trigger_key_value, + visit_unregister_trigger, }; use crate::{permission, permission::Token as _, prelude::*}; @@ -376,10 +377,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 +567,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 +596,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 +626,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 +893,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(_) @@ -1246,7 +1246,7 @@ pub mod role { let role_id = $isi.object(); let find_role_query_res = match FindRoleByRoleId::new(role_id.clone()).execute() { - Ok(res) => res.into_parts().0, + Ok(res) => res.into_inner(), Err(error) => { deny!($executor, error); } @@ -1394,7 +1394,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 +1524,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 +1607,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/executor/src/permission.rs b/smart_contract/executor/src/permission.rs index 270048f2140..90c9b01cd43 100644 --- a/smart_contract/executor/src/permission.rs +++ b/smart_contract/executor/src/permission.rs @@ -139,8 +139,7 @@ pub mod asset_definition { ) -> Result { let asset_definition = FindAssetDefinitionById::new(asset_definition_id.clone()) .execute() - .map(QueryOutputCursor::into_parts) - .map(|(batch, _cursor)| batch)?; + .map(QueryOutputCursor::into_inner)?; if asset_definition.owned_by() == authority { Ok(true) } else { @@ -226,8 +225,7 @@ pub mod trigger { pub fn is_trigger_owner(trigger_id: &TriggerId, authority: &AccountId) -> Result { let trigger = FindTriggerById::new(trigger_id.clone()) .execute() - .map(QueryOutputCursor::into_parts) - .map(|(batch, _cursor)| batch)?; + .map(QueryOutputCursor::into_inner)?; if trigger.action().authority() == authority { Ok(true) } else { @@ -271,8 +269,7 @@ pub mod domain { pub fn is_domain_owner(domain_id: &DomainId, authority: &AccountId) -> Result { FindDomainById::new(domain_id.clone()) .execute() - .map(QueryOutputCursor::into_parts) - .map(|(batch, _cursor)| batch) + .map(QueryOutputCursor::into_inner) .map(|domain| domain.owned_by() == authority) } diff --git a/smart_contract/src/lib.rs b/smart_contract/src/lib.rs index 576f1915ccb..64563291dd7 100644 --- a/smart_contract/src/lib.rs +++ b/smart_contract/src/lib.rs @@ -290,9 +290,9 @@ pub struct QueryOutputCursor { } impl QueryOutputCursor { - /// Get inner values of batch and cursor, consuming [`Self`]. - pub fn into_parts(self) -> (T, ForwardCursor) { - (self.batch, self.cursor) + /// Returns the query result + pub fn into_inner(self) -> T { + self.batch } } @@ -524,7 +524,7 @@ mod tests { let response: Result, ValidationFail> = Ok(BatchedResponseV1::new( - QUERY_RESULT.unwrap().into_parts().0, + QUERY_RESULT.unwrap().collect().unwrap(), ForwardCursor::new(None, None), ) .into()); diff --git a/smart_contract/trigger/derive/src/entrypoint.rs b/smart_contract/trigger/derive/src/entrypoint.rs index a054363cdfe..29723cd3511 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.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..1a7292df8b8 100644 --- a/tools/kagami/src/genesis.rs +++ b/tools/kagami/src/genesis.rs @@ -122,11 +122,11 @@ pub fn generate_default( let register_user_metadata_access = Register::role( Role::new("ALICE_METADATA_ACCESS".parse()?) .add_permission(PermissionToken::new( - "CanSetKeyValueInUserAccount".parse()?, + "CanSetKeyValueInAccount".parse()?, &json!({ "account_id": alice_id }), )) .add_permission(PermissionToken::new( - "CanRemoveKeyValueInUserAccount".parse()?, + "CanRemoveKeyValueInAccount".parse()?, &json!({ "account_id": alice_id }), )), ) @@ -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,