docs
  • README
  • Browsing the Fides Innova ZKP Network
  • Connecting Your MetaMask to the Network
  • Full Node
  • Introduction
  • Mobile App
  • Publishing Service Contracts on the Fides Innova Blockchain
  • Web App (User Panel, Admin Panel)
  • Fides Zero-Knowledge Proof (ZKP) Algorithm
    • 1- Setup Phase
      • 1- Setup Phase
      • Example 1
      • Example 2
    • 2-commitment-phase
      • 2- Commitment Phase
      • Example 1
      • Example 2
    • 3- Proof Generation Phase
      • 3- Proof Generation Phase
      • Example 1
      • Example 2
    • 4- Proof Verification Phase
      • 4- Proof Verification Phase
      • Example 1
      • Example 2
    • 5-target-architecture
      • Target architecture - RISC-V RV32IM
      • Target architecture - ARMv6-M Cortex-M0 32-bit ARM - RaspberryPi Pico
      • Target architecture - Cortex-A53 - for Siemens SIMATIC IOT2050
  • Tech Stack
    • Message Queuing Telemetry Transport (MQTT) protocol
    • Service Contract
    • Service Market
    • ZKP-enabled JavaScript Execution
  • ZKP and IoT Device Firmware Integration (zk-Device Design)
    • E-Card; a sample zk-Device
      • Installation
      • Instruction Set Architecture (ISA)
      • Mesh IoT Network
      • Reset
Powered by GitBook
On this page
  • 4-1- PFR Verify
  • 4-2- AHP Verify
  1. Fides Zero-Knowledge Proof (ZKP) Algorithm
  2. 4- Proof Verification Phase

4- Proof Verification Phase

In this section, we will review the proof verification phase of the protocol. This phase contains two parts; AHP and PFR. We also provide an example to clarify the method.

4-1- PFR Verify

Verify(F,H,K,comPFR,πPFR)Verify(\mathbb{F}, \mathbb{H}, \mathbb{K}, com_{PFR},\pi_{PFR})Verify(F,H,K,comPFR​,πPFR​): This function outputs 111, if the following equations satisfies.

1)1)1) h(γpi)=aih(\gamma^{p_i})=a_ih(γpi​)=ai​ for i∈{1,2,...,v}i\in \{1,2,...,v\}i∈{1,2,...,v} where πPFR1=h(x)\pi_{PFR_1}=h(x)πPFR1​​=h(x).

2)2)2) M(β2)−q2(β2)ZK(β2)=0M(\beta_2)-q_2(\beta_2)Z_{\mathbb{K}}(\beta_2)=0M(β2​)−q2​(β2​)ZK​(β2​)=0

4-2- AHP Verify

Verify(F,H,K,ComAHP,ΠAHP,X,Y)Verify(\mathbb{F}, \mathbb{H}, \mathbb{K}, Com_{AHP},\Pi_{AHP},X,Y)Verify(F,H,K,ComAHP​,ΠAHP​,X,Y): This function outputs 1 if

1- The following four equations satisfies for random value β3∈F\beta_3\in\mathbb{F}β3​∈F chosen by the Verifier.

h3(β3)vK(β3)=a(β3)−b(β3)(β3g3(β3)+σ3∣K∣)(1)h_3(\beta_3)v_{\mathbb{K}}(\beta_3)=a(\beta_3)-b(\beta_3)(\beta_3g_3(\beta_3)+\frac{\sigma_3}{|\mathbb{K}|})\hspace{1cm}(1)h3​(β3​)vK​(β3​)=a(β3​)−b(β3​)(β3​g3​(β3​)+∣K∣σ3​​)(1)

r(α,β2)σ3=h2(β2)vH(β2)+β2g2(β2)+σ2∣H∣(2)r(\alpha,\beta_2)\sigma_3=h_2(\beta_2)v_{\mathbb{H}}(\beta_2)+\beta_2g_2(\beta_2)+\frac{\sigma_2}{|\mathbb{H}|}\hspace{1.3cm}(2)r(α,β2​)σ3​=h2​(β2​)vH​(β2​)+β2​g2​(β2​)+∣H∣σ2​​(2)

s(β1)+r(α,β1)(∑M∈{A,B,C}ηMz^M(β1))−σ2z^(β1)=h1(β1)vH(β1)+β1g1(β1)+σ1∣H∣(3)s(\beta_1)+r(\alpha,\beta_1)(\sum_{M\in\{A,B,C\}}\eta_M\hat{z}_M(\beta_1))-\sigma_2\hat{z}(\beta_1)=h_1(\beta_1)v_{\mathbb{H}}(\beta_1)+\beta_1g_1(\beta_1)+\frac{\sigma_1}{|\mathbb{H}|}\hspace{2mm}(3)s(β1​)+r(α,β1​)(∑M∈{A,B,C}​ηM​z^M​(β1​))−σ2​z^(β1​)=h1​(β1​)vH​(β1​)+β1​g1​(β1​)+∣H∣σ1​​(3)

