4

我想查询 RSK 网络上的几个 ERC20 代币以获取以下字段:symbolnamedecimals

如何使用 web3.js 做到这一点?

4

1 回答 1

3

使用 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 };
  }
于 2021-06-02T14:09:43.363 回答