スマートコントラクト(契約のプログラム)を 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(外部リンク・別タブで開きます)