z^A(β1)z^B(β1)−z^C(β1)=h0(β1)vH(β1)(4)\hat{z}_A(\beta_1)\hat{z}_B(\beta_1)-\hat{z}_C(\beta_1)=h_0(\beta_1)v_{\mathbb{H}}(\beta_1)\hspace{2cm}(4)z^A​(β1​)z^B​(β1​)−z^C​(β1​)=h0​(β1​)vH​(β1​)(4)

where a(x)=∑M∈{A,B,C}ηMvH(β2)vH(β1)valAHPM^(x)∏N∈{A,B,C}−{M}(β2−rowAHPN^(x))(β1−colAHPN^(x))a(x)=\sum_{M\in \{A,B,C\}} \eta_M v_{\mathbb{H}}(\beta_2)v_{\mathbb{H}}(\beta_1)\hat{val_{AHP_M}}(x)\prod_{N\in\{A,B,C\}-\{M\}}(\beta_2-\hat{row_{AHP_N}}(x))(\beta_1-\hat{col_{AHP_N}}(x))a(x)=∑M∈{A,B,C}​ηM​vH​(β2​)vH​(β1​)valAHPM​​^​(x)∏N∈{A,B,C}−{M}​(β2​−rowAHPN​​^​(x))(β1​−colAHPN​​^​(x))and b(x)=∏M∈{A,B,C}(β2−rowAHPM^(x))(β1−colAHPM^(x))b(x)=\prod_{M\in\{A,B,C\}}(\beta_2-\hat{row_{AHP_M}}(x))(\beta_1-\hat{col_{AHP_M}}(x))b(x)=∏M∈{A,B,C}​(β2​−rowAHPM​​^​(x))(β1​−colAHPM​​^​(x)).

2- The output resultresultresult in following steps is 111.

2-1- The Verifier chooses random values ηrowAHPA\eta_{row_{AHP_A}}ηrowAHPA​​​ , ηcolAHPA\eta_{col_{AHP_A}}ηcolAHPA​​​ , ηvalAHPA\eta_{val_{AHP_A}}ηvalAHPA​​​ , ηrowAHPB\eta_{row_{AHP_B}}ηrowAHPB​​​ , ηcolAHPB\eta_{col_{AHP_B}}ηcolAHPB​​​ , ηvalAHPB\eta_{val_{AHP_B}}ηvalAHPB​​​ , ηrowAHPC\eta_{row_{AHP_C}}ηrowAHPC​​​ , ηcolAHPC\eta_{col_{AHP_C}}ηcolAHPC​​​ , ηvalAHPC\eta_{val_{AHP_C}}ηvalAHPC​​​ , ηw^\eta_{\hat{w}}ηw^​, ηz^A\eta_{\hat{z}_A}ηz^A​​, ηz^B\eta_{\hat{z}_B}ηz^B​​, ηz^C\eta_{\hat{z}_C}ηz^C​​, ηz^\eta_{\hat{z}}ηz^​, ηh0\eta_{h_0}ηh0​​, ηs\eta_sηs​, ηg1\eta_{g_1}ηg1​​, ηh1\eta_{h_1}ηh1​​, ηg2\eta_{g_2}ηg2​​, ηh2\eta_{h_2}ηh2​​, ηg3\eta_{g_3}ηg3​​ and ηh3\eta_{h_3}ηh3​​ of F\mathbb{F}F The Verifier can choose as following: ηrowAHPA=hash(s(10))\eta_{row_{AHP_A}}=hash(s(10))ηrowAHPA​​​=hash(s(10)) , ηcolAHPA=hash(s(11))\eta_{col_{AHP_A}}=hash(s(11))ηcolAHPA​​​=hash(s(11)) , ηvalAHPA=hash(s(12))\eta_{val_{AHP_A}}=hash(s(12))ηvalAHPA​​​=hash(s(12)) , ηrowAHPB=hash(s(13))\eta_{row_{AHP_B}}=hash(s(13))ηrowAHPB​​​=hash(s(13)) , ηcolAHPB=hash(s(14))\eta_{col_{AHP_B}}=hash(s(14))ηcolAHPB​​​=hash(s(14)) , ηvalAHPB=hash(s(15))\eta_{val_{AHP_B}}=hash(s(15))ηvalAHPB​​​=hash(s(15)) ,ηrowAHPC=hash(s(16))\eta_{row_{AHP_C}}=hash(s(16))ηrowAHPC​​​=hash(s(16)) , ηcolAHPC=hash(s(17))\eta_{col_{AHP_C}}=hash(s(17))ηcolAHPC​​​=hash(s(17)) , ηvalAHPC=hash(s(18))\eta_{val_{AHP_C}}=hash(s(18))ηvalAHPC​​​=hash(s(18)) , ηw^=hash(s(19))\eta_{\hat{w}}=hash(s(19))ηw^​=hash(s(19)), ηz^A=hash(s(20))\eta_{\hat{z}_A}=hash(s(20))ηz^A​​=hash(s(20)), ηz^B=hash(s(20))\eta_{\hat{z}_B}=hash(s(20))ηz^B​​=hash(s(20)), ηz^C=hash(s(21))\eta_{\hat{z}_C}=hash(s(21))ηz^C​​=hash(s(21)), ηh0=hash(s(22))\eta_{h_0}=hash(s(22))ηh0​​=hash(s(22)), ηs=hash(s(23))\eta_{s}=hash(s(23))ηs​=hash(s(23)), ηg1=hash(s(24))\eta_{g_1}=hash(s(24))ηg1​​=hash(s(24)), ηh1=hash(s(25))\eta_{h_1}=hash(s(25))ηh1​​=hash(s(25)), ηg2=hash(s(26))\eta_{g_2}=hash(s(26))ηg2​​=hash(s(26)), ηh2=hash(s(27))\eta_{h_2}=hash(s(27))ηh2​​=hash(s(27)), ηg3=hash(s(28))\eta_{g_3}=hash(s(28))ηg3​​=hash(s(28)), ηh3=hash(s(29))\eta_{h_3}=hash(s(29))ηh3​​=hash(s(29)).

