最近、@Dusk の契約実行セットアップについて調べていて、そしてPiecrustは、このプロジェクトの話をするときに多くの人が見落としがちな存在です。
正直に言うと、私はもう一つ重厚な実行環境を期待していました。けれど違います。Piecrustは、セキュアでモジュール化された契約実行のために作られた軽量なWebAssemblyベースのVMです。ポイントは、契約のロジックと、その下で行われる暗号学的な作業を切り離していること。契約はVMの中でアプリケーションロジックだけを実行します。高コストなZK証明の検証や署名の検証といった処理は、すべての契約の中に閉じ込めるのではなく、ネイティブのホスト関数へ押し出されます。
実際に効いているのはこの部分です。暗号学的な検証は性質上高コストなので、すべての契約にそれを背負わせると、実質的なメリットのないままシステム全体が遅くなってしまいます。切り出すことで、Duskが必要とする重いプライバシー機構を処理しつつ、実行を軽量に保てるのです。
ただ、まだ誰も十分に検証しきれていない制約があります。モジュール性は紙の上ではきれいに見えますが、大量の処理を伴う実際の金融アプリケーションに対して、どれだけの負荷や複雑性に耐えられるかは、まだ十分にテストされていません。複雑さはすぐに増幅していきます。
それでも、契約が複雑になってから後付けで分離を組み込もうとするより、今のうちに分離の仕組みを作り込むほうが良いでしょう。#dusk $DUSK
正直に言うと、私はもう一つ重厚な実行環境を期待していました。けれど違います。Piecrustは、セキュアでモジュール化された契約実行のために作られた軽量なWebAssemblyベースのVMです。ポイントは、契約のロジックと、その下で行われる暗号学的な作業を切り離していること。契約はVMの中でアプリケーションロジックだけを実行します。高コストなZK証明の検証や署名の検証といった処理は、すべての契約の中に閉じ込めるのではなく、ネイティブのホスト関数へ押し出されます。
実際に効いているのはこの部分です。暗号学的な検証は性質上高コストなので、すべての契約にそれを背負わせると、実質的なメリットのないままシステム全体が遅くなってしまいます。切り出すことで、Duskが必要とする重いプライバシー機構を処理しつつ、実行を軽量に保てるのです。
ただ、まだ誰も十分に検証しきれていない制約があります。モジュール性は紙の上ではきれいに見えますが、大量の処理を伴う実際の金融アプリケーションに対して、どれだけの負荷や複雑性に耐えられるかは、まだ十分にテストされていません。複雑さはすぐに増幅していきます。
それでも、契約が複雑になってから後付けで分離を組み込もうとするより、今のうちに分離の仕組みを作り込むほうが良いでしょう。#dusk $DUSK
