我正在尝试构建一个 node.js 服务器,该服务器使用 web3.js 来获取所有具有令牌的帐户的地图以及他们都拥有的该令牌的数量。我试图得到的输出是映射键是地址,映射值是它们拥有的令牌数量。我还想从单个块中获取数据,以避免在读取区块链期间有人将其中的一些代币转移到另一个帐户时出现错误的余额。
我设法在网上找到了有关如何检查帐户并获取所有令牌的 JSON 以及帐户有多少的教程,但似乎没有任何教程可以有效地获取具有目标令牌的所有帐户。
这可以用普通的 ERC20 来完成,还是我需要添加额外的功能来获得一系列持有者和他们拥有的数量?
截至目前,我一直在添加一个返回 _balances 的帐户方法。添加到标准 ERC20 令牌以获取数据。但到目前为止,在获得 [address|amount] 的地图方面还没有运气。
到目前为止我所拥有的。
"use strict";
import http from 'http';
import Web3 from 'web3';
import Tx from 'ethereumjs-tx';
const abi = [{"...."}];
const web3 = new Web3(process.env.GETH_IPC);
const contractAddress = process.env.TOKEN_ADDRESS;
const myContract = web3.eth.Contract(abi, contractAddress);
//will add an accounts method that returns _balances
const balances = myContract.methods.accounts().encodeABI();
console.log('results:', balances);
添加到ERC20
令牌的方法:
function accounts() public view returns (mapping memory) {
return _balances;
}
最好我希望能够在不修改标准的情况下使用普通 ERC20 获得这些数据。