比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads

VIT:Vitalik:以太坊狀態爆炸問題,多項式承諾方案可解決

Author:

Time:1900/1/1 0:00:00

寫在前面:為了應對以太坊的狀態爆炸問題,以太坊聯合創始人Vitalik提出了新的解決方案,其提議使用多項式承諾方案來替代默克爾樹,以此大大減少無狀態以太坊客戶端的見證數據。

以下為譯文:

關于這一研究,這里要感謝很多人提供的幫助,尤其是AZTEC團隊向我介紹了復制約束參數、排序參數以及有效的批范圍證明方法;DateryKhovratovich和JustinDrake在Kate承諾部分提供的方案,ElibenSasson關于FRI提供的反饋,以及JustinDrake進行的審查工作。這篇文章只是第一次嘗試,如果有進一步的重要思考,我確實希望該方案能夠被類似但更好的計劃所取代。

太煩不看版總結:

我們建議用稱為“多項式承諾”的神奇數學來替代默克爾樹來累積區塊鏈狀態。好處包括:將無狀態客戶端的見證內容的大小減少到接近于零。這篇文章提出了利用多項式承諾進行狀態累積所存在的挑戰,并提出了具體的構建方法。

什么是多項式承諾?

多項式承諾是多項式P的一種‘哈希’,其具有可對哈希執行算術檢查的屬性。

例如,在三個多項式P,Q,R上,給定三個多項式承諾h_P=commit(P(x)),h_Q=commit(Q(x)),h_R=commit(R(x)),然后:

如果P(x)+Q(x)=R(x),你可以生成一個證明,證明它和h_P,h_Q,h_R的關系;

如果P(x)*Q(x)=R(x),你可以生成一個證明,證明它和h_P,h_Q,h_R的關系;

如果P(z)=a,你可以針對h_P生產一個證明

你可以將多項式承諾用作vector承諾,類似于默克爾樹。多項式承諾的一個主要優點是,由于其數學結構的原因,其生成復雜證明要容易得多。

有哪些流行的多項式承諾方案?

當前有兩個領跑者,它們分別是Kate承諾以及基于FRI的承諾。你可能還聽說過防彈證明和DARKs算法,這些是替代型多項式承諾方案。而要了解有關多項式承諾的更多信息,YouTube上有相關的內容。

Cardano聯創:從未為Ripple工作,相關謠言可能把自己和Vitalik搞混了:6月24日消息,針對網上有關其曾在Ripple實習的傳聞,以太坊和Cardano聯合創始人Charles Hoskinson澄清稱,這是謠言,自己從未以任何身份為Ripple工作過。相關謠言應該是把他和Vitalik Buterin兩個人搞混了。

相關謠言疑似是基于一條早期的推文(已刪除):2019年4月,Vitalik回復Coinbase聯合創始人Brian Armstrong的推文時承認,早在2013年中期,當他住在加拿大時,曾試圖去加州在此后更名為Ripple Labs的公司當實習生,但由于贊助美國簽證的公司必須至少成立一年而未能成功。

Ripple前開發者關系總監Matt Hamilton于2023年5月1日證實,Vitalik當時確實希望能在Ripple實習。[2023/6/24 21:57:28]

多項式承諾在以太坊中有哪些容易應用的場景?

我們可以用多項式承諾來替換目前區塊數據的默克爾根,并用開放證明替換默克爾分支。這給我們帶來了兩個很大的優勢。首先,數據可用性檢查會變得容易,并且不會存在欺詐,因為你可以簡單地以隨機方式請求開放。非交互式的托管證明也可能變得更容易。

