diff --git a/.changeset/rich-comics-laugh.md b/.changeset/rich-comics-laugh.md new file mode 100644 index 00000000..1ce7e18d --- /dev/null +++ b/.changeset/rich-comics-laugh.md @@ -0,0 +1,5 @@ +--- +'@axelar-network/axelar-cgp-sui': minor +--- + +add allow and disallow functions in ITS diff --git a/move/its/sources/its.move b/move/its/sources/its.move index 86b2481e..054fd948 100644 --- a/move/its/sources/its.move +++ b/move/its/sources/its.move @@ -76,6 +76,17 @@ macro fun value_mut($self: &mut ITS, $function_name: vector): &mut ITS_v0 { value } +// --------------- +// Entry Functions +// --------------- +entry fun allow_function(self: &mut ITS, _: &OwnerCap, version: u64, function_name: String) { + self.value_mut!(b"allow_function").allow_function(version, function_name); +} + +entry fun disallow_function(self: &mut ITS, _: &OwnerCap, version: u64, function_name: String) { + self.value_mut!(b"disallow_function").disallow_function(version, function_name); +} + // ---------------- // Public Functions // ---------------- @@ -324,6 +335,8 @@ fun version_control(): VersionControl { b"remove_trusted_addresses", b"register_transaction", b"set_flow_limit", + b"allow_function", + b"disallow_function", ].map!(|function_name| function_name.to_ascii_string()), ]) } @@ -927,3 +940,31 @@ fun test_channel_address() { sui::test_utils::destroy(its); } + +#[test] +fun test_allow_function() { + let ctx = &mut sui::tx_context::dummy(); + let mut self = create_for_testing(ctx); + let owner_cap = owner_cap::create(ctx); + let version = 0; + let function_name = b"function_name".to_ascii_string(); + + self.allow_function(&owner_cap, version, function_name); + + sui::test_utils::destroy(self); + sui::test_utils::destroy(owner_cap); +} + +#[test] +fun test_disallow_function() { + let ctx = &mut sui::tx_context::dummy(); + let mut self = create_for_testing(ctx); + let owner_cap = owner_cap::create(ctx); + let version = 0; + let function_name = b"send_interchain_transfer".to_ascii_string(); + + self.disallow_function(&owner_cap, version, function_name); + + sui::test_utils::destroy(self); + sui::test_utils::destroy(owner_cap); +} diff --git a/move/its/sources/versioned/its_v0.move b/move/its/sources/versioned/its_v0.move index 81301632..0213365b 100644 --- a/move/its/sources/versioned/its_v0.move +++ b/move/its/sources/versioned/its_v0.move @@ -488,6 +488,14 @@ public(package) fun set_flow_limit( events::flow_limit_set(token_id, limit); } +public(package) fun allow_function(self: &mut ITS_v0, version: u64, function_name: String) { + self.version_control.allow_function(version, function_name); +} + +public(package) fun disallow_function(self: &mut ITS_v0, version: u64, function_name: String) { + self.version_control.disallow_function(version, function_name); +} + // ----------------- // Private Functions // -----------------