Regoはゼロ知識証明を前提に設計されたものではありません。Regoは、許可されるべきこと/許可されないべきことを明確に記述するためのポリシー言語です。たとえば「この取引が一定の金額を超えたらブロックする」や「送金を許可する前に、この種の本人確認を要求する」といった内容です。Regoは柔軟で読みやすいため、すでに多くのチームが利用しています。しかし、それらの柔軟なルールを、実際にゼロ知識証明システムが検証できる形に変えるのは、はるかに難しい問題です。ニュー トンが取り組んだのはまさにその課題です。
そもそも、なぜこれが難しいのか
ゼロ知識証明にはすべてが正確である必要があります。証明システムは、何が検証されたのかを正確に把握し、それが正しく検証されたことを、裏にある非公開データを見ずに確認できなければなりません。一方でRegoは、緩く柔軟で、表現力があります。多様な種類のロジックを扱えるためポリシーを書くにはとても良いのですが、それを証明システムが処理できる形へ変換するのは大変です。多くのチームは、どちらかを選ばざるを得なかったでしょう。Regoを維持してZKのプライバシー要素を捨てるか、厳密な証明システムを作って、そもそもRegoを便利にしていた柔軟性を失うか。
ニュートンはそのギャップをどう埋めたのか
ニュートンは選びたくありませんでした。そこで彼らは、Regoでポリシーを書いたら、取引が入ってきたときに自分たちのオペレーターのネットワークで実行できる仕組みを作りました。オペレーターは取引をポリシーと照合し、ルールが守られたことを示す証明を生成します。その証明は「アテステーション」として取引に添付されます。誰でも検証できる、一種の署名付きレシートです。
重要なのは、照合に実際に使われる非公開データ(ウォレットの残高履歴や本人確認スコアなど)が、決して公開される必要がないことです。証明は、ポリシーに合格したことだけを確認します。それ以上の情報は何も明らかになりません。これが、「ただ通ったと信じてください」ではなく、本当の意味でのゼロ知識性を生む理由です。
なぜそれが本当に重要なのか
これは小さな技術的な前進のように聞こえるかもしれませんが、たくさんの扉を開きます。コンプライアンスとプライバシーは、これまでずっと相反するもののように感じられてきました。規制当局やリスクチームは、ルールが守られていることを示す証明を求めます。ユーザーは、自分のデータが非公開のままであることを望みます。多くのシステムは、両者の間でトレードオフを強いてきました。
Regoポリシーをゼロ知識で証明可能にすることで、ニュートンは「片方を犠牲にしなくてもいい」ことを示しています。KYCチェック、送金限度、リスクスコアリングなどを、誰の個人情報もオンチェーンで公開せずに、自動で確実に適用できます。証明は、そのためのデータの代わりになります。
今後それが意味しうること
このアプローチがスケールしても成り立つなら、今後の暗号分野におけるコンプライアンスの作り方が変わります。各アプリが自前のカスタムロジックを書いて、それが安全かどうかを期待するのではなく、すでに知っている言語でポリシーを書いて、それらのポリシーを「既定でプライベートかつ証明可能」にする仕組みに組み込めばよくなるのです。
まだ始まったばかりで、この種の証明生成を大量の取引にわたってスケールさせるのは簡単な仕事ではありません。しかし、ニュートンがそれが可能だと証明している事実自体が、大きな前進です。コンプライアンスは、もうプライバシーを手放すことを意味しなくていい。どちらも両立できるのです。信頼ではなく数学に支えられて、連携して進めることができる。 @NewtonProtocol #Newt $NEWT 