其次,說服多數據片段的輕客戶端也變得更加容易,因為你可以制造一個同時涵蓋多個索引的有效證明。對于任何集{(x_1,y_1),...,(x_k,y_k。,定義三個多項式:

通過所有這些點的插值多項式I(x);

在x_1,...,x_k等于0的零多項式Z=*...*;

商多項式Q=-I)/Z;

商多項式

Q的存在,意味著

P(x)-I(x)是

Z的倍數,因此

P-I為零,其中

Z(x)為零。這意味著對于所有

i,我們都有

P(x_i)-y_i=0,即

P(x_i)=y_i。驗證者可以生成插值多項式和零多項式。證明由對商的承諾,加上隨機點

z上的開放證明組成,因此,我們可以對任意多個點擁有一個常數大小的見證內容。

Vitalik Buterin:中心化的任何東西都是有風險的:金色財經報道,以太坊創始人Vitalik Buterin在社交媒體上稱,“默認情況下,中心化的任何東西都是有風險的,使用“DeFi和自我托管的精神”在本周表現非常好,但請記住它也有風險,智能合約代碼中的錯誤。”

Vitalik表示“重要的是要防范它,保持代碼簡單、審計、形式驗證等、深度防御。我最擔心的是,如果我們在兩年后的ZK-rollup中擁有100億美元,并且由于電路約束代碼或其周圍的EVM封裝器中的錯誤而被黑掉。對于后者,保持簡單并進行形式驗證。”[2022/11/16 13:13:32]

這種技術可以為區塊數據的多次訪問提供一些好處。然而,其對于一種不同的用例而言,存在的優勢就要大得多:證明區塊交易賬戶witness。平均而言,每個區塊會訪問數百個賬戶和存儲密鑰,這導致潛在的無狀態客戶端的見證內容大小會有0.5MB大小。而多項式承諾多見證,根據方案的不同,可以將區塊witness的大小從數萬字節減少到幾百字節。

那我們可以使用多項式承諾來存儲狀態嗎?

大體上,我們是可以的。相比將狀態存儲為默克爾樹,我們選擇將狀態存儲為兩個多項式S_k(x)和S_v(x),其中S_k,...,S_k表示鍵,而S_v,..。,S_v表示這些鍵上的值。

為了證明鍵值對,...,是狀態的一部分,我們將提供索引i_1,...,i_k并顯示與索引匹配的鍵和值,即k_1=S_k(i_1),...,k_k=S_k(i_k)和v_1=S_v(i_1),...,v_k=S_v(i_k)。

為了證明某些鍵的非成員性,可以嘗試構造一個奇特的證明,證明鍵不在S_k,…,S_k中。相反,我們只需對鍵進行排序,以便證明非成員身份就足以證明兩個相鄰key的成員身份,一個小于目標key,一個則大于目標key。

而這和JustinDrake提出的使用SNARKs/STARKs來壓縮witness以及相關的想法有著相似的好處,另外一個好處是,由于證明是累加器密碼學原生的,而不是構建在累加器密碼學上的證明,因此這消除了一個數量級的開銷,并移除了對零知識證明友好哈希函數的需求。

但這里存在著兩個大問題:

Vitalik Buterin:開發人員還不知道“Merge + surge + verge + purge + splurge”的執行順序:金色財經報道,以太坊聯合創始人“V神” Vitalik Buterin 今日在社交媒體上發文稱“Merge + surge + verge + purge + splurge”不是5個階段,而是會并行發生。在回應加密社區質疑“合并后不會立即發生所有事情”的問題時,Vitalik Buterin 進一步解釋說,這一切都是同時發生,實際的部署會在單獨的硬分叉進行,但是不同的團隊正在并行完成工作,在某些情況下,開發人員甚至還不知道事情的執行順序。[2022/7/26 2:38:57]

為k個密鑰生成witness需要的時間是O,其中N是狀態的大小。而預計N對應的狀態數據會有大約50GB,因此在單個區塊中生成這樣的證明是不實際的;

2、用k個新值更新S_k(x)和S_v(x)花費的時間也需要O。這在單個區塊中是不切實際的,特別是考慮到諸如witness更新和重新排序之類的復雜性。

下面我們將介紹應對這兩大問題的解決方案。

高效讀取

我們提供了兩種解決方案,一種針對Kate承諾而設計,另一種則是針對基于FRI的承諾。不幸的是,這些方案具有不同的優點和缺點,從而會導致不同的屬性。

1、Kate承諾

首先,請注意,對于N次多項式f,有一種方案可生成N個對應于

O(N*log(N))時間中每個

q_i(x)=(f(x)-f(i))/(X-i)的開放證明。

還請注意,我們可以按以下方式合并witness。考慮這樣一個事實,q_i(x)只是一個離開f/的子常數項,通常,已知f/((X-x_1)*...*(X-x_k))是f/,...,f/使用部分分式分解的某種線性組合。只需知道x坐標就可以確定具體的線性組合:只需提出一個線性組合c_1*(x-x_2)*...*(x-x_k)+c_2*(x-x_1)*(x-x_3)*...*(x-x_k)+...+c_k*(x-x_1)*...*(x-x_{k-1}),其中不存在非常數項,這是k個未知數中的k方程組。

Gravity DEX開發團隊成立新項目Crescent:3月11日消息,開發流動性模塊Gravity DEX的B-Harvest團隊分拆成立了一個名為Crescent的新項目,正在尋求完全重構和擴展Gravity DEX。Crescent由Ignite Ventures資助,并與Ignite團隊合作支持Crescent項目。

Crescent已經公布了治理代幣CRE分配模型,總量2億枚,其中將向ATOM委托者(delegator)空投1億枚,另外1億枚作為戰略儲備。空投方面,5000萬枚CRE可在Crescent網絡啟動后推出Crescent DEX(DEXdrop)時索取,具體空投數量會根據二次空投系統確定,即按UTC時間2022年1月1日00:00快照時委托數量的平方根來決定,如果參與一些治理提案,能獲得通過固定乘數獲得更多獎勵;剩余5000萬枚將在一定時期內分配給使用Crescent Boost的ATOM委托人。[2022/3/11 13:50:06]

給定這樣的線性組合,我們得到的東西僅是離開f/((x-x_1)*...*(x-x_k))的一個子常數項,因此它必然是商f(x)//((x-x_1)*...*(x-x_k)),其等于期望值(f(x)-I(x_1...x_k,y_1...y_k))/((x-x_1)*...*(x-x_k))。

一個可能的挑戰是,對于大的狀態,一個實際可計算的單一可信設置是不夠大的:例如,PLONK設置只能容納約3.2GB。相反,我們可以有一個由多個Kate承諾組成的狀態。

我們對很多承諾作如下單一witness。為證明,首先讓。witness是;如果Q是一個多項式,則F實際上在那些位置為零,因此fi在其位置具有期望值。

2、基于FRI的承諾

我們將狀態存儲在一個二維多項式

F的求值中(每個變量的階數為

sqrt),并致力于對

4*sqrt(N)by4*sqrt(N)square求值

F。

我們將所有我們關心的值存儲在位置(x,x**sqrt(N)),因此它們都具有唯一的x坐標。

為了證明在一組點x_1,...,x_k上的求值,我們構造了一個k次多項式路徑,其在x_i處的求值為x_i**sqrt。

VitalikButerin提議使用Flashbots系統實現“賬戶抽象”:3月11日消息,以太坊聯合創始人 Vitalik Buterin 在研究機構 Flashbots 的 GitHub 倉庫中提議利用 Flashbots 作為“賬戶抽象”的一種實現方式。“賬戶抽象”是以太坊社區中討論的改進提案之一,以實現交易不需要從私鑰控制的 EOA 賬戶發起,而是可以直接從智能合約發起,具體的用例包括智能合約錢包、Tornado.Cash 這類隱私保護工具等。Vitalik Buterin 認為 Flashbots 可以解決這個問題,通過搭建一個插件將其變成智能合約錢包的中繼器以實現。他表示該方案不需要對以太坊底層協議進行很多改動。

Flashbots是由五位區塊鏈行業人士發起成立的開放研究機構,旨在針對以太坊及各智能合約公鏈所面對的 MEV 問題進行研究,并實施解決方案。[2021/3/11 18:35:51]

然后,我們創建一個多項式

h(t)=F(t,path(t)),其中包含對

(x_i,y_i)的所有期望求值,并且具有

k*)次。

