手動によるノードの立ち上げ

このガイドでは Symbol Bootstrap を 使用せず に Symbol のネットワークへ参加するために、ノードをセットアップする方法を説明します。

Symbol Bootstrap は Symbol ノードを 素早く立ち上げる のにとても便利なツールです。しかし、すべてのシナリオで有効 (または許可) されるとは限らない、 Dockernode.js の技術に依存しています。 このガイドでは遠回りをして Symbol ノードを 手動 で立ち上げる方法を示します。Symbol Bootstrap を使用する場合は こちらのガイド を参照してください。

次のセクションでは Peer ノード を構築する方法について説明し、その次のセクションではノードを拡張して API ノード に変更します。

注釈

以下の手順は Linux でのみ動作確認をしています。

Peer ノードのビルド

クライアントのビルド

Follow the Catapult client instructions to build its binaries, either manually or using Conan.

キーの生成

Symbol ノードは正しく機能するために、複数の キー を必要とします。これらのキーは通常では ランダムに生成 されるので、次の手順では、使用するものをいくつか作成していきます。

この手順はセキュリティを強化するためにオフラインマシンで実行します。

Main, Remote, VRF

前セクションで作成した _build ディレクトリ内から、次のコマンドを実行します:

./bin/catapult.tools.addressgen --count 3 --network public

これにより、次のような 3つの キーペア が出力されます:

address (public): NDPPBHSMLVEU75DNUMFX6GWPTGB6PP6AFQU7WSY
   address decoded: 68DEF09E4C5D494FF46DA30B7F1ACF9983E7BFC02C29FB4B
      public key: 1E886BA00B4F85DBC0B31DBB78DADFAA29945DF7290DB7A4243D94864483C627
      private key: 3DDDC333029BC8ACDB460435BBC71041D460B911725B03D6F93805521AAD60CB

各ブロック (上記で示したブロック) は 秘密鍵公開鍵 で構成されるキーペアと アドレス です。

後で使用するために 一時テキストファイルへそれら全てをコピーして キーペア Main, Remote ,**VRF** にラベルを付けます。

注釈

これらのキーのいずれかを すでに持っている 場合は、ランダムに生成されるキーの代わりに、それらを使用できます。

The most relevant scenario is when using a main account opted-in from a NIS1 account. In this case you can directly use the key obtained in the opt-in process as your Main key instead of the randomly-generated one.

投票

If your node is to be a voting node it must have linked a voting key for the period in which you intend to vote. This is interesting as voting nodes receive voting rewards.

ただし、投票キーの生成は、以前の生成よりも少し複雑です:

  1. Still from within the _build directory create another directory called votingkeys.

  1. 投票キーの作成 (またはキー):

    Voting keys are different from the other keys in that they have a period of validity, for example. They are only valid from a Start Epoch to an End Epoch (see side box).

    Nodes are only eligible as voters if they are linked to a valid voting key for the current blockchain epoch, so remember to renew your voting key periodically.

    To help you with that task, you can have up to 3 linked voting keys, with different periods, so you can easily renew one key while there's still another one active (you will need to unlink an older key to be able to link more than 3 keys).

    A voting key is created using catapult.tools.votingkey and providing its period of validity (note you do not use catapult.tools.addressgen as before):

    bin/catapult.tools.votingkey --output votingkeys/private_key_tree1.dat \
                                 --startEpoch 100 --endEpoch 460
    

    This creates a file named votingkeys/private_key_tree1.dat and prints the voting key on the terminal. As your voting keys expire and you create new ones, increase the number on the file name.

    generating 361 keys, this might take a while
    votingkeys\private_key_tree1.dat generated
    verifying generated file
     saved voting public key: ****************
    loaded voting public key: ****************
    

    Copy the voting key public key into the temporary text file where you keep the rest of the keys, label it Voting and save it for later.

投票キーの更新

登録されているすべての投票キーの有効期限が切れると、ノードは投票者としての資格を失い、そのアカウントは 投票報酬 を受け取れません。

現在のエポックに登録されている投票キーが常に 1 つはあることを確認してください。

You can check your currently registered voting keys using the /accounts endpoint of the REST API (Get Account Information), in the supplementalPublicKeys section.

If you need to renew your keys, create new ones as explained above and then register them as explained in the Link the keys section below.

設定

Symbol is highly customizable and this means there are a lot of parameters that can be adjusted to suit your node's needs. Some of these parameters are network-related and must match the rest of nodes in the network (for example currencyMosaicId) whereas some others are node-related and you can set freely (for example friendlyName).

