difftreelog
feat impl balance_of_cross
in: master
5 files changed
pallets/balances-adapter/src/erc.rsdiffbeforeafterboth--- a/pallets/balances-adapter/src/erc.rs
+++ b/pallets/balances-adapter/src/erc.rs
@@ -58,6 +58,7 @@
// self.consume_store_reads(1)?;
Err("Approve not supported now".into())
}
+
fn balance_of(&self, owner: Address) -> Result<U256> {
// self.consume_store_reads(1)?;
let owner = T::CrossAccountId::from_eth(owner);
@@ -141,6 +142,13 @@
where
T::AccountId: From<[u8; 32]>,
{
+ fn balance_of_cross(&self, owner: CrossAddress) -> Result<U256> {
+ // self.consume_store_reads(1)?;
+ let owner = owner.into_sub_cross_account::<T>()?;
+ let balance = <T as Config>::Currency::free_balance(owner.as_sub());
+ Ok(balance.into())
+ }
+
// #[weight(<SelfWeightOf<T>>::transfer())]
fn transfer_cross(&mut self, caller: Caller, to: CrossAddress, amount: U256) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
pallets/balances-adapter/src/stubs/UniqueNativeFungible.rawdiffbeforeafterbothbinary blob — no preview
pallets/balances-adapter/src/stubs/UniqueNativeFungible.soldiffbeforeafterboth--- a/pallets/balances-adapter/src/stubs/UniqueNativeFungible.sol
+++ b/pallets/balances-adapter/src/stubs/UniqueNativeFungible.sol
@@ -17,8 +17,17 @@
}
}
-/// @dev the ERC-165 identifier for this interface is 0xff15c6f4
+/// @dev the ERC-165 identifier for this interface is 0x1313556c
contract ERC20UniqueExtensions is Dummy, ERC165 {
+ /// @dev EVM selector for this function is: 0xec069398,
+ /// or in textual repr: balanceOfCross((address,uint256))
+ function balanceOfCross(CrossAddress memory owner) public view returns (uint256) {
+ require(false, stub_error);
+ owner;
+ dummy;
+ return 0;
+ }
+
/// @dev EVM selector for this function is: 0x2ada85ff,
/// or in textual repr: transferCross((address,uint256),uint256)
function transferCross(CrossAddress memory to, uint256 amount) public returns (bool) {
tests/src/eth/abi/nativeFungible.jsondiffbeforeafterboth78 "stateMutability": "view",78 "stateMutability": "view",79 "type": "function"79 "type": "function"80 },80 },81 {82 "inputs": [83 {84 "components": [85 { "internalType": "address", "name": "eth", "type": "address" },86 { "internalType": "uint256", "name": "sub", "type": "uint256" }87 ],88 "internalType": "struct CrossAddress",89 "name": "owner",90 "type": "tuple"91 }92 ],93 "name": "balanceOfCross",94 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],95 "stateMutability": "view",96 "type": "function"97 },81 {98 {82 "inputs": [],99 "inputs": [],83 "name": "decimals",100 "name": "decimals",tests/src/eth/api/UniqueNativeFungible.soldiffbeforeafterboth--- a/tests/src/eth/api/UniqueNativeFungible.sol
+++ b/tests/src/eth/api/UniqueNativeFungible.sol
@@ -12,8 +12,12 @@
function supportsInterface(bytes4 interfaceID) external view returns (bool);
}
-/// @dev the ERC-165 identifier for this interface is 0xff15c6f4
+/// @dev the ERC-165 identifier for this interface is 0x1313556c
interface ERC20UniqueExtensions is Dummy, ERC165 {
+ /// @dev EVM selector for this function is: 0xec069398,
+ /// or in textual repr: balanceOfCross((address,uint256))
+ function balanceOfCross(CrossAddress memory owner) external view returns (uint256);
+
/// @dev EVM selector for this function is: 0x2ada85ff,
/// or in textual repr: transferCross((address,uint256),uint256)
function transferCross(CrossAddress memory to, uint256 amount) external returns (bool);