我們在求值域中選擇隨機的30列c_1...c_k,對于每列查詢30個隨機行。我們承諾于h,為z_i=h(c_i)提供一個多開口,并對列商(R_i-z_i)/(X-path(c_i))進行FRI隨機線性組合,以驗證h的聲明值是正確的,因此h(t)實際上等于F(t,path(t))。

使用二維多項式的原因是,這確保了我們不必對所有F進行任何計算;相反,我們只需要對我們選擇的隨機30行F進行計算),加上階為p*(sqrt(N)+1)的h,創建FRI進行的計算大約為p*sqrt(N)。可以將此技術擴展到二維以上的多項式,以將sqrt因子降低到更低的指數。

高效寫入

我們通過一系列的承諾,來解決與更新包含整個狀態的單個承諾相關的挑戰,較大的承諾,其更新頻率也就較低:

區塊本身,具有“讀取見證”(R_k(x),R_v(x))和“寫入見證”,W_v),表示要寫入狀態的值。注意,我們可以設置W_k=R_k,并在運行時計算W_v。

第一個緩存C1=,C1_v)存儲最近一天的更新內容;

第二個緩存C2等于前一天的最后一個C1;

滿狀態S=,S_v)包含時間超過1-2天的值;

我們將使用的方法如下。為了從狀態中讀取一些鍵k,我們將依次讀取

C1,

C2,

S。如果鍵位于某

C1_k處,則對應的值

