22
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

nem / symbolAdvent Calendar 2022

Day 4

プライベートチェーンを建てる その1 statistics-service構築編

Last updated at Posted at 2022-12-03

はじめに

この記事はSymbolブロックチェーンでプライベートチェーンを構築するシリーズのその1です。
プライベートチェーンの構築は公式ドキュメントにも記載されています。
公式ドキュメントを参考にすると、Symbol-bootstrapを使用してプライベートテストネットを建てることができます。
ただ、公式ドキュメントではノードの構築の方法は紹介されていますが、エクスプローラーなどの周辺ツールの整備がされていません。

プライベートチェーンのノードを建ててもエクスプローラーやウォレットが使えないと色々と不便なのでそのあたりの構築方法をこのシリーズでご紹介できればと思います。

シリーズ紹介

その1 statistics-service構築編(この記事です)
  • 統計サービスです。エクスプローラーを正常に動かすために必要です。
  • ネットワークのノードから定期的に情報を収集し、ノードの総数、正常性、地理的分布などを生成・提供してくれます。
その2 Symbolエクスプローラー構築編
  • ブロックチェーンのコンテンツを閲覧するための読み取り専用の Web アプリケーションです。
  • エクスプローラーは、特定のネットワーク上のトランザクション、アカウント、名前空間、モザイク、およびブロック情報の検索をサポートしています。
その3 プライベートチェーン構築編
  • プライベートチェーンを構築します。
  • ここではより実践的にSymbol-bootstrap組み込みのプライベートテストネットではなくあるツールを使って1から設定ファイルを作成します。
その4 Symbolウォレット(デスクトップウォレット)構築編
  • アカウント、モザイク、名前空間、発行トランザクションを管理する Symbol のクロスプラットフォーム クライアントです。
  • デスクトップウォレットはMac、Windows、および Web アプリケーションとして利用できるので、今回はWEBでアクセスする形にします。
その5 Faucet構築編
  • Faucetとはいわゆる蛇口ですね。テストネット等で使用する基軸通貨の配布を行えるツールです。
その6 おまけ
  • Symbol-bootstrapを使って他人に設定を共有する方法をご紹介する予定です。(もしかしたらやらないかも)

前提知識

全体を通して最低限以下の知識があると望ましいです。

  • Linuxを扱ったことがある
  • Docker、docker-composeが扱える(基本的にコマンドが叩ければOKです)
  • ドメインやSSL(TLS)についての知識がある

その1 statistics-service構築編

それでは、これよりstatistics-serviceを構築していきますが、まずはStatistics Serviceとはなんなのか?を少し説明します。

statistics-serviceとは?

Symbol Statistics Service
It periodically collects information from the network's nodes and produces useful metrics and insights, such as the total number of nodes, their health or their geographical distribution.

Statistics Serviceの説明をDeeplで翻訳すると以下のようになります。

シンボル統計サービス
ネットワークのノードから定期的に情報を収集し、ノードの総数、健康状態、地理的な分布など、有用な指標や洞察を生成します。

要は、Symbolのノードを定期的に巡回し、情報を収集するツールということですね。

ちなみに、Statistics Serviceは以下のAPIを提供しています。

Statistics Serviceを構築するのはなぜ?

なぜ、Statistics Serviceを構築するかというと、Symbolエクスプローラーがこのサービスを利用しているからなんですね。
今のエクスプローラーはStatistics Serviceがないと動かない(動かす方法はあるがめんどくさい)です。

Statistics Serviceの構築方法

それでは、実際にStatistics Serviceを構築していきます。

必要なこと(もの)

  • サーバー(ローカル環境でも可)
  • Docker及びdocker-composeが実行出来ること
  • gitが使えること
  • ドメイン(なくても可)

タグを指定してソースコートを取得(2022/12現在 v1.1.9)

$ git clone https://github.com/symbol/statistics-service.git -b v1.1.9

モジュールのインストール

cd statistics-service
npm install

公式の手順に沿うとnpm run devでツールは起動出来るようですが、この方法ではツールの永続化をすることはできませんので、Docker Setupを参考にDockerでツールを永続化させます。

README.mdの手順にしたがってイメージをビルドしても良いのですが、Docker Hubに公式イメージが公開されているのでそちらを使っても問題ありません。公式のイメージを使う場合はモジュールのインストールなどは飛ばしてOKです。

ソースコードから手動でイメージをビルドする場合は以下のコマンドです。

$ cd statistics-service
$ docker build -t symbol-statistics-service:latest .

docker-compose.ymlの作成

symbol-statistics-serviceはデータベースにmongodbを使います。
公式のREADME.mdにはmongodbの情報は載っていなかったので、私が独自に作成しました。(なので他に良い書き方があればツッコミお待ちしています)

version: "3"
services:
    mongodb:
        environment:
            MONGO_INITDB_DATABASE: statistics
        container_name: mongodb
        restart: always
        image: mongo:latest
        volumes:
            - ../databases/db:/dbdata:rw
    app:
        container_name: statistics
        restart: always
        image: symbol-statistics-service:latest
        environment:
            - PORT=4001
            - MONGODB_ENDPOINT=mongodb://mongodb:27017
            - NODES=["http://○○.○○.○○.○○:3000,http://○○.○○.○○.○○:3000"]
        ports:
            - "3003:4001"
        depends_on:
            - mongodb

補足

...
        image: mongo:latest
        volumes:
            - ../databases/db:/dbdata:rw ※1
...
        restart: always
        image: symbol-statistics-service:latest ※2
        environment:
            - PORT=4001
            - MONGODB_ENDPOINT=mongodb://mongodb:27017
            - NODES=["http://sym-test-03.opening-line.jp:3000"] ※3
...

※1 statistics-serviceで収集したデータを保持する場所です。ストレージ容量に余裕のある場所を指定
※2 イメージ名は先程ビルドしたものかDockerHubのものを指定(公式を使う場合は symbolplatform/symbol-statistics-service:latest を指定)
※3 次回以降に作成するプライベートチェーンのノードURLを指定(今はOpeningLineさんのテストネットのノードをお借ります)

実行

docker-compose up -d

確認

  • サーバーで実行した人
http://サーバーのIPアドレス:3003/nodes
  • ローカルPCで実行した人
http://ローカルPCのIPアドレス:3003/nodes

で確認ができます。正常に起動している場合は以下の添付図のような情報が取得出来ると思います。

image.png

不要になったら以下のコマンドで停止。

docker-compose down

以上で、statistics-service構築編を終わります。

次回は、Symbolエクスプローラーの構築編をお届けします。

22
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?