硬核丨一文讀懂以太坊擴容方案 ─ Rollup 工作原理

買賣虛擬貨幣

作者|Ed felten

Arbitrum Rollup是一個鏈外協議,由鏈上Ethereum合約管理。一個dapp開發者有一組用Solidity編寫的合約,開發者將這些合約編譯成Arbitrum虛擬機器(VM),在Arbitrum Rollup上執行。你希望它們能快速執行。

Rollup的基礎知識

讓我們從基礎知識開始。你的虛擬機器的狀態被組織成一個Merkle樹,所以可以計算出虛擬機器狀態的加密雜湊。在協議中的任何一點,虛擬機器的某個狀態都是完全確認的和最終的。它的雜湊值儲存在鏈上。

協議的參與者可以做出一個可爭論的斷言(DA),該斷言聲稱,從某個狀態雜湊開始,在一些技術前提條件下,虛擬機器可以執行指定數量的計算步驟,從而得到指定的新狀態雜湊,並且在計算過程中虛擬機器進行指定的支付和發出指定的日誌事件。DA可能是有效的(即真實的)或無效的。做出DA的一方將被要求對DA的有效性進行押金。(更多關於賭注和它們如何工作的內容將在下面介紹。)

如上圖所示,一個可爭議的斷言建立了一個邏輯決策點,協議最終要解決這個問題。如果DA有效,系統將進入右上角的新狀態,有一個新的狀態雜湊,並有DA中指定的副作用(支付和日誌)。或者在另一個分支上,DA無效,它被拒絕,狀態不變。

舊的Arbitrum協議

最初的Arbitrum協議每次處理一個可爭論的斷言。某個當事方會提出一個DA,然後會有一個質疑期,在此期間任何人都可以對DA提出質疑。如果沒有人提出質疑,則確認DA;否則將執行爭議協議,取消DA(為安全起見,以防提出者和質疑者合謀 "烹製 "爭議結果)。

這很簡單,但有兩個缺點。首先,由於一次只能有一個訴訟請求,虛擬機器的進展速度將受到限制。本質上,在每個挑戰期內都必須停止進展。第二,惡意方可以透過故意挑戰為該虛擬機器制作的所有DA來凍結該虛擬機器。這將使攻擊者付出一系列的賭注,但如果他們願意付出這個代價,他們可以至少在某些情況下長時間地保持進度。

新的和改進的

我在這篇文章中介紹的新的Arbitrum Rollup協議解決了上述兩個缺點。多個DA可以被 "管道化",這樣一個虛擬機器的進度就像驗證節點可以模擬虛擬機器的計算一樣快。其次,正如我們在下面會看到的那樣,一個惡意行為者不能減慢進度,他們只能暫時延遲鏈上對結果的認可,而這些結果對誠實的各方來說已經是 "不可信的最終結果"。

那是怎麼做到的呢?讓我們來挖掘一下新協議......

每個狀態最多可以有一個DA跟隨它。如果一個DA沒有跟隨狀態,那麼任何人都可以建立一個跟隨它的DA,建立一個新的分支點。結果將是一棵可能的未來樹。

這個樹狀圖表示了未來的多種可能性

stake

協議的另一個重要部分是staking。任何人都可以放一個stake在樹上的一個方格上。透過在一個方格上staking,你是在斷言這個方格最終會被協議所確認。換句話說,你是在斷言你已經在從當前狀態到你所staking的方格的路徑上的每一個DA採取了正確的分支。如果你錯了,你可以預期失去你的stake資產。

staking的行動不能被撤銷。你可以將你的stake向右移動--在每個分支點選擇向上或向下--但你不能向左移動,因為這相當於撤銷你之前做出的stake承諾。

做出可爭論斷言的一方需要在該DA的 "DA有效 "繼承人上staking。通常情況下,他們可以透過將現有的賭注移動到右邊,將其放在所需的繼承方格上來滿足這一要求。在極少數情況下,如果他們不能做到這一點,他們可以在所需的方格上放置一個額外的stake。但要注意的是,他們就會在兩條不一致的道路上staking,這樣他們最終至少要失去兩個stakes中的一個--自相矛盾可不是明智之舉)。)

