ブロックチェーン技術と法規制の関係に一石を投じる重要な判決が下されました。暗号資産の匿名化ツールとして知られるTornado Cashが、OFAC(財務省外国資産管理室)による制裁対象となっていましたが、2024年11月27日、第5巡回控訴裁判所は「この制裁処置は法的権限を超えている」との判断を示しました。 今回は、Tornado Cashの中身を確認した後、この裁判の背景や判決のポイントなどについて見ていきます。 裁判資料:https://storage.mollyw
今回は、ZK-SNARKの構成要素である「適切なIOP(Interactive Oracle Proof)」のうち、「PLONK」と呼ばれるプロトコルについて確認していきます。 回路のコンパイル計算過程の整理 PLONKでは、回路での計算の正当性を後から検証する用に、計算過程を記録していきます。 例として、$${(x_1+x_2)(x_2+w_1)}$$を算術回路として表現する際に、どのように計算過程を記録するかをみていきます。 まずはこれまでの記事でも確認した
今回は、ZK-SNARKの構成要素の1つである「適切なIOP(Interactive Oracle Proof)」のうち、「PLONK」と呼ばれるプロトコルを学ぶために必要な事項を確認していきます。 前提の確認$${f \in {\mathbb F}_p^{\le d}[X]}$$で$${f \ne 0}$$の場合、以下が成立します。(多変数でも同様) $${for r \Leftarrow {\mathbb F}_p : Pr[f(r)=0] \le d/p}$$
今回は、ZK-SNARKの構成要素である「関数を用いたコミットメントスキーム」と「適切なIOP(Interactive Oracle Proof)」のうち、「関数を用いたコミットメントスキーム」の代表例である多項式コミットメントについてみていきます。 多項式コミットメント 前回の内容の復習です。 多項式コミットメントは、$${\mathcal{F} = \mathbb{F}_p^{\le{d}}[X]}$$に対するコミットメントです。証明者は、ある1変数多項式$${f
今回は、ZK-SNARKの構成要素である「関数を用いたコミットメントスキーム」と「適切なIOP(Interactive Oracle Proof)」のうち、「関数を用いたコミットメントスキーム」について見ていきます。 コミットメントとは 暗号技術としてのコミットメントのイメージは、「封筒」です。差出人がdataを封筒に入れ、受取人は中身を見るために封筒を開けます。この「封筒に入れる」と「封筒を開ける」に相当するものが、$${commit}$$と$${verify}$$です
今回は、ZK-SNARKにおける「Knowledge Soundness(知識の健全性)」と「Zero Knowledge(ゼロ知識性)」についての定義を見ていきます。 知識の健全性(Knowledge Soundness)の定義 健全性(Soundness)の定義は、3本目の記事でも見た通り 「検証者が真と判断する場合、証明者は$${C(x,w)=0}$$を満たすような$${w}$$を知っている」 ということです。 ここからは知識の健全性、つまり「know : 知っ
今回は、SNARKにはどのような特徴があるのかを前回確認した証明プロトコルに則って確認します。そして前処理の種類と性能について見た後、SNARKを使用するソフトウェアシステムについて大まかな流れをチェックしていきます。 SNARKの特徴概要の振り返り No.1の記事の冒頭でも触れた通り、SNARKとは ・Succinct (簡潔) ・Non-interactive (非対話型) $${\to}$$前回のテーマ ・ARgument (証明者の計算能力は有限である) ・Kn
今回は、一般的な証明プロトコルについて見ていきます。証明プロトコルには、大きく分けて「対話型」「非対話型」の2種類があります。 対話型証明プロトコルとは概要 対話型証明プロトコルにおいて、登場人物は証明者(Prover)と検証者(Verifier)の2人です。証明者は検証者に対して、$${C(x,w)=0}$$を満たすようなwを知っていることを証明し、検証者はそれを元に証明が真であるか偽であるかを判断します。$${x}$$,$${w}$$はそれぞれ有限体上の値をすべて
今回は、SNARKの基本となる「算術回路」についてみていきます。 SNARKの簡単な説明 SNARKとは、Succinct Non-Interactive Argument of Knowledgeの頭文字をとったもので、ある命題(statement)が真であることを簡潔(succinct)に示すための非対話型証明プロトコルを指します。簡潔な証明というのは、短く、すぐに検証できることを指します。命題の例を挙げると、ある関数f(x)に対して "$${f(m)=0}$$となる
こんにちは、ゼロからはじめるZKです!このnoteを見に来てくださった皆さんは、おそらくZKP=ゼロ知識証明ということはすでにご存知の方が多いかと思いますが、ZKPとは具体的にどのような技術で構成され、どのような活用方法があるのかはブラックボックスではないでしょうか? 日本語での解説記事や動画があまりないということもあり、勉強したことのアウトプットとしてこのnoteで発信していきたいと思います。もし間違っている部分やおかしな箇所を見つけた際には、教えていただけると嬉しい