web3 balanceOf 始终为 0
web3 balanceOf always 0
我正在尝试使用 web3 获取智能合约地址的余额,但余额始终为 0。在 Rinkeby 上使用 metamask,因为我的合约部署在 rinkeby 上。 https://rinkeby.etherscan.io/address/0x8e3a88be716ce7c8119c36558ec97bc634592255
您可以通过将钱包放入 etherScan 的 balanceOf 函数来验证钱包是否有余额。使用地址 0x8b54A82a12bD5A7bA33B4842cA677E55f78a8612
let provider = web3.currentProvider;
web3 = new Web3(provider);
let abi = 'too long of a string to post here';
let MyContract = web3.eth.contract(JSON.parse(abi));
let myContractInstance = MyContract.at('0x8e3a88be716ce7c8119c36558ec97bc634592255');
let address = '0x8b54A82a12bD5A7bA33B4842cA677E55f78a8612';
function balanceOf(address) {
if (!address) {
return;
}
this.myContractInstance.balanceOf.call(address, function(error, balance) {
if (error) {
return;
}
alert(balance.c[0] + ' RHC');
});
}
balanceOf(address);
这是我合约上的 getBalance 函数
function balanceOf(address _owner) public view returns (uint256 balance) {
return balances[_owner];
}
网站实施于 http://robinhoodcoin.net/metamask.html
代码 https://github.com/robinhoodcoin/robinhoodcoin.github.io/blob/master/metamask.html
编辑
当我将提供商更改为以下内容时:
var web3 = new Web3(new Web3.providers.HttpProvider('https://rinkeby.infura.io/'));
我能拿到余额。所以使用元掩码作为提供者有些问题。
https://github.com/robinhoodcoin/robinhoodcoin.github.io/blob/master/metamask.html#L118 处的行有错字。上面写着:
self.myContractInstance = self.MyContract.at(self.address);
但是地址存储在 self.contractAddress
,所以它应该是:
self.myContractInstance = self.MyContract.at(self.contractAddress);
修复后,使用 MetaMask,该页面对我来说工作正常。
我正在尝试使用 web3 获取智能合约地址的余额,但余额始终为 0。在 Rinkeby 上使用 metamask,因为我的合约部署在 rinkeby 上。 https://rinkeby.etherscan.io/address/0x8e3a88be716ce7c8119c36558ec97bc634592255
您可以通过将钱包放入 etherScan 的 balanceOf 函数来验证钱包是否有余额。使用地址 0x8b54A82a12bD5A7bA33B4842cA677E55f78a8612
let provider = web3.currentProvider;
web3 = new Web3(provider);
let abi = 'too long of a string to post here';
let MyContract = web3.eth.contract(JSON.parse(abi));
let myContractInstance = MyContract.at('0x8e3a88be716ce7c8119c36558ec97bc634592255');
let address = '0x8b54A82a12bD5A7bA33B4842cA677E55f78a8612';
function balanceOf(address) {
if (!address) {
return;
}
this.myContractInstance.balanceOf.call(address, function(error, balance) {
if (error) {
return;
}
alert(balance.c[0] + ' RHC');
});
}
balanceOf(address);
这是我合约上的 getBalance 函数
function balanceOf(address _owner) public view returns (uint256 balance) {
return balances[_owner];
}
网站实施于 http://robinhoodcoin.net/metamask.html
代码 https://github.com/robinhoodcoin/robinhoodcoin.github.io/blob/master/metamask.html
编辑 当我将提供商更改为以下内容时:
var web3 = new Web3(new Web3.providers.HttpProvider('https://rinkeby.infura.io/'));
我能拿到余额。所以使用元掩码作为提供者有些问题。
https://github.com/robinhoodcoin/robinhoodcoin.github.io/blob/master/metamask.html#L118 处的行有错字。上面写着:
self.myContractInstance = self.MyContract.at(self.address);
但是地址存储在 self.contractAddress
,所以它应该是:
self.myContractInstance = self.MyContract.at(self.contractAddress);
修复后,使用 MetaMask,该页面对我来说工作正常。