一文詳解多項式承諾:如何重塑整個區塊鏈?
W3.Hitchhiker
2022-11-01 05:00
本文约3928字,阅读全文需要约16分钟
ETH 升級路線與多項式承諾有哪些關聯?具體應用場景有哪些?

原文作者:Xiang|W3.Hitchhiker

原文作者:Xiang|W3.Hitchhiker

原文編輯:Evelyn|W3.Hitchhiker

不同多項式承諾方案列表

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

二級標題

二級標題

The Merge:

二級標題

The Surge:

二級標題

The Verge:

二級標題

The Purge:

二級標題

The Splurge:

二級標題

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

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

什麼是KZG 多項式承諾

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

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

KZG 數學原理二級標題

一級標題

二級標題

二級標題

單個證明

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

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

批量證明

具體應用場景

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

  2. 數據可用性(ETH Surge 升級,ETH danksharding,降低L2 成本,模塊化數據可用性項目Avails)

  3. 數據結構優化(MPT 樹改為Verkle 樹,ETH Verge 升級,無狀態客戶端,實現ETH 的輕量的驗證節點)

零知識證明系統(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)

ETHprotoDankSharding = Blobs 數據(數據可用性的存儲,替換現有的calldata)+ 2d 糾刪碼+ KZG 多項式承諾(未定,方案方案

目前仍在討論)+ ETH 基礎設施

Blob Transaction

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

  2. 增加一種新的交易類型,這種交易包含額外的存儲空間—— Blobs

    Blob 開始只有128 KiB 的存儲空間

    (1)一個交易最多包含2 個Blob,即256 KiB

  3. (2)一個Block 最多包含16 個,即2 MiB;Target 是8 個,即1 MiB(可擴大)

  4. Blob 以KZG Commitment Hash 作為Hash,用於數據驗證,作用和Merkle 類似

節點同步鏈上的Blob Transaction 後,Blob 部分會在一段時間後過期刪除

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

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

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

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

2. 數據結構優化Verkle Tree

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

1.需求:Stateless Client

1.需求:Stateless Client

(2)Portal Network

(1)節點不存完整的State Tree,只獲取需要的State 來驗證Block

(3)對State Tree 的PoI 有更高的性能要求KZG commitment

  • 2.回顧Data Availability 裡的

  • 每個leaf 都是polynomial 上的點

3.Verkle Tree


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 中進行選擇。

原文鏈接

原文鏈接

原文鏈接

W3.Hitchhiker
作者文库