You can edit these files manually (Take a look at these templates to know how they look) but it is more convenient to use the Symbol Node Configurator tool as shown next.

この設定手順はセキュリティを強化するためにオフラインマシンで実行します。

  1. ""前提条件""

    • Python 3 のインストール

    • OpenSSL (Linux での例 sudo apt install openssl) のインストール

  2. symbol-node-configurator のインストール

    • symbol-node-configurator.zip をダウンロードして展開します。他にも GitHub リポジトリ をクローンすることもできます。

    • Move into the symbol-node-configurator directory and install the tool's requirements by running:

      python3 -m pip install -r requirements.txt
      
  1. 証明書の作成

    • certificates フォルダを作成して、そこへ移動します。

    • private.main.txt としてテキストファイルを作成し、 メインアカウントの秘密鍵 をその中に入れます。

    • 証明書生成スクリプト をダウンロードして実行します。

    • private.main.txt の削除

    • 親フォルダへ戻る

    You should now have at least the following files in the certificates folder: ca.pubkey.pem, ca.crt.pem, node.full.crt.pem, node.crt.pem and node.key.pem.

  2. ハーベスタ と VRF キーファイルの作成

    • private.harvesting.txt という名前のファイルを作成し リモート秘密鍵 をその中に入れます。

    • private.vrf.txt という名前のファイルを作成し VRF 秘密鍵 をその中に入れます。

  3. 設定ツールの実行

    generator.py というノードコンフィギュレータツールは、必要なノードの種類に応じて、いくつかのパラメータを指定できます。

    パラメタ

    説明

    --mode

    (必須) ノードタイプ。 api, peer, dual のみ許可されます。

    --harvesting

    (Optional) To create a harvesting node. The Remote key will automatically be used so that リモートハーベスティング is enabled by default.

    --voting

    (Optional) To create a voting node. If you enable this copy the private_key_tree1.dat file you created above into this directory.

    --output

    (オプション) 設定を保存するフォルダ。

    例:

    python3 generator.py --mode dual --harvesting --voting --output settings
      i     | extracting nemesis seed
      i     | preparing base settings
      i     | turning on harvesting
      i     | turning on voting
      i     | extracting mongo scripts
      i     | copying certificates
      i     | moving private_key_tree1.dat
    

    This command will produce all the required node configuration files in the settings directory and you need to copy them to _build, in the machine where your node will run:

    • settings/resources_build/resources へコピーします。

    • settings/certificates_build/certificates へコピーします。

    • settings/nemesis/seed_build/seed へコピーします。 (nemesis の部分を除去します)

  4. config-user.properties を編集

    • _build ディレクトリへ戻ります。

    • 適切な場所を指すよう resources/config-user.properties 編集にします:

      [storage]
      
      seedDirectory = ../seed
      certificateDirectory = ../certificates
      dataDirectory = ../data
      pluginsDirectory = ../lib
      votingKeysDirectory = ../votingkeys
      
  5. config-node.properties を編集

    Edit resources/config-node.properties to customize the node. Learn more about the available properties in the ノードプロパティ guide.

    最も一般的なものは [localnode] セクションにあります:

    プロパティ

    説明

    host

    IP アドレスまたはノードのドメインネーム

    friendlyName

    表示用のノード名

    version

    ノードで使用されている catapult-client のバージョン。現在のものを使用するには、空のままにします。

    roles

    次の値のコンマ区切りのリスト: Peer, Api, Voting, IPv4, IPv6

    例:

    [localnode]
    host = <YOUR_NODE_IP>
    friendlyName = myPeerNode
    version = 1.0.0.0
    roles = IPv4,Peer
    

クライアントの起動

最後の一つのフォルダを作成:

mkdir data

最後に、クライアントに火入れします!

cd bin
./catapult.server

You should see a lot of debug output while the node starts synchronizing with the rest of the network:

... peer returned 42 blocks (heights 2 - 43)

The node can be stopped by pressing Ctrl-C and restarted simply by running catapult.server again.

If you see no error messages, your client is up and running and you can continue with this guide.

API ノードのビルド

Catapult クライアントを実行したら 追加サービス を追加して API ノードに変えることができます:

../../_images/rest-detail.png

As shown in the diagram above, besides the Catapult client you will also need:

  • データベース は REST データを保持します。

  • A Catapult Broker serializing accesses to the database.

  • A REST gateway accepting requests and turning them into Catapult client commands or database queries.

