Ethereum 如何获得以太坊账户的余额?

Ethereum 如何获得以太坊账户的余额?,ethereum,Ethereum,如何以编程方式发现以太坊区块链上给定帐户中有多少以太坊?网上: (不是程序性的,但为了完整性…)如果您只想获得帐户或合同的余额,您可以访问或 从geth、eth、pyeth控制台: 使用Javascript API(这是geth、eth和pyeth控制台使用的),您可以通过以下方式获得帐户余额: web3.fromWei(eth.getBalance(eth.coinbase)); “web3”是最新版本 “eth”实际上是“web3.eth”(在geth中自动提供)的缩写。因此,事实上,上

如何以编程方式发现以太坊区块链上给定帐户中有多少以太坊?

网上:

(不是程序性的,但为了完整性…)如果您只想获得帐户或合同的余额,您可以访问或

从geth、eth、pyeth控制台:

使用Javascript API(这是geth、eth和pyeth控制台使用的),您可以通过以下方式获得帐户余额:

web3.fromWei(eth.getBalance(eth.coinbase)); 
“web3”是最新版本

“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]));
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();

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

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]));
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();
内部合同:

在合同内部,稳健性提供了一种获得余额的简单方法。每个地址都有一个.balance属性,该属性返回的值为。合同样本:

contract ownerbalancereturner {

    address owner;

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

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

对于新版本的web3 API:

最新版本的web3API(vers.beta 1.xx)使用承诺(异步,如回调)。 Dokumentation:

因此,它是一个承诺并返回给定地址的字符串

我在Linux(openSUSE),geth1.7.3,Rinkeby以太坊testnet,使用Meteor 1.6.1,并通过IPC Provider以以下方式连接到我的geth节点:

// serverside js file

import Web3 from 'web3';

if (typeof web3 !== 'undefined') {
  web3 = new Web3(web3.currentProvider);
} else {
  var net = require('net');
  var web3 = new Web3('/home/xxYourHomeFolderxx/.ethereum/geth.ipc', net);
};

  // set the default account
  web3.eth.defaultAccount = '0x123..............';

  web3.eth.coinbase = '0x123..............';

  web3.eth.getAccounts(function(err, acc) {
    _.each(acc, function(e) {
      web3.eth.getBalance(e, function (error, result) {
        if (!error) {
          console.log(e + ': ' + result);
        };
      });
    });
  });

“for each”循环有效,但获得平衡的一种非常简单的方法是简单地为函数添加wait

var bal = await web3.eth.getBalance(accounts[0]);
或者,如果要直接显示它:

console.log('balance = : ', await web3.eth.getBalance(accounts[0]));
从(查看链接以了解变化)


我可以推荐您列出余额的脚本要简单得多:eth.accounts.forEach(函数(e,I){console.log(“eth.accounts[“+I+”]:“+e+”\tbalance:“+web3.fromWei(eth.getBalance(e),“ether”)+“ether”)})eth.getBalance()接收2个参数,而不是1个,当您只提供一个参数时会发生什么?第二个的默认设置是什么?那些使用nodejs(我在v11.5.0上)的人将无法实现这一点,因为不支持
import
。所以您需要执行
constweb3=require('Web3')相反,余额将以wei返回,需要使用
.fromWei()
转换。当我运行此命令时,参数列表后会出现未捕获的语法错误:缺少)