LoginSignup
5
3

More than 5 years have passed since last update.

EOS の Docker Quickstart に加えて、Account を作成するまでやってみた

Last updated at Posted at 2018-09-15

最近 EOS を調べ始めたので、調べた内容やハマったことを共有したい

前提

  • EOS に関する説明は特にしません
  • Docker が既にインストールされている
    • Docker: Version 18.06.1-ce-mac74 (26766)
  • 使ってる eosio/eos-dev は下記のバージョンである
"Id": "sha256:8926b83923b11e8ea6e6be1c8f96f941fcd7731238273b2bed692b407e37fd3c",
"RepoTags": [
    "eosio/eos-dev:latest"
],
"RepoDigests": [
    "eosio/eos-dev@sha256:150cab925ca326293a82518bcd7d1a3cbbd5720f7e12f4545c6a616819083ab2"
],
"Parent": "",
"Comment": "",
"Created": "2018-09-12T00:24:34.401119021Z",
"Container": "b631fb0509d24f1f2a4e799681774aa12760718a9075f82d6b10ff24e62222ee",

Docker Quickstart (ほぼ公式ドキュメントのまんま)

Step 1. Docker Image を取得する

$ docker pull eosio/eos-dev

Step 2. ネットワークを作成する

$ docker network create eosdev

Step 3. コンテナを起動する

$ docker run --name nodeos -d -p 8888:8888 --network eosdev \
-v /tmp/eosio/work:/work -v /tmp/eosio/data:/mnt/dev/data \
-v /tmp/eosio/config:/mnt/dev/config eosio/eos-dev  \
/bin/bash -c "nodeos -e -p eosio --plugin eosio::producer_plugin \
--plugin eosio::history_plugin --plugin eosio::chain_api_plugin \
--plugin eosio::history_api_plugin \
 --plugin eosio::http_plugin -d /mnt/dev/data \
--config-dir /mnt/dev/config \
--http-server-address=0.0.0.0:8888 \
--access-control-allow-origin=* --contracts-console --http-validate-host=false"

$ docker run -d --name keosd --network=eosdev \
-i eosio/eos-dev /bin/bash -c "keosd --http-server-address=0.0.0.0:9876"

Step 4. 一旦動作確認

  • ブロック生成確認
$ docker logs --tail 10 nodeos
# 上記コマンドを実行して、下記のようにブロックが作成されているログができていればOK

2018-09-15T07:34:08.008 thread-0   producer_plugin.cpp:1302      produce_block        ] Produced block 000019e303284a82... #6627 @ 2018-09-15T07:34:08.000 signed by eosio [trxs: 0, lib: 6626, confirmed: 0]
2018-09-15T07:34:08.503 thread-0   producer_plugin.cpp:1302      produce_block        ] Produced block 000019e4200a713d... #6628 @ 2018-09-15T07:34:08.500 signed by eosio [trxs: 0, lib: 6627, confirmed: 0]
2018-09-15T07:34:09.006 thread-0   producer_plugin.cpp:1302      produce_block        ] Produced block 000019e5ac15b894... #6629 @ 2018-09-15T07:34:09.000 signed by eosio [trxs: 0, lib: 6628, confirmed: 0]
2018-09-15T07:34:09.504 thread-0   producer_plugin.cpp:1302      produce_block        ] Produced block 000019e6e0f7f8a8... #6630 @ 2018-09-15T07:34:09.500 signed by eosio [trxs: 0, lib: 6629, confirmed: 0]
2018-09-15T07:34:10.006 thread-0   producer_plugin.cpp:1302      produce_block        ] Produced block 000019e7d0021ecf... #6631 @ 2018-09-15T07:34:10.000 signed by eosio [trxs: 0, lib: 6630, confirmed: 0]
2018-09-15T07:34:10.504 thread-0   producer_plugin.cpp:1302      produce_block        ] Produced block 000019e875aeae34... #6632 @ 2018-09-15T07:34:10.500 signed by eosio [trxs: 0, lib: 6631, confirmed: 0]
2018-09-15T07:34:11.003 thread-0   producer_plugin.cpp:1302      produce_block        ] Produced block 000019e9e128983f... #6633 @ 2018-09-15T07:34:11.000 signed by eosio [trxs: 0, lib: 6632, confirmed: 0]
2018-09-15T07:34:11.503 thread-0   producer_plugin.cpp:1302      produce_block        ] Produced block 000019ea4f2468a0... #6634 @ 2018-09-15T07:34:11.500 signed by eosio [trxs: 0, lib: 6633, confirmed: 0]
2018-09-15T07:34:12.004 thread-0   producer_plugin.cpp:1302      produce_block        ] Produced block 000019eb2df923cd... #6635 @ 2018-09-15T07:34:12.000 signed by eosio [trxs: 0, lib: 6634, confirmed: 0]
2018-09-15T07:34:12.501 thread-0   producer_plugin.cpp:1302      produce_block        ] Produced block 000019ece62046d4... #6636 @ 2018-09-15T07:34:12.500 signed by eosio [trxs: 0, lib: 6635, confirmed: 0]
  • コンテナに入って、ウォレットを確認する
$ docker exec -it keosd bash

root@1883574ee3c4:/# cleos --wallet-url http://127.0.0.1:9876 wallet list keys

ここでいきなり下記画像のように赤いエラーメッセージが出てしまいますが、その内容通り、今まだウォレットを作成していないだけなので、無視して次に進めて大丈夫です〜

