我想查询 RSK 网络上的几个 ERC20 代币以获取以下字段:symbol
、name
和decimals
。
如何使用 web3.js 做到这一点?
使用 web3.js 执行此操作:
web3
: 初始化 web3 实例并连接到 web3 提供程序abiOfToken
:此特定令牌的 ABI 对象。注意,如果你没有这个,你可以通过solc
对原始合约代码运行来获得它;或者,您可以简单地为 ERC-20 令牌使用“标准”ABI 对象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 };
}