Ethereumブロックチェーンの特定のアカウントにあるETHの量をプログラムで検出するにはどうすればよいですか?
ウェブ上:
(プログラムではなく、完全を期すために...)アカウントまたは契約の残高を取得するだけの場合は、 http://etherchain.org または http:/ /etherscan.io 。
geth、eth、pyethコンソールから:
Javascript API(geth、eth、およびpyethコンソールが使用するもの)を使用して、次のものでアカウントの残高を取得できます。
web3.fromWei(eth.getBalance(eth.coinbase));
「web3」は Ethereum互換Javascriptライブラリ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;
}
}
Web3 APIの新しいリリースの場合:
web3APIの最新バージョン(vers。beta 1.xx) promise(コールバックのような非同期)を使用します。ドキュメント: web3 beta 1.xx
したがって、Promiseであり、weiの指定されたアドレスの文字列を返します。
私はLinux(openSUSE)、geth1.7.3、Rinkeby Ethereum 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);
};
});
});
});