Compact の書きかた で契約のレシピを学びました。 でも、契約だけでは DApp は動きません。まわりの部品と、それらをつなぐTSアプリが必要です。
たとえ話:レストランのチーム
Midnight の DApp は、レストランのチームに似ています。
そして、これらを指揮する店長が、あなたが書く TypeScript アプリです。
TSアプリは「providers」で部品とつなぐ
Midnight.js では、各部品との通信を providers(つなぎ役) にまとめます。 Counter チュートリアルの形を、雰囲気で(短く):
契約を「デプロイ」して「呼ぶ」
providers がそろえば、契約をデプロイして、circuit を呼べます(雰囲気で短く):
callTx.increment() を呼ぶと、裏では proof server が証明を作り → ウォレットが残高合わせ&サイン → node に送信、という流れが起きます。
主なパッケージ(npm)
開発者が実際に使う @midnight-ntwrk/* パッケージの例:
2つの大きな SDK:Midnight.js(契約・ウォレット・証明をまとめた TS 実装)と Wallet SDK(独自ウォレットを作る用)。 ※
ledger-v8のようにバージョンが名前に入るパッケージもあります。組み合わせは Support matrix(外部リンク・別タブで開きます) で確認。
公開・秘密・証明が、どこを流れるか
公開・秘密・証明の置きどころ の話を、部品にあてはめると:
- 秘密ステート →
privateStateProvider(手元)に保存。proof server に渡って証明の材料になる - 公開ステート →
publicDataProvider(indexer)から読める - 証明 → proof server が作り、node に出す取引にのる
開発者として理解すべきこと
- DApp = 契約 + proof server + indexer + node + ウォレット、指揮役が TSアプリ
- TSアプリは providers で各部品につなぐ(読む=indexer、証明=proof server、送る=wallet/node)
deployContract/findDeployedContract/callTx.*が基本の流れ- パッケージ名とバージョンの組み合わせは Support matrix で確認
公式Docsではどこ?
- What is Midnight?(外部リンク・別タブで開きます)(公開/秘密ステートの定義)
- How Midnight works / building blocks(外部リンク・別タブで開きます)
- SDKs(外部リンク・別タブで開きます) / API Reference(外部リンク・別タブで開きます)
- DApp connector(外部リンク・別タブで開きます)
- Configure providers(ガイド)(外部リンク・別タブで開きます)
今日のまとめ
- 動く DApp は 5部品 + TSアプリ(指揮役)
- TSは providers で部品をつなぐ
- 流れ:証明を作る → サイン → 送信、を
callTxが裏でやってくれる
今はここだけでOK
「契約のまわりに、検査員(proof server)・伝票係(indexer)・ホール(node)・お財布(wallet)がいて、店長(TS)がまとめる」——この絵が描ければOK。
📘 もっと正確に(原文準拠コース)
Academy 原文に忠実な詳しい版はこちら:
つぎに読むページ
➡️ 作る流れ全体(コンパイル〜実行)へ。開発の進めかた