web-dev-qa-db-fra.com

Comment puis-je obtenir le solde d'un compte dans Ethereum?

Comment puis-je déterminer par programme combien il y a d'ETH dans un compte donné sur la blockchain Ethereum?

42
fivedogit

Sur le Web:

(Non programmatique, mais pour être complet ...) Si vous voulez juste obtenir le solde d'un compte ou d'un contrat, vous pouvez visiter http://etherchain.org ou http://etherscan.io .

Depuis les consoles geth, eth, pyeth:

En utilisant l'API Javascript (utilisée par les consoles geth, eth et pyeth), vous pouvez obtenir le solde d'un compte avec les éléments suivants:

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

"web3" est le bibliothèque Web3.js compatible Javascript avec Ethereum .

"eth" est en réalité un raccourci pour "web3.eth" (disponible automatiquement dans geth). Donc, vraiment, ce qui précède devrait être écrit:

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

"web3.eth.coinbase" est le compte par défaut de votre session de console. Vous pouvez y insérer d'autres valeurs, si vous le souhaitez. Tous les soldes des comptes sont ouverts dans Ethereum. Ex, si vous avez plusieurs comptes:

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

ou

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

EDIT: Voici un script pratique pour lister les soldes de tous vos comptes:

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

Contrats internes:

Dans les contrats, Solidity offre un moyen simple d’obtenir des soldes. Chaque adresse a une propriété .balance, qui renvoie la valeur en wei. Exemple de contrat:

contract ownerbalancereturner {

    address owner;

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

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

Pour la nouvelle version de l'API web3:

La dernière version de web3 API (vers. beta 1.xx ) utilise des promesses (asynchrones, comme callback). Documentation: web3 beta 1.xx

Par conséquent, il s'agit d'une promesse et renvoie String pour l'adresse donnée dans wei.

Je suis sur Linux (openSUSE), geth 1.7.3, Rinkeby Ethereum testnet , en utilisant Meteor 1.6.1 , et le fait fonctionner connexion suivante via fournisseur IPC à mon noeud 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);
        };
      });
    });
  });
1
Juergen Fink