Mac(マック)で行うNEO(ネオ)の プライベートネットの環境構築をわかりやすく解説

NEOの公式ドキュメントにも情報がありますが、もっとわかりやすく解説した記事をMacユーザー向けに書いていきます。

NEOを動かすためには、NEO-GUI、NEO-CLI、neo-pythonのいずれかのクライアントをインストールする必要があります。

現在開発途上で、Mac向けのNEO-GUIとNEO-CLIはサポートされていませんので、今回は英語圏のNEOディベロッパーコミュニティであるCity Of Zionが開発しているneo-pythonを使ってプライベートネットの環境構築を行なって行きます。

動作環境

  • macOS High Sierra (バージョン10.13.4)
  • Homebrew 1.6.3
  • python 3.6.5
  • Docker version 18.03.1-ce
  • git version 2.16.2

事前準備

  • Homebrewのインストール
  • python3.6以上のインストール
  • gitのインストール
  • Dockerのインストール

まずはTerminalを開き、任意のディレクトリに移動し、以下のコマンドでneo-pythonを動かす上で必要となるフォルダを自分のMacにダウンロードします。

$git clone https://github.com/CityOfZion/python-smart-contract-workshop.git

次に、ダウンロードしたフォルダに移動してCity Of Zionがあらかじめ作成しているDockerイメージを以下のコマンドで自分のDockerに落とします。

$ cd python-smart-contract-workshop
$ 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のコマンドがあるので以下を参照してください。

# 現在起動しているコンテナの確認
$ docker ps
# 停止しているコンテナも含めて作成したコンテナを確認
$ docker ps -a
# Dockerコンテナの起動
$ docker start NAMES
# Dockerコンテナの停止
$ docker stop NAMES
# Dockerコンテナの削除(停止したコンテナのみ削除可能)
$ docker rm NAMES

以下のコマンドでうまく起動しているか確認します。

$ docker ps

うまく表示されていることが確認できます。

次にすでに作成されているプライベート用のwalletをローカル環境にインストールします。

$ wget https://s3.amazonaws.com/neo-experiments/neo-privnet.wallet

python3.6を使って仮想環境を構築します。

$ python3.6 -m venv venv
$ . venv/bin/activate

(venv)が先頭に付いていることを確認して、neo-pythonをインストールします。

$ pip install neo-python

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

$ np-prompt -p -v

無事にneo-pythonが起動したら上記のような画面が表示されるはずです。

【2月23日追記】注意: neo-pythonのバージョン更新により、コマンドが変更しています!

2019/1/16に正式に下記のpull reqestがmergeされneo-pythonがアップデート(v0.8.3)したのに合わせて、コマンドが変っています。

~/python-smart-contract-workshop$ np-prompt --version
neo-python v0.8.4

以降、コマンドは現行バージョンに合わせて修正しました。

次は、先ほどダウンロードしたCity Of Zionのwalletを開けてみましょう。

neo> wallet open neo-privnet.wallet
[password]> ***   # cozがpasswordになります
Opened wallet at neo-privnet.wallet

次のコマンドでwalletの中身を確認します。

neo> wallet

NEOとGasが入ったwalletをダウンロードできていることが確認できると思います。

次回は、スマートコントラクトを利用してHello Worldをコンソール上に表示させる方法を紹介します。


トラブルシューティング

  1. Docker pullができない

Docker pullをするときに以下のようなメッセージが出た場合、Dockerにログインできていない可能性があります。

$ docker pull cityofzion/neo-privatenet
Using default tag: latest
Error response from daemon: Get https://registry-1.docker.io/v2/cityofzion/neo-privatenet/manifests/latest: unauthorized: incorrect username or password

そこで、以下のようにDockerをインストールする際に登録したDocker IDとパスワードを使用してDockerにログインしましょう。

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username (*******@gmail.com): *******
Password:
Login Succeeded

2. walletのインストールができない

wgetがインストールされていない可能性があります。以下のコマンドでwgetを使えるようにしてください。

$ brew install wget

3. neo-pythonがインストールできない

neo-pythonは、leveldbと呼ばれるデータベースを使用してトランザクションを管理します。したがって、leveldbのパッケージをインストールしていな場合は、以下のコマンドでインストールをしてください。

$ brew install leveldb

参考文献