2-2- The Verifier derives commitment of p(x)p(x)p(x), CompCom_pComp​, by using polynomial commitment scheme homomorphism.

For example, if polynomial commitment scheme KZGKZGKZG is used, then

Comp=ηrowAHPAComAHP0+ηcolAHPAComAHP1+ηvalAHPAComAHP2+ηrowAHPBComAHP3+ηcolAHPBComAHP4+ηvalAHPBComAHP5+ηrowAHPCComAHP6+ηcolAHPBComAHP7+ηvalAHPCComAHP8+ηw^ComAHPX2+ηz^AComAHPX3+ηz^BComAHPX4+ηz^CComAHPX5+ηh0ComAHPX6+ηsComAHPX7+ηg1ComAHPX8+ηh1ComAHPX9+ηg2ComAHPX10+ηh2ComAHPX11+ηg3ComAHPX12+ηh3ComAHPX13Com_p=\eta_{row_{AHP_A}}Com_{AHP}^0+\eta_{col_{AHP_A}}Com_{AHP}^1+\eta_{val_{AHP_A}}Com_{AHP}^2+\eta_{row_{AHP_B}}Com_{AHP}^3+\eta_{col_{AHP_B}}Com_{AHP}^4+\eta_{val_{AHP_B}}Com_{AHP}^5+\eta_{row_{AHP_C}}Com_{AHP}^6+\eta_{col_{AHP_B}}Com_{AHP}^7+\eta_{val_{AHP_C}}Com_{AHP}^8+\eta_{\hat{w}}Com_{AHP_X}^2+\eta_{\hat{z}_A}Com_{AHP_X}^3+\eta_{\hat{z}_B}Com_{AHP_X}^4+\eta_{\hat{z}_C}Com_{AHP_X}^5+\eta_{h_0}Com_{AHP_X}^6+\eta_sCom_{AHP_X}^7+\eta_{g_1}Com_{AHP_X}^8+\eta_{h_1}Com_{AHP_X}^9+\eta_{g_2}Com_{AHP_X}^{10}+\eta_{h_2}Com_{AHP_X}^{11}+\eta_{g_3}Com_{AHP_X}^{12}+\eta_{h_3}Com_{AHP_X}^{13}Comp​=ηrowAHPA​​​ComAHP0​+ηcolAHPA​​​ComAHP1​+ηvalAHPA​​​ComAHP2​+ηrowAHPB​​​ComAHP3​+ηcolAHPB​​​ComAHP4​+ηvalAHPB​​​ComAHP5​+ηrowAHPC​​​ComAHP6​+ηcolAHPB​​​ComAHP7​+ηvalAHPC​​​ComAHP8​+ηw^​ComAHPX​2​+ηz^A​​ComAHPX​3​+ηz^B​​ComAHPX​4​+ηz^C​​ComAHPX​5​+ηh0​​ComAHPX​6​+ηs​ComAHPX​7​+ηg1​​ComAHPX​8​+ηh1​​ComAHPX​9​+ηg2​​ComAHPX​10​+ηh2​​ComAHPX​11​+ηg3​​ComAHPX​12​+ηh3​​ComAHPX​13​ \

2-3- The Verifier chooses random x′∈Fx'\in\mathbb{F}x′∈F and queries p(x′)p(x')p(x′). Also, can select as x′=hash(s(22)))x'=hash(s(22)))x′=hash(s(22))).

2-4- The Verifier computes result=PC.Check(vk,Comp,x′,y′=πAHP16,πAHP17)result=PC.Check(vk,Com_p,x',y'=\pi_{AHP}^{16},\pi_{AHP}^{17})result=PC.Check(vk,Comp​,x′,y′=πAHP16​,πAHP17​). For example, if polynomial commitment scheme KZGKZGKZG is used, then the following equation checks: e(Comp−gy′,g)=e(πAHP17,vk−gx′)e(Com_p-gy',g)=e(\pi_{AHP}^{17},vk-gx')e(Comp​−gy′,g)=e(πAHP17​,vk−gx′)

Previous4- Proof Verification PhaseNextExample 1

Last updated 2 months ago