Go-Ethereum

通過 JSON RPC 獲取合約餘額

  • February 23, 2017

我想通過 Geth JSON-RPC API 讀取合約餘額(合約上未使用的 ETH 數量)。

例如這裡顯示的數字:http: //testnet.etherscan.io/address/0xc5910bcb2442e84845aa98b20ca51e8f5d2bee23

什麼是一個好的起點?

這是一個使用 Linux 實用程序通過JSON-RPCcurl檢索契約餘額的範例:

curl -s -X POST --data '{"jsonrpc":"2.0", "method":"eth_getBalance", "params":["0xc5910bcb2442e84845aa98b20ca51e8f5d2bee23", "latest"], "id":1}' http://localhost:8545

您必須從geth參數--rpc開始執行curl上面的程序,例如,

geth --testnet --rpc console

您收到的結果將是十六進制格式的 weis 數:

{"jsonrpc":"2.0","id":1,"result":"0x58d15e17628000f"}

使用十六進製到十進制轉換器將此數字轉換為十進制的400000000000000015weis。

要計算乙太幣的數量,請將十進制數除以 1e18,您的結果就是乙太幣0.400000000000000015

geth並使用JavaScript 控制台檢查餘額:

> web3.fromWei(eth.getBalance("0xc5910bcb2442e84845aa98b20ca51e8f5d2bee23"), "ether")
> 0.400000000000000015

這是我的 Perl 程式碼,用於將十六進制 wei 數字轉換為雙乙太數字:

sub hexToDouble{
 my $param = shift;
 $param =~ s/^0x//;
 my $fullnum = 0.0;
 while ($param =~ /(.)/g) {
   my $num = hex($1);
   $fullnum = $fullnum * 16 + $num;
 }
 $fullnum *= 1e-18;
 return $fullnum;
}

引用自:https://ethereum.stackexchange.com/questions/6888