--- a/crates/evm-coder/src/lib.rs +++ b/crates/evm-coder/src/lib.rs @@ -132,7 +132,6 @@ use primitive_types::{U256, H160, H256}; pub type address = H160; - pub type uint256 = U256; pub type bytes4 = [u8; 4]; pub type topic = H256; --- a/pallets/common/src/eth.rs +++ b/pallets/common/src/eth.rs @@ -18,12 +18,9 @@ use alloc::format; use sp_std::{vec, vec::Vec}; -use evm_coder::{ - AbiCoder, - types::{uint256, address}, -}; +use evm_coder::{AbiCoder, types::address}; pub use pallet_evm::{Config, account::CrossAccountId}; -use sp_core::H160; +use sp_core::{H160, U256}; use up_data_structs::CollectionId; // 0x17c4e6453Cc49AAAaEACA894e6D9683e00000001 - collection 1 @@ -55,8 +52,8 @@ address[0..16] == ETH_COLLECTION_PREFIX } -/// Convert `uint256` to `CrossAccountId`. -pub fn convert_uint256_to_cross_account(from: uint256) -> T::CrossAccountId +/// Convert `U256` to `CrossAccountId`. +pub fn convert_uint256_to_cross_account(from: U256) -> T::CrossAccountId where T::AccountId: From<[u8; 32]>, { @@ -70,7 +67,7 @@ #[derive(Debug, Default, AbiCoder)] pub struct CrossAddress { pub(crate) eth: address, - pub(crate) sub: uint256, + pub(crate) sub: U256, } impl CrossAddress { @@ -97,7 +94,7 @@ { Self { eth: Default::default(), - sub: uint256::from_big_endian(account_id.as_ref()), + sub: U256::from_big_endian(account_id.as_ref()), } } /// Converts [`CrossAddress`] to `CrossAccountId`. @@ -187,7 +184,7 @@ #[derive(Debug, Default, AbiCoder)] pub struct CollectionLimit { field: CollectionLimitField, - value: Option, + value: Option, } impl CollectionLimit { @@ -393,12 +390,12 @@ #[derive(Debug, Default, AbiCoder)] pub struct CollectionNesting { token_owner: bool, - ids: Vec, + ids: Vec, } impl CollectionNesting { /// Create [`CollectionNesting`]. - pub fn new(token_owner: bool, ids: Vec) -> Self { + pub fn new(token_owner: bool, ids: Vec) -> Self { Self { token_owner, ids } } } --- a/pallets/evm-contract-helpers/src/eth.rs +++ b/pallets/evm-contract-helpers/src/eth.rs @@ -261,7 +261,7 @@ &mut self, caller: caller, contract_address: address, - fee_limit: uint256, + fee_limit: U256, ) -> Result<()> { self.recorder().consume_sload()?; self.recorder().consume_sstore()?; @@ -276,7 +276,7 @@ /// @param contractAddress Contract to get sponsoring fee limit of /// @return uint256 Maximum amount of fee that could be spent by single /// transaction - fn sponsoring_fee_limit(&self, contract_address: address) -> Result { + fn sponsoring_fee_limit(&self, contract_address: address) -> Result { self.recorder().consume_sload()?; Ok(get_sponsoring_fee_limit::(contract_address)) @@ -441,7 +441,7 @@ } } -fn get_sponsoring_fee_limit(contract_address: address) -> uint256 { +fn get_sponsoring_fee_limit(contract_address: address) -> U256 { >::get(contract_address) .get(&0xffffffff) .cloned() --- a/pallets/fungible/src/erc.rs +++ b/pallets/fungible/src/erc.rs @@ -32,7 +32,7 @@ use pallet_evm::{account::CrossAccountId, PrecompileHandle}; use pallet_evm_coder_substrate::{call, dispatch_to_evm}; use pallet_structure::{SelfWeightOf as StructureWeight, weights::WeightInfo as _}; -use sp_core::Get; +use sp_core::{U256, Get}; use crate::{ Allowance, Balance, Config, FungibleHandle, Pallet, SelfWeightOf, TotalSupply, @@ -46,14 +46,14 @@ from: address, #[indexed] to: address, - value: uint256, + value: U256, }, Approval { #[indexed] owner: address, #[indexed] spender: address, - value: uint256, + value: U256, }, } @@ -67,7 +67,7 @@ fn symbol(&self) -> Result { Ok(string::from_utf8_lossy(&self.token_prefix).into()) } - fn total_supply(&self) -> Result { + fn total_supply(&self) -> Result { self.consume_store_reads(1)?; Ok(>::get(self.id).into()) } @@ -79,14 +79,14 @@ unreachable!() }) } - fn balance_of(&self, owner: address) -> Result { + fn balance_of(&self, owner: address) -> Result { self.consume_store_reads(1)?; let owner = T::CrossAccountId::from_eth(owner); let balance = >::get((self.id, owner)); Ok(balance.into()) } #[weight(>::transfer())] - fn transfer(&mut self, caller: caller, to: address, amount: uint256) -> Result { + fn transfer(&mut self, caller: caller, to: address, amount: U256) -> Result { let caller = T::CrossAccountId::from_eth(caller); let to = T::CrossAccountId::from_eth(to); let amount = amount.try_into().map_err(|_| "amount overflow")?; @@ -104,7 +104,7 @@ caller: caller, from: address, to: address, - amount: uint256, + amount: U256, ) -> Result { let caller = T::CrossAccountId::from_eth(caller); let from = T::CrossAccountId::from_eth(from); @@ -119,7 +119,7 @@ Ok(true) } #[weight(>::approve())] - fn approve(&mut self, caller: caller, spender: address, amount: uint256) -> Result { + fn approve(&mut self, caller: caller, spender: address, amount: U256) -> Result { let caller = T::CrossAccountId::from_eth(caller); let spender = T::CrossAccountId::from_eth(spender); let amount = amount.try_into().map_err(|_| "amount overflow")?; @@ -128,7 +128,7 @@ .map_err(dispatch_to_evm::)?; Ok(true) } - fn allowance(&self, owner: address, spender: address) -> Result { + fn allowance(&self, owner: address, spender: address) -> Result { self.consume_store_reads(1)?; let owner = T::CrossAccountId::from_eth(owner); let spender = T::CrossAccountId::from_eth(spender); @@ -148,7 +148,7 @@ /// @param to account that will receive minted tokens /// @param amount amount of tokens to mint #[weight(>::create_item())] - fn mint(&mut self, caller: caller, to: address, amount: uint256) -> Result { + fn mint(&mut self, caller: caller, to: address, amount: U256) -> Result { let caller = T::CrossAccountId::from_eth(caller); let to = T::CrossAccountId::from_eth(to); let amount = amount.try_into().map_err(|_| "amount overflow")?; @@ -178,7 +178,7 @@ &mut self, caller: caller, to: pallet_common::eth::CrossAddress, - amount: uint256, + amount: U256, ) -> Result { let caller = T::CrossAccountId::from_eth(caller); let to = to.into_sub_cross_account::()?; @@ -196,7 +196,7 @@ &mut self, caller: caller, spender: pallet_common::eth::CrossAddress, - amount: uint256, + amount: U256, ) -> Result { let caller = T::CrossAccountId::from_eth(caller); let spender = spender.into_sub_cross_account::()?; @@ -214,7 +214,7 @@ /// @param amount The amount that will be burnt. #[solidity(hide)] #[weight(>::burn_from())] - fn burn_from(&mut self, caller: caller, from: address, amount: uint256) -> Result { + fn burn_from(&mut self, caller: caller, from: address, amount: U256) -> Result { let caller = T::CrossAccountId::from_eth(caller); let from = T::CrossAccountId::from_eth(from); let amount = amount.try_into().map_err(|_| "amount overflow")?; @@ -237,7 +237,7 @@ &mut self, caller: caller, from: pallet_common::eth::CrossAddress, - amount: uint256, + amount: U256, ) -> Result { let caller = T::CrossAccountId::from_eth(caller); let from = from.into_sub_cross_account::()?; @@ -254,7 +254,7 @@ /// Mint tokens for multiple accounts. /// @param amounts array of pairs of account address and amount #[weight(>::create_multiple_items_ex(amounts.len() as u32))] - fn mint_bulk(&mut self, caller: caller, amounts: Vec<(address, uint256)>) -> Result { + fn mint_bulk(&mut self, caller: caller, amounts: Vec<(address, U256)>) -> Result { let caller = T::CrossAccountId::from_eth(caller); let budget = self .recorder @@ -279,7 +279,7 @@ &mut self, caller: caller, to: pallet_common::eth::CrossAddress, - amount: uint256, + amount: U256, ) -> Result { let caller = T::CrossAccountId::from_eth(caller); let to = to.into_sub_cross_account::()?; @@ -298,7 +298,7 @@ caller: caller, from: pallet_common::eth::CrossAddress, to: pallet_common::eth::CrossAddress, - amount: uint256, + amount: U256, ) -> Result { let caller = T::CrossAccountId::from_eth(caller); let from = from.into_sub_cross_account::()?; --- a/pallets/nonfungible/src/erc.rs +++ b/pallets/nonfungible/src/erc.rs @@ -43,7 +43,7 @@ use pallet_evm::{account::CrossAccountId, PrecompileHandle}; use pallet_evm_coder_substrate::call; use pallet_structure::{SelfWeightOf as StructureWeight, weights::WeightInfo as _}; -use sp_core::Get; +use sp_core::{U256, Get}; use crate::{ AccountBalance, Config, CreateItemData, NonfungibleHandle, Pallet, TokenData, TokensMinted, @@ -122,7 +122,7 @@ fn set_property( &mut self, caller: caller, - token_id: uint256, + token_id: U256, key: string, value: bytes, ) -> Result<()> { @@ -155,7 +155,7 @@ fn set_properties( &mut self, caller: caller, - token_id: uint256, + token_id: U256, properties: Vec, ) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); @@ -187,7 +187,7 @@ /// @param key Property key. #[solidity(hide)] #[weight(>::delete_token_properties(1))] - fn delete_property(&mut self, token_id: uint256, caller: caller, key: string) -> Result<()> { + fn delete_property(&mut self, token_id: U256, caller: caller, key: string) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let token_id: u32 = token_id.try_into().map_err(|_| "token id overflow")?; let key = >::from(key) @@ -209,7 +209,7 @@ #[weight(>::delete_token_properties(keys.len() as u32))] fn delete_properties( &mut self, - token_id: uint256, + token_id: U256, caller: caller, keys: Vec, ) -> Result<()> { @@ -239,7 +239,7 @@ /// @param tokenId ID of the token. /// @param key Property key. /// @return Property value bytes - fn property(&self, token_id: uint256, key: string) -> Result { + fn property(&self, token_id: U256, key: string) -> Result { let token_id: u32 = token_id.try_into().map_err(|_| "token id overflow")?; let key = >::from(key) .try_into() @@ -265,7 +265,7 @@ #[indexed] to: address, #[indexed] - token_id: uint256, + token_id: U256, }, /// @dev This emits when the approved address for an NFT is changed or /// reaffirmed. The zero address indicates there is no approved address. @@ -277,7 +277,7 @@ #[indexed] approved: address, #[indexed] - token_id: uint256, + token_id: U256, }, /// @dev This emits when an operator is enabled or disabled for an owner. /// The operator can manage all NFTs of the owner. @@ -322,7 +322,7 @@ /// /// @return token's const_metadata #[solidity(rename_selector = "tokenURI")] - fn token_uri(&self, token_id: uint256) -> Result { + fn token_uri(&self, token_id: U256) -> Result { let token_id_u32: u32 = token_id.try_into().map_err(|_| "token id overflow")?; match get_token_property(self, token_id_u32, &key::url()).as_deref() { @@ -368,12 +368,12 @@ /// @param index A counter less than `totalSupply()` /// @return The token identifier for the `index`th NFT, /// (sort order not specified) - fn token_by_index(&self, index: uint256) -> Result { + fn token_by_index(&self, index: U256) -> Result { Ok(index) } /// @dev Not implemented - fn token_of_owner_by_index(&self, _owner: address, _index: uint256) -> Result { + fn token_of_owner_by_index(&self, _owner: address, _index: U256) -> Result { // TODO: Not implemetable Err("not implemented".into()) } @@ -381,7 +381,7 @@ /// @notice Count NFTs tracked by this contract /// @return A count of valid NFTs tracked by this contract, where each one of /// them has an assigned and queryable owner not equal to the zero address - fn total_supply(&self) -> Result { + fn total_supply(&self) -> Result { self.consume_store_reads(1)?; Ok(>::total_supply(self).into()) } @@ -396,7 +396,7 @@ /// function throws for queries about the zero address. /// @param owner An address for whom to query the balance /// @return The number of NFTs owned by `owner`, possibly zero - fn balance_of(&self, owner: address) -> Result { + fn balance_of(&self, owner: address) -> Result { self.consume_store_reads(1)?; let owner = T::CrossAccountId::from_eth(owner); let balance = >::get((self.id, owner)); @@ -407,7 +407,7 @@ /// about them do throw. /// @param tokenId The identifier for an NFT /// @return The address of the owner of the NFT - fn owner_of(&self, token_id: uint256) -> Result
{ + fn owner_of(&self, token_id: U256) -> Result
{ self.consume_store_reads(1)?; let token: TokenId = token_id.try_into()?; Ok(*>::get((self.id, token)) @@ -421,19 +421,14 @@ &mut self, _from: address, _to: address, - _token_id: uint256, + _token_id: U256, _data: bytes, ) -> Result<()> { // TODO: Not implemetable Err("not implemented".into()) } /// @dev Not implemented - fn safe_transfer_from( - &mut self, - _from: address, - _to: address, - _token_id: uint256, - ) -> Result<()> { + fn safe_transfer_from(&mut self, _from: address, _to: address, _token_id: U256) -> Result<()> { // TODO: Not implemetable Err("not implemented".into()) } @@ -453,7 +448,7 @@ caller: caller, from: address, to: address, - token_id: uint256, + token_id: U256, ) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let from = T::CrossAccountId::from_eth(from); @@ -475,7 +470,7 @@ /// @param approved The new approved NFT controller /// @param tokenId The NFT to approve #[weight(>::approve())] - fn approve(&mut self, caller: caller, approved: address, token_id: uint256) -> Result<()> { + fn approve(&mut self, caller: caller, approved: address, token_id: U256) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let approved = T::CrossAccountId::from_eth(approved); let token = token_id.try_into()?; @@ -505,7 +500,7 @@ } /// @dev Not implemented - fn get_approved(&self, _token_id: uint256) -> Result
{ + fn get_approved(&self, _token_id: U256) -> Result
{ // TODO: Not implemetable Err("not implemented".into()) } @@ -528,7 +523,7 @@ /// operator of the current owner. /// @param tokenId The NFT to approve #[weight(>::burn_item())] - fn burn(&mut self, caller: caller, token_id: uint256) -> Result<()> { + fn burn(&mut self, caller: caller, token_id: U256) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let token = token_id.try_into()?; @@ -544,8 +539,8 @@ /// @param to The new owner /// @return uint256 The id of the newly minted token #[weight(>::create_item())] - fn mint(&mut self, caller: caller, to: address) -> Result { - let token_id: uint256 = >::get(self.id) + fn mint(&mut self, caller: caller, to: address) -> Result { + let token_id: U256 = >::get(self.id) .checked_add(1) .ok_or("item id overflow")? .into(); @@ -560,7 +555,7 @@ /// @param tokenId ID of the minted NFT #[solidity(hide, rename_selector = "mint")] #[weight(>::create_item())] - fn mint_check_id(&mut self, caller: caller, to: address, token_id: uint256) -> Result { + fn mint_check_id(&mut self, caller: caller, to: address, token_id: U256) -> Result { let caller = T::CrossAccountId::from_eth(caller); let to = T::CrossAccountId::from_eth(to); let token_id: u32 = token_id.try_into()?; @@ -601,8 +596,8 @@ caller: caller, to: address, token_uri: string, - ) -> Result { - let token_id: uint256 = >::get(self.id) + ) -> Result { + let token_id: U256 = >::get(self.id) .checked_add(1) .ok_or("item id overflow")? .into(); @@ -622,7 +617,7 @@ &mut self, caller: caller, to: address, - token_id: uint256, + token_id: U256, token_uri: string, ) -> Result { let key = key::url(); @@ -730,7 +725,7 @@ /// Returns the owner (in cross format) of the token. /// /// @param tokenId Id for the token. - fn cross_owner_of(&self, token_id: uint256) -> Result { + fn cross_owner_of(&self, token_id: U256) -> Result { Self::token_owner(&self, token_id.try_into()?) .map(|o| eth::CrossAddress::from_sub_cross_account::(&o)) .ok_or(Error::Revert("key too large".into())) @@ -741,7 +736,7 @@ /// @param tokenId Id for the token. /// @param keys Properties keys. Empty keys for all propertyes. /// @return Vector of properties key/value pairs. - fn properties(&self, token_id: uint256, keys: Vec) -> Result> { + fn properties(&self, token_id: U256, keys: Vec) -> Result> { let keys = keys .into_iter() .map(|key| { @@ -772,7 +767,7 @@ &mut self, caller: caller, approved: eth::CrossAddress, - token_id: uint256, + token_id: U256, ) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let approved = approved.into_sub_cross_account::()?; @@ -789,7 +784,7 @@ /// @param to The new owner /// @param tokenId The NFT to transfer #[weight(>::transfer())] - fn transfer(&mut self, caller: caller, to: address, token_id: uint256) -> Result<()> { + fn transfer(&mut self, caller: caller, to: address, token_id: U256) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let to = T::CrossAccountId::from_eth(to); let token = token_id.try_into()?; @@ -811,7 +806,7 @@ &mut self, caller: caller, to: eth::CrossAddress, - token_id: uint256, + token_id: U256, ) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let to = to.into_sub_cross_account::()?; @@ -836,7 +831,7 @@ caller: caller, from: eth::CrossAddress, to: eth::CrossAddress, - token_id: uint256, + token_id: U256, ) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let from = from.into_sub_cross_account::()?; @@ -858,7 +853,7 @@ /// @param tokenId The NFT to transfer #[solidity(hide)] #[weight(>::burn_from())] - fn burn_from(&mut self, caller: caller, from: address, token_id: uint256) -> Result<()> { + fn burn_from(&mut self, caller: caller, from: address, token_id: U256) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let from = T::CrossAccountId::from_eth(from); let token = token_id.try_into()?; @@ -882,7 +877,7 @@ &mut self, caller: caller, from: eth::CrossAddress, - token_id: uint256, + token_id: U256, ) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let from = from.into_sub_cross_account::()?; @@ -897,7 +892,7 @@ } /// @notice Returns next free NFT ID. - fn next_token_id(&self) -> Result { + fn next_token_id(&self) -> Result { self.consume_store_reads(1)?; Ok(>::get(self.id) .checked_add(1) @@ -912,7 +907,7 @@ /// @param tokenIds IDs of the minted NFTs #[solidity(hide)] #[weight(>::create_multiple_items(token_ids.len() as u32))] - fn mint_bulk(&mut self, caller: caller, to: address, token_ids: Vec) -> Result { + fn mint_bulk(&mut self, caller: caller, to: address, token_ids: Vec) -> Result { let caller = T::CrossAccountId::from_eth(caller); let to = T::CrossAccountId::from_eth(to); let mut expected_index = >::get(self.id) @@ -953,7 +948,7 @@ &mut self, caller: caller, to: address, - tokens: Vec<(uint256, string)>, + tokens: Vec<(U256, string)>, ) -> Result { let key = key::url(); let caller = T::CrossAccountId::from_eth(caller); @@ -1005,7 +1000,7 @@ caller: caller, to: eth::CrossAddress, properties: Vec, - ) -> Result { + ) -> Result { let token_id = >::get(self.id) .checked_add(1) .ok_or("item id overflow")?; --- a/pallets/refungible/src/erc.rs +++ b/pallets/refungible/src/erc.rs @@ -39,7 +39,7 @@ use pallet_evm::{account::CrossAccountId, PrecompileHandle}; use pallet_evm_coder_substrate::{call, dispatch_to_evm}; use pallet_structure::{SelfWeightOf as StructureWeight, weights::WeightInfo as _}; -use sp_core::{H160, Get}; +use sp_core::{H160, U256, Get}; use sp_std::{collections::btree_map::BTreeMap, vec::Vec, vec}; use up_data_structs::{ CollectionId, CollectionPropertiesVec, mapping::TokenAddressMapping, Property, PropertyKey, @@ -125,7 +125,7 @@ fn set_property( &mut self, caller: caller, - token_id: uint256, + token_id: U256, key: string, value: bytes, ) -> Result<()> { @@ -158,7 +158,7 @@ fn set_properties( &mut self, caller: caller, - token_id: uint256, + token_id: U256, properties: Vec, ) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); @@ -190,7 +190,7 @@ /// @param key Property key. #[solidity(hide)] #[weight(>::delete_token_properties(1))] - fn delete_property(&mut self, token_id: uint256, caller: caller, key: string) -> Result<()> { + fn delete_property(&mut self, token_id: U256, caller: caller, key: string) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let token_id: u32 = token_id.try_into().map_err(|_| "token id overflow")?; let key = >::from(key) @@ -212,7 +212,7 @@ #[weight(>::delete_token_properties(keys.len() as u32))] fn delete_properties( &mut self, - token_id: uint256, + token_id: U256, caller: caller, keys: Vec, ) -> Result<()> { @@ -242,7 +242,7 @@ /// @param tokenId ID of the token. /// @param key Property key. /// @return Property value bytes - fn property(&self, token_id: uint256, key: string) -> Result { + fn property(&self, token_id: U256, key: string) -> Result { let token_id: u32 = token_id.try_into().map_err(|_| "token id overflow")?; let key = >::from(key) .try_into() @@ -266,7 +266,7 @@ #[indexed] to: address, #[indexed] - token_id: uint256, + token_id: U256, }, /// @dev Not supported Approval { @@ -275,7 +275,7 @@ #[indexed] approved: address, #[indexed] - token_id: uint256, + token_id: U256, }, /// @dev Not supported #[allow(dead_code)] @@ -319,7 +319,7 @@ /// /// @return token's const_metadata #[solidity(rename_selector = "tokenURI")] - fn token_uri(&self, token_id: uint256) -> Result { + fn token_uri(&self, token_id: U256) -> Result { let token_id_u32: u32 = token_id.try_into().map_err(|_| "token id overflow")?; match get_token_property(self, token_id_u32, &key::url()).as_deref() { @@ -365,12 +365,12 @@ /// @param index A counter less than `totalSupply()` /// @return The token identifier for the `index`th NFT, /// (sort order not specified) - fn token_by_index(&self, index: uint256) -> Result { + fn token_by_index(&self, index: U256) -> Result { Ok(index) } /// Not implemented - fn token_of_owner_by_index(&self, _owner: address, _index: uint256) -> Result { + fn token_of_owner_by_index(&self, _owner: address, _index: U256) -> Result { // TODO: Not implemetable Err("not implemented".into()) } @@ -378,7 +378,7 @@ /// @notice Count RFTs tracked by this contract /// @return A count of valid RFTs tracked by this contract, where each one of /// them has an assigned and queryable owner not equal to the zero address - fn total_supply(&self) -> Result { + fn total_supply(&self) -> Result { self.consume_store_reads(1)?; Ok(>::total_supply(self).into()) } @@ -393,7 +393,7 @@ /// function throws for queries about the zero address. /// @param owner An address for whom to query the balance /// @return The number of RFTs owned by `owner`, possibly zero - fn balance_of(&self, owner: address) -> Result { + fn balance_of(&self, owner: address) -> Result { self.consume_store_reads(1)?; let owner = T::CrossAccountId::from_eth(owner); let balance = >::get((self.id, owner)); @@ -407,7 +407,7 @@ /// the tokens that are partially owned. /// @param tokenId The identifier for an RFT /// @return The address of the owner of the RFT - fn owner_of(&self, token_id: uint256) -> Result
{ + fn owner_of(&self, token_id: U256) -> Result
{ self.consume_store_reads(2)?; let token = token_id.try_into()?; let owner = >::token_owner(self.id, token); @@ -422,7 +422,7 @@ &mut self, _from: address, _to: address, - _token_id: uint256, + _token_id: U256, _data: bytes, ) -> Result<()> { // TODO: Not implemetable @@ -431,12 +431,7 @@ /// @dev Not implemented #[solidity(rename_selector = "safeTransferFrom")] - fn safe_transfer_from( - &mut self, - _from: address, - _to: address, - _token_id: uint256, - ) -> Result<()> { + fn safe_transfer_from(&mut self, _from: address, _to: address, _token_id: U256) -> Result<()> { // TODO: Not implemetable Err("not implemented".into()) } @@ -457,7 +452,7 @@ caller: caller, from: address, to: address, - token_id: uint256, + token_id: U256, ) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let from = T::CrossAccountId::from_eth(from); @@ -477,7 +472,7 @@ } /// @dev Not implemented - fn approve(&mut self, _caller: caller, _approved: address, _token_id: uint256) -> Result<()> { + fn approve(&mut self, _caller: caller, _approved: address, _token_id: U256) -> Result<()> { Err("not implemented".into()) } @@ -501,7 +496,7 @@ } /// @dev Not implemented - fn get_approved(&self, _token_id: uint256) -> Result
{ + fn get_approved(&self, _token_id: U256) -> Result
{ // TODO: Not implemetable Err("not implemented".into()) } @@ -556,7 +551,7 @@ /// operator of the current owner. /// @param tokenId The RFT to approve #[weight(>::burn_item_fully())] - fn burn(&mut self, caller: caller, token_id: uint256) -> Result<()> { + fn burn(&mut self, caller: caller, token_id: U256) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let token = token_id.try_into()?; @@ -575,8 +570,8 @@ /// @param to The new owner /// @return uint256 The id of the newly minted token #[weight(>::create_item())] - fn mint(&mut self, caller: caller, to: address) -> Result { - let token_id: uint256 = >::get(self.id) + fn mint(&mut self, caller: caller, to: address) -> Result { + let token_id: U256 = >::get(self.id) .checked_add(1) .ok_or("item id overflow")? .into(); @@ -591,7 +586,7 @@ /// @param tokenId ID of the minted RFT #[solidity(hide, rename_selector = "mint")] #[weight(>::create_item())] - fn mint_check_id(&mut self, caller: caller, to: address, token_id: uint256) -> Result { + fn mint_check_id(&mut self, caller: caller, to: address, token_id: U256) -> Result { let caller = T::CrossAccountId::from_eth(caller); let to = T::CrossAccountId::from_eth(to); let token_id: u32 = token_id.try_into()?; @@ -637,8 +632,8 @@ caller: caller, to: address, token_uri: string, - ) -> Result { - let token_id: uint256 = >::get(self.id) + ) -> Result { + let token_id: U256 = >::get(self.id) .checked_add(1) .ok_or("item id overflow")? .into(); @@ -658,7 +653,7 @@ &mut self, caller: caller, to: address, - token_id: uint256, + token_id: U256, token_uri: string, ) -> Result { let key = key::url(); @@ -768,7 +763,7 @@ /// Returns the owner (in cross format) of the token. /// /// @param tokenId Id for the token. - fn cross_owner_of(&self, token_id: uint256) -> Result { + fn cross_owner_of(&self, token_id: U256) -> Result { Self::token_owner(&self, token_id.try_into()?) .map(|o| eth::CrossAddress::from_sub_cross_account::(&o)) .ok_or(Error::Revert("key too large".into())) @@ -779,7 +774,7 @@ /// @param tokenId Id for the token. /// @param keys Properties keys. Empty keys for all propertyes. /// @return Vector of properties key/value pairs. - fn properties(&self, token_id: uint256, keys: Vec) -> Result> { + fn properties(&self, token_id: U256, keys: Vec) -> Result> { let keys = keys .into_iter() .map(|key| { @@ -805,7 +800,7 @@ /// @param to The new owner /// @param tokenId The RFT to transfer #[weight(>::transfer_creating_removing())] - fn transfer(&mut self, caller: caller, to: address, token_id: uint256) -> Result<()> { + fn transfer(&mut self, caller: caller, to: address, token_id: U256) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let to = T::CrossAccountId::from_eth(to); let token = token_id.try_into()?; @@ -832,7 +827,7 @@ &mut self, caller: caller, to: eth::CrossAddress, - token_id: uint256, + token_id: U256, ) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let to = to.into_sub_cross_account::()?; @@ -861,7 +856,7 @@ caller: caller, from: eth::CrossAddress, to: eth::CrossAddress, - token_id: uint256, + token_id: U256, ) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let from = from.into_sub_cross_account::()?; @@ -888,7 +883,7 @@ /// @param tokenId The RFT to transfer #[solidity(hide)] #[weight(>::burn_from())] - fn burn_from(&mut self, caller: caller, from: address, token_id: uint256) -> Result<()> { + fn burn_from(&mut self, caller: caller, from: address, token_id: U256) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let from = T::CrossAccountId::from_eth(from); let token = token_id.try_into()?; @@ -916,7 +911,7 @@ &mut self, caller: caller, from: eth::CrossAddress, - token_id: uint256, + token_id: U256, ) -> Result<()> { let caller = T::CrossAccountId::from_eth(caller); let from = from.into_sub_cross_account::()?; @@ -934,7 +929,7 @@ } /// @notice Returns next free RFT ID. - fn next_token_id(&self) -> Result { + fn next_token_id(&self) -> Result { self.consume_store_reads(1)?; Ok(>::get(self.id) .checked_add(1) @@ -949,7 +944,7 @@ /// @param tokenIds IDs of the minted RFTs #[solidity(hide)] #[weight(>::create_multiple_items(token_ids.len() as u32))] - fn mint_bulk(&mut self, caller: caller, to: address, token_ids: Vec) -> Result { + fn mint_bulk(&mut self, caller: caller, to: address, token_ids: Vec) -> Result { let caller = T::CrossAccountId::from_eth(caller); let to = T::CrossAccountId::from_eth(to); let mut expected_index = >::get(self.id) @@ -996,7 +991,7 @@ &mut self, caller: caller, to: address, - tokens: Vec<(uint256, string)>, + tokens: Vec<(U256, string)>, ) -> Result { let key = key::url(); let caller = T::CrossAccountId::from_eth(caller); @@ -1054,7 +1049,7 @@ caller: caller, to: eth::CrossAddress, properties: Vec, - ) -> Result { + ) -> Result { let token_id = >::get(self.id) .checked_add(1) .ok_or("item id overflow")?; @@ -1093,7 +1088,7 @@ /// Returns EVM address for refungible token /// /// @param token ID of the token - fn token_contract_address(&self, token: uint256) -> Result
{ + fn token_contract_address(&self, token: U256) -> Result
{ Ok(T::EvmTokenAddressMapping::token_to_address( self.id, token.try_into().map_err(|_| "token id overflow")?, --- a/pallets/refungible/src/erc_token.rs +++ b/pallets/refungible/src/erc_token.rs @@ -37,6 +37,7 @@ use pallet_evm_coder_substrate::{call, dispatch_to_evm, WithRecorder}; use pallet_structure::{SelfWeightOf as StructureWeight, weights::WeightInfo as _}; use sp_std::vec::Vec; +use sp_core::U256; use up_data_structs::TokenId; use crate::{ @@ -55,7 +56,7 @@ Ok(collection_id_to_address(self.id)) } - fn parent_token_id(&self) -> Result { + fn parent_token_id(&self) -> Result { Ok(self.1.into()) } } @@ -71,7 +72,7 @@ from: address, #[indexed] to: address, - value: uint256, + value: U256, }, /// @dev This event is emitted when the amount of tokens (value) is approved /// by the owner to be used by the spender. @@ -80,7 +81,7 @@ owner: address, #[indexed] spender: address, - value: uint256, + value: U256, }, } @@ -103,7 +104,7 @@ } /// @dev Total number of tokens in existence - fn total_supply(&self) -> Result { + fn total_supply(&self) -> Result { self.consume_store_reads(1)?; Ok(>::get((self.id, self.1)).into()) } @@ -117,7 +118,7 @@ /// @dev Gets the balance of the specified address. /// @param owner The address to query the balance of. /// @return An uint256 representing the amount owned by the passed address. - fn balance_of(&self, owner: address) -> Result { + fn balance_of(&self, owner: address) -> Result { self.consume_store_reads(1)?; let owner = T::CrossAccountId::from_eth(owner); let balance = >::get((self.id, self.1, owner)); @@ -128,7 +129,7 @@ /// @param to The address to transfer to. /// @param amount The amount to be transferred. #[weight(>::transfer())] - fn transfer(&mut self, caller: caller, to: address, amount: uint256) -> Result { + fn transfer(&mut self, caller: caller, to: address, amount: U256) -> Result { let caller = T::CrossAccountId::from_eth(caller); let to = T::CrossAccountId::from_eth(to); let amount = amount.try_into().map_err(|_| "amount overflow")?; @@ -151,7 +152,7 @@ caller: caller, from: address, to: address, - amount: uint256, + amount: U256, ) -> Result { let caller = T::CrossAccountId::from_eth(caller); let from = T::CrossAccountId::from_eth(from); @@ -174,7 +175,7 @@ /// @param spender The address which will spend the funds. /// @param amount The amount of tokens to be spent. #[weight(>::approve())] - fn approve(&mut self, caller: caller, spender: address, amount: uint256) -> Result { + fn approve(&mut self, caller: caller, spender: address, amount: U256) -> Result { let caller = T::CrossAccountId::from_eth(caller); let spender = T::CrossAccountId::from_eth(spender); let amount = amount.try_into().map_err(|_| "amount overflow")?; @@ -188,7 +189,7 @@ /// @param owner address The address which owns the funds. /// @param spender address The address which will spend the funds. /// @return A uint256 specifying the amount of tokens still available for the spender. - fn allowance(&self, owner: address, spender: address) -> Result { + fn allowance(&self, owner: address, spender: address) -> Result { self.consume_store_reads(1)?; let owner = T::CrossAccountId::from_eth(owner); let spender = T::CrossAccountId::from_eth(spender); @@ -208,7 +209,7 @@ /// @param amount The amount that will be burnt. #[weight(>::burn_from())] #[solidity(hide)] - fn burn_from(&mut self, caller: caller, from: address, amount: uint256) -> Result { + fn burn_from(&mut self, caller: caller, from: address, amount: U256) -> Result { let caller = T::CrossAccountId::from_eth(caller); let from = T::CrossAccountId::from_eth(from); let amount = amount.try_into().map_err(|_| "amount overflow")?; @@ -230,7 +231,7 @@ &mut self, caller: caller, from: pallet_common::eth::CrossAddress, - amount: uint256, + amount: U256, ) -> Result { let caller = T::CrossAccountId::from_eth(caller); let from = from.into_sub_cross_account::()?; @@ -256,7 +257,7 @@ &mut self, caller: caller, spender: pallet_common::eth::CrossAddress, - amount: uint256, + amount: U256, ) -> Result { let caller = T::CrossAccountId::from_eth(caller); let spender = spender.into_sub_cross_account::()?; @@ -270,7 +271,7 @@ /// Throws if `msg.sender` doesn't owns all of the tokens. /// @param amount New total amount of the tokens. #[weight(>::repartition_item())] - fn repartition(&mut self, caller: caller, amount: uint256) -> Result { + fn repartition(&mut self, caller: caller, amount: U256) -> Result { let caller = T::CrossAccountId::from_eth(caller); let amount = amount.try_into().map_err(|_| "amount overflow")?; @@ -286,7 +287,7 @@ &mut self, caller: caller, to: pallet_common::eth::CrossAddress, - amount: uint256, + amount: U256, ) -> Result { let caller = T::CrossAccountId::from_eth(caller); let to = to.into_sub_cross_account::()?; @@ -310,7 +311,7 @@ caller: caller, from: pallet_common::eth::CrossAddress, to: pallet_common::eth::CrossAddress, - amount: uint256, + amount: U256, ) -> Result { let caller = T::CrossAccountId::from_eth(caller); let from = from.into_sub_cross_account::()?; --- a/tests/src/eth/abi/nonFungible.json +++ b/tests/src/eth/abi/nonFungible.json @@ -51,6 +51,12 @@ }, { "anonymous": false, + "inputs": [], + "name": "MintingFinished", + "type": "event" + }, + { + "anonymous": false, "inputs": [ { "indexed": true, @@ -417,6 +423,13 @@ "type": "function" }, { + "inputs": [], + "name": "finishMinting", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], @@ -504,6 +517,13 @@ }, { "inputs": [], + "name": "mintingFinished", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], "name": "name", "outputs": [{ "internalType": "string", "name": "", "type": "string" }], "stateMutability": "view", --- a/tests/src/eth/abi/reFungible.json +++ b/tests/src/eth/abi/reFungible.json @@ -51,6 +51,12 @@ }, { "anonymous": false, + "inputs": [], + "name": "MintingFinished", + "type": "event" + }, + { + "anonymous": false, "inputs": [ { "indexed": true, @@ -399,6 +405,13 @@ "type": "function" }, { + "inputs": [], + "name": "finishMinting", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], @@ -486,6 +499,13 @@ }, { "inputs": [], + "name": "mintingFinished", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], "name": "name", "outputs": [{ "internalType": "string", "name": "", "type": "string" }], "stateMutability": "view", --- a/tests/src/eth/abi/reFungibleToken.json +++ b/tests/src/eth/abi/reFungibleToken.json @@ -98,6 +98,16 @@ }, { "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "burnFrom", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ { "components": [ { "internalType": "address", "name": "eth", "type": "address" },