이더리움 계좌에서 어떻게 잔액을 얻나요??

조회수 2937회

프로그래밍 방식으로 이더리움 블록체인에 ETH가 주어진 계정에 얼마나 있는지 어떻게 알 수 있을까요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • 웹의 경우

    프로그래밍 방식이 아니지만 http://etherchain.org 이나 http://etherscan.io 에 들어가면 계좌나 계약의 잔액을 알 수 있습니다.

    geth, eth, pyeth 콘솔일 경우 :

    geth, eth 혹은 pyeth 콘솔에서 사용하는 자바 스크립트 API를 사용해서 계좌의 잔액을 알 수 있습니다.

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

    "web3"은 Ethereum과 호환되는 자바 스크립트 라이브러리 web3.js 입니다.

    "eth"는 실제로 "web3.eth"의 약어이며 geth에서 자동으로 사용 가능합니다. 그래서 실제로 위의 내용을 써야 합니다 :

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

    "web3.eth.coinbase"는 콘솔 세션의 기본 계좌입니다. 원한다면 다른 값을 연결할 수 있습니다. Ethereum에서 모든 계좌 잔금이 사용 가능합니다. 예를 들어서 여러 개의 계좌가 있을 때 :

    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를 이용해 쉽게 잔금을 얻을 수 있습니다. 모든 주소에는 wei의 값을 반환하는 .balance 속성이 있습니다. 예로 들면,

    contract ownerbalancereturner { 
        address owner; 
        function ownerbalancereturner() public { 
            owner = msg.sender; 
        }
        function getOwnerBalance() constant returns (uint) { 
            return owner.balance; 
        }
     } 
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
  • web3 API의 새로운 버전 출시:

    web3 API의 최신 버전 ( beta 1.xx )은 callback처럼 비동기 같은 약속된 action을 이용합니다. 문서 : web3 beta 1.xx

    그래서 이것은 정해진 약속이고 wei에 주어진 주소의 문자열을 반환합니다.

    저는 일단 Meteor 1.6.1을 사용하여 Linux (openSUSE), geth 1.7.3, Rinkeby Ethereum testnet에서 작업하고 다음 코드는 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); 
                };
             });
        }); 
    }); 
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)