加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads
首頁 > 幣贏 > Info

詳析Optimism Bedrock和Arbitrum Nitro的設計差異_Nitro:rocki幣行情

Author:

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

原文作者:OPLabs研發人員Norswap

原文編譯:DeFi之道

這是一篇有關?OptimismBedrock?以及?ArbitrumNitro之間設計差異的分析文章。

這一切都源于我對?Nitro白皮書的閱讀,以及我對Bedrock設計的感性認識。

這變得非常技術性,如果你想關注并感到困惑,我建議你參考一下Bedrock概述以及我關于?Cannon故障證明系統的演示文稿,當然還有Nitro白皮書。

準備好了之后,讓我們開始吧!

首先,Nitro白皮書很棒,讀起來令人愉快,我建議所有感興趣的人都去看看。

說到這里,我的印象是Bedrock和Nitro大致使用了相同的架構,但有一些較小的差異。

白皮書大體上證實了這一點。盡管如此,還是有很多的不同之處,包括一些我沒想到的。這就是這篇文章要講的東西。

固定與可變區塊時間

最有趣和最重要的事情之一是,Nitro將像當前版本的Optimism一樣工作,每筆交易一個區塊,并且區塊之間的時間可變。

我們放棄了這一點,因為它背離了以太坊的工作方式,也是開發人員的痛點。而Bedrock將有“真正”的區塊,并且固定時間為2秒。

不規則的區塊時間使很多常見的合約變得不穩定,因為它們是使用區塊而不是時間戳來表示時間。這尤其包括源自Sushiswap的分配LP獎勵的Masterchef合約。

我不確定為什么這些合約用區塊而不是時間戳來表示時間!以太坊礦工在操縱時間戳方面有一些回旋余地,但默認情況下,客戶端不會構建距離wallclock太遠的區塊,所以沒有問題。

無論如何,在Optimism上,這導致StargateFinance獎勵比其他鏈提前幾個月用完,因為他們沒有考慮到這種特殊性!

消息人士:Prime Trust準備進行大裁員,比例或達75%:金色財經報道,據Coindesk援引前雇員消息稱,陷入困境的加密貨幣托管機構Prime Trust最近被勒令停止運營,似乎準備進行大規模裁員,多達 75% 的工作崗位可能會被取消。消息人士稱 ,今年早些時候,該公司將員工人數削減了三分之一。

Prime Trust正在應對嚴峻的財務和監管挑戰,內華達州一家法院最近將該公司置于破產管理狀態,該州下令 Prime Trust 停止所有活動,原因是客戶資金短缺,并被指控利用客戶資金來滿足提款請求,這發生在BitGo終止收購該公司的交易后不久。[2023/8/12 16:21:34]

“每筆交易一個區塊”模型還有其他的問題。首先,存儲鏈的開銷很大。其次,這意味著狀態根需要在每次交易后更新。

更新狀態根是一項非常昂貴的操作,其成本要在多筆tx中進行分攤。

(B)Geth作為庫或作為執行引擎

Nitro使用Geth“作為一個庫”,通過鉤子對其進行了最低限度的修改,以調用適當的功能。

在Bedrock中,一個經過最少修改的Geth作為“執行引擎”獨立運行,它從rollup節點接收指令,就像執行層從Eth2中的共識層接收指令一樣。我們甚至使用完全相同的API!

這有一些重要的影響。首先,我們能夠使用除Geth之外的其他客戶端,在它們之上應用類似的最小差異。這不僅僅是理論,我們已經準備好了?Erigon。

其次,這讓我們可以重用整個Geth堆棧,包括在網絡層,這可以實現對等發現和狀態同步等功能,而無需進行任何額外的開發工作。

(B)狀態存儲

Nitro將一些狀態保存在一個特殊帳戶中,使用特殊的內存布局將密鑰映射到存儲槽。

從這個意義上說,Bedrock并沒有太多的狀態,它只有很少的狀態存儲在普通EVM合約中。