次のセクションでは、各サービスのインストール方法について説明します。それらのすべてが必要になります。

Move to the _build folder created while building the client and create any additional folders requested in the next steps inside _build.

データベースの実行

  1. インストール MongoDB (バージョン 4.4 以上)

    It is recommended to follow the program's own installation instructions, and NOT install from your distro's packages.

  2. データファイルを保存するディレクトリを作成して データベースを実行 します:

    mkdir dbfiles
    mongod --dbpath=dbfiles --wiredTigerCacheSizeGB 2 --bind_ip 127.0.0.1
    

    ノードが実行されている限り、 mongod を実行し続けます。

  3. データベースアクセスの最適化のために インデックス構築 をします。

    The catapult-client repository you cloned to build the client in the first step contains a folder with mongo scripts. Run this one:

    mongo 127.0.0.1/catapult < ../scripts/mongo/mongoDbPrepare.js
    

    この手順を実施しないと、データベースのパフォーマンスが許容できないほど遅くなります。

ブローカーの起動

  1. resources/config-database.properties編集 して databaseUri127.0.0.1:27017 に向けます:

    [database]
    
    databaseUri = mongodb://127.0.0.1:27017
    databaseName = catapult
    
  2. ブローカーの起動:

    bin ディレクトリへ移動して実行します:

    ./catapult.broker ..
    

    ノードが実行されている限り、ブローカーを実行し続けます。

REST ゲートウェイのビルドと実行

  1. catapult-rest リポジトリを クローン して 依存関係をインストール します:

    (最初に _build ディレクトリへ戻ります)

    cd ..
    git clone https://github.com/symbol/symbol
    cd symbol/client/rest
    
  2. REST ゲートウェイの ビルド :

    npm install
    
  3. REST ゲートウェイの 設定 :

    すべての設定は resources/rest.json ファイルに記述されます。

    このファイルを編集 して、次のプロパティが正しいファイルを指していることを確認します。

    プロパティ

    ファイル

    デフォルトの場所

    tlsClientCertificatePath

    node.crt.pem

    _build/certificate/

    tlsClientKeyPath

    node.key.pem

    _build/certificate/

    tlsCaCertificatePath

    ca.crt.pem

    _build/certificate/

    networkPropertyFilePath

    config-network.properties

    _build/resources/

    nodePropertyFilePath

    config-node.properties

    _build/resources/

    絶対パスの使用 例:

    {
       "host": "127.0.0.1",
       "port": 7900,
       "timeout": 1000,
       "tlsClientCertificatePath":
             "/home/symbol/catapult-client/_build/certificate/node.crt.pem",
       "tlsClientKeyPath":
             "/home/symbol/catapult-client/_build/certificate/node.key.pem",
       "tlsCaCertificatePath":
             "/home/symbol/catapult-client/_build/certificate/ca.crt.pem",
       "networkPropertyFilePath":
             "/home/symbol/catapult-client/_build/resources/config-network.properties",
       "nodePropertyFilePath":
             "/home/symbol/catapult-client/_build/resources/config-node.properties"
    }
    
  4. REST ゲートウェイの実行:

    node _build/index.js resources/rest.json
    

    ノードが実行されている限り、REST ゲートウェイを実行し続けます。

確認

REST ゲートウェイが正しく機能している場合はポート 3000 でクエリを実行できます。 Catapult クライアント、ブローカー、MongoDB が正しく機能している場合、 REST が返却する値は他のブロックチェーンと正しく同期されたものになります。

ブラウザで次の URL を指定し、戻り値が期待される値と一致していることを確認します。

  • http://localhost:3000/node/info: サービスの状態

    {
       "status":{
          "apiNode":"up",
          "db":"up"
       }
    }
    
  • http://localhost:3000/chain/info: ネットワークへのノード接続

    {
       "scoreHigh": "0",
       "scoreLow": "11485261672816562840",
       "height": "161138",
       "latestFinalizedBlock": {
          "finalizationEpoch": 224,
          "finalizationPoint": 44,
          "height": "160560",
          "hash": "52D3B01920C695B9194FABD869804E4D2A18D9B5509E47B2C70B0E6C3E275E33"
       }
    }
    

    height フィールドは実際のブロックチェーン高と一致しなければなりませんが、ノードの初回起動時には、同期に時間がかかる場合があります。

Finally, go to the Symbol Explorer page and check that your node appears in the list (It refreshes every 30 seconds).

次の手順

これでノードが稼働したので、次のガイドを見ていきます: