此文這裡只介紹較好理解的 KZG 多項式承諾,KZG 多項式承諾(KZG Polynomial Commitment)也被稱為卡特多項式承諾方案,是 Kate,Zaverucha 和 Goldberg 一起發表的。

作者: Xiang,W3.Hitchhiker

修訂: Evelyn,W3.Hitchhiker

封面: Photo by Terry on Unsplash

不同多項式承諾方案列表

上表中,FRI 是 Starkware 採用的多項式承諾方案,可以實現量子級別的安全,但證明的數據量卻是最大;IPA 是 Bulletproof 和 Halo2 零知識算法默認的多項式承諾方案,驗證時間相對較長,採用的項目有門羅幣,zcash 等,前兩者是不需要初始可信設置的。

由上圖可以看出在證明大小與驗證時間上,KZG 多項式承諾的優勢比較大,KZG 承諾也是目前應用最廣的一種多項式承諾方式。但 KZG 是基於橢圓曲線,配對函數,需要初始可信設置的。

ETH 升級路線與多項式承諾的關聯

在 ETH 相關生態及其未來升級路線中,都可以看到多項式承諾的踪影。

The Merge:

現時的以太坊主鍊和 Beacon Chain 將會合併,原本的 PoW (工作量證明) 共識將會轉變成 PoS (權益證明)。

The Surge:

添加 DAS(數據可抽樣性功能),極大的提高 ETH 的擴展性,通過 Danksharding 增強 rollup 性能。

The Verge:

引入 Verkle 樹 (Verkle Trees) 的設計來優化以太坊上的數據存儲。

The Purge:

通過剔除歷史數據和消除技術債務,驗證者不再需要使用大量硬盤空間去進行驗證工作。

The Splurge:

四個不同部分升級後的協調,旨在減少錯誤 (Bugs) 的出現和確保網絡能暢順運作,還有就是 EVM 改進和添加賬號抽像模型等。

其中 The Surge 升級將藉鑑多項式承諾技術實現數據可抽樣性功能,The Verge 升級將利用多項式承諾來優化其數據結構,ETH L2 的 zkrollup 也都採用了多項式承諾來實現其零知識證明帶來的性能拓展。

什麼是 KZG 多項式承諾

此文這裡只介紹較好理解的 KZG 多項式承諾,KZG 多項式承諾(KZG Polynomial Commitment)也被稱為卡特多項式承諾方案,是 Kate,Zaverucha 和 Goldberg 一起發表的。在一個多項式方案中,證明者計算一個多項式的承諾,並可以在多項式的任意一點進行打開,該承諾方案能證明多項式在特定位置的值與指定的值一致。

之所以被稱為承諾,是因為當一個承諾值(橢圓曲線上的一個點)發送給某對象 (驗證者) 時,證明者不可以改變當前計算的多項式。他們只能夠對一個多項式提供有效的證明;當試圖作弊時,它們要不無法提供證明,要不證明被驗證者拒絕。

KZG 數學原理

詳細可參考 Qi Zhou 博士在 Dapp Learning 講解的關於 KZG 視頻

在理解 KZG 之前,可以先了解一下多項式、群、環、域、橢圓曲線、生成元、配對公式、朗格朗日插值等數學定義。

具有可信設置的多項式承諾

單個證明

卡特證明單個數據的公式推衍如下,由於橢圓曲線群只支持加法同態,無法支持多項式之間的乘法,這是就需要通過配對函數解決,

由於橢圓曲線群並不支持運算多項式之間的乘法運算,所以此時得採用配對函數去解決

批量證明

具體應用場景

多項式承諾應用方向總結起來可以分為 3 大類

  1. 數據可用性(ETH Surge 升級,ETH danksharding,降低 L2 成本,模塊化數據可用性項目 Avails)
  2. 數據結構優化(MPT 樹改為 Verkle 樹,ETH Verge 升級,無狀態客戶端,實現 ETH 的輕量的驗證節點)
  3. 零知識證明系統(Zksync,Zkswap,Scroll,PSE 給 Zk 提供多項式承諾方案,大大提升鏈的拓展能力)

1. 數據可用性

DAS(數據可用性抽樣)

核心目的:數據缺失則無法通過大多數節點抽查

盡力做到:佔用帶寬小,抽樣過程所需計算量小

糾刪碼(celestia)

糾刪碼會增加額外數據塊,這種情況很容易通過抽樣調查發現,從而提升安全性。

以上圖為例,有 4 個數據,一次只能抽樣一個,假設一個數據有問題,每個用戶抽樣發現錯誤的概率是 1/4,但是加入兩數據塊後,還是一個數據有問題,用戶抽樣發現的概率可以高達 1/2(3/6)。這樣就能大幅提升安全性。

KZG 也可實現糾刪碼,利用拉格朗日公式:

比如把 (0,3),(1,6) 帶入公式可得,y=3x+3

y1,y2  可以理解為要保存的數據,

對應點(2,8)(3,12) 等等,其中 y  值可以作為糾刪碼數據,其中任意兩個點都可以推出原多項式公式係數。

不同數據可用性項目組成

Celestia = Tendermint (cosmos) + 2d 糾刪碼+ 欺詐證明+ Namespace merkle tree + IPFS 基礎設施(數據存儲用的 IPFS Blockstore,傳輸網絡用的 IPFS 的 Libp2p 與 bitswap,數據模型用的 IPFS 的 Ipld)

