Balances
如何在 Ubuntu 上的 1 行程式碼中獲取令牌的餘額
為了獲得地址中的乙太幣餘額,我使用下面的程式碼。(1 行)
sudo geth --exec \ "web3.eth.getBalance('0xf6e5911696a3729a7740cbdcd64c05bc2eec60e7')" attach
我得到:
165060000000000000
我需要在上面的一行中獲取令牌(例如 Golem)的餘額。無法與控制台互動。返回可以是任何東西,1 行或 JSON。
還尋找 1 行來發送令牌,如下所示:
sudo geth --exec \ "eth.sendTransaction({from: '0xxxxxxxxxxxxxxxxxxxxxxxxxxx', \ to: '0xxxxxxxxxxxxxxxxxxxxxxxxxx', value: '10000000000000000', \ gas: '0x76D0', gasPrice: '0x4A817C800'})" attach
這可能嗎?
對於符合 ERC20 標準的代幣(Golem 代幣就是),要獲取給定地址的代幣餘額,您需要在代幣合約上執行名為
balanceOf(address)
.你不需要把它作為一個真實的交易發送到乙太坊區塊鏈,因為你的本地節點(如果它是完全同步的)已經有這個數據,並且這個函式是一個只讀方法(不改變狀態智能合約)。所以你想要的命令是
eth.call()
,不是eth.sendTransaction
:sudo geth --exec \ "eth.call({to: "0xNNNNN", data: "0xNNNN"})" attach
具體來說,對於 Golem 合約,“to”是
0xa74476443119A942dE498590Fe1f2454d7D4aC0d
,為了生成“data”變數,對於這個特定的合約互動,它將是一個 32 字節的十六進製字元串,分為兩個 16 字節的片段。第一部分是balanceOf(address)
函式 (0x70a08231000000000000000000000000
) 的函式選擇器,後半部分是要查找的地址。因此,對於您提供的範例地址:sudo geth --exec \ "eth.call({to: "0xa74476443119A942dE498590Fe1f2454d7D4aC0d", \ data: "0x70a08231000000000000000000000000f6e5911696a3729a7740cbdcd64c05bc2eec60e7"})" attach