Testnet 参加方法

PyContractのTestnetへの参加方法を説明します。
ただ今、close alphaです。
Testtnetは頻繁に仕様変更が行われ新規作成される事が予想されます。
参加に制限はありません。

Testnet

branch develop
boot.json text

Install

Ubuntu18.04, CentOS7, Raspberian or Windows10がインストールされたPCを用意します。慣れていない場合はUbuntu18.04が最も簡単なので選択してください。環境はローカルであれVPSであれポート開放を推奨します。
既に前準備で必要ライブラリをインストールし、Python3を導入し、Userを作成しログインしたものとします。

1.

mkdir blockchain-py && cd blockchain-py
wget -O boot.json https://pastebin.com/raw/UeRRqNmZ
git clone -b develop https://github.com/namuyan/bc4py
rm -rf bc4py/tests bc4py/doc && mv bc4py tmp && mv tmp/* . && rm -rf tmp

必要なファイルをDLします。

2.

# for Linux
curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly
cargo -V  # cargo X.XX.X-nightly

Rustのnightly(特別な開発版) インストールします。
対話型コンソールが開きコマンドを入力していきます。 引数を与える事でコマンドを入力して操作する必要は無くなりました。
オプションを変更しないとstable(安定版)が勝手にインストールされますので注意して下さい。

完了しましたらcargo -Vにてversionを確認して下さい。
もしもコマンドが効かない場合、変更を反映させる為、一度コンソールを閉じてまた開きます。

3.

pipをインストールします。
pip3 -V によりpipの存在を確認します。
pipの存在を確認できる場合、sudo pip3 install --upgrade pipによりpipをUpgradeして下さい。pipの存在を確認できない場合、curl -kL https://bootstrap.pypa.io/get-pip.py | python3により新規にインストールし、そのあとに忘れずにpipをupgradeして下さい。

もしもImportError: cannnot import name 'main'と出る場合、こちらのブログをご覧下さい。

4.

次に先ほど作成したblockchain-pyフォルダへ移動します。
必要なPythonライブラリをインストールします。

pip3 install --user wheel
pip3 install --user setuptools
pip3 install --user setuptools-rust
apt-get install python3-dev
apt-get install libgmp3-dev
apt-get install libssl-dev
pip3 install --user -r requirements.txt
pip3 install --user -r requirements-c.txt

requirements-c.txt こちらのファイルにはコンパイルが必要になるものをリストしてあります。
前準備 にて必要なコンパイラーソフトをインストールしておいてください。
PEP517のエラーが出る場合はnoteを参照して下さい。

5.

screen -S p2p
python3 publicnode.py

仮想端末上にノードを起動します。
curl 127.0.0.1:3000/public/getsysteminfo によりbooting:false を確認できましたら同期が終了しています。

注意点

  • ノード間の通信(P2P)には2000(TCP/UDP)、API(REST/WS)には3000(TCP)を使用します。
  • ファイアーウォールにより、P2Pポートは解放、APIポートは制限 を加えて下さい。
  • APIポートはデフォルトでローカルのみ受け付けます。

前準備(CentOS7)

参考:CentOS7にPython3.7をインストール

1.

yum update
adduser p2p
passwd p2p
usermod -aG wheel p2p
yum -y install git libffi-devel zlib-devel gcc gcc-c++
yum -y install xz bzip2 bzip2-devel sqlite-devel openssl-devel readline-devel
yum -y install ncurses-devel tk-devel
yum -y install gmp-devel mpfr-devel libmpc-devel

Rootユーザーにてp2pアカウントを作成し、必要なパッケージをインストールします。

2.

curl -O https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
tar xf Python-3.7.2.tgz && rm Python-3.7.2.tgz
cd Python-3.7.2
./configure --enable-optimizations
make
sudo make altinstall

Python環境を整えます。
Python3.7.2を使用しましたがPython3.6以上ならば問題ありません。

3.

python3.7 -V  # Python 3.7.2
pip3.7 -V
pip3.7 install -U --user pip

バージョンチェック
sudoでPython3を使用したい場合は参考記事を参照して下さい。
CentOSはマイナーバージョンまで必要なので注意して下さい。

4.

sudo ln -s /usr/local/bin/pip3.7 /usr/bin/pip3
sudo ln -s /usr/local/bin/python3.7 /usr/bin/python3

このようにpip3へリンクを貼り付けると良さそうです。
さらにこれならばsudoも使用できます。

note

ERROR: Could not build wheels for XXX which use PEP 517 and cannot be installed directly
環境により生じるエラー、ソースを直接DLしコンパイルしなければならない。
???.whlは環境依存なので適宜修正して下さい。

git clone https://github.com/namuyan/ed25519-dalek
cd ed25519-dalek
cargo build --release
python3 setup.py bdist_wheel
pip3 install --user dist/????.whl
cd ..
git clone https://github.com/namuyan/multi-party-schnorr
cd multi-party-schnorr
cargo build --release
python3 setup.py bdist_wheel
pip3 install --user dist/????.whl