使用web3获取某一地址的token余额

在以太坊的标准ERC20的智能合约中,提供了查询账户余额的方法balanceOf,

function balanceOf(address _owner) constant returns (uint256 balance);

利用web3提供的call方法,可以不消耗gas,不执行合约的前提下,获取合约的public方法值。
如下代码所示,获取rnt的token名称和0x6cc5f688a315f3dc28a7781717a9a798a59fda7b账号下的rnt余额。

var Web3 = require('web3');
var request = require("request");
console.log(Web3.version);
//设置web3对象
var web3 = new Web3("https://mainnet.infura.io");
var abi = require("./rnt.json");
var address = "0xff603f43946a3a28df5e6a73172555d8c8b02386";

var contract = new web3.eth.Contract(abi,address);
contract.methods.name().call().then(
        function(result){
            console.log(result);
        }
    );

contract.methods.balanceOf("0x6cc5f688a315f3dc28a7781717a9a798a59fda7b").call().then(
    function(result){
            console.log(result);
       });

call方法详见官方文档:
https://web3js.readthedocs.io/en/1.0/web3-eth-contract.html#methods-mymethod-call
运行结果如下图所示。

运行结果

可以与以太坊浏览器对照,结果一致。
https://etherscan.io/token/0xff603f43946a3a28df5e6a73172555d8c8b02386?a=0x6cc5f688a315f3dc28a7781717a9a798a59fda7b

你可能感兴趣的:(使用web3获取某一地址的token余额)