BUSINESS LIFE TECHNOLOGY ETHEREUM

仮想通貨で利用されるゼロ知識証明(ZKP:Zero Knowledge Proof)とは【zk-SNARK,zk-STARK,Bulletproofs】

2022年5月20日

悩んでいる人
悩んでいる人

仮想通貨で利用されるゼロ知識証明(ZKP:Zero Knowledge Proof)を教えて!

こういった悩みにお答えします.

本記事の信頼性

  • リアルタイムシステムの研究歴12年.
  • 東大教員の時に,英語でOS(Linuxカーネル)の授業.
  • 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校(UNC)コンピュータサイエンス学部で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発.
  • プログラミング歴15年以上,習得している言語: C/C++PythonSolidity/Vyper,Java,Ruby,Go,Rust,D,HTML/CSS/JS/PHP,MATLAB,Verse(UEFN), Assembler (x64,ARM).
  • 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」GitHubにオープンソースとして公開
  • 2020年1月~現在はアメリカのノースカロライナ州チャペルヒルにあるGuarantee Happiness LLCのCTOとしてECサイト開発やWeb/SNSマーケティングの業務.2022年6月~現在はアメリカのノースカロライナ州チャペルヒルにあるJapanese Tar Heel, Inc.のCEO兼CTO.
  • 最近は自然言語処理AIイーサリアムに関する有益な情報発信に従事.
    • (AI全般を含む)自然言語処理AIの論文の日本語訳や,AIチャットボット(ChatGPT,Auto-GPT,Gemini(旧Bard)など)の記事を50本以上執筆.アメリカのサンフランシスコ(広義のシリコンバレー)の会社でプロンプトエンジニア・マネージャー・Quality Assurance(QA)の業務委託の経験あり.
    • (スマートコントラクトのプログラミングを含む)イーサリアムや仮想通貨全般の記事を200本以上執筆.イギリスのロンドンの会社で仮想通貨の英語の記事を日本語に翻訳する業務委託の経験あり.

こういった私から学べます.

仮想通貨を取引したいあなたは,まずは国内取引所のCoincheckを開設しましょう!

Coincheck

Coincheckが扱っていない仮想通貨を取引したい場合や低い手数料で取引したい場合は,海外取引所を開設する必要があります.

しかし,海外取引所は日本円が使えないので,国内取引所から仮想通貨を送る必要があります.

そこで,以下のおすすめの仮想通貨取引所(主に海外)で開設して,Coincheckからビットコインやイーサリアムを送りましょう!

ゼロ知識証明(ZKP:Zero Knowledge Proof)

ゼロ知識証明(ZKP:Zero Knowledge Proof)とは,1985年にShafiらが提案した「ある人が自分の持っているある命題が真であることを,他の人に真であること以外の知識を何も教えずに証明する手法」です.

ゼロ知識証明は,以下の3つを満たす必要があります.

  • 完全性(completeness):条件が真であれば,正直な検証者(つまり,プロトコルに正しく従っている者)は,正直な証明者によってこの事実を確信できること.
  • 健全性(soundness): ステートメントが偽である場合,不正な証明者は,小さな確率を除いて,それが真であると正直な検証者を納得させることはできないこと.
  • ゼロ知識性(zero-knowledge): 条件が真であれば,検証者はその文が真であるという事実以外には何も学ばない.言い換えれば,証明者が秘密を知っていることを示すシナリオを想像するには,(秘密ではなく)文を知っていれば十分であること.すべての検証者が,証明されるべき声明だけが与えられれば(そして,証明者にアクセスできなければ),正直な証明者と問題の検証者との間で正常なコミュニケーションができたような記録を作成できること.

ゼロ知識証明は,大きく分けて以下の2つになります.

  • 対話式ゼロ知識証明:証明したい人と,確認したい人の間で何度かデータのやりとりをすることで納得する証明方法
  • 非対話ゼロ知識証明:データを一度提示するだけで相手に納得する証明方法

ゼロ知識証明の解説は,こちらの動画がわかりやすいです.

2021年12月に「イーサリアムのスケーリングソリューションとして注目を集めるポリゴン(Polygon)が,ゼロ知識証明の開発を行うスタートアップ「Mir」を買収することに合意した」とのことです.

ポリゴンを知りたいあなたはこちらからどうぞ.

代表的な非対話ゼロ知識証明

代表的な非対話ゼロ知識証明として以下が挙げられます.

  • zk-SNARK:zero-knowledge Succinct Non-Interactive ARguments of Knowledge
  • zk-STARK:zero-knowledge Scalable Transparent ARgument of Knowledge
  • Bulletproofs:信頼できる設定を必要としない短い非対話的なゼロ知識証明

zk-SNARKとzk-STARKの解説動画はこちらです.

zk-SNARKを最初に実装した仮想通貨はZcashです.

Zcashを知りたいあなたはこちらからどうぞ.

Bulletproofsは,信頼できる設定を必要としない短い非対話的なゼロ知識証明です.

Bulletproofsは,暗号化された平文がうまく形成されていることを検証者に納得させるために使用されます.

例えば,暗号化された数字が所定の範囲内にあることを,その数字について他には何も明かすことなく証明します.

SNARKと比較すると,Bulletproofsは信頼できる設定を必要としません.

しかし,Bulletproofsの検証は,SNARK証明の検証よりも時間がかかります.

Bulletproofsの解説動画はこちらです.

Bulletproofsを利用する仮想通貨としてモネロが挙げられます.

モネロを知りたいあなたはこちらからどうぞ.

ゼロ知識証明の代表的なライブラリ

ゼロ知識証明の代表的なライブラリを紹介します.

本記事で紹介するライブラリはC++/Rust言語で開発されています.

C++/Rust言語を学びたいあなたはこちらからどうぞ.

C++言語:libsnark

libsnarkは,計算の完全性をゼロ知識で証明・検証する暗号手法であるzk-SNARKを実装するC++言語のライブラリです.

libsnarkは,SCIPR Labという簡潔な完全性とプライバシーを提供する暗号証明システムの実用化を目指す研究者による複数機関にわたる学術共同体により開発されました.

Go言語:gnark

gnarkは,ゼロ知識証明zk-SNARKの高レベルのAPIを提供するGo言語のライブラリです.

gnarkは,ドキュメントやベンチマークの結果等が充実しています.

まとめ

仮想通貨で利用されるゼロ知識証明を紹介しました.

また,ゼロ知識証明を利用している仮想通貨を解説しました.

仮想通貨を取引したいあなたは,まずは国内取引所のCoincheckを開設しましょう!

Coincheck

Coincheckが扱っていない仮想通貨を取引したい場合や低い手数料で取引したい場合は,海外取引所を開設する必要があります.

しかし,海外取引所は日本円が使えないので,国内取引所から仮想通貨を送る必要があります.

そこで,以下のおすすめの仮想通貨取引所(主に海外)で開設して,Coincheckからビットコインやイーサリアムを送りましょう!

-BUSINESS, LIFE, TECHNOLOGY, ETHEREUM
-, ,