Polygon Avail = Substrate(Polkadot) + 2d 糾刪碼+ KZG 多項式承諾+ IPFS 基礎設施

ETHprotoDankSharding = Blobs 數據(數據可用性的存儲,替換現有的 calldata)+ 2d 糾刪碼+ KZG 多項式承諾(未定,方案目前仍在討論)+ ETH 基礎設施

EIP-4844 升級將在 The Merge 之後的下一個以太坊分叉升級中引入 “proto-danksharding” 並添加 blob 交易類型(EIP-4844),這有望將第 2 層 Rollup 的可擴展性提高,同時為實現完全分片(sharding)鋪平道路。

Blob Transaction

  1. 增加一種新的交易類型,這種交易包含額外的存儲空間—— Blobs
  2. Blob 開始只有 128 KiB 的存儲空間(1)一個交易最多包含 2 個 Blob,即 256 KiB(2)一個 Block 最多包含 16 個,即 2 MiB;Target 是 8 個,即 1 MiB(可擴大)
  3. Blob 以 KZG Commitment Hash 作為 Hash,用於數據驗證,作用和 Merkle 類似
  4. 節點同步鏈上的 Blob Transaction 後,Blob 部分會在一段時間後過期刪除

L2 需要通過更新目前在 L1 的合約,以支持 DankSharding。

Celestia 通過欺詐證明實現。當見證人發現數據沒有被正確採用刪碼技術,那麼這個人就會將欺詐證明提交從而來提醒其他節點。但是這裡需要最少誠實假設(至少連接到一個誠實節點)和同步假設(當有人給我發送欺詐證明的時候,需要確保我能在一定時間內收到通知)。

protoDanksharding 後的以太坊和 Polygon Avail 則採用了 KZG 多項式承諾(KZG commitments) 的方法。

KZG 多項式承諾方案,理論上要優於欺詐證明方案,帶寬需求更小,抽樣所需計算量也更小,也免去了欺詐證明中的包括少數誠實假設和同步假設等的安全假設。未來 ETH 也有意引入抗後量子密碼學 (參考 stark,採用哈希,不在使用橢圓曲線作為基礎),避免量子計算機攻擊。

2. 數據結構優化 Verkle Tree

Verkle Tree 的概念在 2018 年推出,作為 ETH 升級的一個重要部分,其相比於 Merkle Tree,在 Proof 的大小上,有著很大的提升;對於規模在十億級別的數據,Merkle Tree 的 proof 大約需要 1kB,而對於 Verkle Tree, 它將小於 150Bytes。

與 Merkle Tree 一樣 Verkle Tree 也能實現 Proof of Inclusion(PoI),而且只需 KZG root 和 Data 就能驗證,不需要額外的 Proof,更省帶寬

  • 需求:Stateless Client
  • (1)節點不存完整的 State Tree,只獲取需要的 State 來驗證 Block
  • (2)Portal Network
  • (3)對 State Tree 的 PoI 有更高的性能要求
  • 回顧 Data Availability 裡的 KZG commitment
    1. 每個 leaf 都是 polynomial 上的點
    2. constant size proof,和 leaf 數量無關

在不同樹結構中構建證明,更新證明,以及證明所需的複雜度:

Verkle 方案不需要以太坊客戶端下載完整的狀態數據,使得 ETH 驗證者輕節點成為可能 (甚至可支持手機運行),多項式承諾(Verkle 樹的多項式承諾方案,早期考慮的 KZG,近期還是考慮用 IPA)需要的證明空間複雜度大幅降低,帶寬量需求量也大幅減少。

3.   零知識證明系統

早期 zk 技術(Groth16)屬於線性 PCP 類。除要求可信設置外,主要缺點是如果需要為不同的計算(不同的電路/多項式)提供證明,都需要一次新的設置。近期 zk 技術 PIOP 類支持通用初始設置和透明設置(不需要信任假設)。

新的 zk 證明系統通常可以描述為 PIOP(Polynomial Interactive Oracle Proof,多項式交互預言證明)+ PCS(Polynomial Commitment Scheme,多項式承諾方案)。前者可被視為是證明者用來說服驗證者的約定程序,而後者使用數學方法確保該程序不會遭到破壞。項目方可以按需修改 PIOP,且可以在不同 PCS 中進行選擇。

由 Amber 文章裡的圖可以看到 zk 系公鏈項目採用 KZG 方案的最多,有 Ploygon Hermez,Scoll,Zksync2.0,Aztec,Aleo,Manta,以太坊基金會支持的 PSE(隱私與擴展探索團隊)也採用的 KZG 方案。而 Starknet,Risc0,Polygon Miden 採用的是 FRI 方案,Ploygon Zkvm(Hermez) 則是 FRI 與 KZG 的結合。

值得一提是,一些新的零知識證明系統支持多項式承諾方案的切換,KZG 未來也可以切換成其他多項式承諾方案。

總的來說,多項式承諾正在重塑整個區塊鏈的架構,不論是在鏈的數據結構優化上,模塊化區塊鏈的數據可用性上,還是零知識證明系統上都將大有作為。其他地方是否還存在應用場景也是非常值得探索與跟進的。

免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。文章內的信息僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。