如何在以太坊获得帐户余额?

时间:2015-08-31 13:50:05

标签: ethereum

如何以编程方式发现以太坊区块链中给定帐户中的ETH数量?

4 个答案:

答案 0 :(得分:57)

在网上:

(不是程序化的,但为了完整性......)如果您只想获得帐户或合同的余额,可以访问http://etherchain.orghttp://etherscan.io

来自geth,eth,pyeth控制台:

使用Javascript API(这是geth,eth和pyeth控制台使用的),您可以使用以下内容获取帐户余额:

web3.fromWei(eth.getBalance(eth.coinbase)); 

" WEB3"是Ethereum-compatible Javascript library web3.js

" ETH"实际上是" web3.eth"的缩写。 (在geth中自动提供)。所以,真的,应该写上面的内容:

web3.fromWei(web3.eth.getBalance(web3.eth.coinbase));

" web3.eth.coinbase"是控制台会话的默认帐户。如果您愿意,可以为它插入其他值。所有帐户余额均在以太坊开放。例如,如果您有多个帐户:

web3.fromWei(web3.eth.getBalance(web3.eth.accounts[0]));
web3.fromWei(web3.eth.getBalance(web3.eth.accounts[1]));
web3.fromWei(web3.eth.getBalance(web3.eth.accounts[2]));

web3.fromWei(web3.eth.getBalance('0x2910543af39aba0cd09dbb2d50200b3e800a63d2'));

编辑:这是一个方便的脚本,用于列出所有帐户的余额:

function checkAllBalances() { var i =0; eth.accounts.forEach( function(e){ console.log("  eth.accounts["+i+"]: " +  e + " \tbalance: " + web3.fromWei(eth.getBalance(e), "ether") + " ether"); i++; })}; checkAllBalances();

内部合同:

在内部合同中,Solidity提供了一种获取余额的简单方法。每个地址都有一个.balance属性,它返回wei中的值。合同样本:

contract ownerbalancereturner {

    address owner;

    function ownerbalancereturner() public {
        owner = msg.sender; 
    }

    function getOwnerBalance() constant returns (uint) {
        return owner.balance;
    }
}

答案 1 :(得分:1)

对于新版本的web3 API:

最新版本的 web3 API(vers。 beta 1.xx )使用promises(异步,如回调)。 Dokumentation:web3 beta 1.xx

因此它是一个Promise并返回wei中给定地址的String。

我在 Linux (openSUSE), geth 1.7.3, Rinkeby Ethereum testnet ,使用 Meteor 1.6.1 < / strong>,并按照以下方式通过 IPC提供程序连接到我的geth节点:

tf_exported_symbols.lds

答案 2 :(得分:0)

“ for-each”循环有效,但获得余额的一种非常简单的方法是为函数添加 await

var bal = await web3.eth.getBalance(accounts[0]);

或者如果您想直接显示它:

console.log('balance = : ', await web3.eth.getBalance(accounts[0]));

答案 3 :(得分:0)

来自 docs,(查看变体链接)

web3.eth.getBalance("0x407d73d8a49eeb85d32cf465507dd71d507100c1")
.then(console.log);
> "1000000000000"