[Geth]導入からマイニング、送金まで

ブロックチェーンの技術に最近興味を持ってます。Geth(go-ethereum)というGoで書かれたEthereumクライアントをまずは触ってみようと思います。

下の記事がものすごいわかりやすかったので、基本的にはこのまま進めていきました。ただ途中右往左往した点とかもあったのでお役に立てればと思い、メモ的に記述を。もし認識が間違っているところなどがありましたら、Twitterに連絡ください。

あ、ちなみに開発環境はMacを使っています。

Ethereum スマートコントラクト入門:geth のインストールから Hello World まで

インストール

homebrewが用意されているのでそれを使います。

$ brew tap ethereum/ethereum
$ brew install ethereum

使ってみる

では、さっそくgethを起動してみようと思います。ホームディレクトリ直下に作ります。Ethereum入門によると、Gethのデフォルトではホームディレクトリ下に.ethereumという隠しデータディレクトリがあるみたい。

$ mkdir ~/eth_private_net
$ cd eth_private_net/
$ geth --dev --datadir .

開発用途の設定で起動しています。

最初はアカウントがないのかなー、と思っていたら、最初からkeystore/下にアカウントが一つ作られていました。

別タブのターミナルを開いて、コンソールを開く。

$ geth attach geth.ipc

最初から一つはあったようなのでもう一つアカウントを作ってみます。

> personal.newAccount()
Passphrase:
Repeat passphrase:
"0xec4f8e99e8a3abc50281ce8f1fb674dcd1eb932e"

作成済みのアカウントを確認します。

> eth.accounts
["0x2ac8ce6beb7d0c387359c95ebc753a6bfdc64072", "0xec4f8e99e8a3abc50281ce8f1fb674dcd1eb932e"]

一個目のcoinbaseアカウントの残高を確認してみます。これも0なのかなーと思ったら、あらかじめ用意されていたみたい。ローカルなので?

> eth.getBalance(eth.accounts[0])
1.15792089237316195423570985008687907853269984665640564039457584007913129639927e+77

マイニングを次はやってみようと思います。

> miner.start()
null

あれ?nullで大丈夫なのかな、と思ったのですが、ここをみる限り大丈夫そう。

> eth.mining
true

eth.miningで確認できるので、試してみるといいかも。

マイニングをやめるにはこう。

> miner.stop()

coinbaseアカウントに貯まっていると思います。

送金

それでは送金をやってみたいと思います。

もう一つのアカウントの残高の確認をしてみます。

> eth.getBalance(eth.accounts[1])
0

このアカウントに送金したいので、まず送金元のロックを外します。

> personal.unlockAccount(eth.accounts[0])
Unlock account 0x2ac8ce6beb7d0c387359c95ebc753a6bfdc64072
Passphrase:
true

それでは、送金!

> eth.sendTransaction({ from: eth.accounts[0], to: eth.accounts[1], value: 1000000000000000000 })
"0x41824c2fda07aca149fc3f14f9950856488e86eaacef3cd8ea9e441a6ef2399a"

まだブロックチェーンに書き込まれていないので、マイニングをします。

> miner.start()
null

それでは送金できたかどうか確認してみましょう。

> eth.getBalance(eth.accounts[1])
1000000000000000000

あ、できてる!

とりあえず、Gethで遊んでみました!次はSolidityに触れるぞ!