NFT借貸市場Blend上平均貸款價值比為60%-80%:6月24日消息,Messari發推稱,Blur旗下NFT借貸市場Blend接受的貸款報價顯示,平均貸款價值比(LTV)為60%-80%。根據空投獎勵標準,NFT貸款利息將在0%到30%之間,確保貸方和借方都有合理的借貸頭寸。[2023/6/24 21:57:39]

在確定/執行下一個L2塊時,一個Bedrock副本會查看:

L2鏈頭部的區塊頭;

從L1讀取的數據;

L2鏈上EVM合約中的一些數據,目前只有L1費用參數;

在Bedrock中,節點可能會崩潰并立即優雅地重啟。它們不需要維護額外的數據庫,因為所有必要的信息都可以在L1和L2區塊中找到。我認為Nitro的工作原理是一樣的。

但很明顯,Nitro比Bedrock做了更多的記賬工作。

(C)L1到L2的消息包含延遲

Nitro會延遲10分鐘處理L1到L2的消息。在Bedrock上,通常應具有幾個區塊的小確認深度。

我們也有一個稱為“排序器漂移”的參數,它允許L2區塊的時間戳在其L1原點之前漂移。

我們仍然需要確定最終的數值,但我們也傾向于10分鐘,這意味著最壞的情況是10分鐘。然而,此參數旨在確保在與L1的連接暫時丟失期間L2鏈的活性。

然而,通常在確認深度后會立即包含存款。

Nitro的白皮書中提到,這10分鐘的延遲是為了避免L1上的存款因重組而消失。這讓我對白皮書沒有談到的一個方面感到好奇,那就是:L2鏈如何處理L1的重組。我認為答案是它沒有處理。

這并非不合理:合并后,L1的最終性延遲大約是12分鐘。因此,如果存款延遲10/12分鐘是可接受的,那么這個設計就是可行的。

美國受托人對FTX聘請紐約律師事務所Sullivan and Cromwell提出異議:金色財經報道,一名美國受托人對FTX聘請紐約律師事務所Sullivan and Cromwell提出異議。

美國受托人安德魯·瓦拉(Andrew Vara)于1月13日提交的文件稱,由于Sullivan and Cromwell此前與破產的加密交易所有聯系,可能存在利益沖突。它寫道:“S&C提交的披露完全不足以評估S&C是否符合破產法的無沖突和無利益標準。”[2023/1/15 11:12:26]

因為Bedrock更接近L1,我們需要在需要時通過重組L2來處理L1重組。確認深度應避免這種情況過于頻繁地發生。

另一個小的區別是,如果Nitro排序器在10分鐘后不包含存款,你可以通過L1合約調用“強制包含”它。

在Bedrock上,這不是必需的:擁有一個L2區塊而不包括其L1起源的存款是無效的。

并且由于L2只能比原點提前10分鐘,因此10分鐘后不納入存款的一條鏈是無效的,它將被驗證器拒絕,并受到故障證明機制的挑戰。

(D)L1-to-L2消息重試機制

Nitro為L1到L2的消息實施了“可重試票證”機制。假設你正在跨鏈,tx的L1部分可以工作,但L2部分可能會失敗。因此,你需要能夠重試L2部分,否則你已經丟失了代幣。

Nitro在節點的ArbOS部分實現了這一點。在Bedrock中,這一切都是在Solidity本身中完成的。

如果你使用我們的L1跨域messenger合約向L2發送tx,該tx會到達我們的L2跨域messenger,后者將記錄其哈希值,使其可重試。Nitro的工作方式相同,只是在節點中實現。

我們還通過我們的L1OptimismPortal合約,公開了一種較低level的存款方式。

