ZoKrates - zk-SNARKをEthereumで使おう -

89def89f05206a562079048f4b78994c?s=47 Takeharu-K
November 22, 2019

ZoKrates - zk-SNARKをEthereumで使おう -

Blockchain Nagoya LT会で発表したスライドです。

zk-SNARK
ZoKrates
ゼロ知識証明

89def89f05206a562079048f4b78994c?s=128

Takeharu-K

November 22, 2019
Tweet

Transcript

  1. ZoKrates zk-SNARKをEthereumで使う 191122 Acompany CTO 近藤岳晴

  2. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. Ethereumにおけるトランザクション処理 コントラクトの実⾏と検証を⾏う

  3. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. オフチェーンで計算 実⾏結果の検証だけを⾏う

  4. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. オフチェーン計算のメリット • ノードの負荷が下がる •

    スケーラビリティが上がる • TPSが上がる • 情報を秘密にすることができる • 残⾼情報を秘密にできる • コントラクトで秘密にしたい情報を扱うことができる
  5. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. 実現⽅法 ゼロ知識証明を⽤いる

  6. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. ゼロ知識証明 「秘密の情報を知っていることを、秘密の情 報を開⽰することなく証明すること」 例

    • 洞窟の奥の扉の秘密の合⾔葉を知っている ことを証明したい • 検証する⼈が証明する⼈にAかBどちらかの ⽅から出てくることを要求する • 証明する⼈は指定された⽅から出てくる • 以上を何度も繰り返す • 秘密を知っている⼈は全て正しく出てくる
  7. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. ゼロ知識証明の問題点 証明に何度もやり取りをする必要がある

  8. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. 解決策 zk-SNARKを使う

  9. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. zk-SNARK • Zero-Knowledge Succinct

    Non-interactive Arguments of Knowledge • ⼀回のメッセージのやりとりで完了 • ゼロ知識性を持つ • 秘密情報を漏らすことがない • 検証者は証明が正しければ承認する • 証明が正しくなければ承認しない • デメリット • 信頼できる第三者による準備が必要
  10. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. zk-SNARK概観 ⼊⼒ 出⼒ X

    計算回路作成 Setup 信頼された第三者が実⾏ 検証 証明鍵 検証鍵 証明者 検証者 証明 + X
  11. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. Ethereumで簡単に使うには ZoKrates ゾクラテス

  12. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. ZoKrates • Ethereumでzk-SNARKを使うためのCLIツール •

    機能 • 計算回路作成 • Setup処理 • 証明作成 • 検証⽤コントラクト作成
  13. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. ZoKrates概観 • 独⾃の⾼級⾔語で計算回路作成 •

    Setupの実⾏ • 証明の作成 • 検証⽤コントラクトコード作成
  14. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. 内部の仕組み ZoKrates のコード パース

    フラット化 CLI ⼊⼒ Witness R1CSに変換 libsnark コントラクト コード⽣成
  15. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. 計算回路のコード例 def main(private field

    a, field b) -> (field): field result = if a * a == b then 1 else 0 fi return result
  16. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. Remixで使える

  17. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. ZoKratesでzk-SNARKをEthereumで使ってみよう

  18. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. 詳しくはこちらで https://hackernoon.com/zokrates-zksnarks-on-ethereum-made- easy-ql5oc3638

  19. Strictly Confiden8al Copyright©株式会社Acompany All right reserved. Happy Hacking !