Как подключить geth через IPC on rails?

Я хочу подключить geth через IPC on rails. Я начинаю гет следующим образом.

$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 . Однако он возвращает ошибку. Не подскажете, как подключить гет из руби? (Неважно, используется библиотека или нет.

[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>'
Я могу воспроизвести это, это либо ошибка, либо отсутствие документации.

Ответы (2)

Вы используете неправильную команду, это команда coinbase, а не eth_coinbase.

Я предлагаю использовать этот код:

eth = Ethereum::IpcClient.new 

Это автоматически использует путь по умолчанию для полученияgeth.ipc

puts eth.coinbase["result"]

И это вернет вашу коинбазу.

Вы можете видеть, что эта строка , используемая для создания нового метода, не получает первую часть имени метода rpc и подчеркивает метод, поэтому eth_coinbaseбудет coinbase, eth_getBalanceбудет get_balanceи так далее.

Если вы используете новый ethгем, вам нужно будет создать клиент 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 .