Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Takeharu-K
November 22, 2019

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

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

zk-SNARK
ZoKrates
ゼロ知識証明

Takeharu-K

November 22, 2019
Tweet

More Decks by Takeharu-K

Other Decks in Technology

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  4. Strictly Confiden8al
    Copyright©株式会社Acompany All right reserved.
    オフチェーン計算のメリット
    • ノードの負荷が下がる
    • スケーラビリティが上がる
    • TPSが上がる
    • 情報を秘密にすることができる
    • 残⾼情報を秘密にできる
    • コントラクトで秘密にしたい情報を扱うことができる

    View full-size slide

  5. Strictly Confiden8al
    Copyright©株式会社Acompany All right reserved.
    実現⽅法
    ゼロ知識証明を⽤いる

    View full-size slide

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

    • 洞窟の奥の扉の秘密の合⾔葉を知っている
    ことを証明したい
    • 検証する⼈が証明する⼈にAかBどちらかの
    ⽅から出てくることを要求する
    • 証明する⼈は指定された⽅から出てくる
    • 以上を何度も繰り返す
    • 秘密を知っている⼈は全て正しく出てくる

    View full-size slide

  7. Strictly Confiden8al
    Copyright©株式会社Acompany All right reserved.
    ゼロ知識証明の問題点
    証明に何度もやり取りをする必要がある

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  10. Strictly Confiden8al
    Copyright©株式会社Acompany All right reserved.
    zk-SNARK概観
    ⼊⼒
    出⼒ X
    計算回路作成 Setup
    信頼された第三者が実⾏
    検証
    証明鍵
    検証鍵
    証明者
    検証者
    証明 + X

    View full-size slide

  11. Strictly Confiden8al
    Copyright©株式会社Acompany All right reserved.
    Ethereumで簡単に使うには
    ZoKrates
    ゾクラテス

    View full-size slide

  12. Strictly Confiden8al
    Copyright©株式会社Acompany All right reserved.
    ZoKrates
    • Ethereumでzk-SNARKを使うためのCLIツール
    • 機能
    • 計算回路作成
    • Setup処理
    • 証明作成
    • 検証⽤コントラクト作成

    View full-size slide

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

    View full-size slide

  14. Strictly Confiden8al
    Copyright©株式会社Acompany All right reserved.
    内部の仕組み
    ZoKrates
    のコード
    パース フラット化 CLI
    ⼊⼒
    Witness
    R1CSに変換 libsnark
    コントラクト
    コード⽣成

    View full-size slide

  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

    View full-size slide

  16. Strictly Confiden8al
    Copyright©株式会社Acompany All right reserved.
    Remixで使える

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide