Lava Cash: Technical Update #1(和訳)
私たちのTelegramチャンネルに参加し、サポートしてくださった皆さんに感謝します。多くの関心を寄せていただき、私たちのビジョンを実現するために懸命に取り組んでいます。
Lava Cashの仕組み
1)ユーザーは、秘密を生成してハッシュ化し、ハッシュとともにSOLをスマートコントラクトに預けます(コミットメント)。このコミットメントは、コントラクトのストレージにあるMerkle treeに格納されます。
2) ユーザーは、コントラクトに入るためのさらなる入金を待ちます。
3) ユーザーは自分の秘密がMerkle treeにあることをゼロ知識で証明し、自分の預け入れアドレスにリンクしていない新しいアドレスに引き出しを行います。
Lava Cashのプライバシーコントラクトを構築するために、Rustライブラリを利用してzk-STARKベースの証明を生成し、検証しました。
Solanaのランタイムには多くの制限があります。Rustのコードを単純に移植してすぐに動作させることはできません。私たちはSolanaのドキュメントに書かれていることを参考にしています。詳しくはこちらをご覧ください。
Solanaランタイムとの互換性を評価したSTARK Rustライブラリがいくつかあります。最終的にOpenZKPのstarkライブラリを選択しました。Solanaランタイム(BPF)でコンパイルさせるために必要な料金が最も少ないように感じたからです。
当然のことながら、いくつかの修正は他のものよりはるかに簡単です。例えば、printlnを使わないようにログに些細な変更を加えました。また、必要のない"std:time"への依存を取り除きました。
さらに大きな変更として、"zkp-map-vec"と"rayon"の依存関係を取り除く必要がありましたが、これはSolanaがファイルシステムや並列処理へのアクセスを持たないためです。
詳細やその他の変更点については、GitHub reposが公開された際にご確認ください。
"stark"をSolanaのランタイム要件に適合させた後、公開に進みます。これにより、知識ゼロでの証明を必要とする他の興味深いSolanaコントラクトにこのコードを活用できる新しい開発者の波が来ることを期待しています。
この記事が気に入ったらサポートをしてみませんか?