IBAX ネットワークの展開
このセクションでは、独自のブロックチェーン ネットワークを展開する方法を説明します。
導入例
ブロックチェーン ネットワークは、例として次の 3 つのノードで展開されます。
3 つのネットワーク ノード:
- ノード 1 はブロックチェーン ネットワーク内の最初のノードであり、新しいブロックを生成し、接続されているクライアントからトランザクションを送信できます。
- ノード 2 は別の優等ノードで、新しいブロックを生成し、接続されているクライアントからトランザクションを送信できます。
- ノード 3 はガーディアン ノードであり、新しいブロックを生成できませんが、接続されているクライアントからトランザクションを送信できます。
導入される 3 つのノードの構成:
- 各ノードは独自の PostgreSQL データベース システム インスタンスを使用します。
- 各ノードは独自の Centrifugo サービス インスタンスを使用します。
- サーバー側の github-backend は、他のバックエンド コンポーネントと同じホストにデプロイされます。
ノードによって使用されるサンプルのアドレスとポートを次の表に示します。
Node | Component | IP & port |
1 | PostgreSQL | 127.0.0.1:5432 |
1 | Centrifugo | 192.168.1.1:8000 |
1 | go-ibax (TCP service) | 192.168.1.1:7078 |
1 | go-ibax (API service) | 192.168.1.1:7079 |
2 | PostgreSQL | 127.0.0.1:5432 |
2 | Centrifugo | 192.168.1.2:8000 |
2 | go-ibax (TCP service) | 192.168.1.2:7078 |
2 | go-ibax (API service) | 192.168.1.2:7079 |
3 | PostgreSQL | 127.0.0.1:5432 |
3 | Centrifugo | 192.168.1.3:8000 |
3 | go-ibax (TCP service) | 192.168.1.3:7078 |
3 | go-ibax (API service) | 192.168.1.3:7079 |
デプロイフェーズ
独自のブロックチェーンネットワークを展開するには、いくつかのステージで展開する必要があります:
サーバーの展開
最初のノードの展開
最初のノードは特別な役割を果たし、ブロックチェーンネットワークを起動するために不可欠です。最初のノードがブロックチェーンの最初のブロックを生成し、他のすべてのノードはそれからブロックチェーンをダウンロードします。最初のノードの所有者はプラットフォームの作成者です。
依存関係と環境設定
sudo
Debian 9のすべてのコマンドは、rootユーザーではないユーザーとして実行する必要があります。ただし、一部のシステムコマンドはスーパーユーザー権限で実行する必要があります。デフォルトでは、Debian 9にはsudoがインストールされていないため、まずsudoをインストールする必要があります。
- スーパーユーザーになる。
- システムをアップグレードしてください。
- sudoをインストールします。
- ユーザーを sudo グループに追加します。
- 再起動後、変更が有効になります。
Golang
公式ドキュメント (opens new window)に従って Go をインストールします。
- Go の最新の安定バージョン (> 1.10.x) を Golang 公式 Web サイト (opens new window) から、またはコマンド ラインを通じてダウンロードします。
- tar を使用して、tarball を
/usr/local
ディレクトリに抽出します。
/usr/local/go/bin
を PATH 環境変数 (/etc/profile
または $HOME/.profile
にあります) に追加します。
source
ファイルを実行して変更を有効にします。次に例を示します。
- 一時ファイルを削除します。
PostgreSQL
- PostgreSQL (> v.10) と psql をインストールします。
Centrifugo
- Centrifugo V.1.8.0 を GitHub (opens new window) から、またはコマンド ラインからダウンロードします。
- 一時ファイルを削除します。
ディレクトリ構造
Debian 9 システムの場合、ブロックチェーン プラットフォームで使用されるすべてのソフトウェアを別のディレクトリに保存することをお勧めします。
ここでは「/opt/backenddir」ディレクトリを使用していますが、任意のディレクトリを使用できます。 この場合、すべてのコマンドと設定ファイルを適宜変更してください。
- ブロックチェーン プラットフォームのディレクトリを作成します。
- ユーザーをディレクトリの所有者にします。
- Centrifugo、go-ibax、およびノード データ用のサブディレクトリを作成します。 すべてのノード データは
nodeX
という名前のディレクトリに保存されます。ここで、X
はノード番号です。 デプロイされるノードに応じて、node1
はノード 1、node2
はノード 2 などとなります。
データベースの作成
- ユーザーのパスワード postgres をデフォルトのパスワード 123456 に変更します。 独自のパスワードを設定できますが、ノード構成ファイル config.toml で変更する必要があります。
- ノードの現在の状態データベース (例: chaindb) を作成します。
- Centrifugo 構成ファイルを作成します。
独自の secret を設定できますが、ノード構成ファイル config.toml でも変更する必要があります。
go-ibaxのインストール
- GitHub から github-backend をダウンロードします。
- go-ibax バイナリ ファイルを
/opt/backenddir/go-ibax
ディレクトリにコピーします。 デフォルトの Go ワークスペースを使用している場合、バイナリ ファイルは $HOME/go/bin
ディレクトリにあります。
- ノード 1 の構成ファイルを作成します。
- ノードとアカウントの公開鍵と秘密鍵を含む、ノード 1 の鍵を生成します。
- 最初のブロックを生成します。
注意
独自のブロックチェーン ネットワークを作成したい場合は、--test=true
オプションを使用する必要があります。 そうしないと、新しいアカウントを作成できません。
- データベースを初期化します。
最初のノードサーバーの初期化
最初のノード サーバーを起動するには、次の 2 つのサービスを起動する必要があります。
これらのファイルを使用して サービス (opens new window) を作成できなかった場合は、別のコンソールのディレクトリからバイナリ ファイルを実行する可能性があります。
- centrifugoを実行します:
- go-ibaxを実行します:
他のノードの展開
他のすべてのノード (ノード 2 およびノード 3) の展開は最初のものと似ていますが、次の 3 つの違いがあります。
- 最初のブロックは生成する必要はありません。 ただし、ノード 1 から現在のノードのデータ ディレクトリにコピーする必要があります。
- ノードは、
--nodesAddr
オプションを設定してノード 1 からブロックをダウンロードする必要があります。 - ノードは独自のアドレスとポートを使用する必要があります。
ノード2
以下に示す操作手順に従ってください。
- 依存関係と環境設定
- データベースの作成
- Centrifugo
- go-ibaxをインストールする
- ノード 2 の構成ファイルを作成します。
- 最初のブロック ファイルをノード 2 にコピーします。たとえば、scp を使用してノード 2 で次の操作を実行できます。
- ノードとアカウントの公開鍵と秘密鍵を含む、ノード 2 の鍵を生成します。
- データベースを初期化します。
- centrifugoを実行します。
- go-ibaxを実行します。
その結果、ノードは最初のノードからブロックをダウンロードします。 このノードは検証ノードではないため、新しいブロックを生成できません。 ノード 2 は後で検証ノードのリストに追加されます。
ノード3
以下に示す操作手順に従ってください。
- 依存関係と環境設定
- データベースの作成
- Centrifugo
- go-ibaxをインストールする
- ノード 3 の構成ファイルを作成します。
- 最初のブロック ファイルをノード 3 にコピーします。たとえば、scp を使用してノード 3 で次の操作を実行できます。
- ノードとアカウントの公開鍵と秘密鍵を含む、ノード 3 の鍵を生成します。
- データベースを初期化します。
- Centrifugoを実行します。
- go-ibaxeを実行します。
その結果、ノードは最初のノードからブロックをダウンロードします。 このノードは検証ノードではないため、新しいブロックを生成できません。 クライアントはノードに接続でき、トランザクションをネットワークに送信できます。
フロントエンドの展開
Debian 9 (Stretch) 64 ビット公式リリースに GNOME GUI をインストールした後でのみ、yarn
パッケージ マネージャーを使用して Govis クライアントを構築できます。
ソフトウェアの前提条件
- Node.js 公式 Web サイトまたはコマンド ラインから Node.js LTS バージョン 8.11 をダウンロードします。
- Node.js をインストールします。
- Yarn バージョン 1.7.0 を、yarn の Github (opens new window) リポジトリから、またはコマンド ラインを通じてダウンロードします。
- Yarnをインストールします。
Weaverアプリケーションのビルド
- Git 経由で github-frontend から Weaver の最新バージョンをダウンロードします。
- Yarn 経由で Weaver 依存関係をインストールします。
[ブロックチェーンネットワークの設定ファイルの追加
- ノード接続に関する情報を含む settings.json ファイルを作成します。
- 任意のテキスト エディターで settings.json ファイルを編集し、次の形式で必要な設定を追加します。
3 つのノードの settings.json ファイルの例:
Weaver デスクトップ アプリケーションを構築する
- yarn を使用してデスクトップ バージョンを構築します。
- デスクトップ バージョンは、AppImage サフィックス形式でパッケージ化されます。
ビルド後、アプリケーションを使用することはできますが、接続構成を変更することはできません。 これらの設定を変更する必要がある場合は、新しいバージョンのアプリケーションを構築する必要があります。
Weaver Webアプリケーションのビルド
- Web アプリケーションを構築します。
ビルド後、再頒布可能ファイルは /build ディレクトリに配置されます。 デプロイメントには任意の Web サーバーを使用できます。settings.json ファイルもこのディレクトリに配置する必要があります。 なお、接続設定を変更した場合、アプリケーションを再度ビルドする必要はありません。 代わりに、settings.json ファイルを編集し、Web サーバーを再起動します。
- 開発またはテストの目的で、Yarn の Web サーバーを構築できます。
その後、Weaver Web アプリケーションが http://localhost:5000
の場所で利用できるようになります。
作成者アカウントの作成
最初のノード所有者のアカウントを作成します。 このアカウントは新しいブロックチェーン プラットフォームの作成者であり、管理者アクセス権を持っています。
ウィーバーを実行します。
次のデータを使用して既存のアカウントをインポートします。
–/opt/backenddir/node1/PrivateKey
ファイルにあるノード所有者の秘密キーのバックアップをロードします。
注意
このディレクトリには秘密鍵ファイルが 2 つあります。 PrivateKey
ファイルは、ノード所有者のアカウントを作成するために使用されます。 NodePrivateKey
ファイルはノード自体の秘密鍵であり、秘密にしておく必要があります。
- アカウントにログインした後、この時点ではロールが作成されていないため、ロールなし オプションを選択してください。
アプリケーション、ロール、テンプレートのインポート
現時点では、ブロックチェーン プラットフォームは空白の状態です。 基本的なエコシステム機能をサポートするロール、テンプレート、アプリケーション フレームワークを追加することで構成できます。
- アプリケーションリポジトリのクローンを作成します。
「開発者」Developer >「Weaver でインポート」に移動します。
次の順序に従ってアプリケーションをインポートします。
「管理者」Admin >「役割」Role に移動し、「デフォルトの役割のインストール」Default Role をクリックします。
右上隅の構成ファイルメニューからシステムを終了します。
管理者 Admin としてシステムにログインします。
「ホーム」Home > 「投票」Vote > 「テンプレート リスト」Template List に移動し、「デフォルト テンプレートのインストール」Default Template をクリックします。
最初のノードをノードリストに追加
「開発者」Developer >「プラットフォームパラメータ」Platform Parameters に移動し、first_nodesパラメータをクリックします。
最初のブロックチェーンネットワークノードのパラメータを指定します。
- public_key - ノードの公開鍵は
/opt/backenddir/node1/NodePublicKey
ファイルにあります。
他のホノーノードの追加
コンセンサスロールグループにメンバーを追加
デフォルトでは、コンセンサスロール (コンセンサス) グループのメンバーのみが、他のマスターノードを追加するために必要な投票に参加できます。 これは、新しいマスター ノードを追加する前に、エコシステムのメンバーをロールに割り当てる必要があることを意味します。
このセクションでは、作成者のアカウントがコンセンサス役割グループの唯一のメンバーとして指定されます。 運用環境では、このロールはガバナンスを実行するプラットフォーム メンバーに割り当てる必要があります。
1.「ホーム」Home >「役割」Role に移動し、「コンセンサス」をクリックします。
2.「割り当て」をクリックして、作成者のアカウントをロールに割り当てます。
他のノード用のオーナーアカウントの作成
Weaverを実行します。
次のデータを使用して既存のアカウントをインポートします。
– /opt/backenddir/node2/PrivateKey
ファイルにあるノード所有者の秘密キーのバックアップをロードします。
アカウントにログインした後、この時点ではロールが作成されていないため、ロールなし オプションを選択してください。
「Home」 > 「個人情報 Personal Information」に移動し、個人情報のタイトルをクリックします。
アカウントの詳細 (個人情報のタイトル、説明など) を追加します。
ノードオーナーにバリデータの役割を割り当てる
- 新しいノード所有者による操作:
- 「Home」 > 「検証者 Verfier」 に移動します。
- 「リクエストの作成」 をクリックし、検証者候補者の申請フォームに記入します。
- 「リクエストの送信」をクリックします。
- 作成者による操作:
- コンセンサスロール (コンセンサス) でログインします。
- 「Home」 > 「検証者 Verfier」に移動します。
- 「Play」 アイコンをクリックして、候補者の要求に従って投票を開始します。
- 「Home」 > 「投票 Vote」に移動し、「投票ステータスの更新 Update voting status」をクリックします。
- 投票名をクリックして、ノード所有者に投票します。
その結果、新しいノードの所有者のアカウントに検証者の役割が割り当てられ、新しいノードがマスター ノードのリストに追加されます。