Web3 JS 库(和 Metamask),获取代币余额

And*_*iga 5 balance abi web3js

我想查询一个公钥的 eth 余额和所有代币余额。到目前为止,我设法加载web3并调用了该getBalance方法。

现在,我想查看使用相同公钥存储的 ERC20 代币的余额?例如我想查看OMG代币余额?

到目前为止我发现每个代币合约地址都要查询:https : //ethereum.stackexchange.com/questions/15372/how-can-i-view-all-the-tokens-and-contracts-related-with- an-ethereum-address

omgContractAddress = "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07"
OmgContract = web3.eth.contract(abi)
omgContract = OmgContract.at(omgContractAddress)
someUsersAddress = "0x75087d9faa28d653750f3e4c86e7dcf6aff0a916"
omgContract.balanceOf someUsersAddress, (err, balance)-> #some owner
        console.error err
        console.info balance.toNumber()
Run Code Online (Sandbox Code Playgroud)

问题:

1) 我需要abi每个令牌的 吗?或者我可以使用标准化abi的 ERC20 代币,只要我只想使用标准化的方法吗?

2)我在哪里可以找到abi?还是我需要重新编译每个合同?

例如 OMG:https : //etherscan.io/token/OmiseGo

And*_*iga 4

到目前为止,我可以找到abi几个令牌的 s,https://etherscan.io/address/<token_address>#code它们在abi. 我只是将方法直接复制到我的源代码中,而没有阅读原始代码abi。例如

abi = [{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"}]
Run Code Online (Sandbox Code Playgroud)