“ 區(qū)塊鏈無法擴展 ” 你可能已經(jīng)聽過一百萬次了。幾年前,這感覺像是對該行業(yè)的真正威脅。如果我們甚至不能每秒處理 15 筆交易,我們?nèi)绾螢闆]有銀行賬戶的人提供銀行服務(wù)?
但大問題推動了創(chuàng)新,區(qū)塊鏈的可擴展性是一個大問題。它很快引起了工程師和科學家的注意,直至今天,我們對區(qū)塊鏈可以擴展越來越有信心。事實上,當前的大多數(shù)爭論都關(guān)注哪種可擴展性解決方案將獲勝。
這就是為什么在這篇文章中,我將分解一些在過去五年中探索過的以太坊可擴展性解決方案――并解釋這些解決方案如何成為可能成為贏家的墊腳石:匯總
面對 “ 可擴展性三難 ”
如果不提到著名的 “ 可擴展性三難困境 ”,我們就無法談?wù)摽蓴U展性。該術(shù)語由Vitalik(V神)創(chuàng)造,用于解釋區(qū)塊鏈旨在擁有的三個屬性:可擴展性、去中心化和安全性。很明顯,到目前為止,我們可以實現(xiàn)其中兩個屬性。但是要同時獲得這三個是非常非常困難的。
在我們理解為什么之前,讓我們把我們的條款弄清楚。
可擴展性只是意味著區(qū)塊鏈可以處理大量事務(wù),以每秒事務(wù)數(shù) (TPS) 衡量。去中心化意味著區(qū)塊鏈由世界各地的許多“去信任”節(jié)點運行――而不是由一小群集中的“受信任”節(jié)點運行。安全性意味著即使網(wǎng)絡(luò)中一定百分比的節(jié)點是惡意的,區(qū)塊鏈也能抵抗攻擊。理想情況下,它應該能夠處理多達 50% 的惡意節(jié)點。
Vitalik 創(chuàng)建了一個簡單的三角形,每條邊代表三個屬性之一。三角形的每一邊代表能夠?qū)崿F(xiàn) 3 個屬性中的 2 個的不同類型的區(qū)塊鏈解決方案。
去中心化和安全
三角形的底部是傳統(tǒng)的區(qū)塊鏈,如比特幣和以太坊 1.0(一層)。
這些類型的區(qū)塊鏈是:
去中心化:是的。因為世界上任何人都可以選擇成為挖礦節(jié)點。全世界有成千上萬的礦工參與保護比特幣和以太坊網(wǎng)絡(luò)的安全。也無需授權(quán)自己為礦工;這是完全不信任的。安全:是的。因為網(wǎng)絡(luò)中的每個節(jié)點都保留了區(qū)塊鏈的副本并驗證每筆交易。此外,工作量證明旨在處理高達 50% 的惡意節(jié)點。可擴展性:不能。憑借其安全性,網(wǎng)絡(luò)中的每個節(jié)點都保留一份區(qū)塊鏈副本并驗證每筆交易。雖然安全,但效率低下,導致延遲和吞吐量非常低。對于比特幣,每秒大約 7 筆交易,對于以太坊,每秒大約 15 筆交易。
安全且可擴展
三角形右邊是典型的高TPS鏈,比如幣安智能鏈。他們使用一種稱為“ Proof-of-stake-authority ” 的共識算法,其中 “ 選舉 ” 了 21 個節(jié)點來生成新塊。每 24 小時,2月15號更名為BNBChiin,從21個節(jié)點擴展到41個節(jié)點。將選出一組新的 41 個節(jié)點來在 24 小時內(nèi)生成新塊。
安全:是的。每個 “ 選舉 ” 節(jié)點被授權(quán),因此我們控制系統(tǒng)中的對手??蓴U展:可以。由于少量的選舉節(jié)點在任何時候都會產(chǎn)生新的塊,因此我們可以獲得更高的事務(wù)吞吐量和更低的延遲,這意味著與每個節(jié)點都必須驗證每個事務(wù)相比,交互費用更低。去中心化 : 不夠去中心化。 由于只有 41 個選舉產(chǎn)生的驗證者,它比傳統(tǒng)的區(qū)塊鏈去中心化要少得多。此外,每個 “ 選舉 ” 節(jié)點被授權(quán),因此我們將信任介紹到系統(tǒng)中,使其減少分散。
可擴展和去中心化
三角形的左側(cè)是多鏈生態(tài)系統(tǒng),例如 Cosmos、Polkadot 和 Avalanche。這些系統(tǒng)有許多獨立的區(qū)塊鏈網(wǎng)絡(luò),它們都作為更大區(qū)塊鏈網(wǎng)絡(luò)的一部分進行通信。
可擴展:是的。由于我們不再需要將所有狀態(tài)存儲在單個區(qū)塊鏈上,因此我們可以將狀態(tài)拆分到許多獨立的區(qū)塊鏈中,從而實現(xiàn)比傳統(tǒng)區(qū)塊鏈更高的可擴展性。去中心化:看情況而定。生態(tài)系統(tǒng)中的每個區(qū)塊鏈都有一組驗證區(qū)塊鏈的節(jié)點。生態(tài)系統(tǒng)中的一些鏈會有很多驗證者(例如需要去中心化的穩(wěn)定幣鏈),而另一些鏈可能很少甚至只有一個(例如不需要太多去中心化的企業(yè)鏈)。因此,去中心化的程度取決于我們所指的生態(tài)系統(tǒng)中的哪條鏈。安全:不太安全。如果生態(tài)系統(tǒng)中有一條鏈受到攻擊,那么它可能會對系統(tǒng)的其余部分產(chǎn)生連鎖反應。例如,如果鏈 B 受到攻擊,而鏈 A、C 和 D 都依賴它,那么其他鏈也會受到影響。
如您所見,在擴展區(qū)塊鏈方面有許多不同的嘗試,但它幾乎總是以這三個屬性之一為代價。Vitalik 和以太坊社區(qū)一直不愿意做出這種妥協(xié),他們的目標是獲得所有三個。
在我們了解這如何可能之前,了解另一件事很重要:第 1 層擴展與第 2 層擴展。
了解第 1 層和第 2 層擴展
在最高級別,第 1 層擴展是指擴展核心區(qū)塊鏈本身。相比之下,第 2 層擴展是指將交易從主區(qū)塊鏈層移到可以與主鏈通信的單獨層中。
以太坊希望同時使用第 1 層和第 2 層解決方案來解決可擴展性的三難困境,分片是以太坊的第 1 層解決方案,而匯總是以太坊的第 2 層解決方案。
以太坊最早的二層解決方案
但是匯總和分片必須等待片刻。首先,我們應該記錄以太坊過去探索的第 2 層擴展解決方案,然后最終得出匯總,即以太坊的 “ 圣杯 ” 。畢竟,這就是工程的工作方式――我們提出想法、測試它們并進行迭代,直到找到可行的解決方案。
狀態(tài)通道
狀態(tài)通道已經(jīng)存在了很長時間,所以它們并不是什么新鮮事。以下是它們?nèi)绾喂ぷ鞯目焖僬f明。假設(shè)我們有兩個人,愛麗絲和鮑勃,他們想互相交易。愛麗絲每次發(fā)推文都會向鮑勃支付 1 美元。但是由于 Bob每天發(fā)很多推文,使用以太坊進行交易會太慢而且太貴。
相反,他們使用 “ 狀態(tài)通道 ” :
愛麗絲在以太坊的智能合約中投入了 500 美元。每當 愛麗絲 想給 鮑勃 1 美元時,她都會簽署一條消息,表明她想給 鮑勃 多少錢。她一直在簽署消息,直到 鮑勃 準備好 “ 兌現(xiàn) ” 他的資金。鮑勃 提交一條新消息,表明他已準備好關(guān)閉狀態(tài)通道。以太坊上的智能合約驗證愛麗絲和鮑勃的簽名,向鮑勃支付應付金額,并將其余款項返還給愛麗絲。
請注意,只有第一步和最后一步需要我們在區(qū)塊鏈上進行交易,在這些步驟之間,愛麗絲 和 鮑勃 可以向?qū)Ψ桨l(fā)送無限數(shù)量的簽名消息,指示付款。
在這種情況下,以太坊區(qū)塊鏈僅用作結(jié)算層來處理一次性付款的最終交易,這減輕了底層區(qū)塊鏈的負擔。
重點是:通過開辟一個在區(qū)塊鏈之外進行交易的渠道,我們在保持低成本的同時大幅提高了交易容量和速度。這是可能的,因為:
首先,大部分交易都發(fā)生在鏈下,這意味著付款可以即時處理,因為兩方之間的鏈下更新不需要額外的時間來處理和驗證區(qū)塊鏈網(wǎng)絡(luò)。其次,支付產(chǎn)生的費用較低,因為我們只需要在打開和關(guān)閉狀態(tài)通道時進行鏈上交易。這意味著大多數(shù)交易都是在鏈下進行的,費用要低得多。
那么,為什么這不是最終的解決方案呢?好吧,狀態(tài)通道可以做的事情是有限制的。
例如,我們不能使用狀態(tài)通道與不屬于狀態(tài)通道的人進行交易,我們也僅限于狀態(tài)通道中可能的狀態(tài)更新類型。像 Uniswap 這樣的復雜應用程序不能在狀態(tài)通道中使用,因為當我們在 Uniswap 上交換兩個代幣時,智能合約會自動執(zhí)行一系列中間步驟來進行交換,這些步驟沒有授權(quán)用戶在每個步驟上簽字。
狀態(tài)通道的另一個缺點是它們要求我們鎖定流動性以實例化通道并防止惡意交易對手可能永遠不會真正支付承諾資金的情況。這對于單一渠道來說可能沒問題,但是當我們試圖通過狀態(tài)渠道網(wǎng)絡(luò)進行支付時,鎖定在中間渠道中的流動性使其相當“資本效率低下”。
最后,狀態(tài)通道需要可以定期監(jiān)視網(wǎng)絡(luò)的人(或?qū)⒋素熑挝薪o其他人)。這確保了您的資金安全,這又增加了一層復雜性和低效率。
總而言之,狀態(tài)通道適用于兩方需要在一段時間內(nèi)快速、廉價地進行交易的用例(例如商家和客戶)。但鑒于它們有限的用例和資本效率低下,我們并不認為狀態(tài)通道是以太坊的最終擴展解決方案。
側(cè)鏈
側(cè)鏈也已經(jīng)存在很長時間了,而且很容易理解。簡而言之,側(cè)鏈是與主區(qū)塊鏈 “ 掛鉤 ” 的獨立區(qū)塊鏈。
當我們將一個區(qū)塊鏈“掛鉤”到另一個區(qū)塊鏈時,這意味著我們可以在兩個區(qū)塊鏈之間移動資產(chǎn)?!皢蜗颉睊煦^是我們將資產(chǎn)從主區(qū)塊鏈移動到側(cè)鏈的地方,而不是其他方式。這是通過將主區(qū)塊鏈上的代幣發(fā)送到不可使用的地址來“燒掉”代幣,然后在側(cè)鏈上 “ 鑄造 ” 等價的代幣來實現(xiàn)的。
那么,“ 雙向掛鉤 ” 是我們可以將資產(chǎn)移入和移出主區(qū)塊鏈和側(cè)鏈的時候。這需要在主鏈上 “ 鎖定 ” 我們的代幣,然后在側(cè)鏈上 “ 鑄造 ” 等量的代幣。當我們想要轉(zhuǎn)換回原始代幣時,我們會 “ 燒掉 ” 側(cè)鏈上的代幣,然后解鎖主鏈上的代幣。
因此,側(cè)鏈是當我們創(chuàng)建一個與主區(qū)塊鏈雙向掛鉤的新區(qū)塊鏈時。當我們想要更快交易時,我們可以將我們的資金從主鏈轉(zhuǎn)移到側(cè)鏈并在那里進行交易。完成后,我們將資金轉(zhuǎn)移回主鏈。
比特幣側(cè)鏈的一個例子是Liquid Network。Liquid Network 與比特幣掛鉤,允許更快、更便宜的比特幣支付。另一個流行的例子是Polygon,它是與以太坊掛鉤的側(cè)鏈。
當用戶想要更快交易時,他們可以鎖定一些 ETH 并在 Polygon 側(cè)鏈上創(chuàng)建等量的 Matic 代幣。在 Polygon 側(cè)鏈上,他們可以享受更快、更便宜的交易。當他們完成交易后,他們可以將他們的 Matic 代幣轉(zhuǎn)換回 ETH。
注意:從技術(shù)上講,Matic 不是側(cè)鏈,因為它會定期將側(cè)鏈的狀態(tài)提交給以太坊。因此,他們喜歡稱自己為 “ 提交鏈 ”。
總體而言,側(cè)鏈是可擴展的,因為它們通常通過使用允許可擴展性的不同共識算法在去中心化和/或安全性方面進行權(quán)衡。
對于以太坊網(wǎng)絡(luò)上的大量擁塞,側(cè)鏈是一個很好的權(quán)宜之計,但以太坊也不認為這是最終的可擴展性解決方案。隨著您繼續(xù)閱讀,原因?qū)⒆兊们逦?)
Plasma Plasma 是另一個 “ 第 2 層 ” 解決方案,可以讓我們將交易移出基礎(chǔ)層。在我們進入 Plasma 之前,重要的是要注意,隨著時間的推移,Plasma 已經(jīng)進行了多次迭代,每一次都有自己的權(quán)衡取舍。您可以查看Plasma世界地圖,其中列出了人們?yōu)榻鉀QPlasma帶來的挑戰(zhàn)而嘗試創(chuàng)建的許多不同類型的設(shè)計,有很多!
當然,為了這篇文章的目的,我必須概括 Plasma 的概念,而不是過多地關(guān)注個別的實現(xiàn)。如果您想深入挖掘,請務(wù)必查看世界地圖。
那么,什么是Plasma?Plasma 本質(zhì)上是一系列在主區(qū)塊鏈之外運行的智能合約(或 “ Plasma鏈 ” )。
Plasma 鏈就像一棵樹的樹枝,以太坊是主干,每條 Plasma 鏈都是一個分支,每個分支都被視為具有自己的區(qū)塊鏈歷史和計算的區(qū)塊鏈。
“ 根區(qū)塊鏈 ”(即以太坊區(qū)塊鏈)使用稱為 “ 欺詐證明 ” 的東西來強制 Plasma 鏈中狀態(tài)的有效性。欺詐證明是我們提供某些數(shù)據(jù)的一種機制,任何人都可以使用數(shù)學證明來確定數(shù)據(jù)是否無效。
每個 Plasma 區(qū)塊鏈不需要將交易數(shù)據(jù)發(fā)布到根鏈上。相反,每個 Plasma 鏈都有一個 “ 操作員 ”。這可能是一個中心化的參與者,一個代表多個人的多重簽名,甚至是一個參與成為運營商的委員會。Plasma 鏈的運營商提交 Plasma 鏈上發(fā)生的轉(zhuǎn)移的 Merkle 根。
注意:如果您不知道 Merkle(默克爾樹)樹的工作原理,那么我強烈建議您在繼續(xù)之前閱讀此解釋器。在高層次上,Merkle 樹讓我們可以獲取一個大型數(shù)據(jù)集(例如,一個塊中的交易)并生成一個代表整個數(shù)據(jù)集的單個根哈希。
稍后,我們可以很容易地證明來自大數(shù)據(jù)集的一條數(shù)據(jù)(即,來自一個事務(wù)塊的單個事務(wù))存在于該數(shù)據(jù)集中,只需提供通往該數(shù)據(jù)的分支。
如果有人試圖證明欺詐交易的存在,那么哈希值將不匹配,我們會立即知道。
好的,回到 Plasma。
每個 Plasma 鏈都在提交發(fā)生在其上的轉(zhuǎn)移的 Merkle 根。當用戶稍后試圖將他們的資產(chǎn)從 Plasma 鏈移回根鏈時,用戶可以提交將資產(chǎn)發(fā)送給他們的最新交易的 Merkle 分支(最近的交易足以讓我們知道當前余額在等Plasma上)。這開始了一個挑戰(zhàn)期,任何人都可以嘗試證明用戶的 Merkle 分支是欺詐性的。如果 Merkle 分支存在欺詐,則可以提交欺詐證明。
由于根區(qū)塊鏈僅跟蹤 Merkle 根,因此與那些發(fā)生在主鏈上的交易相比,它必須處理的數(shù)據(jù)要少得多。這顯著減少了存儲在根區(qū)塊鏈上的數(shù)據(jù)量,并使我們能夠擴展根鏈。
此外,如果某個特定的 Plasma 鏈受到惡意攻擊,人們可以從腐敗的子鏈中 “ 大規(guī)模退出 ”。
等Plasma 比狀態(tài)通道更有利,因為您可以將資產(chǎn)發(fā)送給任何人,而使用狀態(tài)通道,您只能與狀態(tài)通道中的人進行交易。此外,等Plasma相對于側(cè)鏈的好處是等離子鏈由以太坊保護。
兩者(Plasma 與側(cè)鏈)的根本區(qū)別在于側(cè)鏈有自己的安全模型。他們有自己的共識機制和一組單獨的節(jié)點來驗證狀態(tài)。即使側(cè)鏈受到攻擊,主鏈也不會發(fā)生任何事情,反之亦然。如果側(cè)鏈發(fā)生攻擊,主鏈無法保護用戶。
另一方面,等Plasma具有依賴的安全模型,每個 Plasma 鏈都可以使用自己的機制來驗證交易,但它仍然使用以太坊區(qū)塊鏈作為最終的真相仲裁者。在拜占庭攻擊的情況下,等離子鏈用戶可以退出到以太坊。
但是 Plasma 有幾個缺點,使其成為一個平淡無奇的可擴展性解決方案。
首先,當用戶想要將他們的資產(chǎn)從 Plasma 合約轉(zhuǎn)移到以太坊主區(qū)塊鏈時,他們需要等待 7 天。這足以讓人們驗證提款交易不是欺詐性的。如果是,他們可以使用 Plasma 鏈上的 Merkle 樹構(gòu)建欺詐證明。
其次,每個 Plasma 鏈都需要一個運營商將 Merkle 根承諾發(fā)布到主鏈。這需要我們依靠第三方來準確地將 Merkle 根承諾發(fā)布到鏈上。不幸的是,運營商可以執(zhí)行所謂的“ 數(shù)據(jù)可用性攻擊 ”,他們出于惡意原因拒絕將某些交易發(fā)布到主鏈上。
在這種情況下,運營商可以說服網(wǎng)絡(luò)接受無效塊,而無法證明無效塊。這可以防止其他用戶知道區(qū)塊鏈的準確狀態(tài)。這也阻止了人們創(chuàng)建區(qū)塊或交易,因為他們?nèi)狈?gòu)建證明的信息。與欺詐不同,數(shù)據(jù)可用性攻擊并不是唯一可歸因的。我們無法知道攻擊正在發(fā)生。
運營商也可以通過更明確的方式進行惡意操作,例如通過提交欺詐性交易。在這種情況下,人們可以“大規(guī)模退出,” 如上所述。但事實證明,這些在實踐中實施起來要困難得多。如果很多用戶想要大規(guī)模退出,可能會導致主鏈擁堵,用戶可能無法及時退出,導致資金損失。
第三,Plasma 要求交易資產(chǎn)的所有者在場。這確保了 Plasma 鏈的安全,因為它有效地使未經(jīng)所有者同意無法進行交易(例如將 ERC 20 代幣發(fā)送到批準的地址)。Plasma 最適合簡單的轉(zhuǎn)賬,但隨著交易變得越來越復雜,設(shè)計空間變得不規(guī)則。
出于上述原因,Polygon 和 OMG 網(wǎng)絡(luò)最初追求 Plasma 架構(gòu)以進行擴展,但后來又放棄了。
正是在這種情況下,在提出了各種解決方案之后,我們得到了匯總。
匯總
就像狀態(tài)通道、側(cè)鏈和等Plasma一樣,匯總是“第 2 層”解決方案。事實上,rollup 與 Plasma 非常相似,因為我們在鏈下批量處理交易并將更新發(fā)布到主區(qū)塊鏈。然而,關(guān)鍵的區(qū)別在于,通過匯總,我們還將每批交易的交易數(shù)據(jù)發(fā)布到鏈上。使用 Plasma,我們只發(fā)布 Merkle 根。
換句話說,通過匯總,我們在鏈下進行交易處理,但我們在鏈上發(fā)布交易數(shù)據(jù)。我們在鏈上發(fā)布的數(shù)據(jù)量是本地驗證匯總交易所需的最小數(shù)量。通過將數(shù)據(jù)上鏈,任何人可以檢測欺詐、發(fā)起提款或親自開始生成交易批次。因此,匯總比 Plasma 鏈或側(cè)鏈為我們提供了更高的安全保證。
rollups 和 Plasma 之間的另一個關(guān)鍵區(qū)別是我們不必擔心數(shù)據(jù)可用性問題。畢竟,我們將交易數(shù)據(jù)發(fā)布到主鏈上。這是一個巨大的勝利。
使用匯總,我們有效地在匯總層內(nèi)運行 EVM 的一個版本。這意味著以太坊上任何可能的交易都可以在匯總中執(zhí)行。
這就引出了一個問題:如果我們?nèi)匀辉阪溕习l(fā)布交易數(shù)據(jù),那么這將如何擴展第 1 層?擴展性不還是受限于主鏈的數(shù)據(jù)帶寬嗎?
是的。這里的關(guān)鍵是我們通過匯總獲得 5 到 100 倍的可擴展性,但不是無限的可擴展性。Rollups 還使用了許多花哨的壓縮技巧來最小化我們在鏈上發(fā)布的交易數(shù)據(jù),因此鏈上的數(shù)據(jù)存儲比其他方式少得多。
同時,我們將鏈下交易執(zhí)行的所有繁重工作外包給匯總。回想一下,在交易執(zhí)行期間,交易必須由以太坊虛擬機 (EVM) 處理并與狀態(tài)交互(例如存儲、賬戶余額等)。這是昂貴的。
然而,對于匯總,我們通過在匯總中運行 EVM 的一個版本來將此執(zhí)行轉(zhuǎn)移到匯總層――所以我們?nèi)匀辉趫?zhí)行相同的執(zhí)行,但匯總層的 gas 成本比以太坊便宜得多。
仔細查看匯總
現(xiàn)在,讓我們看看匯總是如何在幕后工作的。
主鏈上有一個“匯總合約”,用于維護匯總層的當前狀態(tài)。這包括在其上進行交易的用戶的賬戶余額和其中存在的合約的智能合約代碼。簡而言之,匯總合約跟蹤匯總層中交易的“狀態(tài)根”。
“狀態(tài)根”由一個鍵值映射組成,其中鍵是地址,值是賬戶。每個賬戶最多有 4 個屬性:余額、隨機數(shù)、代碼(僅適用于智能合約)和存儲(僅適用于智能合約)。
當事務(wù)發(fā)生在匯總層時,會發(fā)生狀態(tài)更改。當然,這意味著狀態(tài)根也需要更新。但不是為每筆交易更新狀態(tài)根,而是將交易“批量”發(fā)送到主鏈上的匯總合約。該批次將包括該批次事務(wù)的壓縮形式和一個更新的狀態(tài)根,該狀態(tài)根表示該批次事務(wù)處理后的數(shù)據(jù)。
主鏈上的匯總合約檢查批次中的前一個狀態(tài)根是否與其當前狀態(tài)根匹配――如果匹配,它將狀態(tài)根切換到新的狀態(tài)根。
由于發(fā)布的交易數(shù)據(jù)實際上并沒有被 EVM 解釋,我們沒有訪問或?qū)懭霠顟B(tài)――這太昂貴了。相反,我們將壓縮的交易數(shù)據(jù)作為“calldata”參數(shù)發(fā)布到匯總合約。
這就是為什么這很整潔,在 Solidity 中,calldata(是一種數(shù)據(jù)結(jié)構(gòu)存儲方式)是最便宜的存儲形式。事實上,作為 calldata 參數(shù)傳遞的參數(shù)根本不會存儲在以太坊的狀態(tài)中,這意味著我們避免了很多 gas 費用。同時,以太坊節(jié)點仍然可以在創(chuàng)建區(qū)塊時存儲交易數(shù)據(jù)(在歷史日志中)。
精明的讀者可能想知道 Plasma 和匯總之間有什么區(qū)別。這是關(guān)鍵的區(qū)別:通過匯總,我們將交易數(shù)據(jù)與狀態(tài)根一起發(fā)布到鏈上。使用 Plasma,我們只需發(fā)布交易的狀態(tài)根。
與 Plasma 不同,我們有一個將 Merkle 根發(fā)布到根鏈的操作員,rollups 允許任何人將新一批交易發(fā)布到鏈上的 rollup 合約,稍后我們將更深入地探討。
再一次,這引出了一個問題:既然我們只是將交易數(shù)據(jù)發(fā)布到主鏈而不是執(zhí)行鏈上的交易,我們怎么知道發(fā)布在主鏈上的交易數(shù)據(jù)和狀態(tài)根不是欺詐性的?
輸入:樂觀匯總和零知識匯總,每種都有自己的處理和驗證批次正確性的方式。
樂觀匯總
您可能可以根據(jù)名稱猜出樂觀匯總是什么,當一批新的交易 “ 匯總 ” 到主鏈時,每批的狀態(tài)根和哈希都會被發(fā)布,但我們實際上并沒有驗證交易是否正確執(zhí)行,至少在發(fā)布時沒有。
通過這種方式,我們 “ 樂觀地 ” 將新的狀態(tài)根和交易數(shù)據(jù)發(fā)布到主鏈上的匯總合約。當某人將新的狀態(tài)根發(fā)布到主鏈時,匯總智能合約會簡單地接受他們的話。
如果有人發(fā)現(xiàn)向匯總智能合約發(fā)布了無效的狀態(tài)轉(zhuǎn)換,他們可以生成 “ 欺詐證明 ”。
欺詐證明包括:
“ 預先狀態(tài)”的證明,或者,在應用交易之前事情的樣子“ 后狀態(tài) ” 的證明,或者,在應用交易后狀態(tài)應該如何處理在狀態(tài)轉(zhuǎn)換期間應用的交易證明
工作流程很簡單:這個欺詐證明被發(fā)布到主鏈上的匯總合約中。然后匯總合約驗證證明并將交易邏輯應用于預狀態(tài)。然后,它將結(jié)果與后狀態(tài)進行比較。如果存在不匹配,則證明發(fā)布批次的人沒有正確應用交易。然后,智能合約會還原該批次的交易以及之后的所有批次。
為此,任何將批次發(fā)布到主鏈的人都必須存入保證金,因此如果他們表現(xiàn)出惡意并被抓到,他們可能會被 “ 罰沒 ”。
ZK 匯總
如果樂觀匯總使用“在被證明有罪之前是無辜的”心態(tài),那么 ZK 匯總使用“不信任,驗證”心態(tài)。
使用 ZK 匯總,每個批次都包含一個稱為 ZK-SNARK 的加密證明,它證明狀態(tài)根是執(zhí)行該批次事務(wù)的正確結(jié)果。ZK-SNARK 證明是一個哈希值,表示在 zk-rollup 層中執(zhí)行交易后區(qū)塊鏈狀態(tài)的變化。該有效性證明被發(fā)布到匯總合約中,因此任何人都可以使用它來驗證匯總層上特定批次中的交易。
這里的魔力在于 ZK-SNARK 的工作方式。它們讓我們在不泄露數(shù)據(jù)的情況下生成底層數(shù)據(jù)的證明。任何人以后都可以驗證數(shù)據(jù)是否存在,即使他們無權(quán)訪問數(shù)據(jù)本身。
ZK-SNARKS 的數(shù)學基礎(chǔ)很復雜,超出了我們的范圍,但如果你好奇,我鼓勵你去 Google 或 YouTube 上花點時間了解它們的工作原理。
哪個更好?
顯而易見的下一個問題是……哪個更好?很難說。各有優(yōu)缺點,接下來我們來看看。
成本
“ 成本 ” 在抽象中并沒有太大的意義,但是當我們將其分解時,樂觀和 ZK 匯總的性能開始出現(xiàn)分歧。
在鏈上發(fā)布新批次的 Gas 成本:樂觀匯總成本更低。我們樂觀地發(fā)布新的狀態(tài)根和數(shù)據(jù),所以這是一個簡單的交易。ZK 匯總成本更高。當我們在鏈上發(fā)布新批次時,我們必須驗證 ZK-SNARK 有效性證明。這在計算上更昂貴。發(fā)布在鏈上的每筆交易的 Gas 成本:樂觀的匯總成本更高。我們必須在鏈上發(fā)布足夠的數(shù)據(jù),以便稍后驗證欺詐證明。ZK 匯總成本更低。我們可以省略大部分交易數(shù)據(jù),因為有效性證明足以讓任何人驗證批次的正確性。鏈下計算成本:樂觀匯總成本更低。我們只發(fā)布新的狀態(tài)根,而不是執(zhí)行/驗證交易。也就是說,我們?nèi)匀恍枰恍┤藖碛^察新批次的創(chuàng)建和新交易的執(zhí)行,以確保批次的正確性。ZK 匯總成本更高。ZK-SNARK 的計算成本很高(成本高出 20 到 1000 倍,盡管隨著創(chuàng)新它繼續(xù)變得更便宜)。
旁注:盡管 ZK-rollups 的鏈下計算成本更高,但考慮到鏈下的 gas 價格要低得多也很重要。
速度
樂觀匯總很慢。通常,用戶必須等待大約一周才能提取他們的資產(chǎn)。如果用戶試圖在匯總層上提取他們實際上并不擁有的代幣,這可能會給某人足夠的發(fā)布欺詐證明的機會。
ZK 匯總很快。用戶通常等待不到 10 分鐘來提取他們的資產(chǎn)。我們只需要等到下一批來處理提款,因為所有的匯總狀態(tài)都已經(jīng)過驗證。
旁注:有一些方法可以通過使用“快速提款”來繞過這個一周的等待期。這是通過流動性提供者完成的,他們在主鏈上維護一個 “ cookie jar ” 資金。當用戶快速提取資金時,他們給流動性提供者一張借條用于匯總中的資金,然后他們立即獲得主鏈上的流動性提供者的付款(收費)。
稍后,當一周期限結(jié)束并且用戶從匯總層取回資產(chǎn)時,用戶可以將欠他們的資金發(fā)送給流動性提供者。流動性提供者甚至可以選擇運行一個驗證節(jié)點來驗證用戶在匯總上的交易,然后再在主鏈上向他們發(fā)放資金,從而進一步降低他們的風險。
然而,這種 “ 快速提現(xiàn) ” 方案對于 NFT 來說是不可能的,因為任何 NFT 中只有一個存在,并且流動性提供者無法在鏈上創(chuàng)建相同的 NFT。
復雜
樂觀匯總更簡單,欺詐證明的概念由來已久,因此解決方案相對簡單。
ZK 匯總更復雜,ZK-SNARK 是新的并且在數(shù)學上很復雜。
廣泛性
樂觀匯總更容易廣泛化,工程師們已經(jīng)構(gòu)建了一個與 EVM 兼容的虛擬機,稱為 OVM(樂觀虛擬機),它允許樂觀匯總處理可以在以太坊上處理的任何事務(wù)。
ZK 匯總更難概括。使用 ZK-SNARK 證明通用 EVM 執(zhí)行比證明簡單計算(如價值轉(zhuǎn)移)要困難得多。也就是說,這個領(lǐng)域發(fā)生了很多創(chuàng)新。事實上,StarkNet alpha引入了一種名為 Cairo 的新編程語言,它是以太坊上的圖靈完備 ZK 驗證器,可讓我們驗證通用計算智能合約。
可擴展性
樂觀匯總的可擴展性較差。當我們在鏈上發(fā)布數(shù)據(jù)時,它通常包括一些狀態(tài)(例如交易細節(jié))和見證人(例如證明交易方同意的數(shù)字簽名)。使用樂觀匯總,我們必須為每筆交易發(fā)布見證,以便人們以后可以證明欺詐。見證人占用大量存儲空間,是交易數(shù)據(jù)的 3-10 倍。
ZK 匯總更具可擴展性:我們不需要為每筆交易包括見證人,因為在計算 ZK-SNARK 時所有數(shù)字簽名都已驗證。相反,我們每批只需要一個見證人,這大大減少了存儲在鏈上的數(shù)據(jù)。
安全
樂觀匯總不太安全,樂觀匯總依賴于加密經(jīng)濟學來確保鏈的安全性。換句話說,他們必須激勵人們觀看發(fā)布在鏈上的批次并檢測欺詐行為。
ZK 匯總更安全,ZK 匯總依賴于數(shù)學,它們不需要激勵。他們使用密碼學而不是密碼經(jīng)濟學。
那么,既然我們已經(jīng)分解了這些,哪個更好?仍然很難說,但這證明了這些程序背后的工程師所做的偉大工作。我們有像 Optimism 和 Arbitrum 這樣的團隊正在努力開發(fā)樂觀匯總,這些已經(jīng)可供以太坊開發(fā)人員使用。我們有StarkWare和Zksync這樣的公司將通用 ZK-rollups 引入以太坊。
這兩種解決方案都處于起步階段。但是樂觀匯總更接近于被采用,因為它們不太復雜并且可以用于當今的通用計算。另一方面,ZK rollups 需要一些時間才能趕上,但許多工程師會認為 ZK rollups 是一項卓越的技術(shù)。畢竟,它們依賴于數(shù)學而不是加密經(jīng)濟學,而且它們比樂觀匯總更具可擴展性。
也就是說,最好的技術(shù)并不總是贏。我們不能忽視的是,一旦一項技術(shù)變得根深蒂固,它就很難被取代。樂觀的匯總肯定是領(lǐng)先的――所以只有時間才能證明從長遠來看哪個會 “ 贏 ”。
匯總的聰明之處
在我們討論匯總的一些持久挑戰(zhàn)之前,讓我們看一下匯總使用的壓縮技巧如此高效。
隨機數(shù):在典型的以太坊交易中,我們包含隨機數(shù)以防止雙花攻擊。Rollups 完全省略了它們,因為它們可以使用區(qū)塊鏈的先前狀態(tài)重新計算。通過這種方式,匯總盡可能用計算替換數(shù)據(jù)。Gas 價格:與其以 gwei 計價(其中 1 gwei 是 10^-9 ETH),不如將 Gas 價格限制在固定的價格范圍內(nèi),從而顯著減少在交易數(shù)據(jù)中記錄 Gas 價格所需的存儲量,這真的加起來了!費用:同上。To:一個地址是 20 字節(jié)長,加上 1 個字節(jié)用于 RLP 編碼。匯總可以存儲索引到地址的映射,而不是包括地址,并且只在 “ to ” 字段(例如,1234)中包括索引。這就像將坐標留給目的地,而不是渲染整個位置本身。值: “ 值 ” 字段為 9 字節(jié),因為 ETH 和 ERC-20 代幣最多有 9 位小數(shù)。匯總可以改為把值限制為最多 3 個小數(shù)位,為我們節(jié)省 6 個字節(jié)??雌饋砗軐嵱茫『灻喝缟纤觯瑪?shù)字簽名的 “ 見證 ” 占用了大量存儲空間。Rollups 可以使用 BLS簽名(簽名聚合和密鑰聚合的算法),它允許我們將許多簽名聚合為一個,這節(jié)省了大量的存儲空間!
讓我們把這一切付諸行動,使用所有這些壓縮技巧,我們可以為 ETH 傳輸減少多少字節(jié)?典型的 ETH 傳輸需要 112 個字節(jié),但是有了這些壓縮技巧?只有 12 個字節(jié),這幾乎提高了 10 倍的效率!
ZK rollup 可以獲得比樂觀 rollup 更多的優(yōu)化,因為它們在將交易數(shù)據(jù)發(fā)布到主鏈之前進行鏈下交易驗證。他們也不需要包含交易數(shù)據(jù)的“驗證”部分;有效性證明就足夠了。所有 ZK 匯總需要存儲的是計算狀態(tài)轉(zhuǎn)換所需的數(shù)據(jù)。因此,重要的一點是匯總不僅因為它們將計算移出鏈而高效,而且因為它們非常聰明的數(shù)據(jù)壓縮技巧。
Rollups 并不完全是“圣杯”
但不要太興奮,盡管匯總非常有希望,但仍有很多問題需要解決,以下是您應該注意的一些挑戰(zhàn)。
可擴展性有天花板
到目前為止,您已經(jīng)了解匯總和其他第 2 層解決方案(如 Plasma 和側(cè)鏈)之間的主要區(qū)別。你會記得,匯總將計算移出鏈,但將數(shù)據(jù)存儲在鏈上。這對于解決數(shù)據(jù)可用性問題非常有幫助。但是由于我們將交易數(shù)據(jù)存儲在鏈上(盡管是以非常壓縮的形式),我們?nèi)匀皇艿揭蕴淮鎯θ萘康南拗啤?/p>
我們可以通過一些粗略的數(shù)學來看看理論上的 TPS 將使用匯總。
以太坊區(qū)塊gas限制:1250萬gas每字節(jié)存儲在鏈上的數(shù)據(jù)成本:16 gas每個塊的最大字節(jié)數(shù):~781,000 字節(jié)(1250 萬氣體/每字節(jié) 16 氣體)使用匯總進行 ETH 傳輸所需的數(shù)據(jù)字節(jié):12 個字節(jié)(參見上一節(jié)中的數(shù)學)每塊交易:~65,000(每塊約 781,000 字節(jié)/每個 ETH 傳輸 12 字節(jié))以太坊的平均出塊時間:13秒每秒交易數(shù):~5000 TPS(每塊約 65,000 筆交易/每塊 13 秒)
當然,這個數(shù)學假設(shè)一個區(qū)塊中的所有交易都是 ETH 轉(zhuǎn)賬,并且一個區(qū)塊中除了批量匯總交易之外沒有其他任何東西,這是極不可能的。大多數(shù)區(qū)塊將包含各種交易,包括一些第 1 層交易,這些交易將花費超過 16 個氣體費用。此外,如果這些是 ZK-rollup 批次,則將不包括在鏈上驗證 SNARK 證明的成本,這大約是 500,000 gas。
盡管如此,這為您提供了使用匯總的 TPS 的起點,5,000 遠不及 Visa 顯然擁有的 65,000 TPS ,但它比今天的 TPS 以太坊要好得多。
破碎的流動性
Rollup 技術(shù)是作為獨立項目創(chuàng)建的,而不是由以太坊協(xié)議本身創(chuàng)建的。因此,將會有幾種不同的匯總技術(shù)并行存在,這就是流動性斷裂的地方。
隨著流動性從主鏈轉(zhuǎn)移到匯總,它會 “ 破壞 ” 不同匯總網(wǎng)絡(luò)的流動性。盡管一旦有跨匯總通信的機制就可以解決這個問題,一些聰明的工程師已經(jīng)在研究這些機制!
降低可組合性
在以太坊上構(gòu)建的主要好處之一是可組合性。在以太坊上構(gòu)建的每個新協(xié)議都像樂高積木一樣,其他協(xié)議可以輕松地在其上構(gòu)建。例如,這就是讓 DeFi 如此強大的原因。它讓我們創(chuàng)造了金錢樂高積木。
當應用程序和流動性轉(zhuǎn)移到匯總時,我們會失去一些可組合性。畢竟,在匯總層和主鏈之間傳遞消息和事務(wù)并不像在基礎(chǔ)層的上下文中那樣容易。
但解決這個問題可能只是時間問題。我當然可以看到一個存在于不同匯總上的智能合約仍然可以相互通信的世界。與往常一樣,我們離解決這些問題只有幾個聰明的工程師。
集權(quán)
我們忽略了討論誰實際負責將新批次發(fā)布到主鏈的部分,所以讓我們回到這個話題。
大多數(shù)匯總依賴于 “ 定序器 ” 來完成這項工作:定序器是一個節(jié)點,它對交易進行批處理并將結(jié)果發(fā)布到鏈上的匯總合約。對于 Arbitrum、Optimism 和 StarkNet,sequencer 是它們自己運行的單個節(jié)點。
我知道。“ 去中心化 ” 是區(qū)塊鏈的核心,雖然效率很高,但顯然是非常中心化的,如果定序器出現(xiàn)故障或?qū)彶榻灰自趺崔k?
好吧,事情沒那么簡單。這些項目目前采用這條路線的原因是因為使用這種方法進行迭代更容易、更快捷。為了降低集中化的風險,隨著時間的推移,大多數(shù)匯總都希望對排序器進行某種去中心化――其中許多確實有這樣做的計劃。
測序儀的去中心化將如何運作?有幾種方法。一方面,我們可以創(chuàng)建一個類似 Proof-of-Stake 的系統(tǒng),在該系統(tǒng)中,測序人員必須質(zhì)押代幣才能有機會提出下一批?;蛘呶覀兛梢赃M行 Delegated-Proof-of-Stake,其中一個排序器被選舉出來,如果它做得不好,可以不被選舉。
總而言之,測序儀將如何去中心化還有待觀察!
并排比較
呸。希望您對匯總有更好的理解――以及為什么以太坊將其押注(和分片?。┳鳛榭蓴U展性解決方案。當然,Rollups 坐在它之前的巨人的肩膀上――如果沒有側(cè)鏈、狀態(tài)通道和 Plasma,我們就不會擁有它。
使用去中心化、安全性和可擴展性的“三難”框架將匯總與其他第 2 層解決方案進行比較也是有益的。除了我將添加一個額外的維度:通用性。多年來,我們已經(jīng)意識到第 2 層解決方案的通用性非常重要,這樣它就可以用來做任何可以在主鏈上做的事情。
這清楚地表明,Rollups 在不犧牲去中心化、安全性和通用性的情況下為我們提供了適度的可擴展性。
然而,權(quán)衡是可擴展性。因為我們?nèi)匀辉阪溕洗鎯?shù)據(jù),所以與在鏈下存儲數(shù)據(jù)的第 2 層擴展解決方案相比,我們的可擴展性受到限制。此外,在短期內(nèi),匯總依賴于集中式排序器,這降低了安全性。但這是一個短期問題,隨著時間的推移,rollup 很可能會分散排序器,使其成為優(yōu)于 Plasma、側(cè)鏈和狀態(tài)通道的技術(shù)。
那么匯總是圣杯嗎?我會讓你決定。
PS..
為了簡潔起見,我省略了很多關(guān)于匯總?cè)绾喂ぷ鞯挠腥ぜ毠?jié)。但我也遺漏了一個新的第 2 層擴展方案,稱為 “ Validium ”。
Validium 與 Plasma 的相似之處在于我們將數(shù)據(jù)和計算移至鏈下。關(guān)鍵區(qū)別在于 Validium 不依賴欺詐證明來驗證交易。相反,運營商需要使用零知識證明來做出新的狀態(tài)承諾,這使得操作員無法推進無效的狀態(tài)轉(zhuǎn)換。
它還消除了對 “ 大規(guī)模退出 ” 計劃或協(xié)議中長期退出延遲的需要。但是我們?nèi)匀猾@得了 Plasma 鏈的無限可擴展性,因為我們沒有將交易數(shù)據(jù)存儲在鏈上??傊?,值得一提,我鼓勵你閱讀它!
結(jié)論
這篇文章比我預期的要長得多,如果您仍在閱讀,那么您就是我喜歡的類型。
盡管篇幅較長,但這確實是您對匯總有基本了解所需了解的最低限度。畢竟,匯總只是以太坊可擴展性解決方案的一半。另一半是分片,如果您對構(gòu)建 Web 3.0 應用程序感興趣,請注冊我們的下一個DappCamp隊列,在那里您將學習如何在以太坊上構(gòu)建和部署安全的智能合約。
免責聲明:作為區(qū)塊鏈信息平臺,本站所提供的資訊信息不代表任何投資暗示,本站所發(fā)布文章僅代表個人觀點,與火星財經(jīng)官方立場無關(guān)。虛擬貨幣不具有法定貨幣等同的法律地位,參與虛擬貨幣投資交易存在法律風險?;鹦秦斀?jīng)反對各類代幣炒作,請投資者理性看待市場風險。
語音技術(shù)由科大訊飛(002230)提供
標簽: 可擴展性 解決方案 生態(tài)系統(tǒng)
熱門
關(guān)于我們| 廣告報價| 本站動態(tài)| 聯(lián)系我們| 版權(quán)所有| 信息舉報|
聯(lián)系郵箱:905 144 107@qq.com
同花順經(jīng)濟網(wǎng) 豫ICP備20014643號-14
Copyright©2011-2020 m.09115.cn All Rights Reserved