プライベートテストネットワークの作成

このガイドでは、 Symbol を使用して、独自のプライベートネットワークをセットアップする手順を説明します。

ネットワークを実行するため、 Symbol Bootstrap パッケージを使用します。このパッケージの動作をより理解するために Symbol Bootstrap の使用 ガイドを読むことを推奨します。

bootstrap プリセット

Symbol Bootstrap には、複数のノードを持つ、次のアーキテクチャのネットワークをインスタンス化する bootstrap のプリセットがあります:

../../_images/four-layer-architecture1.png

ブートストラップネットワークアーキテクチャ

「Internal」 とラベル付けされたノードは Symbol Bootstrap によって作成されており、REST API からアクセス可能です:

  • peer-node (1 と 2): Peer ノードは API がトランザクションを P2P ネットワークにプッシュすると、それを検証します。ノードはコンセンサスアルゴリズムを実行して、新しいブロックを作成して、ネットワークを通して変更を伝播します。
  • api-node: API ノードはトランザクションが検証された後に MongoDB データベースにデータを保存します。これらはパーシャルなアグリゲートボンドトランザクションを識別して保存もします。
  • rest-gateway は HTTP と WebSockets をブロックチェーン上で読み書きアクションが実行できるように構成します。

ネットワークのインスタンス化

bootstrap プリセットで start コマンド (Symbol Bootstrap の使い方 ガイドで説明) を使用します。

symbol-bootstrap start -p bootstrap

1 つのコマンドで、ネットワークを作成して、起動します。新しいブラウザタブを開き、次の場所に移動して、稼働していることを確認します:

localhost:3000/chain/info

API ノードからレスポンスを取得します。

ノードアカウントの取得

Symbol Bootstrap は対応するアカウントを持つ、複数のノードを作成しました。これらアカウントのいずれかと対話 (たとえば、モザイクをそのアカウント 転送) するには、そのアドレスまたは公開鍵が必要です。アカウントの完全な制御 (たとえば、モザイクをアカウント から 転送) には、その秘密鍵が必要です。

すべての情報は target フォルダ内の YAML ファイルから取得できます:

target/addresses.yml

例:

networkType: 152
nemesisGenerationHashSeed: 7BFC536990108CA923B2715DE6B8E47E6BB56C945293BF4FC22C5AF895F61E62
nodes:
    -
        signing:
            # Keys for the account of the peer-node-0
            privateKey: ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
            publicKey: C2BD21E4F9261247A4CBE75DA8683978E0F1FFF34AAB17BEBC21E7B9E0E17A9F
            address: TAMEGYVY6GVGXCLBIEH72XU4D2OSTH2MIOOY4QQ
        vrf:
            privateKey: ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
            publicKey: D67601AC6767F8A3C97FFDB0D9D737A943FFFA6E69C2C6527B0ED32A4E41B443
            address: TCR6ZWX3UP3TKJK3BSE6ARJ4WAF3KHFFUWJ7EWI
        voting:
            privateKey: ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
            publicKey: 921ED0839EA3C8590CA1D6562DDD3BFEDA44CCE05DD82DF8C79DED2A3F816A1B
            address: TA77BJJJMRXR2OLJKZNUFTRMLHLQ4T2PPHZRX5I
        ssl:
            privateKey: ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
            publicKey: 3d68cdaa4e48a14bd875d4ca18e044522be5f602e8c4f37c1c65eafdfaa19110
        type: peer-node
        name: peer-node-0
        friendlyName: peer-node-0

注釈

シークレットキーは常に秘匿してください!

symbol-cli を使用して、これらアカウントのいずれかをインポートできます。アクセスを容易にするコマンドラインツール (詳細については symbol-cli ガイド を参照してください):

symbol-cli profile import --private-key <PRIVATE_KEY> --network TEST_NET --url http://localhost:3000

この新しいプロファイルに名前を付けることで、たとえば、アカウントの残高を取得するために使用できます:

symbol-cli account info --profile <PROFILE_NAME>

Symbol Bootstrap によって作成されたノードが表示され、実験の開始するために、いくつかの通貨 (異なる モザイク) がすでに含まれています:

Balance Information
┌──────────────────┬──────────────────┬──────────────────┬───────────────────┐
│ Mosaic Id        │ Relative Amount  │ Absolute Amount  │ Expiration Height │
├──────────────────┼──────────────────┼──────────────────┼───────────────────┤
│ 3ECBB73A05A147BC │ 1,124,874,999.75 │ 1124874999750000 │ Never             │
├──────────────────┼──────────────────┼──────────────────┼───────────────────┤
│ 2B19203C86F9A668 │ 3,000            │ 3000000          │ Never             │
└──────────────────┴──────────────────┴──────────────────┴───────────────────┘

テストアカウントの取得

Symbol Bootstrapモザイク を事前に保有する、いくつかのテストアカウントを生成します。これらのアカウントは開発または学習目的のために存在します。

これらのアカウントの鍵は、上記の target /addresses.yml ファイルに、 mosaics セクションにあります:

mosaics:
    -
        id: 56631872BA6657A1
        name: currency
        type: currency
        # These are accounts containing the main currency
        accounts:
            -
                privateKey: ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
                publicKey: 91A9513EBEB50DEFCD928032611B2FBC046FA894089D2ACED115D6EDEB0BFD2A
                address: NBO3P2AM3A6242V2NFMUIG5RQ3ZFDRKS5QNRBJA
            -
                privateKey: ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
                publicKey: 4E9CC90B45265691C2CF0C68785A06602D28DB50ACFB91F8389B976898239132
                address: NCDFN3W2AP3E4I2XYITUJHHGVSYKOIR2IUTXKXY
    -
        id: 079C43E0DFC44B38
        name: harvest
        type: harvest
        # These are account containing the network currency used for harvesting
        accounts:
            -
                privateKey: ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
                publicKey: D617FC0C746681849D93DBEB5FE0E390F26535E4EA76F02AB206AD053B72FAB8
                address: NBFFJ3MNPMHP474KD7JLBJWAYSYSAUEW7L7262Q
            -
                privateKey: ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
                publicKey: BBB04EC2CF67658B755F94FC347DDC4AAFFBFC24B84298AEF41CDA2485FA216E
                address: NCQBYJE3U4Q36AA2E6HFTGKCUXIBUB2NMIGAFDA

例えば、上記のコマンドラインツールの symbol-cli を使用することで、これらのアカウントに秘密鍵でアクセスします。

投票ノード

ブロックファイナライゼーション プロセスは、ブロックチェーンに追加する前に、ネットワークノードがブロックの正確性について投票を要求されます。各ノードは投票者として登録するかどうかを選択します。

bootstrap プリセットによって作成される、すべてのノードはデフォルトで投票者です。これが不要な場合は、カスタムプリセットで次の行を提供し、各ノードの投票を無効にします。

nodes:
- voting: false # peer-node-0
- voting: false # peer-node-1
- voting: false # api-node-0

注釈

投票ノードが無い場合、ファイナライズは発生しません。 localhost:3000/chain/info を参照すると、チェーン高が増加していることがわかりますが、 latestFinalizedBlock 高はゼロのままです。

ネットワークプロパティの設定

カスタマイズ可能なネットワーク関連の設定については ネットワークプロパティの設定 ガイドを参照してください。

次の手順

各ノードは投票者として登録するかどうかを選択します。 localhost:3000 で提供される API ノードを介して疎通することもできます。

Symbol の機能の学習を続けるために 他のガイド も参照してみてください!