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
  1. Fides Zero-Knowledge Proof (ZKP) Algorithm
  2. 4- Proof Verification Phase

Example 2

AHP Verify

Verify(F4767673,H,K,ComAHP,ΠAHP,X=(7,11,0,1,0,1,0,0,...,0),Y=(12,84))Verify(\mathbb{F}_{4767673}, \mathbb{H}, \mathbb{K}, Com_{AHP},\Pi_{AHP},X=(7,11,0,1,0,1,0,0,...,0),Y=(12,84))Verify(F4767673​,H,K,ComAHP​,ΠAHP​,X=(7,11,0,1,0,1,0,0,...,0),Y=(12,84)) :

Since h3(β3)=h3(5)=h_3(\beta_3)=h_3(5)=h3​(β3​)=h3​(5)= and vK(β3)=vK(5)=v_{\mathbb{K}}(\beta_3)=v_{\mathbb{K}}(5)=vK​(β3​)=vK​(5)=, therefore, the left of equation (1)(1)(1) is h3(β3)vK(β3)=h_3(\beta_3)v_{\mathbb{K}}(\beta_3)=h3​(β3​)vK​(β3​)= . Also, since a(β3)=a(5)=a(\beta_3)=a(5)=a(β3​)=a(5)=, b(β3)=b(5)=b(\beta_3)=b(5)=b(β3​)=b(5)= and β3g3(β3)+σ3∣K∣=\beta_3g_3(\beta_3)+\frac{\sigma_3}{|\mathbb{K}|}=β3​g3​(β3​)+∣K∣σ3​​=, therefore, the right of the equation (1)(1)(1) is a(β3)−b(β3)(σ3g3(β3)+σ3∣K∣)=a(\beta_3)-b(\beta_3)(\sigma_3g_3(\beta_3)+\frac{\sigma_3}{|\mathbb{K}|})=a(β3​)−b(β3​)(σ3​g3​(β3​)+∣K∣σ3​​)=. So, the equation (1)(1)(1) is established.

Since r(α,β2)=α37−β237α−β2=1037−803710−80=r(\alpha,\beta_2)=\frac{\alpha^{37}-\beta_2^{37}}{\alpha-\beta_2}=\frac{10^{37}-80^{37}}{10-80}=r(α,β2​)=α−β2​α37−β237​​=10−801037−8037​=, σ3=\sigma_3=σ3​=, therefore, the left of equation (2)(2)(2) is r(α,β2)σ3=r(\alpha,\beta_2)\sigma_3=r(α,β2​)σ3​= and since h2(β2)=h2(80)=h_2(\beta_2)=h_2(80)=h2​(β2​)=h2​(80)=, vH(β2)=vH(80)=v_{\mathbb{H}}(\beta_2)=v_{\mathbb{H}}(80)=vH​(β2​)=vH​(80)=, β2g2(β2)+σ2∣H∣=\beta_2g_2(\beta_2)+\frac{\sigma_2}{|\mathbb{H}|}=β2​g2​(β2​)+∣H∣σ2​​=, therefore, the right of equation (2)(2)(2) is h2(β2)vH+β2g2(β2)+σ2∣H∣=h_2(\beta_2)v_{\mathbb{H}}+\beta_2g_2(\beta_2)+\frac{\sigma_2}{|\mathbb{H}|}=h2​(β2​)vH​+β2​g2​(β2​)+∣H∣σ2​​=. So, equation (2)(2)(2) is established.

Since s(β1)=s(22)=s(\beta_1)=s(22)=s(β1​)=s(22)=, r(α,β1)=r(\alpha,\beta_1)=r(α,β1​)=, ∑M∈{A,B,C}ηMz^M(β1)=\sum_{M\in\{A,B,C\}}\eta_M\hat{z}_M(\beta_1)=∑M∈{A,B,C}​ηM​z^M​(β1​)=, z^(β1)=\hat{z}(\beta_1)=z^(β1​)=, σ2=\sigma_2=σ2​=, therefore, the left of the equation (3)(3)(3) is s(β1)+r(α,β1)(∑M∈{A,B,C}ηMz^M(β1))−σ2z^(β1)=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)=s(β1​)+r(α,β1​)(∑M∈{A,B,C}​ηM​z^M​(β1​))−σ2​z^(β1​)=. Also since h1(β1)=h1(22)=h_1(\beta_1)=h_1(22)=h1​(β1​)=h1​(22)=, vH(β1)=vH(22)=v_{\mathbb{H}}(\beta_1)=v_{\mathbb{H}}(22)=vH​(β1​)=vH​(22)=, g1(β1)=g1(22)=g_1(\beta_1)=g_1(22)=g1​(β1​)=g1​(22)=, σ1=\sigma_1=σ1​=, therefore the right of the equation (3)(3)(3) is h1(β1)vH(β1)+β1g1(β1)+σ1∣H∣=h_1(\beta_1)v_{\mathbb{H}}(\beta_1)+\beta_1g_1(\beta_1)+\frac{\sigma_1}{|\mathbb{H}|}=h1​(β1​)vH​(β1​)+β1​g1​(β1​)+∣H∣σ1​​=. So, the equation (3)(3)(3) is established.

