コンテンツにスキップ

Midnightバリデーターセットアップマニュアル

本マニュアルは、Midnight メインネット環境における本番運用を想定し、
要求される高水準のマシンスペックおよび各コンポーネント間のセキュリティ要件に対応するため、
Midnight バリデーター全体のセットアップ構成を systemd ベースで設計・定義しています。

前提条件

本マニュアルを実施する前に、エアギャップマシン環境構築Cardano Preview ネットワークにおいて、 Cardano ステークプールの構築からブロック生成までの一連の作業を完了していることを前提とします。

ヒント

プール構築後は、Preview tADA Faucetを利用してプール委任を行ってください。

対象ネットワーク別の必要サーバー台数は以下のとおりです。

  • Preview:4 台
  • Mainnet:5 台

Midnightネットワーク別の環境対応表

ネットワーク ノードバージョン Ubuntu 依存関係
testnet-02(現行) node-0.12.0 22.04 glibc 2.35
midnight-preview(近日移行) node-0.18.0 24.04 glibc 2.39

midnight-node v0.12.0について

midnight-node v0.12.0バイナリは単独公開されておらず、独自にmidnight-node-dockerから抽出したものとなります。

MidnightからPreviewへの移行アナウンスがあり次第、リポジトリ公開中の v0.18.0へ移行します。

推奨構成

Preview

Cardanoノード稼働サーバー

役割 サービス CPU メモリ ストレージ 備考
ブロック生成ノード cardano-node ≥4 vCPU ≥8 GB ≥100 GB SSD
リレーノード cardano-node ≥4 vCPU ≥8 GB ≥100 GB SSD

Cardanoインデクサーサーバー

役割 サービス CPU メモリ ストレージ 備考
DB基盤 cardano-node + cardano-db-sync + PostgreSQL ≥4 vCPU ≥16 GB ≥100 GB SSD Relay / Midnight BP と同一リージョン

Midnightノード稼働サーバー

役割 サービス CPU メモリ ストレージ 備考
Midnight ブロック生成ノード midnight-node ≥4 vCPU ≥8 GB ≥100 GB SSD PostgreSQL と同一リージョン
Mainnet(参考)

Cardanoノード稼働サーバー

役割 サービス CPU メモリ ストレージ 備考
ブロック生成ノード cardano-node ≥4 vCPU 32 GB 350 GB SSD
リレーノード-1 cardano-node ≥4 vCPU 32 GB 350 GB SSD
リレーノード-2 cardano-node ≥4 vCPU 32 GB 350 GB SSD 冗長用

Cardanoインデクサーサーバー

役割 サービス CPU メモリ ストレージ IOPS 備考
DB基盤 cardano-node + cardano-db-sync + PostgreSQL 4〜8 vCPU ≥64 GB 1 TB NVMe SSD 推奨(最低 700 GB) ≥60k IOPS Relay / Midnight BP と同一リージョン

Midnightノード稼働サーバー

役割 サービス CPU メモリ ストレージ 備考
Midnight ブロック生成ノード midnight-node 4〜8 vCPU 32 GB 200〜500 GB SSD PostgreSQL と同一リージョン

システム全体構成図

flowchart BT

    %% =========================
    %% Midnight Validator
    %% =========================
    subgraph mv[Midnightバリデーター]
        direction TB

        subgraph idx[インデクサーサーバー]
            cn[cardano-node]
            dbs[cardano-db-sync]
            pg[(PostgreSQL)]

            %% Indexer internal (P2P / local)
            cn <--> dbs
            dbs <--> pg
        end

        subgraph mnbox[Midnightサーバー]
            mn[midnight-node]
        end

        %% midnight-node reads indexed state
        mn <--> pg
    end


    %% =========================
    %% Stake Pool - Preview (Single Relay)
    %% =========================
    net[Cardanoネットワーク]

    subgraph pool[Cardano ステークプール]
        direction TB

        %% Single Relay node
        subgraph relay_box[リレーサーバー]
            r1[リレー1]
        end

        %% Block Producer
        subgraph bpgrp[ブロック生成サーバー]
            bp[ブロック生成ノード]
        end

        %% P2P inside pool
        bp <--> r1
    end

    %% P2P to Cardano network
    r1 <--> net


    %% =========================
    %% Operator PC
    %% =========================
    pc[PC(SSH / オンライン)]

    %% SSH access paths (operation only)
    pc -.->|SSH| r1
    pc -.->|SSH| bp
    pc -.->|SSH| mn
    pc -.->|SSH| cn


    %% =========================
    %% Air-gapped Offline Machine
    %% =========================
    ag[エアギャップ(オフライン)]

    %% Physical offline transfer ONLY
    pc -. "物理オフライン媒体(生成された秘密鍵/署名済みファイル等)" .-> ag
Mainnet
flowchart BT

    %% =========================
    %% Midnight Validator
    %% =========================
    subgraph mv[Midnightバリデーター]
        direction TB

        subgraph idx[インデクサーサーバー]
            cn[cardano-node]
            dbs[cardano-db-sync]
            pg[(PostgreSQL)]

            %% Indexer internal (P2P / local)
            cn <--> dbs
            dbs <--> pg
        end

        subgraph mnbox[Midnightサーバー]
            mn[midnight-node]
        end

        %% midnight-node reads indexed state
        mn <--> pg
    end


    %% =========================
    %% Stake Pool - Mainnet (Two Relays)
    %% =========================
    net[Cardanoネットワーク]

    subgraph pool[Cardano ステークプール]
        direction TB

        %% Relay nodes
        subgraph relay1_box[リレーサーバー]
            r1[リレー1]
        end

        subgraph relay2_box[リレーサーバー]
            r2[リレー2]
        end

        %% Block Producer
        subgraph bpgrp[ブロック生成サーバー]
            bp[ブロック生成ノード]
        end

        %% P2P inside pool
        bp <--> r1
        bp <--> r2
    end

    %% P2P to Cardano network
    r1 <--> net
    r2 <--> net


    %% =========================
    %% Operator PC
    %% =========================
    pc[PC(SSH / オンライン)]

    %% SSH access paths (operation only)
    pc -.->|SSH| r1
    pc -.->|SSH| r2
    pc -.->|SSH| bp
    pc -.->|SSH| mn
    pc -.->|SSH| cn


    %% =========================
    %% Air-gapped Offline Machine
    %% =========================
    ag[エアギャップ(オフライン)]

    %% Physical offline transfer ONLY
    pc -. "物理オフライン媒体(生成された秘密鍵/署名済みファイル等)" .-> ag

本マニュアルでは、Ogmiosはパートナーチェーン登録時のみ必要となるため、ローカル運用セットアップには含めずパブリックエンドポイントを使用します。