干貨 | 為以太坊引入 KZG 承諾:工程師視角(上)
(續前)什么是 KZG10 承諾?
注 3.6:如果啟動設置所計算的 [s],[s^2]…[s^d] 只計算到了指數 d,這一組值是不能用來生成任何階數大于 d 的多項式的承諾的。反之亦然。
因為在安全的曲線上,沒有辦法用兩個點相乘來得出第三個點,所以 [s^(d+k)] 是一個(永遠!)無法求出的值,因此可以說,任意的承諾 c(f) 都只能表示一個階數小于等于 d 的多項式。
注 3.7:使用 KZG10 承諾的證據基本上就是在證明 f(x) - 某些余數 的結果可以按特定的辦法來分解,但這就要有一種辦法可以 相乘 這些因數,并與原始的承諾相比較 C(f)=f([s])。
為此,我們需要 “配對方程”,就是一種能把曲線上的兩個點相乘并與另一個曲線點比較的乘法,因為我們無法直接讓這兩個曲線點直接相乘來得到合成的曲線點。
注 3.8:上述兩個屬性,可以進一步用來證明某個承諾 c(f) 所代表的多項式 f(x) 的階數 k 小于 d。
綜上,KZG10 承諾可以有很好的屬性:
驗證承諾的過程是:(由區塊生成者)提供底層多項式在任意點 r 上的值 y=f(r) ,以及除法多項式 q(x)=(f(x)-y)/(x-r) 在 [s] 點的值(即 q([s])),并用 配對方程 來對比之前所提供的承諾 f[s]。這就叫 開啟 在 r 點的承諾,而 q([s]) 就是證據。容易看出,q(s) 就是 p(s)-r 除以 s-r ,恰好就是我們用配對方程來檢查的東西,即檢查 (f([s])-[y]) * '= q([s]) * [s-r]' (譯者注:此處疑為 f(s)-r ,但原文就是 p(s)-r)。
DeFi研究人員:即將到來的合并將為以太坊創造更好的經濟結構:7月11日消息,DeFi研究人員Vivek Raman在推特上強調,即將到來的以太坊合并將為該智能合約平臺創造更好的經濟結構。根據Raman的說法,向PoS的轉變降低了ETH的通脹,提供了更好的安全性,并將ETH定位為數字債券。
Raman表示,合并后,ETH通脹率將從4.3%降至0.22%。他進一步解釋說,這使得其生態系統的發行量減少了95%,限制了一天可以出售的ETH數量。
Raman還稱,在合并之后,該平臺將擁有更好的安全性。他引用了以太坊聯合創始人Vitalik Buterin(V神)的一篇文章,并強調說,一旦網絡運行在PoS上,攻擊成本會更高。
除此之外,Raman還認為,以太坊合并將使ETH作為一種價值儲存和抵押資產,補充比特幣的用例。他指出,雖然BTC將發揮數字黃金的功能,但ETH將把自己定位為數字債券,以及作為DeFi中的抵押品。(Cointelegraph)[2022/7/11 2:06:14]
在非交互且確定性的版本中, Fiat Shamir Heuristic 提供了一種辦法來獲得相對隨機的點 r:因為隨機性只跟我們嘗試證明的輸入有關,即,只要已經有了承諾 c=f([s]) ,r 就可以用哈希所有輸入(r=Hash(C,..))來獲得,而 承諾的提出者 要負責提供 開啟點 和 證據。
使用預先計算好的拉格朗日多項式,f([s]) 和 q([s]) 都可以在 求值形式 下直接計算。要計算 r 處的開啟值,就需要把 f(x) 轉為 f(x)=a0+ a1*x^1.... 的系數形式(也即抽取出 a0、a1、…)。可以通過 反向快速傅立葉變換 來實現,復雜度為 O(d log d),但甚至這里也有一種可用的替代算法,在 O(d) 的復雜度內完成計算,而無需使用反向快速傅立葉變換。
EOS網絡基金會創始人:TrustEVM可成為以太坊可行擴容方案:7月1日消息,關于摩根士丹利報告的一條推文顯示,轉向PoS并不能解決以太坊的擴容問題。EOS網絡基金會創始人和首席執行官Yves La Rose轉發此條推文并表示:合并(The Merge)無助于解決以太坊擴容問題,但EOS可以,Trust EVM推出后,以太坊終于有了一個可行的擴容解決方案。據悉,此前Yves La Rose就曾在推特表示:EOS一直是高性能、低成本的L1區塊鏈網絡。脫離Block.one桎梏之后,EOS社區資金到位、人才回歸,正在重新煥發活力卷土重來。EOS并不旨在成為“以太坊殺手”,EOS推出的Trust EVM或將成為以太坊首選的L2解決方案。Trust EVM是官方EOS EVM平臺,具有確定性的Gas計算、指令集級別的EVM兼容性以及完全的RPC兼容等特性并即將登陸EOS主網。[2022/7/1 1:43:50]
你可以使用單個開啟點和證據來證明 f(x) 的多個值,也就是多個索引值對應的數值, index1=>value1、index2=>value2 …
(用于計算證據的)除法多項式 q(x) 現在變成了 f(x) 除以零多項式 z(x) =(x-w^index1)*(x-w^index2)...(x-w^indexk) 的商
余數為 r(x) ( r(x) 是一個最大階數為 k 的多項式,由 index1=>value1, index2=>value2 … indexk=valuek 插值而成)
檢查 ( f([s])-r([s]) )* ' = q([s]) * z([s]')
Uniswap成為以太坊上首個年收入超過10億美元的DApp:1月4日消息,Uniswap成為以太坊區塊鏈上運行的首個年收入超過10億美元的DApp。數據顯示,該DeFi DApp目前每天處理12.8億美元的交易量,收入為250萬美元。從2020年10月到2021年10月,Uniswap共賺取了11億美元的費用。按目前200億美元的完全稀釋市值計算,該公司的市盈率約為20倍。
在更廣泛的科技行業,市盈率可以達到100甚至1000倍,與此不同的是,人們對Uniswap的估值更像是一家傳統的老公司,業務增長緩慢但穩定。
部分原因可能是以太坊區塊鏈在沒有L2的情況下無法處理更多的流量,因此,在Starknet、zkSync、Optimism和Arbitrum等L2興起之前,以太坊區塊鏈的使用量很難增長10倍。
然而,12月4日,Uniswap確實處理了41億美元的交易量。這意味著它的日營收約為1000萬美元,因此可推算其年內峰值收益為40億美元,或者完全稀釋后的市值為800億美元,這意味著Uniswap的最高定價區間將從目前的20美元升至80美元。(Trustnodes)[2022/1/5 8:25:16]
在 PoS 鏈的共同起步設置中,共享的數據塊會被表示為低階的多項式(并為了 糾刪碼 而使用同樣的 擬合 多項式擴展為兩倍大),KZG 承諾可以用來檢查任意 隨機 分塊并驗證和確保 數據可得性,而無需獲得 兄弟數據點。這就開啟了隨機取樣的可能性。
現在,對于一個最大可能包含 2^28 個賬戶鍵的狀態,你需要至少 2^28 階的多項式來構建 扁平的 承諾(flat commitment)(實際上的賬戶鍵總空間會大得多得多)。在更新和插入的時候,會有一些不便利。對任一賬戶的任意更改,都會觸發承諾(以及更麻煩的,見證數據/證據)的重新計算。
ZKSwap測試網激勵發放完成,Layer2轉賬成本為以太坊的1%:官方消息,基于ZK Rollup擴容技術的AMM去中心化交易所 ZKSwap (ZKS)表示,其測試網激勵的ZKS在ZKSwap的 Layer2 發放完成,在Layer2發送9000筆轉賬合計消耗的Gas成本(Layer2 到 Layer1 的上鏈費用)為1500美金。
對比而言,在以太坊主網完成9000筆轉賬需要消耗18萬美金的成本,ZKSwap上Layer2的轉賬成本只有以太坊的1%左右。官方預計,ZKSwap將在2月17日開啟代付Gas費用挖礦活動(Proof of Gas)和智能合約鎖倉挖礦活動。并在2月19日開啟流動性挖礦活動和交易即挖礦活動。[2021/2/16 19:52:20]
更新 KZG10 承諾
對任一 索引值 => 數值 點的任何更改,比如更改了 indexk,都需要使用相應的拉格朗日多項式來更新承諾。復雜度約為每次更新 O(1)。
但是,因為 f(x) 本身也改變了,所以所有的見證 q_i([s]) ,也即所有對第 i 個鍵值對的見證,也需要更新。總復雜度約為 O(N)
如果我們沒有維護預先計算好的 q_i([s]) 見證,任何一條見證數據都要從頭開始計算,都需要 O(N)
一種復雜度為 sqrt(N) 的更新 KZG10 承諾的構造
因此,為了實現理想承諾方案的第四點,我們需要一個特殊的構造:Verkle trie。
需要表示的以太坊的狀態大約有 2^28 約等于 16^7 約等于 2.5 億 個鍵值對。如果我們只使用扁平的承諾(那么我們需要的階數就至少是 2^28)。雖然我們的證據永遠是 48 個字節的橢圓曲線元素,但任意的插入或更新,都需要 O(N) 次操作來更新所有預先計算好的見證數據(也就是所有點的 q_i(s) ,因為 f(x) 本身已經改變了);甚至于,如果沒有預先計算好的見證數據,則每條見證數據都需要花 O(N) 來重新計算。
為以太坊礦工提供套利工具的項目Archer治理代幣上線Uniswap:匿名團隊開發的以太坊礦工可提取價值(MEV)套利產品Archer的治理代幣ARCH已上線Uniswap,項目方提供的初始流動性為370個ETH和100萬個ARCH,官方稱這部分流動性將會被鎖定至少6個月。ARCH代幣總量為1億枚,以初始流動性的價格計算,該項目的總市值超過2000萬美元。
注:Archer通過使用鏈上激勵機制來為礦工增加收入來源,包括通過DEX套利和貸款清算等零風險或風險較低的方式為開采出來的區塊增加價值。Archer表示自己有助于提升以太坊用戶體驗,包括降低抵押率、使各個DEX的現貨價格趨于一致、更可靠的激勵機制、減少不友好的搶先交易頻率以及通過私有渠道提交交易。[2020/11/23 21:48:13]
因此,我們需要把扁平的結構換成叫做 Verkle 樹 的結構,跟默克爾樹一樣是樹結構。
即,像默克爾樹一樣,構建出一棵承諾樹,這樣我們就可以保證階數 d 比較小(但也需要高達約 256 或者 1024)。
每個父節點都編碼對其子節點的承諾,子節點就是一個映射,其索引值都存在其父節點內
實際上,父節點的承諾編碼了哈希后的子節點,因為承諾的輸入是標準化的、32 字節的值(見上文的 注3.0)。
葉子節點編碼了對其所存儲的數據的 32 字節哈希值的承諾;或者直接跳轉到數據,假如其 32 字節的數據的用法與下一章提到的 狀態樹 提議用法一樣的話。
要提供對一個分支的證據(類似于默克爾分支證據)時,一個多值證明的承諾 D、E 可以圍繞使用 fiat shamir heruristic 產生一個相對隨機的點 t 來生成。
復雜度
這里是一份對 Verkle 多值證明的分析
更新/插入 葉子節點 index=>value 需要更新 log_d(N) 個承諾 ~ log_d(N)
為生成證據,證明者需要
計算 f_i(X)/(X-z_i) 在 [s] 處的值,用于生成 D ,復雜度總計 O(d log_d N),但可以在 更新/插入 時調整以節約預計算,復雜度會變成O d log_d(N)
計算 m 個 ~ O( log_d(N) ) 個 f_i(t) 來計算 h(t),總計為 O (d log_d N)
計算 π, ρ ,需要對 m~ log_d N 個指數多項式的和做除法。需要約 O(d log_d N) 來獲得分子的求值形式,以計算除法
證明的規模(包括用于計算 E 的分支承諾)加上驗證的復雜度 ~ O( log_d(N) )
被提議的 ETH 狀態 Verkle 樹
單一的樹結構,存儲賬戶的 header 和 代碼分塊,還有 存儲項分塊,節點的承諾為階數 d=256 的多項式
把地址和 頭/存儲空檔 結合起來推導出一個 32 字節的 storageKey,本質上就是元組 (address,sub_key,leaf_key) 的一種表示
所推導的鍵的前 30 個字節用于構建普通的 verkle 樹節點 pivots
后 2 個字節是一個樹高為 2 的子樹,表示最多 65536 個 32 字節的分塊
對于基本的數據,這個樹高為 2 的子樹最多有 4 個葉子承諾,來覆蓋 haeader 和 code
因為一個分塊為 65536*32 字節的分塊表示為單個的字數,所以主樹上可能有許多子樹來存儲一個賬戶
Gas 定價方案
訪問類型 (address, sub_key, leaf_key) 的事件
每一個專門的訪問事件都收取 WITNESS_CHUNK_COST
每個專門的 address,sub_key 組合都收取額外的 WITNESS_BRANCH_COST
代碼默克爾化
代碼會自動成為 verkle 樹的一部分(作為統一的狀態樹的一部分)
一個區塊的 header-ubxx 和 code 都作為一個樹高為 2 的承諾樹的一部分
單個分塊最多有 4 條見證數據,分別收取 WITNESS_CHUNK_COST,訪問賬戶需要收取一次 WITNESS_BRANCH_COST
ETH PoS 的目標之一是能夠提交約 1.5MB/s 的數據量(把這個吞吐量理解為狀態變更的吞吐量,因而是 L2 rollup 可以利用的交易吞吐量,最終是 L1 EVM 的吞吐量)。要實現這一點,許多并行的區塊提議要能發出并在給定的 12 秒內驗證;也就是要存在多條分片(約 64),每個分片在每個 slot 都要發布自己的數據塊。若有大于 2/3 的投票支持,信標鏈區塊將包含分片數據塊,分叉選擇規則也將根據信標鏈區塊內所有數據塊及其祖先的數據可得性確定它是否能成為主鏈區塊。
注 3:此時的分片不是鏈,任何隱含的順序都要由 L2 協議來解釋。
KZG 承諾也可以用來構建數據有效性和可得性方案,客戶端無需訪問分片提議者發布的完整數據就可以校驗其可得性。
分片數據塊(不帶糾刪碼)是 16384 個樣本(每個 32 字節),約為 512 kb;還有數據頭,主要由這些樣本相應的最大 16384 階的多項式承諾組成
但多項式求值形式 D 卻有 2^16384 的規模,即,1,w^1,…w^,… w^32767,而 W 是 32768 的單元根(不是 16384 的)
我們可以為數據(f(w^i)=sample-i for i<16384)擬合出最大 16384 階的多項式,并擴展到 32768 作為糾刪碼樣本,即計算 f(w^16384) … f(w^32767)
對每個點的值的證明也同時計算并與樣本一起發布
32768 個樣本中獲得任意 16384 個都可以完全恢復出 f(x) 以及原始的樣本,即 f(1),f(w^1),f(w^2)… f(w^16383)
這糾刪編碼的 32768 個樣本分為 2048 個分塊,每個分塊包含 16 個樣本,即 512 字節的數據;由分片提議者水平地發布,即將第 i 個分塊以及相應地證據發給第 i 個垂直子網絡,外加全局公開完整數據的承諾
在被指定的 (shard, slot),每個驗證者都在 k~20 個垂直子網中下載和檢查這些分塊,并使用對應數據塊的承諾來驗證它們,以建立數據可得性保證
我們需要為每個 (shard, slot) 安排足夠多的驗證者,使得總體上一般(乃至更多的數據)都被獲取了;另外,還要滿足一些統計學上的要求,每個 (shard, slot) 約 128 個委員,需要有至少 70 個(也即 2/3 )委員的見證,使得該分片數據塊能成功打包到信標鏈上,
至少需要約 262144 個驗證者(32 個 slot,乘以 64 個分片,再乘上至少 128 個委員)
如我們在 POC verkle go 代碼庫中看到的,以狀態樹的規模構建完一次 verkle 之后,插入和更新都非常快:
插入/更新 的基準測試
證明生成驗證的基準測試
6月15日下午18點51分,Kusama平行鏈插槽競拍通道在區塊高度為7924237處正式開啟,比原計劃的20點提前了1小時.
1900/1/1 0:00:00頭條 中國背景比特幣礦池算力繼續下降 或因四川礦機被集體斷電所致btc.com數據顯示,當前比特幣全網平均算力126.83EH/s.
1900/1/1 0:00:00忘記馬斯克的推文、監管新聞和比特幣的能源消耗。對于對沖基金經理 Shiliang Tang 來說,今年最大的加密貨幣事件正在角落里發生:數字貨幣期權市場蓬勃發展并已經開始震動整個數字貨幣交易市場.
1900/1/1 0:00:00原標題:四川比特幣礦機全線關機 國內礦工出海已是必然導讀:比特幣算力以及圍繞其構建的基礎設施已加速向海外轉移,比特幣算力的去中國化進程已然開啟.
1900/1/1 0:00:00約翰·邁克菲在西班牙的引渡聽證會上聲稱,針對他的逃稅指控是出于動機。殺軟件先驅約翰·邁克菲告訴他的100萬推特粉絲,他的全部加密貨幣財富已經消失,盡管他承認,不是所有人都會相信他說的是真的.
1900/1/1 0:00:00最近幾年來,國家對區塊鏈技術的關注度越來越高,對區塊鏈的重視也使得很多互聯網巨頭將重點放到區塊鏈之中,從而使得類似百度阿里騰訊這樣的公司也開發了相應的區塊鏈平臺BAAS.
1900/1/1 0:00:00