IOSTの開発環境を作る
##1. Mac上にiwalletをインストールする
IOSTの開発をdocker内だけで行うのは嫌だという方はiwalletをMacに入れたほうが良いと考える.
goをインストールし,iwalletをインストールする.
※既にgoの環境がある場合,環境が壊れる可能性がある.そのため,iwalletはインストールせずに,dockerイメージ上のiwalletを使うことを推奨する.
$ brew install go
$ go get github.com/iost-official/go-iost/cmd/iwallet
##2. Docker上でIOSTのローカルサーバを動かす
イメージを落とす
しばらくすると完了するのでイメージがあるかどうか確認する.
$ docker pull iostio/iost-node
・・・
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
iostio/iost-node latest 7579e226b50b 4 days ago 213MB
起動させる
デーモンとして起動
iwalletをインストールしなかった場合は [-v] でディレクトリの共有を行ったほうが開発が楽である.
docker stop をして毎回消すのが面倒な場合は [--rm] を入れると良い.
$ docker run -d --name iserver -p 30000-30003:30000-30003 iostio/iost-node
8a4df7cb4aad5eb19942d529ce4d63c9241567368e49a90aa946708a73c18580
プロセスを確認する(コンテナIDでiserverがあるか確認)
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8a4df7cb4aad iostio/iost-node "iserver -f /var/lib…" 2 minutes ago Up 2 minutes 0.0.0.0:30000-30003->30000-30003/tcp iserver
docker logs で状態を確認できる
$ docker logs iserver
Info 2019-04-16 08:19:23.446 main.go:86 Config Information:
acc:
id: producer000
seckey: 1rA******
algorithm: ed25519
genesis: /var/lib/iserver/genesis
vm:
jspath: vm/v8vm/v8/libjs/
loglevel: ""
db:
ldbpath: /var/lib/iserver/storage/
snapshot:
enable: false
filepath: /var/lib/iserver/storage/snapshot.tar.gz
︙
Info 2019-04-16 08:19:23.446 main.go:88 build time:20190412_142146+0800
Info 2019-04-16 08:19:23.446 main.go:89 git hash:fc91aa689b97b6bd17d2cae98472ad64fc8a44a3
Info 2019-04-16 08:19:23.446 main.go:90 code version:3.0.9
Info 2019-04-16 08:19:23.465 recovery.go:17 Genesis is not exist.
Info 2019-04-16 08:19:24.648 recovery.go:36 Created Genesis.
Info 2019-04-16 08:19:24.648 recovery.go:39 GenesisHash: 5KKs5a38awYuNCt4wLBrND5qRrcBENxW8oTEHb33tGfR
Info 2019-04-16 08:19:24.648 recovery.go:59 current Tag: 5KKs5a38awYuNCt4wLBrND5qRrcBENxW8oTEHb33tGfR
Info 2019-04-16 08:19:24.656 encoder.go:41 Encoder Name: /var/lib/iserver/storage/BlockCacheWAL/.1555402764656127000.0.wal.tmp
Info 2019-04-16 08:19:24.658 block_cache.go:362 Got LIB: 0
Info 2019-04-16 08:19:24.658 block_cache.go:373 Witness Block Num:0
Info 2019-04-16 08:19:24.659 block_cache.go:375 ActiveWitness:6sNQa7PV2SFzqCBtQUcQYJGGoU7XaB6R4xuCQVXNZe6b
Info 2019-04-16 08:19:24.659 block_cache.go:378 PendingWitness:6sNQa7PV2SFzqCBtQUcQYJGGoU7XaB6R4xuCQVXNZe6b
Info 2019-04-16 08:19:24.659 collector.go:39 Add node metrics: diskstats
Error 2019-04-16 08:19:24.659 collector.go:42 Create metrics diskstats failed: device not found for path: /var/lib/iserver/storage
Info 2019-04-16 08:19:24.660 collector.go:68 Node metrics started.
Info 2019-04-16 08:19:24.662 defer.go:64 defer index num: 0
Info 2019-04-16 08:19:24.663 peer_manager.go:444 no routing file. file=/var/lib/iserver/p2p/routing.table
Info 2019-04-16 08:19:24.663 net_service.go:112 local multiaddr: /ip4/127.0.0.1/tcp/30000/ipfs/12D3KooWQ5vPYgvkFquqGDKN1LvqRhW8PMiiLoU3jdaoTKKz6t87
Info 2019-04-16 08:19:24.664 net_service.go:112 local multiaddr: /ip4/172.17.0.2/tcp/30000/ipfs/12D3KooWQ5vPYgvkFquqGDKN1LvqRhW8PMiiLoU3jdaoTKKz6t87
Info 2019-04-16 08:19:24.664 defer.go:168 next defer schedule: 1s
Info 2019-04-16 08:19:25.668 defer.go:168 next defer schedule: 2129991h27m51.186501107s
Info 2019-04-16 08:19:26.665 sync.go:171 Syncing block in [1 1000]...
Info 2019-04-16 08:19:27.024 block.go:30 Generate block - @0 id:6sNQa7PV2S..., t:1555402767001127700, num:1, confirmed:1, txs:1, pendingtxs:0, et:23ms
Info 2019-04-16 08:19:27.531 block.go:30 Generate block - @1 id:6sNQa7PV2S..., t:1555402767504026800, num:2, confirmed:2, txs:1, pendingtxs:0, et:27ms
Info 2019-04-16 08:19:28.025 block.go:30 Generate block - @2 id:6sNQa7PV2S..., t:1555402768000456300, num:3, confirmed:3, txs:1, pendingtxs:0, et:25ms
Info 2019-04-16 08:19:28.531 block.go:30 Generate block - @3 id:6sNQa7PV2S..., t:1555402768502649700, num:4, confirmed:4, txs:1, pendingtxs:0, et:28ms
Info 2019-04-16 08:19:28.667 sync.go:171 Syncing block in [1 1000]...
︙
起動が確認できたら終了です.お疲れ様でした.
おわりに
今回はIOSTの開発環境を作成しました.
次回は実際にスマートコントラクトを動かしでみたいと考えています!
それでは〜