Skip to main content

フェーズ3:Midnight のしくみ

取引の一生(proof server と送信)

契約の入口を呼んでから、取引がチェーンに記録されるまでの流れ。proof server が証明を作り、ウォレットが手数料を合わせてサインし、node に送り、indexer に反映される——を順番に。


Midnight Academy の Phase 2「Transaction Lifecycle and Proof Generation」Phase 3「The Proof Server & Transaction Flow」 にあたる、いちばん大事な「取引の流れ」です。 DApp の組み立てかた の5部品が、実際にどう動くかを順番に見ます。

たとえ話:宿題を出すまで

カウンターを1ふやす、という取引を例に。

宿題でいうと、①自分で解く → ②採点して合格スタンプ → ③提出用紙をそろえる → ④名前を書く → ⑤先生に出す → ⑥成績表に反映、という感じです。

proof server の役わり(ここが Midnight 独特)

  • proof server は「秘密を見せずに、正しさの証明(ZK proof)を作る」係。手元(ローカル)で動かします(ポート 6300)。
  • 秘密データを渡す相手なので、信頼できる場所(自分のマシン等)で動かすのが基本。
  • ふつうのWeb開発にはない一手間ですが、これが「プライバシー+検証可能」を成り立たせています。

コードで見ると(雰囲気)

CountercallTx を呼ぶと、①〜⑥が裏で起きます。

providers がそれぞれの段を担当します(→ DApp の組み立てかた):

担当 provider
公開状態を読む publicDataProvider(indexer)
証明を作る proofProvider(proof server)
ZKの鍵を読む zkConfigProvider
手数料・サイン・送信 walletProvider / midnightProvider
秘密ステートを保存 privateStateProvider

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

  • 取引は 「手元計算 → 証明 → 手数料合わせ → サイン → 送信 → 反映」 の流れ
  • proof server がローカルで証明を作るのが Midnight 独特。秘密はここから外に出さない
  • callTx.xxx() の一行が、この全段を起動している
  • 詰まったら、どの段で止まったか(証明? 手数料(DUST)? 送信?)で切り分ける(→ 詰まりやすいポイント

公式Docsではどこ?

今日のまとめ

  • 取引の一生:計算 → 証明 → 手数料 → サイン → 送信 → 反映
  • proof server が秘密を見せずに証明を作る(ローカル・ポート6300)
  • callTx の一行が全段を起動する

今はここだけでOK

callTx を呼ぶと、proof server が証明を作り、ウォレットがサインして送る」——この流れが言えればOK。

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

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

つぎに読むページ

➡️ いよいよ契約の言葉へ。Compactってなに?