關於賭注還有一個細節:如果你所賭的方塊被確認併成為公認的歷史,你可以選擇收回你的賭注。這意味著,如果你是正確的,你可以將你的賭注保留在原地,等待系統 "趕上 "你,然後你就可以收回你的賭注。

在這一點上,你可能會擔心,可能性的樹狀圖會變得非常大,而且‘枝繁葉茂’。這在實踐中是不可能發生的,因為這需要多方對相互不一致的結果進行押注。他們中只有一個人可以是正確的,而其他人都會失去他們的利益。更有可能的是,這棵 "樹 "實際上是一個有效的DA鏈,一個接一個,而且所有的賭注都在同一個結果上。

staking期限

我們需要系統在時間過長之前,對每個可爭議斷言做出決定。所以,當一個DA被新增到鏈上,建立一個分支點時,會有一個deadline與該DA相關聯。這個deadline在未來足夠遠,如果大家選擇這樣做的話,就有時間檢查這個DA是否有效,並在鏈上得到一個交易來押注這個DA的結果。如果有人想承諾支援或反對該DA的有效性的賭注,他們必須在截止日期之前這樣做。(在截止日期後,仍然可以引入利害關係,但他們不參與決定支援或反對該DA。) 一旦到了最後期限,所有與決定該訴訟請求有關的利害關係都將被告知。

爭議

如果Alice和Bob分別位於不同的位置,那麼有兩種情況之一是真的。要麼是有一條從其中一個到另一個的向右移動的路徑--這意味著他們的主張是一致的--要麼就沒有這樣的路徑。如果沒有一條向右移動的路徑連線Alice和Bob的方塊,那麼他們一定是在某些事情上有分歧。他們之間總會有一個獨特的爭議點--一個獨特的DA,對於這個DA,他們中的一個人以這個DA有效為賭注,而另一個人則以它無效為賭注。

每當雙方發生爭議時,系統可以啟動雙方之間的互動式爭議解決協議。我沒有篇幅在這裡描述爭議解決協議--我只想說,這是一個類似於我們在其他Arbitrum檔案中描述的二段式互動協議。

爭議解決協議的結果是,有一方將被認定為不正確。該方將喪失其利益。賭注將被從其所在的鏈上抹去。其中一部分將交給爭端中的另一方,其餘的將被銷燬。

多個糾紛可以同時進行,但每個賭注者一次最多隻能參與一個糾紛。因為輸家的賭注會被抹去,所以每次糾紛都會減少系統中的分歧量。輸掉賭注的當事人如果願意可以重新賭注,但新的賭注將無法影響賭注期限已經過去的DA。這樣做的效果是,在一個DA的賭注期限過後,爭端將逐步消除關於如何處理該DA的任何分歧。

確認結果

當一個DA的下注截止日期過後,所有剩餘的及時(下注截止日期前)下注都在該DA的同一分支上,系統可以確認該DA的結果。該DA被接受或拒絕,當前狀態移動到該DA右側的相應方格。

如果DA被確認為有效,例如如支付,就會在鏈上生效。虛擬機器的狀態就是這樣向前移動的。

在一般情況下,當事人會誠實地行事,因為他們不想因為押注在虛假的索賠上而失去自己的賭注。只有有效的DA才會被斷言,在一個單一的鏈條上,沒有人會在任何DA的無效分支上押注。在這種情況下,每一個DA都可以在其押注期限到期後立即得到確認。

為什麼它是去信任的

Arbitrum Rollup的一個重要屬性是它是去信任的--一個誠實的一方可以迫使虛擬機器表現正確並取得進步。要知道為什麼,想象一下,Alice總是在每個DA上押在真實的分支上,如果樹曾經空了,她就會斷言DA。

因為Alice是在真實的樹狀圖上staking,所以她會贏得她所陷入的每一場糾紛。如果其他人不同意Alice的觀點,他們要麼(a)在與第三方的無關糾紛中失去自己的股權,要麼(b)最終與Alice發生糾紛,並將股權輸給她。無論哪種情況,所有與Alice意見相左的人最終都會失去自己的股權。只有與Alice意見一致的stake才會存活,所以Alice在樹上的路徑最終將是唯一一條有及時stake的路徑--而Alice的路徑將被確認。

