Go-Ethereum
如何從 geth 列印我的賬戶餘額和 TheDAO 代幣
是否有一個方便的腳本可以從 go-ethereum 客戶端列印出我的賬戶餘額和TheDAO
geth
代幣?
getAllBalances
包括 TheDAO 代幣這是一個
getAllBalances
也顯示TheDAO令牌的版本。以下 shell 腳本適用於您已經在執行
geth
與乙太坊區塊鏈同步的實例的 Linux 和 Mac 環境。這個 Unix shell 腳本基於Ethereum Frontier Guide 中的腳本 - 列出賬戶和檢查
checkAllBalances()
餘額。JavaScript for
checkAllBalances()
也可在geth 的常用 JavaScript 片段中找到。您可以自定義
geth attach
命令以通過 IPC 或 RPC 進行連接(例如:geth attach rpc:http://192.168.1.52:8545
)。創建
$HOME/bin/getAllBalances
具有以下內容的文件:#!/bin/sh geth attach << EOF function padTokens(s, n) { var o = s.toPrecision(n); while (o.length < n) { o = " " + o; } return o; } function padEthers(s) { var o = s.toFixed(18); while (o.length < 27) { o = " " + o; } return o; } function checkAllBalances() { var theDAOABI = [ { "type": "function", "outputs": [ { "type": "uint256", "name": "", "value": "5e+22" } ], "name": "minTokensToCreate", "inputs": [], "constant": true }, { "type": "function", "outputs": [ { "type": "uint256", "name": "", "value": "2.668900014413644230605979e+24" } ], "name": "totalSupply", "inputs": [], "constant": true }, { "type": "function", "outputs": [ { "type": "uint256", "name": "", "value": "1464426000" } ], "name": "closingTime", "inputs": [], "constant": true }, { "type": "function", "outputs": [], "name": "refund", "inputs": [], "constant": false }, { "type": "function", "outputs": [ { "type": "address", "name": "", "value": "0xda4a4626d3e16e094de3225a751aab7128e96526" } ], "name": "curator", "inputs": [], "constant": true }, { "type": "function", "outputs": [ { "type": "uint256", "name": "balance", "value": "0" } ], "name": "balanceOf", "inputs": [ { "type": "address", "name": "_owner" } ], "constant": true }, { "type": "function", "outputs": [ { "type": "uint256", "name": "_numberOfProposals", "value": "0" } ], "name": "numberOfProposals", "inputs": [], "constant": true }, { "type": "function", "outputs": [ { "type": "address", "name": "", "value": "0x807640a13483f8ac783c557fcdf27be11ea4ac7a" } ], "name": "extraBalance", "inputs": [], "constant": true }, { "type": "function", "outputs": [ { "type": "bool", "name": "", "value": true } ], "name": "isFueled", "inputs": [], "constant": true }, { "type": "function", "outputs": [ { "type": "bool", "name": "success" } ], "name": "createTokenProxy", "inputs": [ { "type": "address", "name": "_tokenHolder" } ], "constant": false }, { "type": "function", "outputs": [ { "type": "uint256", "name": "_voteID" } ], "name": "vote", "inputs": [ { "type": "uint256", "name": "_proposalID" }, { "type": "bool", "name": "_supportsProposal" } ], "constant": false }, { "type": "event", "name": "FuelingToDate", "inputs": [ { "type": "uint256", "name": "value", "indexed": false } ], "anonymous": false }, { "type": "event", "name": "ProposalAdded", "inputs": [ { "type": "uint256", "name": "proposalID", "indexed": true }, { "type": "address", "name": "recipient", "indexed": false }, { "type": "uint256", "name": "amount", "indexed": false }, { "type": "bool", "name": "newCurator", "indexed": false }, { "type": "string", "name": "description", "indexed": false } ], "anonymous": false }, { "type": "event", "name": "ProposalTallied", "inputs": [ { "type": "uint256", "name": "proposalID", "indexed": true }, { "type": "bool", "name": "result", "indexed": false }, { "type": "uint256", "name": "quorum", "indexed": false } ], "anonymous": false } ]; var theDAOAddress = "0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413"; var theDAO = eth.contract(theDAOABI).at(theDAOAddress); var theDAOTotal = 0; var ethersTotal = 0; console.log(" # Account TheDAO ethers"); console.log("------- ------------------------------------------ ---------- ---------------------------"); var i =0; eth.accounts.forEach( function(e){ var tokens = theDAO.balanceOf(e) / parseFloat(1e16); theDAOTotal += parseFloat(tokens); var ethers = web3.fromWei(eth.getBalance(e), "ether"); ethersTotal += parseFloat(ethers); console.log(" " + i + "\t" + e + " " + padTokens(tokens, 10) + " " + padEthers(ethers)); i++; }) console.log("------- ------------------------------------------ ---------- ---------------------------"); console.log(" " + i + " " + padTokens(theDAOTotal, 10) + " " + padEthers(ethersTotal)); }; checkAllBalances() exit; EOF
使用以下命令設置此文件的可執行位:
chmod 700 $HOME/bin/getAllBalances
使用命令執行腳本
getAllBalances
或$HOME/bin/getAllBalances
生成以下類型的輸出:user@Kumquat:~$ getAllBalances instance: Geth/v1.3.6/linux/go1.5.1 datadir: /home/user/.ethereum coinbase: 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa at block: 1482591 (Mon, 09 May 2016 10:09:37 AEST) modules: admin:1.0 db:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 shh:1.0 txpool:1.0 web3:1.0 undefined undefined undefined # Account TheDAO ethers ------- ------------------------------------------ ---------- --------------------------- 0 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1100 1.111111111111111111 1 0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 2200 2.222222222222222222 2 0xcccccccccccccccccccccccccccccccccccccccc 3300 3.333333333333333333 ------- ------------------------------------------ ---------- --------------------------- 3 6600 6.666666666666666666 undefined