以太坊客戶端Erigon將結束對Rust版本Akula的支持:金色財經報道,以太坊客戶端Erigon官方Blog表示,將結束對Erigon的Rust版本Akula的支持。團隊近期發現,一個基于Rust語言的Ethereum實現將開放源代碼,其范圍幾乎與Akula相同,并有一些相同/相似的構建模塊。Erigon團隊認為,該項目在開源后將更加受人支持與歡迎,其功能也將很快匹配和超越Akula。與該項目背后擁有的資源和影響力相比,Erigon無法保證Akula能夠吸引未來的資助,因此決定取消對Akula的技術、管理和資金支持。[2022/11/24 8:03:28]

這并沒有為你提供L2跨域messenger重試機制的安全網,但另一方面,這意味著你可以在Solidity中實現自己的應用程序特定重試機制。這很酷!

(E)L2費用算法

在Bedrock以及Nitro這兩個系統上,費用都有L2部分以及L1部分。對于L2費用,Nitro使用了一個定制系統,而Bedrock重復使用了EIP-1559。Nitro必須這樣做,因為他們有上述提到的1tx/區塊系統。

我們仍然需要調整EIP-1559參數,以使其在2秒的出塊時間內正常工作。今天,Optimism只收取低且固定的L2費用,我認為我們可能也會出現價格飆升,但在實踐中從未發生過。

重用EIP-1559的一個優點是,它應該使錢包和其他工具計算費用稍微容易一些。

而Nitro的gas計量公式非常優雅,他們似乎已經對此進行了大量思考。

(F)L1費用算法

那L1費用如何呢?這里的區別會更大一些。Bedrock使用向后查看的L1基礎費用數據。這些數據非常新鮮,因為它通過與存款相同的機制傳遞。

由于仍然存在L1費用飆升的風險,所以我們收取預期費用的一個小倍數。

萬事達:41%的人在過去一年中至少完成了一項與加密相關的活動:金色財經報道,萬事達卡的 2022 年新支付指數是一項對 35,000 多名受訪者進行的全球調查,發現人們對加密貨幣有廣泛的認識。去年,?使用加密貨幣支付的款項幾乎翻了一番,此外,去年約 40% 的全球消費者與加密貨幣互動,其中約 30% 的人打開加密錢包、交易貨幣(27%)或將其作為投資持有(29%)。大約一半的全球消費者同意他們對加密貨幣的其他用途感興趣,例如支付日常用品(51%)或購買數字資產(49%)。年輕用戶比老一代用戶更快地適應數字貨幣。???

但是,盡管超過 90% 的消費者了解數字貨幣,但大多數人承認對它們的工作原理以及驅動它們的區塊鏈技術了解甚少。?[2022/8/12 12:22:04]

有趣的事實:這個倍數是所有當前排序器收入的來源!使用EIP-4844后,這將縮小,收入將來自MEV提取。

Nitro做的事情要復雜得多。我并沒有聲稱了解它的所有復雜性,但基本要點是他們有一個控制系統,可以從L1實際支付的費用中獲得反饋。

這意味著使用此數據將交易從L1發送回L2。如果排序器支付不足,它可以開始向用戶收取更少的費用。如果它多付了錢,它可以開始向用戶收取更多費用。

順便說一句,你可能想知道為什么我們需要將費用數據從L1傳輸到L2。這是因為我們希望費用計劃成為協議的一部分,并接受故障證明的挑戰。否則,流氓排序器可通過設置任意高的費用來拒絕鏈!

最后,交易批次在兩個系統中都被壓縮。Nitro根據對交易壓縮程度的估計收取L1費用。Bedrock目前沒這樣做,但我們有這樣做的計劃。

原因在于,不這樣做,會加劇在L2存儲中緩存數據的不正當動機,從而導致有問題的狀態增長。

(G)故障證明指令集

故障/欺詐證明!Nitro的工作方式與Cannon的工作方式有相當多的差異。

Bedrock編譯為MIPS指令集架構(ISA),Nitro編譯為WASM。由于編譯為他們稱為WAVM的WASM子集,他們似乎對輸出進行了更多的轉換。

例如,他們通過庫調用替換浮點(FP)操作。我懷疑他們不想在鏈上解釋器中實現粗糙的FP操作。我們也這樣做,但Go編譯器會替我們處理!

