2017年6月19日月曜日

GO言語で始めるEthereumプログラミング(Gethを使ったアカウント管理編)

環境


OS : osx

目的

Gethの"Basic Use Case Documentation"にある3つをそれぞれ試す。
Ethereum開発に必要なClientであるGethの使い方を学ぶ。


始めに

  • アカウントを暗号化する際のパスワードを忘れるとそのアカウントにはアクセスできなくなるので注意
  • gethはaccountというサブコマンドによってアカウント管理できる
  • 鍵は<DATADIR>/keystore以下に保存される
    • 定期的なバックアップをオススメする
    • 鍵のバックアップに関する詳細:Backup & restore
  • ヘルプコマンド
    • geth account help <subcommand>


アカウント管理でできること

  • 新たなアカウントの作成
  • 既存アカウントのリスト化
  • 新たなアカウントに対する秘密鍵のインポート
  • 最新の鍵形式への移行とパスワード変更

アカウントの作成

新たなアカウントを作る

前回の投稿で作成したgo-ethereum内で作業を行う。
$ geth account new
WARN [06-18|10:42:55] No etherbase set and no accounts found as default 
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase: 
Repeat passphrase: 
Address: {2e9f6ce30074338fac346090d4bc6a1fd5506f38}

リスト化した情報を参照してみる。


$ geth account list
Account #0: {2e9f6ce30074338fac346090d4bc6a1fd5506f38} keystore:///Users/xxx/Library/Ethereum/keystore/UTC--2017-06-18T13-53-47.688998272Z--2e9f6ce30074338fac346090d4bc6a1fd5506f38

アカウント情報を暗号化形式で保存する。この時に指定するパスフレーズはアカウントをアンロックする時に必要なので決して忘れてはならない。
$ > personal.newAccount test

上記の作業前後でディレクトリ内には以下のような変化が。
(前)
$ ls
AUTHORS  build  core  les  rlp
COPYING  circle.yml crypto  light  rpc
COPYING.LESSER cmd  eth  log  swarm
Dockerfile common  ethclient metrics  tests
Makefile compression ethdb  miner  trie
README.md consensus ethstats mobile  vendor
VERSION  console  event  node  whisper
accounts containers interfaces.go p2p
appveyor.yml contracts internal params

(後)


$ ls
AUTHORS   console   metrics
COPYING   containers  miner
COPYING.LESSER  contracts  mobile
Dockerfile  core   node
Makefile  crypto   p2p
README.md  eth   params
VERSION   ethclient  personal.newAccount
accounts  ethdb   rlp
appveyor.yml  ethstats  rpc
build   event   swarm
circle.yml  interfaces.go  tests
cmd   internal  trie
common   les   vendor
compression  light   whisper
consensus  log
アカウントに関するファイルが生成されている。

秘密鍵のインポートによってアカウントを作る

暗号化されてない秘密鍵を使用する場合。これは不要なのでスキップする。

既存のアカウントをアップデートする

アカウントを暗号化形式で最新バージョンに保存する。
この時アカウントのロックを解除するためにパスフレーズを求められる。
$ geth account update 2e9f6ce30074338fac346090d4bc6a1fd5506f38
Unlocking account 2e9f6ce30074338fac346090d4bc6a1fd5506f38 | Attempt 1/3
Passphrase: 
INFO [06-19|22:07:53] Unlocked account                         address=0x2e9f6ce30074338fac346090d4bc6a1fd5506f38
Please give a new password. Do not forget this password.
Passphrase: 
Repeat passphrase: 

プリセールウォレットをインポートする

スキップ。

アカウントのリスト化と残高のチェック

現在のアカウントのリスト化

$ geth account list
Account #0: {2e9f6ce30074338fac346090d4bc6a1fd5506f38} keystore:///Users/kichino/Library/Ethereum/keystore/UTC--2017-06-18T13-53-47.688998272Z--2e9f6ce30074338fac346090d4bc6a1fd5506f38

0 件のコメント:

コメントを投稿