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

Posted

技术标签:

【中文标题】Web3 JS 库(& Metamask),获取代币余额【英文标题】:Web3 JS Library (& Metamask), Get Token Balance 【发布时间】:2018-05-04 04:08:47 【问题描述】:

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

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

到目前为止,我发现每个代币合约地址都需要查询: https://ethereum.stackexchange.com/questions/15372/how-can-i-view-all-the-tokens-and-contracts-associated-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()

问题:

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

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

例如我的天:https://etherscan.io/token/OmiseGo

【问题讨论】:

你也可以use rpc to get the balance 【参考方案1】:

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

abi = ["constant":true,"inputs":["name":"_owner","type":"address"],"name":"balanceOf","outputs":["name":"","type":"uint256"],"payable":false,"type":"function"]

【讨论】:

以上是关于Web3 JS 库(& Metamask),获取代币余额的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 web3.js 注销 MetaMask 帐户

如何将 MetaMask 与 Web3.js 版本 1.2.6 连接?

如何使用 Web3.js 将 Metamask 连接到 Angular App?

通过 web3js 向 Metamask 发送多行签名

Metamask BSC bep20 令牌的 web3 JS 支付按钮

Web3.js 扩展窗口界面类型定义