Go-Ethereum

如何通過 IPC on rails 連接 geth?

  • February 10, 2022

我想通過 IPC on rails 連接 geth。我開始 geth 如下。

$build/bin/geth --datadir "/home/vagrant/.ethereum" --networkid "1" --ipcapi "admin,db,eth,debug,miner,net,shh,txpool,personal,web3" --ipcpath "/home/vagrant/.ethereum/geth.ipc"

然後我嘗試rails console使用ethereum-ruby進行連接。但是,它返回錯誤。你能告訴我如何從 ruby​​ 連接 geth 嗎?(它是否使用都沒有關係。

[1] pry(main)> client = Ethereum::IpcClient.new("#{ENV['HOME']}/.ethereum/geth.ipc")
=> #<Ethereum::IpcClient:0x007f4f4365f470
@batch=[],
@id=1,
@ipcpath="/home/vagrant/.ethereum/geth.ipc">
[2] pry(main)> client.eth_coinbase
NoMethodError: undefined method `eth_coinbase' for #<Ethereum::IpcClient:0x007f4f4365f470>
from (pry):2:in `<main>'

您使用了錯誤的命令,命令是coinbase,而不是eth_coinbase

我建議使用此程式碼:

eth = Ethereum::IpcClient.new 

這將自動使用預設路徑獲取geth.ipc

puts eth.coinbase["result"]

這將返回您的硬幣庫。

您可以看到,用於創建新方法的這一行沒有獲取 rpc 方法名稱的第一部分,而是在方法下劃線,so eth_coinbasewill be coinbaseeth_getBalancewill beget_balance等等。

如果你使用新的ethgem,你必須創建一個 IPC 客戶端:

ipc = Eth::Client.create "/home/vagrant/.ethereum/geth.ipc"
ipc.eth_coinbase # or: ipc.default_account

見:https ://github.com/q9f/eth.rb/wiki/RPC-Client

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