Testnet 参加方法 ==== PyContractのTestnetへの参加方法を説明します。 ただ今、**close alpha**です。 Testtnetは頻繁に仕様変更が行われ新規作成される事が予想されます。 参加に制限はありません。 Testnet ---- branch [develop](https://github.com/namuyan/bc4py/tree/develop) boot.json [text](https://pastebin.com/UeRRqNmZ) Install ---- Ubuntu18.04, CentOS7, Raspberian or Windows10がインストールされたPCを用意します。慣れていない場合はUbuntu18.04が最も簡単なので選択してください。環境はローカルであれVPSであれポート開放を推奨します。 既に**前準備で必要ライブラリをインストールし、Python3を導入し、Userを作成しログインしたもの**とします。 #### 1. ```bash 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. ```bash # 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'`と出る場合、[こちらのブログ](https://laboradian.com/cannot-import-name-main-when-upgrading-pip/)をご覧下さい。 #### 4. 次に先ほど作成した**blockchain-py**フォルダへ移動します。 必要なPythonライブラリをインストールします。 ```bash 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. ```bash 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をインストール](https://narito.ninja/blog/detail/20/) #### 1. ```bash 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. ```bash 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. ```bash python3.7 -V # Python 3.7.2 pip3.7 -V pip3.7 install -U --user pip ``` バージョンチェック `sudo`でPython3を使用したい場合は参考記事を参照して下さい。 CentOSはマイナーバージョンまで必要なので注意して下さい。 #### 4. ```bash 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`は環境依存なので適宜修正して下さい。 ```bash 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 ```