Since z^A(β1)=z^A(22)=\hat{z}_A(\beta_1)=\hat{z}_A(22)=z^A​(β1​)=z^A​(22)=, z^B(β1)=z^B(22)=\hat{z}_B(\beta_1)=\hat{z}_B(22)=z^B​(β1​)=z^B​(22)=, z^C(β1)=z^C(22)=\hat{z}_C(\beta_1)=\hat{z}_C(22)=z^C​(β1​)=z^C​(22)=, therefore, the left of the equation (4)(4)(4) is z^A(β1)z^B(β1)−z^C(β1)=\hat{z}_A(\beta_1)\hat{z}_B(\beta_1)-\hat{z}_C(\beta_1)=z^A​(β1​)z^B​(β1​)−z^C​(β1​)=. Also since h0(β1)=h0(22)=h_0(\beta_1)=h_0(22)=h0​(β1​)=h0​(22)= and vH(β1)=vH(22)=v_{\mathbb{H}}(\beta_1)=v_{\mathbb{H}}(22)=vH​(β1​)=vH​(22)=, therefore the right of the equation (4)(4)(4) is h0(β1)vH(β1)=h_0(\beta_1)v_{\mathbb{H}}(\beta_1)=h0​(β1​)vH​(β1​)=. So the equation (4)(4)(4) is established.

2- The output resultresultresult in following steps is 111.

2-1- The Verifier chooses random values η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​​, η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 For example, ηw^=1\eta_{\hat{w}}=1ηw^​=1, ηz^A=4\eta_{\hat{z}_A}=4ηz^A​​=4, ηz^B=10\eta_{\hat{z}_B}=10ηz^B​​=10, ηz^C=8\eta_{\hat{z}_C}=8ηz^C​​=8, ηh0=32\eta_{h_0}=32ηh0​​=32, ηs=45\eta_s=45ηs​=45, ηg1=92\eta_{g_1}=92ηg1​​=92, ηh1=11\eta_{h_1}=11ηh1​​=11, ηg2=1\eta_{g_2}=1ηg2​​=1, ηh2=5\eta_{h_2}=5ηh2​​=5, ηg3=25\eta_{g_3}=25ηg3​​=25 and ηh3=63\eta_{h_3}=63ηh3​​=63.

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=ηw^ComAHPX1+ηz^AComAHPX2+ηz^BComAHPX3+ηz^CComAHPX4+ηh0ComAHPX5+ηsComAHPX6+ηg1ComAHPX7+ηh1ComAHPX8+ηg2ComAHPX9+ηh2ComAHPX10+ηg3ComAHPX11+ηh3ComAHPX12=Com_p=\eta_{\hat{w}}Com_{AHP_X}^1+\eta_{\hat{z}_A}Com_{AHP_X}^2+\eta_{\hat{z}_B}Com_{AHP_X}^3+\eta_{\hat{z}_C}Com_{AHP_X}^4+\eta_{h_0}Com_{AHP_X}^5+\eta_sCom_{AHP_X}^6+\eta_{g_1}Com_{AHP_X}^7+\eta_{h_1}Com_{AHP_X}^8+\eta_{g_2}Com_{AHP_X}^9+\eta_{h_2}Com_{AHP_X}^{10}+\eta_{g_3}Com_{AHP_X}^{11}+\eta_{h_3}Com_{AHP_X}^{12}=Comp​=ηw^​ComAHPX​1​+ηz^A​​ComAHPX​2​+ηz^B​​ComAHPX​3​+ηz^C​​ComAHPX​4​+ηh0​​ComAHPX​5​+ηs​ComAHPX​6​+ηg1​​ComAHPX​7​+ηh1​​ComAHPX​8​+ηg2​​ComAHPX​9​+ηh2​​ComAHPX​10​+ηg3​​ComAHPX​11​+ηh3​​ComAHPX​12​=

2-3- The Verifier chooses random x′∈Fx'\in\mathbb{F}x′∈F and queries p(x′)p(x')p(x′). For example, x′=2x'=2x′=2.

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′)

where e(Comp−gy′,g)e(Com_p-gy',g)e(Comp​−gy′,g) and e(πAHP17,vk−gx′)=e(\pi_{AHP}^{17},vk-gx')=e(πAHP17​,vk−gx′)=

PreviousExample 1Next5-target-architecture

Last updated 2 months ago