C1_v存儲該值,如果鍵位于

C2_k,則

C2_v存儲該值,依此類推,如果鍵位于

S_k,則

S_v存儲該值。如果這些檢查都沒有返回鍵,則該值為0。

復制約束參數的簡介

復制約束參數,是我們將使用的witness更新證明的關鍵組成部分;有關復制約束參數如何工作的詳細信息,請參見此處。簡而言之,該想法是選擇一個隨機r,并生成一個“累加”多項式ACC,其中ACC=1且ACC=ACC*)。你可以通過開放讀取ACC(y)/ACC(x),來讀取x....y-1范圍內的點累加器。你可以使用這些累加器值,將這些求值與其他求值集進行比較,而無需考慮排列。

你還可以通過設置

ACC(x+1)=ACC(x)*(r+P_1(x)+r2*P_2(x))來證明某些隨機

r和

r2的求值元組(即多集

{(P_1(0),P_2(0)),(P_1(1),P_2(1)),...})的等價性。多項式承諾可有效用于證明有關ACC的主張。

為了證明子集,我們可以做相同的事情,除了我們還要提供一個指標多項式ind,證明該ind(x)在整個范圍內等于0或1,并設置ACC=ACC**)+)),否則不使用累加器值)。

小結:

我們可以證明a和b之間的P求值,是a和b之間Q求值的置換;

我們可以證明a和b之間的P求值,是a和b之間Q求值置換的子集;

我們可以證明P和Q的求值,是R和S置換,其中P->Q和R->S是相同的置換;

在下面的內容中,除非明確說明,否則我們將偷懶地表述為“P是Q的置換”,意思是“P在0和k之間的求值,是Q在0和k之間對適當k求值的置換”。請注意,下面的內容中,我們還會涉及到每個witness的“大小”,以確定我們接受的任何

C_k中的坐標,而超出范圍的

C_k值當然不計算在內。

映射合并參數

為了更新緩存,我們使用了“映射合并參數”。給定兩個映射A=,A_v)和B=,B_v),生成合并映射C=,C_v)以便:

C_k中的鍵被分類;

對于0<=i<size(B),(B_k(i),B_v(i))在C中;

對于0<=i<size(A),僅當A_k(i)不在B的求值集之內時,(A_k(i),A_v(i))在C中;

我們用一系列復制約束參數來實現這一點。首先,我們生成兩個輔助多項式

U,

I,它們分別表示

A_k和

B_k的“并集”和“交集”。將

A_k,B_k,C_k,U,I視為集合,我們首先需要展示:

1、A_k?U;

2、B_k?U;

3、I?A_k;

4、I?B_k;

5、A_k+B_k=U+I;

我們預先假設在A_k和B_k中沒有重復,這意味著A_k!=A_j對于范圍內的i!=j與B_k相同。由于I是A_k和B_k的子集,所以我們已經知道I也沒有重復的值。通過使用另一個復制約束參數來證明U和C_k之間的等價關系,證明了U中沒有重復項,并證明C_k是已排序且無重復的。我們用一個簡單的復制約束參數證明A_k+B_k=U+I聲明。

為了證明C_k已排序且沒有重復,我們證明C_k>C_k的范圍為0...size。我們通過生成多項式D_1,...,D_16,并證明C-C=1+D_1+2**16*D_2+2**32*D_3+...來做到這一點。本質上,D_1,...,D_16將差異存儲在基2**16中。然后,我們生成一個多項式E,其滿足所有D_1,...,D_16的復制約束以及f=x,并且滿足E(x+1)-E(x)={0,1}限制。我們還檢查了E=0以及E*16+65536)=65535。

關于E的約束表明,E中的所有值都夾在0和65535之間。對

D_i的復制約束,證明

D_i中的所有值都在0到65535之間,這證明了它是一個正確的16進制表示,從而證明了

C_k-C_k實際上是一個正數。

現在,我們需要證明value。我們添加另一個多項式U_v,并驗證:

在0...size(B)的(U,U_v)等于在0...size(B)的(B_k,B_v);

在size(B)...size(A)+size(B)的(U,U_v),是在0...size(A)的一個子集;

目標是在

U中,我們先放置來自

B的所有值,然后再放置來自

A的值,并使用相同的置換參數來確保鍵和值被正確復制。然后我們驗證

的一個置換。

使用映射合并參數

我們按照下面的方式使用映射合并參數,假設每天有BLOCKS_PER_DAY個區塊。

