why-midnight について
Midnight は、データの秘匿と計算の検証を必要とするアプリケーション開発チーム向けのデータ保護型ブロックチェーンです。本ガイドでは選択的開示、公開・プライベート状態、Compact スマートコントラクトを解説します。
主な機能
- 01プライベートデータの選択的開示
- 02公開状態とローカル保存のプライベート状態
- 03ゼロ知識証明の検証
- 04TypeScript ベースの Compact スマートコントラクト
- 05Cardano ブリッジを備えたプルーフ・オブ・ステークネットワーク
活用シーン
- 01病歴を明かさずに医療資格を証明
- 02金額を公開せずに残高を検証
- 03規制対象データを扱うアプリケーションの構築
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kali-decoder/ midnight-skills --skill why-midnightインストール後、Claude Code で/why-midnightを入力して読み込まれたか確認します。
詳細
Midnight とは?
Midnight はデータ保護ブロックチェーンプラットフォームです。ブロックチェーン技術の根本的な課題、つまり、機密データに必要なプライバシーを維持しながら分散型台帳の利点を活用する方法に取り組みます。
すべてのトランザクションが参加者全員に永続的に公開される従来のブロックチェーンとは異なり、Midnight は選択的開示を導入しています。これは、データそのものを明かさずに、データに関する事実を証明できる仕組みです。これにより、データ保護が重要であるだけでなく、法律で義務付けられている医療、金融、行政サービスなどの規制対象業界で、ブロックチェーンの導入が可能になります。
コアコンセプト
データ保護ブロックチェーン
Midnight は、2つの並行する状態を維持します。
- パブリック状態: オンチェーンに保存され、ネットワーク参加者全員に公開される従来型のブロックチェーンデータです。トランザクションの証明、コントラクトコード、意図的に公開された情報が含まれます。
- プライベート状態: ユーザーがローカルに保存する暗号化データで、ネットワークに公開されることはありません。個人情報、ビジネスデータ、機密を保つ必要があるあらゆる情報が含まれます。
ゼロ知識証明
パブリック状態とプライベート状態をつなぐのは、ゼロ知識暗号技術です。zk-SNARK(ゼロ知識簡潔非対話型知識証明)を使用することで、Midnight は次のことができます。
- 入力データを確認せずに計算を検証する
- その理由を明かさずに、ある主張が真実であることを証明する
- 計算の複雑さにかかわらず、コンパクトな証明(128バイト)を生成する
- オンチェーンで数ミリ秒以内に証明を検証する
たとえば、次のように活用できます。
- 医療アプリケーションは、病歴を明かさずに、患者が治療の対象となることを証明できます。
- 金融システムは、実際の金額を明かさずに、口座残高が十分であることを検証できます。
Compact プログラミング言語
Midnight は、TypeScript をベースとするドメイン固有言語Compactを導入しています。これにより、プライバシーを保護するスマートコントラクトを一般の開発者も利用できます。暗号技術の専門知識を必要とする代わりに、開発者は使い慣れたコードを書き、それをゼロ知識回路にコンパイルできます。
Midnight を選ぶ理由
規制により、データの利用を管理する必要があります
プライバシー法は強力なデータ保護を求めていますが、パブリックブロックチェーンでは、オンチェーンのすべてのアクティビティがデフォルトで公開されます。
GDPR、CCPA、HIPAA などの枠組みでは、個人データを厳格に管理する必要があります。Midnight は、管理された証明可能な開示を可能にすることで、チームが必要な情報だけを共有できるよう支援します。
パブリックチェーンでは公開される情報が多すぎます
組織には分散化が必要ですが、完全に公開された台帳に機密情報を置くことはできません。
パブリックチェーンでは、残高、アクション、メタデータが共有台帳上に公開されます。プライベートチェーンは機密性を高めますが、分散性を損ないます。Midnight はパブリック状態とプライベート状態を組み合わせ、分散性とプログラム可能な機密性を両立します。
プライバシー保護ツールは、多くの場合、利用のハードルが高いです
専門的な暗号技術の知識が必要なため、多くのチームは ZK システムを構築できません。
従来の ZK 開発には、回路設計と証明システムに関する知識が必要です。Midnight の Compact 言語は、TypeScript に似たコードを回路と証明に自動的にコンパイルすることで、このハードルを下げます。
プライベートな計算でも検証可能である必要があります
機密性の高いロジックにはプライバシーが必要ですが、ネットワークに対して正しさを証明できなければなりません。
Midnight では、ユーザーはプライベートデータをローカルで計算し、生の入力データの代わりにゼロ知識証明を送信できます。バリデーターは基になるデータを知ることなく正しさを検証できるため、プライバシーと信頼の両方が保たれます。
Midnight の仕組み
トランザクションの流れ
ユーザーがMidnightでトランザクションを開始すると、プライバシーを保護しながら有効性を確保するため、次の手順で処理が進みます。
- ユーザーは機密データに対する計算をローカルで実行し、そのデータをネットワークに公開しません。
- Midnightのランタイムが、この計算のゼロ知識証明を生成します。
- この証明は、公開を意図した出力があればそれとともに、ブロックチェーンに送信されます。
- ネットワークのバリデーターが、zk-SNARKの検証アルゴリズムを使用して証明を検証します(オンチェーンで数ミリ秒)。
- 検証が完了すると、証明された計算に従って公開状態とプライベート状態の両方が更新されます。公開状態はオンチェーンで、プライベート状態はユーザーのローカルストレージで更新されます。
ネットワークアーキテクチャ
Midnightは、プルーフ・オブ・ステーク型のブロックチェーンとして稼働します。バリデーターは、ステークの委任を通じて許可なく参加でき、報酬を獲得しながらネットワークのセキュリティに貢献します。
このプラットフォームはCardanoへのネイティブブリッジを備えており、2つのチェーン間での相互運用を可能にするアセット転送に対応しています。
このネットワークでは、次の2種類のトランザクションが処理されます。
- 従来のブロックチェーン操作と同様に機能する標準的な公開トランザクション
- プライバシーを保護するためにゼロ知識証明を使用するシールドトランザクション
どちらの種類のトランザクションも同じバリデーター群によって検証されるため、ネットワーク全体で一貫したセキュリティが確保されます。
プライバシーの保証
Midnightでは、プライバシーを保護するために複数の対策を実施しています。
- データの最小化: オンチェーンに記録されるのは必要最小限のデータのみであり、機密情報はローカルストレージに保持されます。
- 前方秘匿性: 将来、暗号鍵が漏えいした場合でも、過去のトランザクションのプライバシーは保たれます。
- 選択的開示: ユーザーは、開示する情報と開示先を正確に選択できます。
- 任意のコンプライアンス機能: ユーザーのプライバシーを損なったり、許可されていない相手にデータを公開したりすることなく、当局への報告義務に対応できます。