另一個例子:與大多數只有跳轉的ISA不同,WASM具有適當的控制流。從WASM到WAVM的轉換消除了這一點以返回跳轉,這可能也是為了解釋器的簡單性。

他們還將Go、C和Rust混合編譯為WAVM,而我們只編譯Go。顯然WAVM允許“語言的內存管理不受干擾”,我將其解釋為每個WAVM模塊都有自己的堆。

我很好奇是:他們是如何處理并發和垃圾收集的。我們能夠在minigeth中相當容易地避免并發,所以這部分可能很簡單。

然而,我們對MIPS所做的唯一轉換之一是修補垃圾收集調用。這是因為垃圾收集在Go中使用了并發,而并發和故障證明不能很好地結合在一起。Nitro也是做了同樣的事嗎?

(H)二分博弈結構

Bedrock故障證明將用于驗證發布到L1的狀態根的有效性的minigeth運行。此類狀態根不經常發布,并且包括許多區塊/批次的驗證。

Cannon中的二分游戲是在這個運行的執行軌跡上進行的。

另一方面,在Nitro中,狀態根與發布到L1的每組批次(RBlock)一起發布。

Nitro中的二分游戲分為兩部分。首先找到挑戰者和防御者不同意的第一個狀態根。然后,在驗證器運行中找到他們不同意的第一個WAVM指令。

權衡之處是在Nitro執行期間進行更多的哈希運算部分),但在故障證明期間進行更少的哈希運算:在執行跟蹤的二分游戲中的每個步驟,都需要提交內存Merkle根。

像這樣的故障證明結構也減少了對驗證器內存膨脹的擔憂,其可能會超過當前運行MIPS的4G內存限制。

這不是一個很難解決的問題,但我們需要在Bedrock中小心,而驗證單筆交易可能永遠不會接近這個限制。

原像預言機

用于故障證明的驗證器軟件需要從L1和L2讀取數據。因為它最終將在L1上“運行”,所以需要通過L1訪問L2本身-通過發布到L1的狀態根和區塊哈希。

你如何從狀態或鏈中讀取?

Merkle根節點是其子節點的哈希,因此如果你可以請求原像,則可以遍歷整個狀態樹。同樣,你可以通過請求區塊頭的原像來向后遍歷整個鏈。

在鏈上執行時,這些原像可以預先提供給WAVM/MIPS解釋器。

這就是你在Nitro和Bedrock上閱讀L2的方式。

但是,你需要為L1做類似的事情。因為交易批次存儲在L1調用數據中,無法從L1智能合約訪問。

Nitro將其批次的哈希存儲在L1合約中。所以他們至少需要這樣做,我不知道為什么沒有提到。

在Bedrock中,我們甚至不存儲批次哈希。相反,我們使用L1區塊頭返回L1鏈,然后沿著交易Merkle根向下查找calldata中的批次。

第4.1節的結尾,提醒我們?Arbitrum發明了“哈希預言機技巧”。不安全不應該成為忘記Arbitrum團隊貢獻的理由!

(J)大原像

Nitro白皮書還告訴我們,L2原像(Preimage)的固定上限是110kb,但沒有引用L1的數字。

在Cannon中,我們有一個稱為“大原像問題”的問題,因為要反轉的潛在原像之一是收據原像,其中包含Solidity事件發出的所有數據。

在收據中,所有日志數據連接在一起。這意味著攻擊者可以發出大量日志,并創建一個非常大的原像。

我們需要讀取日志,因為我們使用它們來存儲存款。這并不是絕對必要的:Nitro通過存儲消息的哈希來避免這個問題。

我們不存儲哈希,因為計算和存儲它的成本很高,存儲要消耗大約20kgas,每計算32個字節要消耗6gas。平均一筆交易大約是500字節,因此一批200筆交易的哈希成本大約為20kgas。以2000美元的ETH和40gweibasefee計算,額外的哈希和存儲成本為3.2$。以5000美元的ETH和100gwei計算,成本即20美元。

