Я хочу подключить 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>'
Вы используете неправильную команду, это команда 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
q9f