Screen Shot 2018-09-15 at 16.41.25.png

  • exit でコンテナから出る

    • nodes のエントリポイントを確認する
    • これ以降は全部コンテナではなく、ローカルで実行する
$ curl http://localhost:8888/v1/chain/get_info

{"server_version":"08819aae","chain_id":"cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f","head_block_num":8161,"last_irreversible_block_num":8160,"last_irreversible_block_id":"00001fe0eb0e27e6f6417493e7411ef66afc4b901601c77b2169ecec7a6fffe0","head_block_id":"00001fe1d97b445fdcdfdbb9fbb5b4c3f483a92e2fd19181ecbdd460e8eae535","head_block_time":"2018-09-15T07:47:35.500","head_block_producer":"eosio","virtual_block_cpu_limit":200000000,"virtual_block_net_limit":1048576000,"block_cpu_limit":199900,"block_net_limit":1048576,"server_version_string":"v1.2.5"}
  • 補足:ブラウザで直接に上記 URL にアクセスしても確認できる

cleos コマンドのエイリアス作成

  • 下記コマンドを実行して、 keosd コンテナの IP アドレスを確認する
$ docker network inspect eosdev
[
    {
        "Name": "eosdev",
        "Id": "f65504e7e905aaacf8133788b71caf92caac0f0f2b7562d62b492a98d92fb384",
        "Created": "2018-09-07T07:06:37.687702865Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.19.0.0/16",
                    "Gateway": "172.19.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "1883574ee3c437dbd50bb95a00ce4e98d37abc352655165d172c3dce9a1133fe": {
                "Name": "keosd",
                "EndpointID": "63506bca063dcc0fa21bb2b65c4a46ea84ecf29e88dd7eb9338bfb83210603dd",
                "MacAddress": "02:42:ac:13:00:03",
                "IPv4Address": "172.19.0.3/16",
                "IPv6Address": ""
            },
            "f0050f87cabd114dcaa4036a9a7f3cd508f185bf75ce2d6e81491d7bc3decf20": {
                "Name": "nodeos",
                "EndpointID": "adc77b77c339625538559bb3fc3ebef4480edf5f464cf0f9be6111fc595a9b1c",
                "MacAddress": "02:42:ac:13:00:02",
                "IPv4Address": "172.19.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]
$
  • 取得できた IP アドレス(上記でできたのは 172.19.0.3)を --wallet-url のパラメータに設定して、コマンドのエリアスを作成する
$ alias cleos='docker exec -it nodeos /opt/eosio/bin/cleos --url http://127.0.0.1:8888 --wallet-url http://172.19.0.3:9876'

# cleos wallet list を実行して、設定を確認する

$ cleos wallet list
Wallets:
[]
$

アカウントを作成してみる

  • ウォレットを作成する
$ cleos wallet create --to-console

# 出力されたパスワードは必ずメモしておく

Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5KWT9p86GuWMzwpCV4UDuB7Y9Agi5w14BtfcN3in72N93DQ8cSw"
$

ここで作成されたのは default というウォレットになります。名前を指定して別のウォレットも作成できますが、今回は割愛

  • キーペアを作成する
$ cleos create key --to-console
Private key: 5J43P9JQkNxa58uCXhtxQRQo6iFZW4jHxLRi7LfjrxEL9qNpTAt
Public key: EOS64PRrt3iQb3AbyTEBUmQxChub2eyoSKs1UQVJcvokKkTyySwpW
$
  • キーペアをウォレットにインポートする
    • プライベートキーからパブリックキーを算出できるので、プライベートキーだけ指定する
$ cleos wallet import --private-key 5J43P9JQkNxa58uCXhtxQRQo6iFZW4jHxLRi7LfjrxEL9qNpTAt
imported private key for: EOS64PRrt3iQb3AbyTEBUmQxChub2eyoSKs1UQVJcvokKkTyySwpW
$
  • ちょっとややこしいですが、新しいアカウント用のプライベート以外に、システムアカウント eosio のプライベートキーをインポートする必要もある
# https://github.com/EOSIO/eos/issues/4154#issuecomment-397820824
# docker の場合、 `eosio` アカウントのキーペアは下記になっている
# eosio public key: EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
# eosio private key: 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

$ cleos wallet import --private-key 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
imported private key for: EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
$
  • Account を作成する
# `cleos create account eosio` の部分は固定値
# `newaccount` は新しいアカウント名
# 最後のパラメータは、上のステップで作成したキーペアの中のパブリックキー
$ cleos create account eosio newaccount EOS64PRrt3iQb3AbyTEBUmQxChub2eyoSKs1UQVJcvokKkTyySwpW
executed transaction: a369f27db7737df0491d4df6f39ceb11b2ff8d681d3eece0014cadc361990de2  200 bytes  381 us
#         eosio <= eosio::newaccount            {"creator":"eosio","name":"newaccount","owner":{"threshold":1,"keys":[{"key":"EOS64PRrt3iQb3AbyTEBUm...
warning: transaction executed locally, but may not be confirmed by the network yet    ]
$

お疲れ様でした!これでアカウントを作成できました!

まとめ

  • 新しいアカウントを作成する際は、eosio アカウントに対してコマンドを実行するので、eosio アカウントのキーペア情報も必要
    • この件を対応しないと、 Error 3090003: provided keys, permissions, and delays do not satisfy declared authorizations エラーになってしまう
  • アカウントの使い方については、また別記事で

参考リンク

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3