扩容原理_硬核丨一文读懂以太坊扩容方案 ─ Rollup 工作原理
作者 | Ed felten
Arbitrum Rollup是一個(gè)鏈外協(xié)議,由鏈上Ethereum合約管理。一個(gè)dapp開發(fā)者有一組用Solidity編寫的合約,開發(fā)者將這些合約編譯成Arbitrum虛擬機(jī)(VM),在Arbitrum Rollup上運(yùn)行。你希望它們能快速運(yùn)行。
Rollup的基礎(chǔ)知識(shí)讓我們從基礎(chǔ)知識(shí)開始。你的虛擬機(jī)的狀態(tài)被組織成一個(gè)Merkle樹,所以可以計(jì)算出虛擬機(jī)狀態(tài)的加密哈希。在協(xié)議中的任何一點(diǎn),虛擬機(jī)的某個(gè)狀態(tài)都是完全確認(rèn)的和最終的。它的哈希值存儲(chǔ)在鏈上。
協(xié)議的參與者可以做出一個(gè)可爭(zhēng)論的斷言(DA),該斷言聲稱,從某個(gè)狀態(tài)哈希開始,在一些技術(shù)前提條件下,虛擬機(jī)可以執(zhí)行指定數(shù)量的計(jì)算步驟,從而得到指定的新狀態(tài)哈希,并且在計(jì)算過(guò)程中虛擬機(jī)進(jìn)行指定的支付和發(fā)出指定的日志事件。DA可能是有效的(即真實(shí)的)或無(wú)效的。做出DA的一方將被要求對(duì)DA的有效性進(jìn)行押金。(更多關(guān)于賭注和它們?nèi)绾喂ぷ鞯膬?nèi)容將在下面介紹。)
如上圖所示,一個(gè)可爭(zhēng)議的斷言創(chuàng)建了一個(gè)邏輯決策點(diǎn),協(xié)議最終要解決這個(gè)問(wèn)題。如果DA有效,系統(tǒng)將進(jìn)入右上角的新狀態(tài),有一個(gè)新的狀態(tài)哈希,并有DA中指定的副作用(支付和日志)。或者在另一個(gè)分支上,DA無(wú)效,它被拒絕,狀態(tài)不變。舊的Arbitrum協(xié)議最初的Arbitrum協(xié)議每次處理一個(gè)可爭(zhēng)論的斷言。某個(gè)當(dāng)事方會(huì)提出一個(gè)DA,然后會(huì)有一個(gè)質(zhì)疑期,在此期間任何人都可以對(duì)DA提出質(zhì)疑。如果沒(méi)有人提出質(zhì)疑,則確認(rèn)DA;否則將運(yùn)行爭(zhēng)議協(xié)議,取消DA(為安全起見,以防提出者和質(zhì)疑者合謀 "烹制 "爭(zhēng)議結(jié)果)。
這很簡(jiǎn)單,但有兩個(gè)缺點(diǎn)。首先,由于一次只能有一個(gè)訴訟請(qǐng)求,虛擬機(jī)的進(jìn)展速度將受到限制。本質(zhì)上,在每個(gè)挑戰(zhàn)期內(nèi)都必須停止進(jìn)展。第二,惡意方可以通過(guò)故意挑戰(zhàn)為該虛擬機(jī)制作的所有DA來(lái)凍結(jié)該虛擬機(jī)。這將使攻擊者付出一系列的賭注,但如果他們?cè)敢飧冻鲞@個(gè)代價(jià),他們可以至少在某些情況下長(zhǎng)時(shí)間地保持進(jìn)度。
新的和改進(jìn)的我在這篇文章中介紹的新的Arbitrum Rollup協(xié)議解決了上述兩個(gè)缺點(diǎn)。多個(gè)DA可以被 "管道化",這樣一個(gè)虛擬機(jī)的進(jìn)度就像驗(yàn)證節(jié)點(diǎn)可以模擬虛擬機(jī)的計(jì)算一樣快。其次,正如我們?cè)谙旅鏁?huì)看到的那樣,一個(gè)惡意行為者不能減慢進(jìn)度,他們只能暫時(shí)延遲鏈上對(duì)結(jié)果的認(rèn)可,而這些結(jié)果對(duì)誠(chéng)實(shí)的各方來(lái)說(shuō)已經(jīng)是 "不可信的最終結(jié)果"。
那是怎么做到的呢?讓我們來(lái)挖掘一下新協(xié)議......
每個(gè)狀態(tài)最多可以有一個(gè)DA跟隨它。如果一個(gè)DA沒(méi)有跟隨狀態(tài),那么任何人都可以創(chuàng)建一個(gè)跟隨它的DA,創(chuàng)建一個(gè)新的分支點(diǎn)。結(jié)果將是一棵可能的未來(lái)樹。
這個(gè)樹狀圖表示了未來(lái)的多種可能性stake協(xié)議的另一個(gè)重要部分是staking。任何人都可以放一個(gè)stake在樹上的一個(gè)方格上。通過(guò)在一個(gè)方格上staking,你是在斷言這個(gè)方格最終會(huì)被協(xié)議所確認(rèn)。換句話說(shuō),你是在斷言你已經(jīng)在從當(dāng)前狀態(tài)到你所staking的方格的路徑上的每一個(gè)DA采取了正確的分支。如果你錯(cuò)了,你可以預(yù)期失去你的stake資產(chǎn)。staking的行動(dòng)不能被撤銷。你可以將你的stake向右移動(dòng)--在每個(gè)分支點(diǎn)選擇向上或向下--但你不能向左移動(dòng),因?yàn)檫@相當(dāng)于撤銷你之前做出的stake承諾。
做出可爭(zhēng)論斷言的一方需要在該DA的 "DA有效 "繼承人上staking。通常情況下,他們可以通過(guò)將現(xiàn)有的賭注移動(dòng)到右邊,將其放在所需的繼承方格上來(lái)滿足這一要求。在極少數(shù)情況下,如果他們不能做到這一點(diǎn),他們可以在所需的方格上放置一個(gè)額外的stake。但要注意的是,他們就會(huì)在兩條不一致的道路上staking,這樣他們最終至少要失去兩個(gè)stakes中的一個(gè)--自相矛盾可不是明智之舉)。)
關(guān)于賭注還有一個(gè)細(xì)節(jié):如果你所賭的方塊被確認(rèn)并成為公認(rèn)的歷史,你可以選擇收回你的賭注。這意味著,如果你是正確的,你可以將你的賭注保留在原地,等待系統(tǒng) "趕上 "你,然后你就可以收回你的賭注。
在這一點(diǎn)上,你可能會(huì)擔(dān)心,可能性的樹狀圖會(huì)變得非常大,而且‘枝繁葉茂’。這在實(shí)踐中是不可能發(fā)生的,因?yàn)檫@需要多方對(duì)相互不一致的結(jié)果進(jìn)行押注。他們中只有一個(gè)人可以是正確的,而其他人都會(huì)失去他們的利益。更有可能的是,這棵 "樹 "實(shí)際上是一個(gè)有效的DA鏈,一個(gè)接一個(gè),而且所有的賭注都在同一個(gè)結(jié)果上。staking期限
我們需要系統(tǒng)在時(shí)間過(guò)長(zhǎng)之前,對(duì)每個(gè)可爭(zhēng)議斷言做出決定。所以,當(dāng)一個(gè)DA被添加到鏈上,創(chuàng)建一個(gè)分支點(diǎn)時(shí),會(huì)有一個(gè)deadline與該DA相關(guān)聯(lián)。這個(gè)deadline在未來(lái)足夠遠(yuǎn),如果大家選擇這樣做的話,就有時(shí)間檢查這個(gè)DA是否有效,并在鏈上得到一個(gè)交易來(lái)押注這個(gè)DA的結(jié)果。如果有人想承諾支持或反對(duì)該DA的有效性的賭注,他們必須在截止日期之前這樣做。(在截止日期后,仍然可以引入利害關(guān)系,但他們不參與決定支持或反對(duì)該DA。) 一旦到了最后期限,所有與決定該訴訟請(qǐng)求有關(guān)的利害關(guān)系都將被告知。
爭(zhēng)議如果Alice和Bob分別位于不同的位置,那么有兩種情況之一是真的。要么是有一條從其中一個(gè)到另一個(gè)的向右移動(dòng)的路徑--這意味著他們的主張是一致的--要么就沒(méi)有這樣的路徑。如果沒(méi)有一條向右移動(dòng)的路徑連接Alice和Bob的方塊,那么他們一定是在某些事情上有分歧。他們之間總會(huì)有一個(gè)獨(dú)特的爭(zhēng)議點(diǎn)--一個(gè)獨(dú)特的DA,對(duì)于這個(gè)DA,他們中的一個(gè)人以這個(gè)DA有效為賭注,而另一個(gè)人則以它無(wú)效為賭注。
每當(dāng)雙方發(fā)生爭(zhēng)議時(shí),系統(tǒng)可以啟動(dòng)雙方之間的交互式爭(zhēng)議解決協(xié)議。我沒(méi)有篇幅在這里描述爭(zhēng)議解決協(xié)議--我只想說(shuō),這是一個(gè)類似于我們?cè)谄渌鸄rbitrum文件中描述的二段式互動(dòng)協(xié)議。
爭(zhēng)議解決協(xié)議的結(jié)果是,有一方將被認(rèn)定為不正確。該方將喪失其利益。賭注將被從其所在的鏈上抹去。其中一部分將交給爭(zhēng)端中的另一方,其余的將被銷毀。
多個(gè)糾紛可以同時(shí)進(jìn)行,但每個(gè)賭注者一次最多只能參與一個(gè)糾紛。因?yàn)檩敿业馁€注會(huì)被抹去,所以每次糾紛都會(huì)減少系統(tǒng)中的分歧量。輸?shù)糍€注的當(dāng)事人如果愿意可以重新賭注,但新的賭注將無(wú)法影響賭注期限已經(jīng)過(guò)去的DA。這樣做的效果是,在一個(gè)DA的賭注期限過(guò)后,爭(zhēng)端將逐步消除關(guān)于如何處理該DA的任何分歧。
確認(rèn)結(jié)果當(dāng)一個(gè)DA的下注截止日期過(guò)后,所有剩余的及時(shí)(下注截止日期前)下注都在該DA的同一分支上,系統(tǒng)可以確認(rèn)該DA的結(jié)果。該DA被接受或拒絕,當(dāng)前狀態(tài)移動(dòng)到該DA右側(cè)的相應(yīng)方格。
如果DA被確認(rèn)為有效,例如如支付,就會(huì)在鏈上生效。虛擬機(jī)的狀態(tài)就是這樣向前移動(dòng)的。
在一般情況下,當(dāng)事人會(huì)誠(chéng)實(shí)地行事,因?yàn)樗麄儾幌胍驗(yàn)檠鹤⒃谔摷俚乃髻r上而失去自己的賭注。只有有效的DA才會(huì)被斷言,在一個(gè)單一的鏈條上,沒(méi)有人會(huì)在任何DA的無(wú)效分支上押注。在這種情況下,每一個(gè)DA都可以在其押注期限到期后立即得到確認(rèn)。
為什么它是去信任的Arbitrum Rollup的一個(gè)重要屬性是它是去信任的--一個(gè)誠(chéng)實(shí)的一方可以迫使虛擬機(jī)表現(xiàn)正確并取得進(jìn)步。要知道為什么,想象一下,Alice總是在每個(gè)DA上押在真實(shí)的分支上,如果樹曾經(jīng)空了,她就會(huì)斷言DA。
因?yàn)锳lice是在真實(shí)的樹狀圖上staking,所以她會(huì)贏得她所陷入的每一場(chǎng)糾紛。如果其他人不同意Alice的觀點(diǎn),他們要么(a)在與第三方的無(wú)關(guān)糾紛中失去自己的股權(quán),要么(b)最終與Alice發(fā)生糾紛,并將股權(quán)輸給她。無(wú)論哪種情況,所有與Alice意見相左的人最終都會(huì)失去自己的股權(quán)。只有與Alice意見一致的stake才會(huì)存活,所以Alice在樹上的路徑最終將是唯一一條有及時(shí)stake的路徑--而Alice的路徑將被確認(rèn)。
因?yàn)檫@種方式的系統(tǒng)是不可信的,如果Alice被押在一個(gè)方塊上,并且她知道通往那個(gè)方塊的路徑是真實(shí)的,那么Alice就可以確定自己所在的方塊最終會(huì)被確認(rèn)。對(duì)于Alice來(lái)說(shuō),那條路徑就如同最終的一樣。
即使你沒(méi)有被押在一條路上,如果你看到有好幾個(gè)人被押在這條路上,而且你相信這些人中至少有一個(gè)人是誠(chéng)實(shí)的,那么你可以肯定那條路最終會(huì)被確認(rèn)--就你而言,那條路就是最終的路。
去信任最終性的好處
為什么說(shuō)結(jié)果的去信任性是有價(jià)值的?經(jīng)典的例子來(lái)自于之前對(duì)其他rollup協(xié)議的討論。假設(shè)一個(gè)虛擬機(jī)要向Alice進(jìn)行支付。支付事件是在誠(chéng)實(shí)的路徑上,但要在鏈上確認(rèn)支付發(fā)生的方塊,還需要一段時(shí)間。
去信任性的結(jié)果就是給Alice提供了一個(gè)馬上拿到錢的方法。如果Bob有立即支付的錢,他可以馬上把錢給Alice,作為交換,Alice把未來(lái)尚未確認(rèn)的付款轉(zhuǎn)讓給Bob(加上支付給Bob的最低費(fèi)用)。Bob只有在他能確定付款會(huì)真正發(fā)生的情況下才會(huì)想這么做。Bob可以通過(guò)押注誠(chéng)實(shí)的結(jié)果來(lái)確定這一點(diǎn)--那么他就會(huì)對(duì)付款最終會(huì)發(fā)生充滿信任的信心。不僅僅是Bob能做到這一點(diǎn),任何有資金的人都可以借給他。任何有資金的人都可以用同樣的方式把資金借給Alice和其他像她一樣的人。這些人可以通過(guò)提供更低的費(fèi)用來(lái)相互競(jìng)爭(zhēng),促使Alice馬上獲得資金的成本降低。關(guān)鍵的一點(diǎn)是,這種市場(chǎng)機(jī)制的可行性取決于去信任的結(jié)果。如果 "每個(gè)人 "都已經(jīng)知道這件事最終會(huì)被確認(rèn),那么一件事在鏈上確認(rèn)的延遲就不會(huì)有那么多不便。
不僅對(duì)于支付是如此,對(duì)于虛擬機(jī)做的其他事情也是如此。如果虛擬機(jī)要發(fā)出一個(gè)日志項(xiàng),宣布某件事情已經(jīng)發(fā)生,那么去信任的結(jié)果意味著任何人都可以肯定地行動(dòng),該日志項(xiàng)將在鏈上得到確認(rèn)。
延遲攻擊因?yàn)檫@個(gè)系統(tǒng)是有去信任性的,所以壞人不能強(qiáng)行制造錯(cuò)誤的結(jié)果。他們可以嘗試做的是減緩進(jìn)展。這樣做需要他們犧牲利害關(guān)系,如果利害關(guān)系的金額很大,那么代價(jià)就會(huì)很高。
讓我們想象一下,有人有動(dòng)機(jī)發(fā)動(dòng)延遲攻擊,而且他們?cè)敢鉅奚﹃P(guān)系。他們能造成的最壞的損失是什么?
首先要注意的是,壞人無(wú)法阻止誠(chéng)實(shí)的當(dāng)事人繼續(xù)建立出誠(chéng)實(shí)的路徑。而且他們也無(wú)法阻止誠(chéng)實(shí)方在最終確認(rèn)誠(chéng)實(shí)分支的過(guò)程中獲得去信任的信心。
攻擊者能做的就是在假分支上staking,以延遲誠(chéng)實(shí)路徑的鏈上確認(rèn)。他們每放一個(gè)stake,就會(huì)對(duì)誠(chéng)實(shí)方多產(chǎn)生一次糾紛,在這種情況下,誠(chéng)實(shí)方就會(huì)拿走攻擊者的一大塊stake。一旦攻擊者的所有stake都被拿下,鏈上進(jìn)度將繼續(xù)進(jìn)行。
如果攻擊者將多個(gè)賭注放在虛假的結(jié)果上呢?那么這些賭注就必須在糾紛中逐一拿下。如果有多人押注在誠(chéng)實(shí)的結(jié)果上,這些人都可以對(duì)攻擊者進(jìn)入糾紛,同時(shí)努力拿下攻擊者的賭注。而且注意,大家都會(huì)很清楚發(fā)生了什么事,很多人都會(huì)想?yún)⑴c進(jìn)來(lái),押注在真實(shí)的結(jié)果上,這樣他們就可以加入到利用糾紛搶奪攻擊者股權(quán)的喂養(yǎng)狂潮中。如果有K人在誠(chéng)實(shí)的一方下注,那么攻擊者將花費(fèi)K個(gè)賭注來(lái)購(gòu)買一個(gè)爭(zhēng)端期的延遲。如果攻擊者下更多的賭注,那很可能會(huì)吸引更多的老實(shí)人賭注。這對(duì)攻擊者來(lái)說(shuō)是個(gè)不好的動(dòng)態(tài)。
優(yōu)化
可以進(jìn)行各種優(yōu)化,以減少操作協(xié)議所需的鏈上記賬量,降低鏈上氣體成本,并使針對(duì)延遲攻擊者的有益喂養(yǎng)狂潮更容易上演。我不會(huì)在這里鉆研這些優(yōu)化,這篇文章已經(jīng)夠長(zhǎng)了。
前進(jìn)的道路
我們正在Offchain實(shí)驗(yàn)室構(gòu)建這個(gè)協(xié)議。預(yù)計(jì)這個(gè)Arbitrum Rollup協(xié)議將很快被推送到我們的開源代碼庫(kù)中。
作者:加密谷Live;來(lái)自鏈得得內(nèi)容開放平臺(tái)“得得號(hào)”,本文僅代表作者觀點(diǎn),不代表鏈得得官方立場(chǎng)凡“得得號(hào)”文章,原創(chuàng)性和內(nèi)容的真實(shí)性由投稿人保證,如果稿件因抄襲、作假等行為導(dǎo)致的法律后果,由投稿人本人負(fù)責(zé)得得號(hào)平臺(tái)發(fā)布文章,如有侵權(quán)、違規(guī)及其他不當(dāng)言論內(nèi)容,請(qǐng)廣大讀者監(jiān)督,一經(jīng)證實(shí),平臺(tái)會(huì)立即下線。如遇文章內(nèi)容問(wèn)題,請(qǐng)發(fā)送至郵箱:linggeqi@chaindd.com
總結(jié)
以上是生活随笔為你收集整理的扩容原理_硬核丨一文读懂以太坊扩容方案 ─ Rollup 工作原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 程序如何在两个gpu卡上并行运行_深度学
- 下一篇: 特工皇妃之楚乔传分集剧情介绍 01