コンテンツにスキップ

クイックスタートガイド

Dingoは、Go言語で書かれたCardanoブロックチェーンデータノードであり、Ouroboros Network Node-to-Nodeミニプロトコルファミリーを使用して、Cardanoブロックチェーン上のネットワーク通信に積極的に参加します。

⚠️ これは開発中のプロジェクトであり、現在活発に開発が進められています



このガイドでは、Dingoバイナリのダウンロードと、Cardano PreviewネットワークでDingoノードを実行するために必要なすべての手順を説明します。以下の手順に従って始めましょう。


✅ このガイドは一般的なLinux環境を前提としています。必要に応じてコマンドとパスを調整してください。



ステップ1 - Dingoバイナリのダウンロード

Section titled “ステップ1 - Dingoバイナリのダウンロード”

Dingoリリースページから最新リリースをダウンロードします。

⚠️ お使いのシステムに合わせて、バージョン(以下の例ではv0.70.6)とアーキテクチャを調整してください。

mkdir -p ~/dingo
cd ~/dingo
wget https://github.com/blinklabs-io/dingo/releases/download/v0.70.6/dingo-v0.70.6-linux-amd64.tar.gz -O - | tar -xz

以下を実行してバイナリが動作することを確認できます:

./dingo version


ステップ2 - dingo.yaml設定ファイルの作成

Section titled “ステップ2 - dingo.yaml設定ファイルの作成”

Dingoには、preview、preprod、mainnet向けのCardanoネットワーク設定(genesisファイル、config.json)が組み込まれています。これらを別途ダウンロードする必要はありません。

dingoディレクトリにdingo.yamlファイルを作成します。$HOME変数は自動的にホームディレクトリのパスに展開されます:

cat <<EOF > ~/dingo/dingo.yaml
# Storage
databasePath: "$HOME/dingo/.dingo"
plugins:
storage:
blob:
provider: "badger"
config:
# `dataDir` は任意で、指定しなければ `databasePath` を使います。
# dataDir: "$HOME/dingo/.dingo"
blockCacheSize: 0
compression: false
gc: true
indexCacheSize: 0
metadata:
provider: "sqlite"
config:
# `dataDir` は任意で、指定しなければ `databasePath` を使います。
# dataDir: "$HOME/dingo/.dingo"
mempool:
provider: "default"
config:
# `capacity` は任意で、コメントアウトするとモードの既定値を使います。
# 既定値: 通常のモードでは 1048576 (1 MiB)、leios モードでは 26214400 (25 MiB) です。
# capacity: 1048576
api:
blockfrost:
provider: "builtin"
config:
port: 3000
mesh:
provider: "builtin"
config:
port: 8080
utxorpc:
provider: "builtin"
config:
port: 9090
# Mithril
mithril:
aggregatorUrl: ""
cleanupAfterLoad: true
enabled: true
verifyCertificates: true
# Network
bindAddr: "0.0.0.0"
metricsPort: 12798
debugPort: 0
network: "preview"
privateBindAddr: "127.0.0.1"
privatePort: 3002
relayPort: 3001
socketPath: "$HOME/dingo/dingo.socket"
# API and Bark
barkBaseUrl: ""
barkPort: 0
storageMode: "core"
midnight:
serverEnabled: false
reflectionEnabled: false
allowInsecureRemote: false
port: 50051
host: "127.0.0.1"
authTokenPolicyId: ""
EOF

📝 debugPort はプロファイリングが必要な場合を除き 0 のままにします。debugPort は任意の pprof リスナーを制御し、metricsPort とは別で、0 のときは無効のままです。

💡 API サーバーは storageMode: "api" のときだけ有効です。各 API の port0 にすると、その API は無効になります。

💡 Midnight gRPC サーバーには storageMode: "api"midnight.serverEnabled: true、および midnight.port0 以外の値が必要です。インデックス作成とサーバー公開は別々に制御されます。midnight.reflectionEnabledmidnight.serverEnabledtrue の場合にのみ有効で、midnight.serverEnabledfalse の場合はリスナーも無効です。

📝 midnight.host の既定値は "127.0.0.1" です。midnight.host: "" もループバックを使用します。非ループバックの平文リスナーには midnight.allowInsecureRemote: true が必要です。TLS 証明書とキーのペアを設定すると、リモート TLS 公開を使用できます。

📝 midnight.authTokenPolicyId は、API ストレージモードで Midnight インデックスを使用する場合にのみ適用されます。空のままにすると、認証トークン照合のより広い既定の動作が維持されます。

💡 block-cache-sizeindex-cache-sizeを0に設定し、compression: falseにすると、BadgerDBの内部キャッシュの代わりにOSのページキャッシュ(mmap)が使用されます。これによりメモリ使用量が大幅に削減されます。



Dingoに必要なポートに対するUFWファイアウォールルールの追加方法について説明します。

💡 ヒント: UFWはUncomplicated Firewallの略で、iptables(netfilter)ファイアウォールルールの管理に使用されます。

現在開いているポートを確認するには:

sudo ufw status numbered

Ouroboros Node to Node(NtN)通信用のポート3001を追加

Section titled “Ouroboros Node to Node(NtN)通信用のポート3001を追加”
sudo ufw allow 3001/tcp


ステップ4 - Mithrilスナップショットからのブートストラップ

Section titled “ステップ4 - Mithrilスナップショットからのブートストラップ”

Dingoには、スナップショットを自動的にダウンロードしてロードする組み込みのMithrilクライアントがあります。これにより、genesisからチェーンをリプレイする場合と比較して、数時間の同期時間を節約できます。

dingoディレクトリから以下のコマンドを実行します:

cd ~/dingo
./dingo mithril sync --config ~/dingo/dingo.yaml

📝 mithril.downloadMaxTransientRetries は、TLS タイムアウト、HTTP 429 応答、HTTP 5xx 応答などの一時的なブートストラップダウンロード障害に対する再試行回数を制御します。例では既定値の 10 を使用しています。

Dingoは次の処理を行います:

  1. 設定したネットワークの最新Mithrilスナップショットをダウンロード
  2. 証明書チェーンを検証
  3. スナップショットをデータベースにロード

これにはシステムとネットワーク速度によって、約10〜15分かかります。

📝 このステップをスキップした場合、Dingoは起動時にgenesisから同期するため、はるかに長い時間がかかります。



Mithrilスナップショットがロードされたら、ノードを起動します:

cd ~/dingo
./dingo serve --config ~/dingo/dingo.yaml

ノードがピアに接続し、チェーン先端に到達するために残りのブロックを同期するログ出力が表示されるはずです。



コンピューターが再起動したときにDingoノードを自動的に再起動して稼働時間を最大化するためのsystemdサービスの使用に興味がありますか?

Section titled “コンピューターが再起動したときにDingoノードを自動的に再起動して稼働時間を最大化するためのsystemdサービスの使用に興味がありますか?”

Dingoのスタートアップサービスを作成する方法についてのガイドを参照してください



おめでとうございます。Dingoノードを使用する準備が整いました!

Section titled “おめでとうございます。Dingoノードを使用する準備が整いました!”

Cardano CLIを使用してDingoと対話する方法を学ぶ


Doc Holiday logo

Docs authored by Doc Holiday