Smart Contract Dapps deployed in Acala EVM can directly use native and cross-chain assets such as DOT, ACA, aUSD, renBTC, etc. ERC-20 tokens deployed in EVM can also be made available at runtime level, to be listed in the DeX, or (by governance approval) to be used as fee tokens. Read more here.
ERC20 Contract Addresses
Token Ticker
ER20 Address
ACA
0x0000000000000000000000000000000001000000
AUSD
0x0000000000000000000000000000000001000001
DOT
0x0000000000000000000000000000000001000002
LDOT
0x0000000000000000000000000000000001000003
XBTC
0x0000000000000000000000000000000001000004
RENBTC
0x0000000000000000000000000000000001000005
POLKABTC
0x0000000000000000000000000000000001000006
PLM
0x0000000000000000000000000000000001000007
PHA
0x0000000000000000000000000000000001000008
HDT
0x0000000000000000000000000000000001000009
KAR
0x0000000000000000000000000000000001000080
KUSD
0x0000000000000000000000000000000001000081
KSM
0x0000000000000000000000000000000001000082
LKSM
0x0000000000000000000000000000000001000083
SDN
0x0000000000000000000000000000000001000087
Oracle
0x0000000000000000000000000000000000000801
Schedule
0x0000000000000000000000000000000000000802
Contract Methods
// Returns the currencyId of the token.functioncurrencyId() publicviewreturns (uint256);// Returns the name of the token.functionname() publicviewreturns (string memory);// Returns the symbol of the token, usually a shorter version of the name.functionsymbol() publicviewreturns (string memory);// Returns the number of decimals used to get its user representation.functiondecimals() publicviewreturns (uint8);// Returns the amount of tokens in existence.functiontotalSupply() publicviewreturns (uint256);// Returns the amount of tokens owned by `account`.functionbalanceOf(address account) publicviewreturns (uint256);// Moves `amount` tokens from the caller's account to `recipient`.// Returns a boolean value indicating whether the operation succeeded.// Emits a {Transfer} event.functiontransfer(address recipient, uint256 amount) publicreturns (bool);// Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}.
// This is zero by default.functionallowance(address owner, address spender) publicviewreturns (uint256);// Sets `amount` as the allowance of `spender` over the caller's tokens.// Returns a boolean value indicating whether the operation succeeded.functionapprove(address spender, uint256 amount) publicreturns (bool);// Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance.
// Returns a boolean value indicating whether the operation succeeded.functiontransferFrom(address sender, address recipient, uint256 amount) publicreturns (bool);// Atomically increases the allowance granted to `spender` by the caller.// This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}.// Emits an {Approval} event indicating the updated allowance.functionincreaseAllowance(address spender, uint256 addedValue) publicreturns (bool);// Atomically decreases the allowance granted to `spender` by the caller.// This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}.// Emits an {Approval} event indicating the updated allowance.functiondecreaseAllowance(address spender, uint256 subtractedValue) publicreturns (bool);