Skip to main content

フェーズ4:CompactとDApp開発

Compact ってなに?

Compact は Midnight の「契約(やくそく)を書く言葉」。公開のロジックと秘密のロジックを同じコードに同居させ、コンパイラがゼロ知識の回路を作ります。


スマートコントラクト(契約のプログラム)を Midnight で書くときに使うのが、Compact(コンパクト) という専用の言葉です。

なんのためにあるの?

ブロックチェーンの上で「こういう時は、こうする」というやくそく(契約)を、自動で実行させたい。 そのやくそくを書くための言葉が Compact です。

Compact = Midnight の「契約(やくそく)を書くための専用の言葉」。

公式では「TypeScript をベースにした DSL(専用の言語)」と説明されています。

たとえ話:やくそくを書く専用ノート

自動販売機を思いうかべてください。

  • 「120円入れて、ボタンを押したら、ジュースを出す」
  • このやくそくは、いつ・だれが来ても、同じように守られます

Compact は、こういう「だれが来ても同じように守られるやくそく」を、ブロックチェーンの上に書くためのノートです。

ふつうのプログラムと、何がちがう?

ここが Compact のすごいところです。

  • 開発者は Compact で契約のロジックを書きます。
  • すると コンパイラ(変換するプログラム)が、その先で ゼロ知識の回路(circuit) を作ってくれます。
  • だから、自分でむずかしい暗号の回路を直接書かなくても、証明できる契約が作れます。

つまり Compact は「ふつうの公開アプリ」を書く言葉ではなく、最初から「証明できること」を前提にした契約を書く言葉です。

公開と秘密を、同じコードに同居できる

公開・秘密・証明の置きどころで見たとおり、Midnight は公開と秘密の二刀流です。

  • Compact では、「公開のロジック」と「秘密のロジック」を同じ契約の中に書けます。
  • 大事なのは「全部秘密にする」ことではなく、「どこを公開し、どこを秘密にするか」を設計すること。
  • これは、フェーズ2の「選んで見せる」の考えを、契約のコードに落としこむ入口です。

気をつけること(よくあるかんちがい)

  • Compact = Solidity(Ethereum の契約言語)の言いかえ、ではありません
  • Compact = ふつうのフロントエンドの TypeScript、でもありません
  • Compact だけ読んでも、プライバシーの全体像は完結しません。しくみゼロ知識証明選んで見せるセットで理解します。
  • 「秘密にできる言葉」より「公開・秘密・証明を設計できる、契約の入口」と考えるとズレません。

開発者として何を学べばいい?

  • まずはサンプルを読むとき、「ここは公開? ここは秘密?」と赤ペンで色分けしてみること
  • 「契約を書くこと」と「回路を直接書くこと」を、ごっちゃにしないこと
  • 地図として:しくみ=土台 / Compact=アプリ層 / NIGHT・DUST=お金とエネルギー と覚えること

今日のまとめ

  • Compact = Midnight の契約を書く専用の言葉(TypeScript ベースの DSL)
  • コンパイラが、その先でゼロ知識の回路を作ってくれる
  • 公開と秘密を同じコードに同居でき、その設計が大事

今はここだけでOK

「Compact は、ブロックチェーンの上に『やくそく』を書く言葉。しかも最初から証明できるように作られている」——これでOK。

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

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

つぎに読むページ

➡️ 本物の文法を一周しよう。Compact の書きかた(文法ツアー)


📚 もっとくわしく(公式・むずかしめ): Compact language(外部リンク・別タブで開きます)Compact developer tools(外部リンク・別タブで開きます)