因為這種方式的系統是不可信的,如果Alice被押在一個方塊上,並且她知道通往那個方塊的路徑是真實的,那麼Alice就可以確定自己所在的方塊最終會被確認。對於Alice來說,那條路徑就如同最終的一樣。

即使你沒有被押在一條路上,如果你看到有好幾個人被押在這條路上,而且你相信這些人中至少有一個人是誠實的,那麼你可以肯定那條路最終會被確認--就你而言,那條路就是最終的路。

去信任最終性的好處

為什麼說結果的去信任性是有價值的?經典的例子來自於之前對其他rollup協議的討論。假設一個虛擬機器要向Alice進行支付。支付事件是在誠實的路徑上,但要在鏈上確認支付發生的方塊,還需要一段時間。

去信任性的結果就是給Alice提供了一個馬上拿到錢的方法。如果Bob有立即支付的錢,他可以馬上把錢給Alice,作為交換,Alice把未來尚未確認的付款轉讓給Bob(加上支付給Bob的最低費用)。Bob只有在他能確定付款會真正發生的情況下才會想這麼做。Bob可以透過押注誠實的結果來確定這一點--那麼他就會對付款最終會發生充滿信任的信心。不僅僅是Bob能做到這一點,任何有資金的人都可以借給他。任何有資金的人都可以用同樣的方式把資金借給Alice和其他像她一樣的人。這些人可以透過提供更低的費用來相互競爭,促使Alice馬上獲得資金的成本降低。

關鍵的一點是,這種市場機制的可行性取決於去信任的結果。如果 "每個人 "都已經知道這件事最終會被確認,那麼一件事在鏈上確認的延遲就不會有那麼多不便。

不僅對於支付是如此,對於虛擬機器做的其他事情也是如此。如果虛擬機器要發出一個日誌項,宣佈某件事情已經發生,那麼去信任的結果意味著任何人都可以肯定地行動,該日誌項將在鏈上得到確認。

延遲攻擊

因為這個系統是有去信任性的,所以壞人不能強行製造錯誤的結果。他們可以嘗試做的是減緩進展。這樣做需要他們犧牲利害關係,如果利害關係的金額很大,那麼代價就會很高。

讓我們想象一下,有人有動機發動延遲攻擊,而且他們願意犧牲利害關係。他們能造成的最壞的損失是什麼?

首先要注意的是,壞人無法阻止誠實的當事人繼續建立出誠實的路徑。而且他們也無法阻止誠實方在最終確認誠實分支的過程中獲得去信任的信心。

攻擊者能做的就是在假分支上staking,以延遲誠實路徑的鏈上確認。他們每放一個stake,就會對誠實方多產生一次糾紛,在這種情況下,誠實方就會拿走攻擊者的一大塊stake。一旦攻擊者的所有stake都被拿下,鏈上進度將繼續進行。

如果攻擊者將多個賭注放在虛假的結果上呢?那麼這些賭注就必須在糾紛中逐一拿下。如果有多人押注在誠實的結果上,這些人都可以對攻擊者進入糾紛,同時努力拿下攻擊者的賭注。而且注意,大家都會很清楚發生了什麼事,很多人都會想參與進來,押注在真實的結果上,這樣他們就可以加入到利用糾紛搶奪攻擊者股權的餵養狂潮中。如果有K人在誠實的一方下注,那麼攻擊者將花費K個賭注來購買一個爭端期的延遲。如果攻擊者下更多的賭注,那很可能會吸引更多的老實人賭注。這對攻擊者來說是個不好的動態。

最佳化

可以進行各種最佳化,以減少操作協議所需的鏈上記賬量,降低鏈上氣體成本,並使針對延遲攻擊者的有益餵養狂潮更容易上演。我不會在這裡鑽研這些最佳化,這篇文章已經夠長了。

前進的道路

我們正在Offchain實驗室構建這個協議。預計這個Arbitrum Rollup協議將很快被推送到我們的開原始碼庫中。

Ed felten 作者

李翰博 翻譯

李翰博 編輯

內容僅供參考 不作為投資建議 風險自擔

版權所有 未經允許 嚴禁轉載

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;