neo-pythonの環境構築 (Docker使用)

Dockerを使用してNEO-Pythonの環境を作る方法です。
（プライベートネットだけでなく、開発環境自体もDockerで作成します。）

# 前提条件

Dockerがインストールされていること

# セットアップ方法

手順はこれだけです。簡単！

```
# プライベートネットを動かします
$ docker pull cityofzion/neo-privatenet
$ docker run --rm -d --name neo-privatenet -p 20333-20336:20333-20336/tcp -p 30333-30336:30333-30336/tcp cityofzion/neo-privatenet

# 開発環境を動かします
$ docker run --rm -itd --net=host -v "$(pwd):/neo-python/sc" -h neo-python --name neo-python cityofzion/neo-python /bin/bash

# コンテナIDの確認
$ docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                                                                        NAMES
38b0407a242a        cityofzion/neo-python       "/bin/bash"              6 seconds ago       Up 4 seconds                                                                                     neo-python
6dcf0098fbee        cityofzion/neo-privatenet   "/bin/bash /opt/run.…"   19 minutes ago      Up 19 minutes       0.0.0.0:20333-20336->20333-20336/tcp, 0.0.0.0:30333-30336->30333-30336/tcp   neo-privatenet

# コンテナの中に入ります
$ docker exec -it 38b0407a242a /bin/bash
```

# neo-pythonを起動してみる

`$ docker exec~` した後にこのコマンドで起動できます。
-pは、ここではプライベートネットへの接続を意味します。
-vはスマートコントラクトのイベントを表示させるという意味になります。

```
# np-prompt -p -v
```

終了する場合は下記コマンドを使用してください

```
# exit
```

# walletを開く

walletをダウンロードしてきて、np-promptで開きます。

```
# wget https://s3.amazonaws.com/neo-experiments/neo-privnet.wallet
# np-prompt -p -v
neo> wallet open neo-privnet.wallet
[password]> ***   # cozがpasswordになります
```

walletの中身を確認します

```
neo> wallet
```

NEOとGasが入ったwalletが確認できました！！

```
[I 190216 08:43:07 UserWallet:480] Script hash b'#\xba\'\x03\xc52c\xe8\xd6\xe5"\xdc2 39\xdc\xd8\xee\xe9' <class 'bytes'>
Wallet {
    "path": "neo-privnet.wallet.1",
    "addresses": [
        {
            "version": 0,
            "address": "AK2nJJpJr6o664CWJKi1QRXjqeic2zRp8y",
            "script_hash": "e9eed8dc39332032dc22e5d6e86332c50327ba23",
            "frozen": false,
            "votes": [],
            "balances": [
                {
                    "asset": "0xc56f33fc6ecfcd0c225c4ab356fee59390af8560be0e930faebe74a6daff7c9b",
                    "value": "100000000.0"
                },
                {
                    "asset": "0x602c79718b16e442de58778e148d0b1084e3b2dffd5de6b7b16cee7969282de7",
                    "value": "40.0"
                }
            ],
            "is_watch_only": false
        }
    ],
    "height": 248,
    "percent_synced": 100,
    "synced_balances": [
        "[NEO]: 100000000.0 ",
        "[NEOGas]: 40.0 "
    ],
    "public_keys": [
        {
            "Address": "AK2nJJpJr6o664CWJKi1QRXjqeic2zRp8y",
            "Public Key": "031a6c6fbbdf02ca351745fa86b9ba5a9452d785ac4f7fc2b7548ca2a46c4fcf4a"
        }
    ],
    "tokens": [],
    "claims": {
        "available": "0.0",
        "unavailable": "1920.0"
    }
}
```

# 参考

[Mac(マック)で行うNEO(ネオ)の プライベートネットの環境構築をわかりやすく解説](https://medium.com/@Keymakers/mac-%E3%83%9E%E3%83%83%E3%82%AF-%E3%81%A7%E8%A1%8C%E3%81%86neo-%E3%83%8D%E3%82%AA-%E3%81%AE-%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88%E3%83%8D%E3%83%83%E3%83%88%E3%81%AE%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%E3%82%92%E3%82%8F%E3%81%8B%E3%82%8A%E3%82%84%E3%81%99%E3%81%8F%E8%A7%A3%E8%AA%AC-9ffec6c8174a)