From 7dd615b794924854cd14a0aef29d72d945302a9e Mon Sep 17 00:00:00 2001 From: Foivos Date: Thu, 7 Nov 2024 21:14:31 +0200 Subject: [PATCH] feat(its)!: remove remote decimals (#195) --- .changeset/eight-candles-rest.md | 5 ++ move/example/sources/its/its.move | 1 - move/its/sources/events.move | 8 +-- move/its/sources/its.move | 28 ++--------- move/its/sources/types/coin_data.move | 4 -- move/its/sources/types/coin_info.move | 24 +-------- move/its/sources/types/coin_management.move | 31 +++--------- move/its/sources/types/token_id.move | 5 -- move/its/sources/versioned/its_v0.move | 50 ++++++++----------- move/squid/sources/squid/squid.move | 1 - .../sources/squid/versioned/squid_v0.move | 1 - test/squid.js | 2 +- test/testdata/interface_its_coin_info.json | 22 +------- test/testdata/interface_its_token_id.json | 1 - 14 files changed, 46 insertions(+), 137 deletions(-) create mode 100644 .changeset/eight-candles-rest.md diff --git a/.changeset/eight-candles-rest.md b/.changeset/eight-candles-rest.md new file mode 100644 index 00000000..38488071 --- /dev/null +++ b/.changeset/eight-candles-rest.md @@ -0,0 +1,5 @@ +--- +'@axelar-network/axelar-cgp-sui': minor +--- + +Removed remote decimals tracking from ITS as it will be handled at the hub. diff --git a/move/example/sources/its/its.move b/move/example/sources/its/its.move index e88e30d0..48f0b94a 100644 --- a/move/example/sources/its/its.move +++ b/move/example/sources/its/its.move @@ -148,7 +148,6 @@ public fun register_coin( coin_metadata.get_name(), coin_metadata.get_symbol(), coin_metadata.get_decimals(), - coin_metadata.get_decimals(), ); let coin_management = coin_management::new_locked(); diff --git a/move/its/sources/events.move b/move/its/sources/events.move index 9a348669..8bbb7231 100644 --- a/move/its/sources/events.move +++ b/move/its/sources/events.move @@ -20,7 +20,7 @@ public struct InterchainTransfer has copy, drop { source_address: address, destination_chain: String, destination_address: vector, - amount: u256, + amount: u64, data_hash: Bytes32, } @@ -38,7 +38,7 @@ public struct InterchainTransferReceived has copy, drop { source_chain: String, source_address: vector, destination_address: address, - amount: u256, + amount: u64, data_hash: Bytes32, } @@ -62,7 +62,7 @@ public(package) fun interchain_transfer( source_address: address, destination_chain: String, destination_address: vector, - amount: u256, + amount: u64, data: &vector, ) { let data_hash = bytes32::new(address::from_bytes(keccak256(data))); @@ -98,7 +98,7 @@ public(package) fun interchain_transfer_received( source_chain: String, source_address: vector, destination_address: address, - amount: u256, + amount: u64, data: &vector, ) { let data_hash = bytes32::new(address::from_bytes(keccak256(data))); diff --git a/move/its/sources/its.move b/move/its/sources/its.move index 30122ae5..3e76e718 100644 --- a/move/its/sources/its.move +++ b/move/its/sources/its.move @@ -336,10 +336,6 @@ const MESSAGE_TYPE_DEPLOY_INTERCHAIN_TOKEN: u256 = 1; #[test_only] const ITS_HUB_ROUTING_IDENTIFIER: vector = b"hub"; -// === The maximum number of decimals allowed === -#[test_only] -const DECIMALS_CAP: u8 = 9; - #[test_only] public fun create_for_testing(ctx: &mut TxContext): ITS { let mut version_control = version_control(); @@ -416,7 +412,6 @@ fun test_register_coin() { string::utf8(b"Name"), ascii::string(b"Symbol"), 10, - 12, ); let coin_management = its::coin_management::new_locked(); @@ -432,13 +427,11 @@ fun test_deploy_remote_interchain_token() { let token_name = string::utf8(b"Name"); let token_symbol = ascii::string(b"Symbol"); let token_decimals = 10; - let remote_decimals = 12; let coin_info = its::coin_info::from_info( token_name, token_symbol, token_decimals, - remote_decimals, ); let coin_management = its::coin_management::new_locked(); @@ -483,9 +476,7 @@ fun test_deploy_interchain_token() { string::utf8(b"Name"), ascii::string(b"Symbol"), 10, - 12, ); - let scaling = coin_info.scaling(); let coin_management = its::coin_management::new_locked(); let token_id = register_coin(&mut its, coin_info, coin_management); @@ -517,7 +508,7 @@ fun test_deploy_interchain_token() { .write_u256(token_id.to_u256()) .write_bytes(source_channel.to_address().to_bytes()) .write_bytes(destination_address) - .write_u256((amount as u256) * scaling) + .write_u256((amount as u256)) .write_bytes(b""); assert!( @@ -546,7 +537,6 @@ fun test_receive_interchain_transfer() { string::utf8(b"Name"), ascii::string(b"Symbol"), 10, - 12, ); let amount = 1234; @@ -595,9 +585,7 @@ fun test_receive_interchain_transfer_with_data() { string::utf8(b"Name"), ascii::string(b"Symbol"), 10, - 12, ); - let scaling = coin_info.scaling(); let amount = 1234; let data = b"some_data"; @@ -646,7 +634,7 @@ fun test_receive_interchain_transfer_with_data() { assert!(received_source_chain == source_chain); assert!(received_source_address == its_source_address); assert!(received_data == data); - assert!(received_coin.value() == amount / (scaling as u64)); + assert!(received_coin.value() == amount); clock.destroy_for_testing(); channel.destroy(); @@ -665,9 +653,7 @@ fun test_receive_deploy_interchain_token() { let source_address = ascii::string(b"Address"); let name = b"Token Name"; let symbol = b"Symbol"; - let remote_decimals = 12; - let decimals = if (remote_decimals > DECIMALS_CAP) DECIMALS_CAP - else remote_decimals; + let decimals = 9; let token_id: u256 = 1234; its.value_mut!(b"").create_unregistered_coin(symbol, decimals, ctx); @@ -678,7 +664,7 @@ fun test_receive_deploy_interchain_token() { .write_u256(token_id) .write_bytes(name) .write_bytes(symbol) - .write_u256((remote_decimals as u256)) + .write_u256((decimals as u256)) .write_bytes(vector::empty()); let payload = writer.into_bytes(); @@ -720,7 +706,6 @@ fun test_mint_as_distributor() { let mut its = create_for_testing(ctx); let symbol = b"COIN"; let decimals = 9; - let remote_decimals = 18; let (treasury_cap, coin_metadata) = its::coin::create_treasury_and_metadata( symbol, @@ -729,7 +714,6 @@ fun test_mint_as_distributor() { ); let coin_info = its::coin_info::from_metadata( coin_metadata, - remote_decimals, ); let mut coin_management = its::coin_management::new_with_cap(treasury_cap); @@ -759,7 +743,6 @@ fun test_mint_to_as_distributor() { let mut its = create_for_testing(ctx); let symbol = b"COIN"; let decimals = 9; - let remote_decimals = 18; let (treasury_cap, coin_metadata) = its::coin::create_treasury_and_metadata( symbol, @@ -768,7 +751,6 @@ fun test_mint_to_as_distributor() { ); let coin_info = its::coin_info::from_metadata( coin_metadata, - remote_decimals, ); let mut coin_management = its::coin_management::new_with_cap(treasury_cap); @@ -796,7 +778,6 @@ fun test_burn_as_distributor() { let mut its = create_for_testing(ctx); let symbol = b"COIN"; let decimals = 9; - let remote_decimals = 18; let amount = 1234; let ( @@ -806,7 +787,6 @@ fun test_burn_as_distributor() { let coin = treasury_cap.mint(amount, ctx); let coin_info = its::coin_info::from_metadata( coin_metadata, - remote_decimals, ); let mut coin_management = its::coin_management::new_with_cap(treasury_cap); diff --git a/move/its/sources/types/coin_data.move b/move/its/sources/types/coin_data.move index 1bdbc506..7c310230 100644 --- a/move/its/sources/types/coin_data.move +++ b/move/its/sources/types/coin_data.move @@ -33,7 +33,3 @@ public(package) fun coin_management_mut( ): &mut CoinManagement { &mut self.coin_management } - -public(package) fun coin_scaling(self: &CoinData): u256 { - self.coin_info.scaling() -} diff --git a/move/its/sources/types/coin_info.move b/move/its/sources/types/coin_info.move index cb56b814..9795dd01 100644 --- a/move/its/sources/types/coin_info.move +++ b/move/its/sources/types/coin_info.move @@ -2,7 +2,6 @@ /// either derived from `CoinMetadata` or manually provided. module its::coin_info; -use its::utils; use std::ascii; use std::string::String; use sui::coin::CoinMetadata; @@ -11,7 +10,6 @@ public struct CoinInfo has store { name: String, symbol: ascii::String, decimals: u8, - remote_decimals: u8, metadata: Option>, } @@ -20,27 +18,21 @@ public fun from_info( name: String, symbol: ascii::String, decimals: u8, - remote_decimals: u8, ): CoinInfo { CoinInfo { name, symbol, decimals, - remote_decimals, metadata: option::none(), } } /// Create a new coin info from the given `CoinMetadata` object. -public fun from_metadata( - metadata: CoinMetadata, - remote_decimals: u8, -): CoinInfo { +public fun from_metadata(metadata: CoinMetadata): CoinInfo { CoinInfo { name: metadata.get_name(), symbol: metadata.get_symbol(), decimals: metadata.get_decimals(), - remote_decimals, metadata: option::some(metadata), } } @@ -59,14 +51,6 @@ public fun decimals(self: &CoinInfo): u8 { self.decimals } -public fun remote_decimals(self: &CoinInfo): u8 { - self.remote_decimals -} - -public fun scaling(self: &CoinInfo): u256 { - utils::pow(10, self.remote_decimals - self.decimals) -} - public fun metadata(self: &CoinInfo): &Option> { &self.metadata } @@ -82,7 +66,6 @@ public fun drop(coin_info: CoinInfo) { name: _, symbol: _, decimals: _, - remote_decimals: _, metadata, } = coin_info; if (metadata.is_some()) { @@ -101,18 +84,15 @@ fun test_from_metadata() { let name = metadata.get_name(); let symbol = metadata.get_symbol(); let decimals = metadata.get_decimals(); - let remote_decimals = 31; - let coin_info = from_metadata(metadata, remote_decimals); + let coin_info = from_metadata(metadata); assert!(coin_info.name() == name); assert!(coin_info.symbol() == symbol); assert!(coin_info.decimals() == decimals); - assert!(coin_info.remote_decimals() == remote_decimals); assert!( sui::bcs::to_bytes(coin_info.metadata().borrow()) == metadata_bytes, ); - assert!(coin_info.scaling() == utils::pow(10, remote_decimals - decimals)); sui::test_utils::destroy(coin_info); } diff --git a/move/its/sources/types/coin_management.move b/move/its/sources/types/coin_management.move index dff1a19c..b6197a17 100644 --- a/move/its/sources/types/coin_management.move +++ b/move/its/sources/types/coin_management.move @@ -22,7 +22,6 @@ public struct CoinManagement has store { distributor: Option
, operator: Option
, flow_limit: FlowLimit, - scaling: u256, dust: u256, } @@ -38,7 +37,6 @@ public fun new_with_cap(treasury_cap: TreasuryCap): CoinManagement { distributor: option::none(), operator: option::none(), flow_limit: flow_limit::new(), - scaling: 0, // placeholder, this gets edited when a coin is registered. dust: 0, } } @@ -52,7 +50,6 @@ public fun new_locked(): CoinManagement { distributor: option::none(), operator: option::none(), flow_limit: flow_limit::new(), - scaling: 0, // placeholder, this gets edited when a coin is registered. dust: 0, } } @@ -97,9 +94,9 @@ public(package) fun take_balance( self: &mut CoinManagement, to_take: Balance, clock: &Clock, -): u256 { +): u64 { self.flow_limit.add_flow_out(to_take.value(), clock); - let amount = (to_take.value() as u256) * self.scaling; + let amount = to_take.value(); if (has_capability(self)) { self.burn(to_take); } else { @@ -112,28 +109,18 @@ public(package) fun take_balance( /// previous transfers is added to the coin here. public(package) fun give_coin( self: &mut CoinManagement, - mut amount: u256, + amount: u64, clock: &Clock, ctx: &mut TxContext, ): Coin { - amount = amount + self.dust; - self.dust = amount % self.scaling; - let sui_amount = (amount / self.scaling as u64); - self.flow_limit.add_flow_in(sui_amount, clock); + self.flow_limit.add_flow_in(amount, clock); if (has_capability(self)) { - self.mint(sui_amount, ctx) + self.mint(amount, ctx) } else { - coin::take(self.balance.borrow_mut(), sui_amount, ctx) + coin::take(self.balance.borrow_mut(), amount, ctx) } } -public(package) fun set_scaling( - self: &mut CoinManagement, - scaling: u256, -) { - self.scaling = scaling; -} - // helper function to mint as a distributor. public(package) fun mint( self: &mut CoinManagement, @@ -214,10 +201,9 @@ fun test_give_coin() { let mut coin = cap.mint(amount1, ctx); let mut management1 = new_locked(); - management1.scaling = 1; let clock = sui::clock::create_for_testing(ctx); management1.take_balance(coin.into_balance(), &clock); - coin = management1.give_coin((amount1 as u256), &clock, ctx); + coin = management1.give_coin(amount1, &clock, ctx); assert!(management1.balance.borrow().value() == 0); assert!(coin.value() == amount1); @@ -225,8 +211,7 @@ fun test_give_coin() { sui::test_utils::destroy(coin); let mut management2 = new_with_cap(cap); - management2.scaling = 1; - coin = management2.give_coin((amount2 as u256), &clock, ctx); + coin = management2.give_coin(amount2, &clock, ctx); assert!(coin.value() == amount2); diff --git a/move/its/sources/types/token_id.move b/move/its/sources/types/token_id.move index b0542858..a2ebddd4 100644 --- a/move/its/sources/types/token_id.move +++ b/move/its/sources/types/token_id.move @@ -37,7 +37,6 @@ public fun from_info( name: &String, symbol: &ascii::String, decimals: &u8, - remote_decimals: &u8, has_metadata: &bool, has_treasury: &bool, ): TokenId { @@ -46,7 +45,6 @@ public fun from_info( vec.append(bcs::to_bytes(name)); vec.append(bcs::to_bytes(symbol)); vec.append(bcs::to_bytes(decimals)); - vec.append(bcs::to_bytes(remote_decimals)); vec.append(bcs::to_bytes(has_metadata)); vec.append(bcs::to_bytes(has_treasury)); TokenId { id: address::from_bytes(keccak256(&vec)) } @@ -60,7 +58,6 @@ public(package) fun from_coin_data( &coin_info.name(), &coin_info.symbol(), &coin_info.decimals(), - &coin_info.remote_decimals(), &option::is_some(coin_info.metadata()), &coin_management.has_capability(), ) @@ -92,12 +89,10 @@ fun test() { let name = string::utf8(b"Name"); let symbol = ascii::string(b"Symbol"); let decimals: u8 = 9; - let remote_decimals: u8 = 18; let coin_info = coin_info::from_info( name, symbol, decimals, - remote_decimals, ); let mut vec = address::from_u256(PREFIX_SUI_TOKEN_ID).to_bytes(); diff --git a/move/its/sources/versioned/its_v0.move b/move/its/sources/versioned/its_v0.move index 20f021da..be83fd93 100644 --- a/move/its/sources/versioned/its_v0.move +++ b/move/its/sources/versioned/its_v0.move @@ -1,6 +1,6 @@ module its::its_v0; -use abi::abi; +use abi::abi::{Self, AbiReader}; use axelar_gateway::channel::{Channel, ApprovedMessage}; use axelar_gateway::gateway; use axelar_gateway::message_ticket::MessageTicket; @@ -61,6 +61,8 @@ const EUnregisteredCoinHasUrl: vector = const EUntrustedChain: vector = b"the chain is not trusted"; #[error] const ENewerTicket: vector = b"cannot proccess newer tickets"; +#[error] +const EOverflow: vector = b"cannot receive more than 2^64-1 coins"; // === MESSAGE TYPES === const MESSAGE_TYPE_INTERCHAIN_TRANSFER: u256 = 0; @@ -77,9 +79,6 @@ const ITS_HUB_CHAIN_NAME: vector = b"axelar"; // For Sui this will probably be every supported chain. const ITS_HUB_ROUTING_IDENTIFIER: vector = b"hub"; -// === The maximum number of decimals allowed === -const DECIMALS_CAP: u8 = 9; - // ----- // Types // ----- @@ -286,7 +285,7 @@ public(package) fun send_interchain_transfer( .write_u256(token_id.to_u256()) .write_bytes(source_address.to_bytes()) .write_bytes(destination_address) - .write_u256(amount) + .write_u256((amount as u256)) .write_bytes(data); events::interchain_transfer( @@ -319,7 +318,7 @@ public(package) fun receive_interchain_transfer( let token_id = token_id::from_u256(reader.read_u256()); let source_address = reader.read_bytes(); let destination_address = address::from_bytes(reader.read_bytes()); - let amount = reader.read_u256(); + let amount = read_amount(&mut reader); let data = reader.read_bytes(); assert!(data.is_empty(), EInterchainTransferHasData); @@ -361,7 +360,7 @@ public(package) fun receive_interchain_transfer_with_data( let source_address = reader.read_bytes(); let destination_address = address::from_bytes(reader.read_bytes()); - let amount = reader.read_u256(); + let amount = read_amount(&mut reader); let data = reader.read_bytes(); assert!(destination_address == channel.to_address(), EWrongDestination); @@ -396,10 +395,8 @@ public(package) fun receive_deploy_interchain_token( let token_id = token_id::from_u256(reader.read_u256()); let name = string::utf8(reader.read_bytes()); let symbol = ascii::string(reader.read_bytes()); - let remote_decimals = (reader.read_u256() as u8); + let decimals = (reader.read_u256() as u8); let distributor_bytes = reader.read_bytes(); - let decimals = if (remote_decimals > DECIMALS_CAP) DECIMALS_CAP - else remote_decimals; let (treasury_cap, mut coin_metadata) = self.remove_unregistered_coin( token_id::unregistered_token_id(&symbol, decimals), ); @@ -407,7 +404,7 @@ public(package) fun receive_deploy_interchain_token( treasury_cap.update_name(&mut coin_metadata, name); let mut coin_management = coin_management::new_with_cap(treasury_cap); - let coin_info = coin_info::from_metadata(coin_metadata, remote_decimals); + let coin_info = coin_info::from_metadata(coin_metadata); if (distributor_bytes.length() > 0) { let distributor = address::from_bytes(distributor_bytes); @@ -589,10 +586,9 @@ fun add_registered_coin_type( fun add_registered_coin( self: &mut ITS_v0, token_id: TokenId, - mut coin_management: CoinManagement, + coin_management: CoinManagement, coin_info: CoinInfo, ) { - coin_management.set_scaling(coin_info.scaling()); self .registered_coins .add( @@ -680,6 +676,13 @@ fun decode_approved_message( (source_chain, payload, message_id) } + +fun read_amount(reader: &mut AbiReader): u64 { + let amount = std::macros::try_as_u64!(reader.read_u256()); + assert!(amount.is_some(), EOverflow); + amount.destroy_some() +} + // --------- // Test Only // --------- @@ -903,7 +906,6 @@ fun test_receive_interchain_transfer_invalid_message_type() { string::utf8(b"Name"), ascii::string(b"Symbol"), 10, - 12, ); let amount = 1234; @@ -953,7 +955,6 @@ fun test_receive_interchain_transfer_passed_data() { string::utf8(b"Name"), ascii::string(b"Symbol"), 10, - 12, ); let amount = 1234; @@ -1002,7 +1003,6 @@ fun test_receive_interchain_transfer_with_data_invalid_message_type() { string::utf8(b"Name"), ascii::string(b"Symbol"), 10, - 12, ); let amount = 1234; @@ -1062,7 +1062,6 @@ fun test_receive_interchain_transfer_with_data_wrong_destination() { string::utf8(b"Name"), ascii::string(b"Symbol"), 10, - 12, ); let amount = 1234; @@ -1122,7 +1121,6 @@ fun test_receive_interchain_transfer_with_data_no_data() { string::utf8(b"Name"), ascii::string(b"Symbol"), 10, - 12, ); let amount = 1234; @@ -1182,9 +1180,7 @@ fun test_receive_deploy_interchain_token_with_distributor() { let source_address = ascii::string(b"Address"); let name = b"Token Name"; let symbol = b"Symbol"; - let remote_decimals = 8; - let decimals = if (remote_decimals > DECIMALS_CAP) DECIMALS_CAP - else remote_decimals; + let decimals = 9; let token_id: u256 = 1234; let distributor = @0x1; @@ -1196,7 +1192,7 @@ fun test_receive_deploy_interchain_token_with_distributor() { .write_u256(token_id) .write_bytes(name) .write_bytes(symbol) - .write_u256((remote_decimals as u256)) + .write_u256((decimals as u256)) .write_bytes(distributor.to_bytes()); let payload = writer.into_bytes(); @@ -1226,9 +1222,7 @@ fun test_receive_deploy_interchain_token_invalid_message_type() { let source_address = ascii::string(b"Address"); let name = b"Token Name"; let symbol = b"Symbol"; - let remote_decimals = 8; - let decimals = if (remote_decimals > DECIMALS_CAP) DECIMALS_CAP - else remote_decimals; + let decimals = 9; let token_id: u256 = 1234; self.create_unregistered_coin(symbol, decimals, ctx); @@ -1239,7 +1233,7 @@ fun test_receive_deploy_interchain_token_invalid_message_type() { .write_u256(token_id) .write_bytes(name) .write_bytes(symbol) - .write_u256((remote_decimals as u256)) + .write_u256((decimals as u256)) .write_bytes(b""); let payload = writer.into_bytes(); @@ -1290,7 +1284,6 @@ fun test_burn_as_distributor_not_distributor() { let mut self = create_for_testing(ctx); let symbol = b"COIN"; let decimals = 9; - let remote_decimals = 18; let amount = 1234; let ( @@ -1300,7 +1293,6 @@ fun test_burn_as_distributor_not_distributor() { let coin = treasury_cap.mint(amount, ctx); let coin_info = its::coin_info::from_metadata( coin_metadata, - remote_decimals, ); let mut coin_management = its::coin_management::new_with_cap(treasury_cap); @@ -1360,7 +1352,6 @@ fun test_mint_as_distributor_not_distributor() { let mut self = create_for_testing(ctx); let symbol = b"COIN"; let decimals = 9; - let remote_decimals = 18; let (treasury_cap, coin_metadata) = its::coin::create_treasury_and_metadata( symbol, @@ -1369,7 +1360,6 @@ fun test_mint_as_distributor_not_distributor() { ); let coin_info = its::coin_info::from_metadata( coin_metadata, - remote_decimals, ); let mut coin_management = its::coin_management::new_with_cap(treasury_cap); diff --git a/move/squid/sources/squid/squid.move b/move/squid/sources/squid/squid.move index ea14f819..632104df 100644 --- a/move/squid/sources/squid/squid.move +++ b/move/squid/sources/squid/squid.move @@ -148,7 +148,6 @@ fun test_start_swap() { std::string::utf8(b"Name"), std::ascii::string(b"Symbol"), 10, - 12, ); let amount = 1234; diff --git a/move/squid/sources/squid/versioned/squid_v0.move b/move/squid/sources/squid/versioned/squid_v0.move index 26a30181..24b9e6d4 100644 --- a/move/squid/sources/squid/versioned/squid_v0.move +++ b/move/squid/sources/squid/versioned/squid_v0.move @@ -92,7 +92,6 @@ fun test_start_swap() { std::string::utf8(b"Name"), std::ascii::string(b"Symbol"), 10, - 12, ); let amount = 1234; diff --git a/test/squid.js b/test/squid.js index 95343466..fa234023 100644 --- a/test/squid.js +++ b/test/squid.js @@ -258,7 +258,7 @@ describe('Squid', () => { const coinInfo = await builder.moveCall({ target: `${deployments.its.packageId}::coin_info::from_metadata`, - arguments: [coins[coin].coinMetadata, 9], + arguments: [coins[coin].coinMetadata], typeArguments: [coins[coin].type], }); const coinManagment = await builder.moveCall({ diff --git a/test/testdata/interface_its_coin_info.json b/test/testdata/interface_its_coin_info.json index 2478d0b9..4a25348c 100644 --- a/test/testdata/interface_its_coin_info.json +++ b/test/testdata/interface_its_coin_info.json @@ -7,8 +7,7 @@ "params": { "name#0#0": "String", "symbol#0#0": "String", - "decimals#0#0": "u8", - "remote_decimals#0#0": "u8" + "decimals#0#0": "u8" }, "returnType": "CoinInfo" }, @@ -16,8 +15,7 @@ "name": "from_metadata", "visibility": "public", "params": { - "metadata#0#0": "CoinMetadata", - "remote_decimals#0#0": "u8" + "metadata#0#0": "CoinMetadata" }, "returnType": "CoinInfo" }, @@ -45,22 +43,6 @@ }, "returnType": "u8" }, - "remote_decimals": { - "name": "remote_decimals", - "visibility": "public", - "params": { - "self#0#0": "&CoinInfo" - }, - "returnType": "u8" - }, - "scaling": { - "name": "scaling", - "visibility": "public", - "params": { - "self#0#0": "&CoinInfo" - }, - "returnType": "u256" - }, "metadata": { "name": "metadata", "visibility": "public", diff --git a/test/testdata/interface_its_token_id.json b/test/testdata/interface_its_token_id.json index 00559662..4c92bbc9 100644 --- a/test/testdata/interface_its_token_id.json +++ b/test/testdata/interface_its_token_id.json @@ -61,7 +61,6 @@ "name#0#0": "&String", "symbol#0#0": "&String", "decimals#0#0": "&u8", - "remote_decimals#0#0": "&u8", "has_metadata#0#0": "&bool", "has_treasury#0#0": "&bool" },