我們目前解決大原像問題的計劃,是使用簡單的zk-proof來證明原像中某些字節的值。

(K)批次和狀態根

Nitro將批次和狀態根緊密相連。他們在包含狀態根的RBlock中發布一組批次。

另一方面,Bedrock將其批次與狀態根分開發布。關鍵優勢是再次降低了發布批次的成本。這讓我們可以更頻繁地發布批次,并減少狀態根的頻率。

另一個影響是,使用Nitro,如果RBlock受到挑戰,它包含的交易將不會在新鏈上重放。

在Bedrock中,我們目前正在討論在成功挑戰狀態根的情況下該怎么做:在新的狀態根上重放舊tx,還是完全回滾?

(L)其他雜項

影響較小的差異:

(i)Nitro允許排序器發布的單筆交易可以是“垃圾”。為了盡量減少對Geth的更改,我們總是丟棄包含任何垃圾交易的批次。

排序器總是能夠提前找到那些,所以揮之不去的垃圾交易要么是不當行為要么是bug。排序器運行與故障證明相同的代碼,因此它們對無效內容的定義應該相同。

(ii)Nitro引入了預編譯合約,尤其是用于L2到L1的消息傳遞。我們目前不使用任何預編譯,而是更喜歡它們“預部署”,即存在于創世區塊特殊地址的實際EVM合約。

事實證明,我們可以在EVM中做我們需要的事情,這使得節點邏輯稍微簡單一些。不過,我們并不堅決反對預編譯,也許我們會在某個時候需要用到預編譯。

(iii)Nitro故障證明使用了d向剖析。概念驗證Cannon實現使用了二分法,但我們也可能會轉向d向剖析。

Nitro白皮書中有一個非常好的公式,它解釋了基于固定成本和可變成本的d的最優值。然而,我希望他們在實踐中包括了如何估算這些成本的具體例子!

原文鏈接

Tags:NitroTROROCKROCNitro NetworkGastroAdvisorrocki幣行情MicroCats

幣贏
史上最大鏈上攻擊盜走200萬枚BNB,兌換成7.18億美金_ETH:CHA

熊市妖風大,池淺王八多,這種事,其實也是熊市必有的,不奇怪,但是值得我們學習借鑒,大致了解了一下,給大家講一下整個過程.

1900/1/1 0:00:00
比特幣雜志專業版BTC哈希率正在爆炸式增長對礦業股票有何影響_比特幣:比特幣交易市場

新的哈希率歷史新高 就在兩個月前,2022年比特幣哈希率的擴張看起來很黯淡。比特幣價格暴跌,礦工利潤被壓縮,大型公共礦工正在減持比特幣,現在是重新審視市場上礦工投降狀態的成熟時機.

1900/1/1 0:00:00
黑客事件頻發,請收下這篇Crypto防盜指南_DAO:SHIBDAO幣

本文來自Medium,原文作者:KofiKufuor,由Odaily星球日報譯者Katie辜編譯。黑客今年從加密應用程序中竊取了20多億美元.

1900/1/1 0:00:00
大幣網(Dcoin)永續合約臨時維護處理及處理通知(2022/10/10)_NAN:NCE

親愛的大幣網(Dcoin)用戶:為了提升服務質量,進一步優化交易體驗,大幣網已于2022年10月10日03:30進行臨時停機維護,預計完成時間08:30,當前合約所有功能將不能進行.

1900/1/1 0:00:00
Weekly Live Streaming Preview: Oct 10 -Oct 15

Gate.ioLiveStreamiscommittedtocreatingabrand-newlivestreamingecosystemfortheblockchainindustry.

1900/1/1 0:00:00
Notice on Maintenance and Upgrade of OTC Trading System_Huobi:MOBI價格

DearHuobiGlobalUsers,HuobiwillbecarryingoutamaintenanceandupgradeoftheOTCtradingsystemstarting16:.

1900/1/1 0:00:00
ads