Greetings! New to Zcash?
The Zcash network is young, but evolving quickly! Sign up and we'll be in touch with monthly highlights on ecosystem growth, network development and how to get started with Zcash!

言語

Saplingを育てる: 新しい暗号技術基盤

Sean Bowe | Jul 26, 2017

Zcashの次の大きなプロトコルアップグレードは Sapling,と 名付けられており、 秘匿トランザクション のパフォーマンス、セキュリティ、使いやすさを向上させるいくつもの改善点が含まれます。今回はこのブログでは初めてとなるSaplingの開発について解説します。

BLS12-381: 新しいzk-SNARK曲線

現状Zcashのzk-SNARKsは何年も前にZcashのサイエンティストによってデザインされた libsnark の中に実装されたペアリングしやすいBarreto-Naehrig 楕円曲線構築に依存しています。それ以来、数体ふるい法アルゴリズムへの Kim–Barbulescuの最適化 は、現在の研究による曲線の実際のセキュリティはまだもともと意図した128-bitsのままですが、この曲線の推測セキュリティレベルは110bitsに下がっています。

念には念をいれて、Saplingアップグレードの機会に楕円曲線をアップグレードしようとしています。私は今年の初めに BLS12-381 という新しい曲線を発表しました。この曲線は最近の論文で発表されたより保守的な提案を使って128-bitのセキュリティーをターゲットにしています。

現在Rust言語で書かれたこの曲線の インプレメンテーション があり、安全ではない{} コードやアセンブリ最適化を使わない、強固なメモリ安全保障を備えています。大きな曲線でありながら、この新しい実装は現在Zcashで使われているBN254よりも高い効率性を実現します。

Pairing crate benchmarks

スピードの上昇はzk-SNARKの証明と承認のパフォーマンスを上げるペアリング \(\mathbb{G}_2\) と計算において際立ちます。

新しいmulti-exponentiationアルゴリズム

zk-SNARK証明の一番高くつく部分は楕円曲線群の大きな多項式の評価 \(\mathbb{G}_1\)\(\mathbb{G}_2\) です。これはメモリーの中にあるたくさんのべき指数 \(\vec{s}\) とzk-SNARK証明キーのディスクのなかにあるたくさんのベース \(\vec{b}\) を計算 \(\prod_{i=0}^{n}{b_{i}^{s_i}}\) する"multi-exponentiation"と呼ばれるアルゴリズムによって行われています。

現在、Zcashではlibsnarkに実装されたをBos-Costerアルゴリズムを使っています。最悪の場合、このアルゴリズムは稼働しているベースの数と同じだけのメモリーを消費し、メモリー使用を減らす唯一の方法は一度にベースのより小さな部分集合で稼働させることでした。例えば、Ariel Gabizonはこのような最適化を libsnarkへの変更 に導入しています。

libsnarkは最近multi-exponentiationをべき指数のビット単位のリージョンに分割することができ、ベースを集めて部分ごとに合計することができる「Pippenger's algorithm 」というアルゴリズムの異形を実行しました。このアルゴリズムはBos-Costerよりも効率的なだけでなく、ストリームされた証明といった文脈の中でも非常に役立ちます。このアルゴリズムによって、今のシステム上一番メモリーを使う部分である、証明をつくる前に証明キーをメモリーにロードするのを避けることができます。

新しい証明システム

もちろん、multi-exponentiationsを少なくすると、ランタイムのパフォーマンスも上がります。なのでJens Groth氏によって発見された 新しいzk-SNARKの証明システム をPGHR (Pinnochio)と置き換えること前向きに検討しています。この証明システムはより強固な暗号学的仮定を実現しながらも、小さな証明、より早い承認につながります。

さらにGrothの証明システムによって、より安く複数者による計算や今後ブログで紹介する他の機能がデザインできるようになるのです。

次のステップ

上記のそれぞれの取り組みはメモリー使用及び証明時間に関するかなりの改善につながると考えられるものの、zk-SNARK回路のサイズの削減はさらに大きな効果をもたらすことができます。すでに幾つもの新しい暗号プリミティブが BLS12-381構築上につくられており、これは計算回路のサイズを縮小、Zcashアドレスのサイズ削減、そしてプロトコルをシンプルにすることが可能になります。

次のブログでは、これらのプリミティブと、いかにこれがzk-SNARKsのパフォーマンス改善につながるのか解説したいと思います。

Sapling, zkSNARKs, protocol | 全てのタグを見る