Как я могу получить такую информацию, как символ токена ERC20 в RSK?
Я хотел бы запросить несколько токенов ERC20 в сети RSK, чтобы получить следующие поля:
symbol
,
name
, а также
decimals
.
Как это сделать с помощью web3.js?
1 ответ
Для этого с помощью web3.js:
-
web3
: Инициализировать экземпляр web3 и подключить его к провайдеру web3. -
abiOfToken
: Объект ABI для этого конкретного токена. Обратите внимание: если у вас его нет, вы можете получить его, запустивsolc
против исходного кода контракта; или, в качестве альтернативы, вы можете просто использовать "стандартный" объект ABI для токенов ERC-20 -
addressOfToken
: Развернутый адрес смарт-контракта для токена.
Как только у вас будет указанное выше, вы можете сделать следующее в пределах
async
функция:
const tokenContract = new web3.eth.Contract(
abiOfToken, addressOfToken);
const symbol = await tokenContract.methods.symbol().call();
const decimals = await tokenContract.methods.decimals().call();
const name = await tkenContract.methods.name().call();
Приведенный выше код запускает их последовательно и для ясности. На практике, поскольку вы запускаете это для нескольких токенов, вы можете рассмотреть возможность параллельного выполнения запросов и их извлечения в отдельную функцию, например:
// run this just once, as part of initialisation
const tokenContract = new web3.eth.Contract(abiOfToken, addressOfToken);
// run this multiple times by putting in its own function
async function getTokenInfo(tokenContract) {
const [decimals, name, symbol] = await Promise.all([
tokenContract.methods.symbol().call(),
tokenContract.methods.decimals().call(),
tokenContract.methods.name().call(),
]);
return { decimals, name, symbol };
}