Gibt es ein praktisches Skript, um meine Kontostände und TheDAO -Tokens aus dem go-ethereum-Client auszudrucken geth
?
getAllBalances
Einschließlich TheDAO-TokenHier ist eine Version davon getAllBalances
, die auch TheDAO- Token anzeigt.
Das folgende Shell-Skript funktioniert in Linux- und Mac-Umgebungen, in denen Sie bereits eine geth
Instanz ausführen, die mit der Ethereum-Blockchain synchronisiert wird.
Dieses Unix-Shell-Skript basiert auf dem checkAllBalances()
Skript von Ethereum Frontier Guide – Konten auflisten und Salden überprüfen .
Das JavaScript für checkAllBalances()
ist auch unter Allgemeine nützliche JavaScript-Snippets für Geth verfügbar .
geth attach
Sie können den Befehl für die Verbindung über IPC oder RPC anpassen (z. B.: geth attach rpc:http://192.168.1.52:8545
).
Erstellen Sie die Datei $HOME/bin/getAllBalances
mit folgendem Inhalt:
#!/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
Setzen Sie das ausführbare Bit für diese Datei mit dem folgenden Befehl:
chmod 700 $HOME/bin/getAllBalances
Führen Sie das Skript mit dem Befehl getAllBalances
oder $HOME/bin/getAllBalances
aus, um den folgenden Ausgabetyp zu erzeugen:
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
getAllBalances
Nur für EtherDas folgende Shell-Skript funktioniert in Linux- und Mac-Umgebungen, in denen Sie bereits eine geth
Instanz ausführen, die mit der Ethereum-Blockchain synchronisiert wird.
Dieses Unix-Shell-Skript verwendet das checkAllBalances()
Skript von Ethereum Frontier Guide – Konten auflisten und Salden überprüfen .
geth attach
Sie können den Befehl für die Verbindung über IPC oder RPC anpassen (z. B.: geth attach rpc:http://192.168.1.52:8545
).
Erstellen Sie die Datei $HOME/bin/getAllBalances
mit folgendem Inhalt:
#!/bin/sh
geth attach << EOF
function checkAllBalances() {
var i =0;
var total = 0.0;
eth.accounts.forEach( function(e){
total += parseFloat(eth.getBalance(e));
console.log(" eth.accounts["+i+"]: " + e + " \tbalance: " +
web3.fromWei(eth.getBalance(e), "ether") + " ether");
i++;
})
console.log("total: " + web3.fromWei(total), "ether");
};
checkAllBalances()
exit;
EOF
Setzen Sie das ausführbare Bit für diese Datei mit dem folgenden Befehl:
chmod 700 $HOME/bin/getAllBalances
Führen Sie das Skript mit dem Befehl getAllBalances
oder $HOME/bin/getAllBalances
aus, um den folgenden Ausgabetyp zu erzeugen:
user@Kumquat:~$ getAllBalances
instance: Geth/v1.3.6/linux/go1.5.1
datadir: /home/user/.ethereum
coinbase: 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
at block: 1454325 (Wed, 04 May 2016 17:33:00 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
eth.accounts[0]: 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa balance: 1.11111111111111111 ether
eth.accounts[1]: 0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb balance: 2.22222222222222222 ether
eth.accounts[2]: 0xcccccccccccccccccccccccccccccccccccccccc balance: 3.33333333333333333 ether
total: 6.666666666666 ether
undefined
user@Kumquat:~$