如果block.number%BLOCKS_PER_DAY!=0,我們驗證(C1_k,C1_v)=merge((W_k,W_v),(C1_old_k,C1_old_v));

如果block.number%BLOCKS_PER_DAY==0,我們驗證(C1_k,C1_v)=(W_k,W_v)以及(C2_k,C2_v)=(C1_old_k,C1_old_v);

請注意,C2具有一整天的時間,在此期間它保持不變。我們為任何人產生

=merge,)的證明提供獎勵;提供此證明后,我們將承諾

更新為新值,并將

重置為空。如果

S在當天沒有更新,則我們將

C1->C2傳輸延遲到更新為止;請注意,該協議確實取決于

S的更新速度是否足夠快。如果這不可能發生,那么我們可以通過添加更多層緩存的層次結構來解決這個問題。

從糟糕的FRI中恢復

對于FRI的情況,注意,有可能會出現有人生成的FRI在某些位置無效,但這不足以阻止驗證。這不會立即造成安全風險,但可能會阻止下一個更新者生成witness。

我們通過以下幾種方法來解決這個問題。首先,注意到某些FRI生成錯誤的人,可提供自己的FRI。如果通過相同的檢查,它將被添加到可構建下一次更新的有效FRI列表中。然后,我們可以使用交互式計算游戲來檢測和懲罰不良FRI的創建者。其次,他們可提供自己的FRI以及STARK來證明其有效,從而立即罰沒了無效FRI的創建者。通過FRI生成STARK是非常昂貴的,尤其是在較大規模時,但這樣做是值得的,因為這可以賺取很大一部分無效提議者的保證金獎勵。

因此,我們有了一種機制來使用多項式承諾,以此作為一個有效讀取和寫入witness來存儲狀態。這使我們能夠大幅度減少見證內容大小,同時也可以帶來一些好處,比如讓我們有能力對數據可用性進行檢查,以及實現關于狀態的托管證明。

今后的工作

提出FRI證明,要求少于900次查詢;

從理論上講,如果你預先計算并存儲拉格朗日基,理論上可以快速更新Kate承諾。這是否可以擴展到快速更新所有witness,以及為鍵值映射而不是一個vector工作?

Tags:VITVITAITATALIvite幣融資情況Vitalick NeuterinDigitalBits

中幣下載
比特幣:Coinbase:比特幣與傳統市場的相關性是暫時的

寫在前面:本文為Coinbase針對其客戶而寫,希望其了解基本市場分析知識。 太長不看版:盡管根據歷史數據,比特幣最近與標準普爾500指數一樣遭到拋售,但近期的相關性可能是暫時的.

1900/1/1 0:00:00
比特幣:揭秘比特幣一天暴跌30%內幕:OTC商家恐慌性拋售導致

文:棘輪、比薩、林格 3月12日,數字貨幣市場墜入黑洞。今日,比特幣跌幅超30%,創下了6年來最大單日跌幅。暴跌發生在晚間,15分鐘,比特幣一度暴跌20%,超過200億市值灰飛煙滅.

1900/1/1 0:00:00
比特幣:比特幣暴跌的原因是什么?傳統市場的下跌,還是PlusToken的拋售

來源:CointelegraphChina編者注:本文作了不改變作者原意的修改。一些權威人士認為,比特幣近期暴跌的背后是當前傳統市場的不穩定,而另一些人則認為,PlusToken騙局才是原因所在.

1900/1/1 0:00:00
比特幣:Bitfinex CTO:比特幣是互聯網上真正的貨幣,將成為未來金融應用的基礎引擎

比特幣要想取代法幣并成為未來最常用的貨幣,就需要在可擴展方面實施大的升級。到目前為止,比特幣的生態系統似乎已經證明了其作為一種長期投資工具的效用,但對許多投資者來說,由于這一加密貨幣龍頭老大所表.

1900/1/1 0:00:00
區塊鏈:觀點 | DeFi 用戶應該向開發者提出的質詢

過去幾個月來,DeFi生態經歷了巨大的動蕩,數次攻擊之下,許多未被利用過的缺陷也被報道出來。雖然代碼中無可避免會有bug,但還是有很多方法能降低缺陷發生的頻率,以及降低缺陷帶來的負面影響.

1900/1/1 0:00:00
比特幣:Chainalysis報告:誰在拋售比特幣?

本文來源:小蔥,原題《拋售還會繼續嗎?暴跌期間流入交易所的BTC有多少易手?有多少尚未出售?》Chainalysis發布針對此次比特幣暴跌發布了一份分析報告.

1900/1/1 0:00:00
ads