Skip to main content

フェーズ6:もっと知る

開発で詰まりやすいポイント

Midnight DApp 開発で初心者がつまずきやすい所を、原因とヒントで整理。compactが見つからない・Docker・ポート6300・faucet・disclose忘れ・バージョン不一致など。


新しいことを始めると、だれでも一度はつまずきます。 ここに「よくあるつまずき」をまとめました。困ったら戻ってきてください。

⚠️ エラー文や対処は更新されます。最終的には公式の Troubleshoot(外部リンク・別タブで開きます) と各ガイドで確認してください。

環境まわり

つまずき だいたいの原因 ヒント
compact: command not found PATH が通っていない ターミナル設定を読み直す(source ~/.zshrc など)/入れ直し
Docker のエラーが出る Docker Desktop が起動していない まず Docker Desktop を起動してから再実行
ポート 6300 が使用中 別の proof server が動いている 別ポートに変える(例 -p 6301:6300
Windows でうまくいかない ネイティブ Windows は非対応 WSL2 + Ubuntu で動かす(公式ガイドあり)
バージョンが噛み合わない CLI / コンパイラ / proof server のズレ Support matrix(外部リンク・別タブで開きます) で組み合わせ確認

トークン・ネットワークまわり

つまずき だいたいの原因 ヒント
faucet で「Invalid address」 shielded アドレスを使った Unshielded(公開)アドレスを使う
手数料が払えない DUST が無い tNIGHT を入手 → tDUST を生成してから取引
取引が通らない つなぎ先ネットワークの取り違え Preprod か ローカル undeployed か、設定を確認
DUST がすぐ湧かない DUST は持っていれば生成されるが時間がかかる 少し待つ。生成のしくみは NIGHT と DUST

Compact(契約)まわり

つまずき だいたいの原因 ヒント
「witness の値が漏れるかも」エラー disclose の付け忘れ 公開する値は disclose(...) で囲む(→ 文法ツアー
circuit を外から呼べない export の付け忘れ 外部から呼ぶ入口は export circuit
pragma のバージョン違い 例が古い/新しい 自分の toolchain に合うバージョンに合わせる(公式で確認)
[] 戻り値が分からない unit(何も返さない)型 「voidのこと」と覚える
メソッドが Compact で呼べない TS専用メソッドだった Ledger ADT(外部リンク・別タブで開きます) で「Compactで呼べるか」確認

考えかたのつまずき

  • 「Midnight なら全部秘密になる」 … いいえ。公開と秘密を自分で分けて設計します(→ 置きどころ)。
  • 「Compact は普通のTSと同じ」 … 文法は近いbut証明が前提。同じ気持ちでは書けません。
  • 「proof server はどこでもいい」 … いいえ。秘密を渡すので手元(信頼できる場所)で動かします。
  • 「shielded=完全に秘密」 … 主にメタデータの漏れ防止。取引が消えるわけではありません。

開発者として理解すべきこと

  • エラーの多くは 環境(PATH/Docker/port/version) で起きる。落ち着いて1つずつ
  • Compact のエラーは親切な番人。とくに disclose 忘れは「漏洩を防いでくれている」
  • 最後は 公式 Troubleshoot と Support matrix が頼り

公式Docsではどこ?

今日のまとめ

  • つまずきは「環境 / トークン / Compact / 考えかた」に分けると整理しやすい
  • disclose 忘れや export 忘れは典型。エラーをよく読む
  • 困ったら公式 Troubleshoot へ

📘 もっと正確に(原文準拠コース)

Academy 原文に忠実な詳しい版はこちら:

つぎに読むページ

➡️ 公式資料の地図で、次に読むべきものを探す。公式リンク集