需要获取到智能合约地址+智能合约ABI
1.打开https://etherscan.io/ 搜索cmt,跳转到该页面,点击红色区域,跳转到智能合约地址
2.address是智能合约地址,点击Contract Source 获取ABI
3.code:调用cmt智能合约的方法balanceOf()
const Web3 = require("web3");
const BigNumber = require('bignumber.js');
const Ether = new BigNumber(10e+17);
let web3 = new Web3(new Web3.providers.HttpProvider('https://api.myetherapi.com/eth'));
let abi = [
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [{"name": "", "type": "string"}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{"name": "_spender", "type": "address"}, {"name": "_value", "type": "uint256"}],
"name": "approve",
"outputs": [{"name": "", "type": "bool"}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [{"name": "", "type": "uint256"}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{"name": "_from", "type": "address"}, {"name": "_to", "type": "address"}, {
"name": "_value",
"type": "uint256"
}],
"name": "transferFrom",
"outputs": [{"name": "", "type": "bool"}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "INITIAL_SUPPLY",
"outputs": [{"name": "", "type": "uint256"}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [{"name": "", "type": "uint256"}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "unpause",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "paused",
"outputs": [{"name": "", "type": "bool"}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{"name": "_spender", "type": "address"}, {"name": "_subtractedValue", "type": "uint256"}],
"name": "decreaseApproval",
"outputs": [{"name": "success", "type": "bool"}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [{"name": "_owner", "type": "address"}],
"name": "balanceOf",
"outputs": [{"name": "balance", "type": "uint256"}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [],
"name": "pause",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [{"name": "", "type": "address"}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [{"name": "", "type": "string"}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{"name": "_to", "type": "address"}, {"name": "_value", "type": "uint256"}],
"name": "transfer",
"outputs": [{"name": "", "type": "bool"}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": false,
"inputs": [{"name": "_spender", "type": "address"}, {"name": "_addedValue", "type": "uint256"}],
"name": "increaseApproval",
"outputs": [{"name": "success", "type": "bool"}],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {
"constant": true,
"inputs": [{"name": "_owner", "type": "address"}, {"name": "_spender", "type": "address"}],
"name": "allowance",
"outputs": [{"name": "", "type": "uint256"}],
"payable": false,
"stateMutability": "view",
"type": "function"
}, {
"constant": false,
"inputs": [{"name": "newOwner", "type": "address"}],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}, {"inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor"}, {
"anonymous": false,
"inputs": [],
"name": "Pause",
"type": "event"
}, {"anonymous": false, "inputs": [], "name": "Unpause", "type": "event"}, {
"anonymous": false,
"inputs": [{"indexed": true, "name": "previousOwner", "type": "address"}, {
"indexed": true,
"name": "newOwner",
"type": "address"
}],
"name": "OwnershipTransferred",
"type": "event"
}, {
"anonymous": false,
"inputs": [{"indexed": true, "name": "owner", "type": "address"}, {
"indexed": true,
"name": "spender",
"type": "address"
}, {"indexed": false, "name": "value", "type": "uint256"}],
"name": "Approval",
"type": "event"
}, {
"anonymous": false,
"inputs": [{"indexed": true, "name": "from", "type": "address"}, {
"indexed": true,
"name": "to",
"type": "address"
}, {"indexed": false, "name": "value", "type": "uint256"}],
"name": "Transfer",
"type": "event"
}]
let addr = '0xf85fEea2FdD81d51177F6b8F35F0e6734Ce45F5F'
let metacoin = new web3.eth.Contract(abi, addr);
metacoin.methods.balanceOf('0x3f5CE5FBFe3E9af3971dD833D26bA9b5C936f0bE').call().then(v => {
let ret = new BigNumber(v);
return parseFloat(ret.dividedBy(Ether)).toFixed(2);
}).then(sum => {
console.log(sum);
})