Railsから、Ethereumのテストネットに繋げてみる

参考にしたページ

Ethereumのテストネット上にトークンをデプロイする - Qiita

前提

既にgethは、下記の通りインストール済み https://book.ethereum-jp.net/first_use/installing_geth.html

テストネットとは?

Ethereumのテスト環境的なもの。いくつか種類があるが、今回は「Rinkeby」を利用します。 ここでethereumを手に入れても、価値がない代わりに、テスト用にethereumをもらえるようです。

geth起動

こちらをそのまま実行 Ethereumのテストネット上にトークンをデプロイする - Qiita

// --syncmode "light"  とすると、eth.getBalanceがうまくいかなかったので外した。
$ geth --rinkeby --datadir "/Users/user/eth_test_net" --rpc --rpcaddr "localhost" --rpcport "8545"

別ターミナルを開いて、consoleを立ち上げる

$ geth attach ipc:/Users/user/eth_test_net/geth.ipc

// 同期していること確認。
> eth.syncing
{
  currentBlock: 37476,
  highestBlock: 3879274,
  knownStates: 88320,
  pulledStates: 72795,
  startingBlock: 0
}

コマンドの意味はこちらがわかりやすい! Ethereumクライアント geth起動時のオプションの意味 - Qiita

Qiitaにある通り行って、etherをもらう。

railsとの連携

gemを入れて、 GitHub - EthWorks/ethereum.rb: Ethereum library for the Ruby language

以下のようにアクセスできる

client = Ethereum::IpcClient.new("/Users/user/eth_test_net/geth.ipc")
client.get_balance([address])  // => etherの残高

しかし...

同期が終わって、get_balance してもetherをもらえていない。 etherscan 上は正しくtransactionが行われているのに、同期したファイルの、そのblocknumberは違うっぽい... 結局わからなかったので、private netですることにした。次へ続く。