Skip to content

Commit

Permalink
feat(its)!: changed from trusted addresses to trusted chains (#235)
Browse files Browse the repository at this point in the history
Co-authored-by: Milap Sheth <[email protected]>
  • Loading branch information
Foivos and milapsheth authored Jan 28, 2025
1 parent b31245c commit 81888b8
Show file tree
Hide file tree
Showing 23 changed files with 615 additions and 630 deletions.
5 changes: 5 additions & 0 deletions .changeset/chilled-apes-lay.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@axelar-network/axelar-cgp-sui': minor
---

Change ITS from tracking addresses of remote chains to only tracking trusted chains and always using the ITS HUB.
6 changes: 1 addition & 5 deletions move/axelar_gateway/sources/events.move
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,7 @@ public struct MessageExecuted has copy, drop {
// -----------------
// Package Functions
// -----------------
public(package) fun signers_rotated(
epoch: u64,
signers_hash: Bytes32,
signers: WeightedSigners,
) {
public(package) fun signers_rotated(epoch: u64, signers_hash: Bytes32, signers: WeightedSigners) {
event::emit(SignersRotated {
epoch,
signers_hash,
Expand Down
47 changes: 18 additions & 29 deletions move/interchain_token_service/sources/discovery.move
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ use sui::address;
/// Errors
/// ------
#[error]
const EUnsupportedMessageType: vector<u8> =
b"the message type found is not supported";
const EUnsupportedMessageType: vector<u8> = b"the message type found is not supported";
#[error]
const EInvalidMessageType: vector<u8> =
b"can only get interchain transfer info for interchain transfers";
Expand All @@ -25,14 +24,14 @@ const MESSAGE_TYPE_DEPLOY_INTERCHAIN_TOKEN: u256 = 1;
// onst MESSAGE_TYPE_SEND_TO_HUB: u256 = 3;
const MESSAGE_TYPE_RECEIVE_FROM_HUB: u256 = 4;

public fun interchain_transfer_info(
payload: vector<u8>,
): (TokenId, address, u64, vector<u8>) {
public fun interchain_transfer_info(payload: vector<u8>): (TokenId, address, u64, vector<u8>) {
let mut reader = abi::new_reader(payload);
assert!(
reader.read_u256() == MESSAGE_TYPE_INTERCHAIN_TRANSFER,
EInvalidMessageType,
);
assert!(reader.read_u256() == MESSAGE_TYPE_RECEIVE_FROM_HUB, EInvalidMessageType);
// Source chain validation is not done here.
reader.skip_slot();
let payload = reader.read_bytes();
reader = abi::new_reader(payload);
assert!(reader.read_u256() == MESSAGE_TYPE_INTERCHAIN_TRANSFER, EInvalidMessageType);

let token_id = token_id::from_u256(reader.read_u256());
reader.skip_slot(); // skip source_address
Expand Down Expand Up @@ -87,10 +86,7 @@ public fun call_info(its: &InterchainTokenService, mut payload: vector<u8>): Tra
if (message_type == MESSAGE_TYPE_INTERCHAIN_TRANSFER) {
interchain_transfer_tx(its, &mut reader)
} else {
assert!(
message_type == MESSAGE_TYPE_DEPLOY_INTERCHAIN_TOKEN,
EUnsupportedMessageType,
);
assert!(message_type == MESSAGE_TYPE_DEPLOY_INTERCHAIN_TOKEN, EUnsupportedMessageType);
deploy_interchain_token_tx(its, &mut reader)
}
}
Expand Down Expand Up @@ -127,10 +123,7 @@ fun interchain_transfer_tx(its: &InterchainTokenService, reader: &mut AbiReader)
)
} else {
let mut discovery_arg = vector[0];
discovery_arg.append(value
.relayer_discovery_id()
.id_to_address()
.to_bytes());
discovery_arg.append(value.relayer_discovery_id().id_to_address().to_bytes());

let mut channel_id_arg = vector[1];
channel_id_arg.append(destination_address.to_bytes());
Expand Down Expand Up @@ -269,9 +262,7 @@ fun test_discovery_interchain_transfer() {
call_info.function().package_id_from_function() == package_id<InterchainTokenService>(),
);
assert!(call_info.function().module_name() == ascii::string(b"interchain_token_service"));
assert!(
call_info.function().name() == ascii::string(b"receive_interchain_transfer"),
);
assert!(call_info.function().name() == ascii::string(b"receive_interchain_transfer"));
let mut arg = vector[0];
arg.append(object::id_address(&its).to_bytes());

Expand Down Expand Up @@ -322,9 +313,7 @@ fun test_discovery_interchain_transfer_with_data() {
let mut reader = abi::new_reader(payload);
reader.skip_slot(); // skip message_type

assert!(
call_info(&its, payload) == interchain_transfer_tx(&its, &mut reader),
);
assert!(call_info(&its, payload) == interchain_transfer_tx(&its, &mut reader));

sui::test_utils::destroy(its);
sui::test_utils::destroy(discovery);
Expand Down Expand Up @@ -376,9 +365,7 @@ fun test_discovery_deploy_token() {
call_info.function().package_id_from_function() == package_id<InterchainTokenService>(),
);
assert!(call_info.function().module_name() == ascii::string(b"interchain_token_service"));
assert!(
call_info.function().name() == ascii::string(b"receive_deploy_interchain_token"),
);
assert!(call_info.function().name() == ascii::string(b"receive_deploy_interchain_token"));
let mut arg = vector[0];
arg.append(object::id_address(&its).to_bytes());

Expand All @@ -395,6 +382,7 @@ fun test_interchain_transfer_info() {
let message_type = MESSAGE_TYPE_INTERCHAIN_TRANSFER;
let token_id = 1;
let source_address = b"source address";
let source_chain = b"Chain Name";
let destination = @0x3.to_bytes();
let amount = 2;
let data = b"data";
Expand All @@ -407,6 +395,9 @@ fun test_interchain_transfer_info() {
.write_bytes(destination)
.write_u256(amount)
.write_bytes(data);
let payload = writer.into_bytes();
writer = abi::new_writer(3);
writer.write_u256(MESSAGE_TYPE_RECEIVE_FROM_HUB).write_bytes(source_chain).write_bytes(payload);

let (
resolved_token_id,
Expand Down Expand Up @@ -486,9 +477,7 @@ fun test_discovery_hub_message() {
call_info.function().package_id_from_function() == package_id<InterchainTokenService>(),
);
assert!(call_info.function().module_name() == ascii::string(b"interchain_token_service"));
assert!(
call_info.function().name() == ascii::string(b"receive_interchain_transfer"),
);
assert!(call_info.function().name() == ascii::string(b"receive_interchain_transfer"));
let mut arg = vector[0];
arg.append(object::id_address(&its).to_bytes());

Expand Down
15 changes: 6 additions & 9 deletions move/interchain_token_service/sources/events.move
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,11 @@ public struct UnregisteredCoinReceived<phantom T> has copy, drop {
decimals: u8,
}

public struct TrustedAddressSet has copy, drop {
public struct TrustedChainAdded has copy, drop {
chain_name: String,
trusted_address: String,
}

public struct TrustedAddressRemoved has copy, drop {
public struct TrustedChainRemoved has copy, drop {
chain_name: String,
}

Expand Down Expand Up @@ -143,18 +142,16 @@ public(package) fun unregistered_coin_received<T>(
});
}

public(package) fun trusted_address_set(
public(package) fun trusted_chain_added(
chain_name: String,
trusted_address: String,
) {
event::emit(TrustedAddressSet {
event::emit(TrustedChainAdded {
chain_name,
trusted_address,
});
}

public(package) fun trusted_address_removed(chain_name: String) {
event::emit(TrustedAddressRemoved {
public(package) fun trusted_chain_removed(chain_name: String) {
event::emit(TrustedChainRemoved {
chain_name,
});
}
Expand Down
Loading

0 comments on commit 81888b8

Please sign in to comment.