Rollup 最近在 Ethereum 社區風靡一時,有望在未來成為 Ethereum 的主要擴容解決方案。但這項技術到底是什么樣的呢?它可以給我們帶來什么變化?我們如何使用這項技術?這篇文章將試圖回答其中的一些關鍵問題。
目前主要有兩種區塊鏈擴容方式。
首先,你可以直接提高區塊鏈交易吞吐量,但這類技術主要挑戰為「當區塊容量越大時,區塊鏈將更難以驗證,而且很可能逐漸變得更中心化」。為了避免這樣的風險,開發者可以提高客戶端軟件的效率(譯者注:比如 Turbo Geth),或者使用 Sharding 技術讓構建和驗證工作分散到許多節點上,目前 Ethereum 準備借助 Eth2 升級引入 Sharding 技術。
其次,你也可以改變使用區塊鏈的方式。用戶不必將所有交易放在區塊鏈上,而是可以通過 Layer2 協議在鏈下執行大部分交易。即鏈上的智能合約只需執行兩個任務:處理存取款和驗證鏈下交易的有效性。由此減輕鏈上負擔,提高交易處理效率。
目前主要有三種 Layer2 擴容方案:State channels、Plasma 和 Rollups,這三種各有優劣。
譯者注:譯文中省略 State channels 和 Plasma 科普內容,主要講述 Rollups 部分。
術語說明
Batch:批處理交易,指將 Layer2 交易批量打包并提交到 Layer1 的 Rollup 合約。
Sequencer:排序者,指在 Layer2 上打包排序交易的角色,類似 Layer1 的礦工。
State root:狀態根,指 Layer2 上所有狀態(賬戶余額、合約代碼等)通過 Merkle Tree 生成的哈希值。
Rollups
參考:Optimistic rollups 和 ZK rollups。
Plasma 和 State Channels 是「完全」的 Layer2 方案,因為它們試圖將數據和計算都轉移至鏈下。然而,由于存在「數據可用性的博弈問題」,意味著這兩種方案不可能安全地滿足所有應用場景。
Plasma 和 State Channels 通過依賴所屬權的 owner(譯者注:因為提交欺詐性證明需要證明資產所屬權,這也是為什么 Plasma 采用 UTXO 方案,所以無法解決像 Uniswap 資產所屬權場景的問題。感謝 Chih Cheng Liang 指點)來解決該問題,但這使它們無法完全通用化。
另一方面,Rollups 是一種「混合」的 Layer2 方案。Rollups 將計算(以及狀態存儲)轉移至鏈下,但同時將每筆交易的部分數據保留在鏈上。
區塊鏈保險科技初創公司Vitraya完成410萬美元A輪融資:3月15日消息,區塊鏈保險科技初創公司Vitraya宣布完成410萬美元A輪融資,Xceedance和一家未透露名稱的投資財團參投。Vitraya主要利用人工智能和區塊鏈技術為保險公司實現支付完整性、醫療程序和福利管理的自動化服務,幫助醫院/醫療保健服務提供商、以及為消費者和企業提供健康保險產品的保險公司實現實時支付和理賠。?[2023/3/16 13:06:38]
為了提高效率,他們使用了不少 fancy 的壓縮技巧,盡可能地使用「計算」代替「數據」。其結果是系統的擴容仍然受限于底層區塊鏈的數據帶寬,但效率是可觀的:Ethereum ERC20 代幣轉賬成本約為 45,000 gas,而 Rollup 中的 ERC20 代幣轉賬僅使用 16 字節的鏈上空間,成本低于 300 gas。
事實上,數據上鏈是關鍵(注意:將數據放在 IPFS 上是行不通的,因為 IPFS 不提供任何給定數據是否可用的共識,所以數據必須放到區塊鏈上)。將數據放在鏈上并獲得共識,如果任何人愿意,他們可以在本地處理 rollup 中的所有操作,從而允許他們監測欺詐交易,請求提款,或親自生成 transaction batches。
因為沒有數據可用性問題,所以惡意或離線運營者所造成的損失會更少(比如他們不能造成 1 周的延遲),從而為誰有權發布 batches 打開了更大的設計空間,并簡化 rollups 系統。最重要的是,沒有數據可用性問題也意味著不再需要將資產映射到 owners。
這是 Ethereum 社區對 rollups 比以往的 Layer2 擴容方案更興奮的關鍵原因:Rollups 是完全通用的,我們甚至可以在 rollup 內運行一個 EVM,使得現有的 Ethereum 應用不必編寫過多新的代碼就可以遷移到 rollups 上。
鏈上會有一個智能合約維護著 state root:rollup 狀態的 Merkle root(即 rollup 內部的賬戶余額、合約代碼等信息的 Merkle 化)。
任何人都可以發布一筆 batch 交易,這是一個高度壓縮的交易集合,包含舊的 state root 和新的 state root。合約會檢查 batch 中的舊 state root 是否匹配當前的 state root,如果匹配,則將 state root 更新到新的 state root。
以太坊公益組織 Nomic 基金會獲 Vitalik 等捐贈1500萬美元:2月12日消息,以太坊公益組織Nomic基金會于2月9日宣布正式成立,專注于改進和擴展以太坊的開發者平臺,同時接管 Hardhat 和 Nomic Labs 的其他開放工程項目和相關團隊,未來將繼續擴展 Hardhat 工具套件。Hardhat是一個編譯、部署、測試和調試以太坊應用的開發環境。
據介紹,以太坊基金會、Vitalik Buterin、Coinbase、Consensys、The Graph、Polygon、Chainlink、Gnosis、a16z、a_capital 和 Kaszek Ventures 已經向該組織捐贈 1500 萬美元,其中以太坊基金會捐贈 800 萬美元。接下來,該組織還將向幾個 DAO 提交資金提案,以達到 3000 萬美元的總資金。[2022/2/12 9:47:48]
為了支持存款和提款,我們增加了交易的能力,其輸入或輸出是「外部」的 rollup 狀態。如果一個 batch 來自外部的輸入,那么提交該 batch 的交易也需要將這些資產轉移到 rollup 合約中。如果一個 batch 有對外的輸出,那么在處理該 batch 時,智能合約將會執行「提現」操作。
這一切就這么簡單! 除了一個主要的細節:如何知道 batch 中的 post-state roots 是正確的呢? 如果有人可以用任意 post-state root 提交一個 batch 而沒有任何懲罰,他們就可以直接將 rollup 內的全部資產轉給自己。這個問題有兩種截然不同的解決思路,從而衍生出兩種「口味」的 rollup 方案。
以下是這兩種「口味」的 rollups 方案描述:
Optimistic rollups,采用欺詐性證明:rollup 合約會跟蹤歷史的 state roots 和每一個 batch 的哈希值。如果有人發現某個 batch 的 post-state root 不正確,那么他們可以向合約提交證明,證明該 batch 計算錯誤。合約驗證該證明有效后,會對該 batch 和之后的所有 batch 進行回滾。
ZK rollups,采用有效性證明:每一個 batch 都包含一個稱為 ZK-SNARK 的密碼學證明(例如采用 PLONK 協議),它可以證明 post-state root 是執行該 batch 的正確結果。無論計算量有多大,合約都可以迅速地在鏈上驗證證明。
但兩種「口味」的 rollup 之間有著復雜的權衡:
方案權衡
Vitalik Buterin:已向阿桑奇的AssangeDAO捐款:2月7日消息,AssangeDAO是一個以維基解密創始人阿桑奇命名的去中心化自治組織,該組織宣稱將籌集資金,幫助阿桑奇支付法律費用,并開展活動,提高公眾對司法系統系統性故障的認識。據以太坊生態去中心化基礎設施Gnosis聯合創始人Martin K?ppelmann在推特透露,他已經向AssangeDAO捐贈了10 ETH,而以太坊聯合創始人Vitalik Buterin回應道,「我也捐贈了」。不過,目前尚不清楚Vitalik Buterin的具體捐贈金額。現階段,AssangeDAO 通過 JuiceBox 平臺的第一輪融資已于北京時間 2 月 7 日 6 時 32 分結束,目前共籌集了12630個ETH,超過了ConstitutionDAO(People)籌集的11613枚ETH,第二輪融資將于北京時間2月9日6時32分結束。[2022/2/8 9:36:31]
總的來說,我的觀點是:
短期內,Optimistic rollups 很可能在通用的 EVM 計算中勝出,而 ZK rollups 則可能在簡單的支付、交易和其他特定應用場景中勝出,但最終從中長期來看,隨著 ZK-SNARK 技術的改進,ZK rollups 將在所有場景中勝出。
Optimistic rollup 的安全性主要取決于:如果有人將一個無效 batch 發布到 rollup 合約中,那么保持跟蹤鏈上信息并發現欺詐的任何人都可以發布欺詐性證明,向合約證明該 batch 無效并回滾。
如圖所示,聲稱某 batch 無效的欺詐性證明將會包含這些綠色數據:該 batch 本身(對照存儲在鏈上的哈希值核對)和 Merkle tree 的部分內容,從而證明該 batch 讀取或修改特定賬戶。
而該樹中的黃色節點可以從綠色的節點重建,所以不必提供。這些數據足以執行該 batch 并計算 post-state root(注:類似 stateless clients 驗證單個區塊的方式)。如果計算出的 post-state root 和該 batch 中提供的 post-state root 不一樣,那么說明該 batch 具有欺詐性。
如果一個 batch 存在錯誤,但之前所有的 batches 都是正確的,那么就可以創建一個欺詐性證明以表示該 batch 是錯誤的。
請注意對舊的 batches 聲稱無效的處理:如果存在多筆無效 batches 提交到 rollup 中,那么最好盡量證明最早無效的 batch。當然,如果一個 batch 是正確的,那么永遠不可能創建一個欺詐性證明以表示其無效。
Vitalik:比特幣本質是一種金融工具:Vitalik Buterin在推特上回顧過去十年加密行業發展,他表示,金融在未來十年重要性會相對較低,加密貨幣領域需要適應這一現實。最終,加密貨幣會與更廣泛經濟趨勢高度相關。這并不意味著他們會免受其他事物(例如障礙/干擾)侵擾,但確實意味著敘事需要調整。Vitalik Buterin認為,比特幣本身主要是一種金融工具。以太坊本質上“金融性”沒有那么強,但即使如此,仍然存在一個事實,即區塊鏈合法地使很大一部分應用程序更好地涉及處理某種形式的貨幣/代幣/資金。[2020/6/3]
一筆簡單的 Ethereum 交易(比如發送 ETH)通常消耗約 110 字節。然而,在 Rollup 上發送 ETH 僅僅消耗約 12 字節。
字節消耗對比
為了達到這樣的壓縮效果,一方面是采用了更簡單高級編碼,而目前 Ethereum 的 RLP 在每個值的長度上都浪費了 1 字節。另一方面,還有一些巧妙的壓縮技巧:
Nonce:該參數的目的是為了防止「重放」。如果賬戶的當前 nonce 是 5,那么該賬戶的下一筆交易必須使用 nonce 5,但一旦交易被處理,那么該賬戶中的 nonce 就會被遞增到 6,這樣采用 nonce 5 的交易就不會被執行。在 rollup 中,我們可以完全省略 nonce,因為我們只是從 pre-state 中恢復 nonce。同時由于簽名會采用最新的 nonce 進行檢查,如果有人試圖使用舊的 nonce 重放交易,那么簽名將無法通過驗證。
Gasprice:我們可以允許用戶使用固定范圍的 gasprices 進行支付,例如 2 的 16 次冪(譯者注:主要為了節省字節)。或者,我們也可以在每筆 batch 中收取固定費用,甚至可以將 gas 支付完全移到 rollup 協議之外,讓交易者通過特定渠道向 batch 創建者支付費用。
Gas:我們同樣也可以將 gas 設置為 2 的多次冪。另外,我們也可以在 batch 層面設置 gas 限制。
To:我們可以使用「索引」來代替 20 字節的地址(例如:一個地址是「樹」中的第 4,527 個地址,我們就可以用索引 4,527 來表示它,同時我們也會在狀態中添加一個子樹來存儲索引到地址的映射)。
Value:我們可以用科學計數法存儲 value。在大多數情況下,轉賬僅需 1 ~ 3 有效位。
Signature:我們可以使用 BLS 聚合簽名,它允許許多簽名聚合成一個約 32 - 96 字節的簽名(取決于協議)。然后,這個簽名可以一次性對整個消息集和發送者進行 batch 檢查。表中的 ~ 0.5 表示一個區塊中可驗證的聚合簽名的數量是有限制的,因為它需要在一次欺詐證明中驗證簽名。
以太坊創始人Vitalik指責Instagram和Facebook允許虛假賬戶在平臺上存在:以太坊的創始人Vitalik Buterin一直在處理大量欺詐的Twitter模仿者,這些詐騙犯試圖從天真的投資者那里盜取密碼,而最近V神的注意力被Instagram和Facebook轉移了。這他在推特上批評Facebook和Instagram,因為他們的平臺上存在明顯的虛假賬戶。[2018/3/30]
ZK rollups 特有的一個重要壓縮技巧:如果交易的一部分僅用于驗證,并與計算狀態更新無關,那么這部分可以省略。這在 Optimistic rollup 中是做不到的,因為該數據仍然需要包含在鏈上,以防將來欺詐性證明檢查所需,而在 ZK rollup 中,證明數據正確性的 SNARK 已經提供了任何驗證所需的數據。
一個重要的例子是隱私保護 rollups:在 Optimistic rollup 中,每筆交易中 ~ 500 字節用于隱私的 ZK-SNARK 需要上鏈,而在 ZK rollup 中,覆蓋整個 batch 的 ZK-SNARK 已經足以表明「內部」的所有 ZK-SNARKs 是有效的。
這些壓縮技巧是 rollup 擴容的關鍵,如果沒有這些技巧,rollup 或許只能在基礎鏈的擴容上有大約 10 倍的提升(在一些特定的計算量大的應用中,簡單的 rollup 也已經很強大),但有了這些壓縮技巧,幾乎所有應用的擴容系數都可以超過 100 倍。
關于哪些人可以在 Optimistic rollup 或 ZK rollup 中提交 batch 的問題存在許多流派。一般來說,大家都認為提交 batch 的用戶必須先交納一大筆押金,如果該用戶提交欺詐性的 batch(例如采用一個無效的 state root),那么這筆押金的一部分將被燒掉,另一部分作為獎勵給到提交欺詐性證明的用戶。但除此之外,還存在許多可能性:
Total anarchy:任何人都可以在任何時候提交 batch。這是最簡單的方法,但它有一些嚴重的缺點,比如存在這樣的問題:多個參與者同時生成并試圖提交 batch,而其中僅有一個 batch 可以成功被收錄。這將導致大量的浪費,比如沒有意義的生成 batch 證明或者提交 batch 到鏈上。
中心化的 Sequencer:通過 Sequencer 這樣的角色提交 batch(除了提現操作:首先由用戶自己提交提現請求,如果 Sequencer 在下一個 batch 中沒有處理該提現交易,那么用戶可以親自提交一個 batch 處理提現)。這是最「高效」的,但它依賴于一個中心化的角色。
Sequencer 拍賣:通過拍賣(比如每天)來決定誰有權利成為第二天的 Sequencer。這種方案的優點是可以籌集資金,而這些資金可以通過 rollup 的 DAO 來分配(參考:MEV 拍賣)。
從 PoS 集合中隨機選擇:任何人都可以將 ETH(或者 rollup 協議的代幣)存入 rollup 合約中,每一個 batch 的 sequencer 都會從其中一個存款人中隨機選擇,被選中的概率與存款金額成正比。這種方案的主要缺點是大量資產被鎖定,導致資金效率低。
DPoS 投票:Sequencer 通過拍賣選中,但如果他們表現不佳,那么代幣持有者可以投票將其踢出,并舉行新的拍賣來替代他們。
目前一些正在開發的 rollup 方案采用的是 “split batch” 模式,即提交 Layer2 batch 的動作和提交一個 state root 的動作分開執行,這會有一些關鍵優勢:
你可以允許許多 sequencers 并行發布 batch,以提高抗審查能力,而不用擔心一些 batch 會因為其他 batch 已經被打包而無效。
如果一個 state root 存在欺詐,你不需要回滾所有 batch,僅恢復該 state root 即可,并等待有人為該 batch 提供新的 state root。這樣可以更好地保障交易發送者的交易不會被回滾。
總的來說,這是一個相當復雜的技術組合,它們試圖在涉及效率、簡單性、抗審查和其他目標的復雜權衡中獲得平衡。但現在談哪種組合最有效還為時過早,而時間會證明一切。
目前 Ethereum 的 gas limit 是 1,250 萬,交易中每個字節的數據需要消耗 16 gas。那么如果一個區塊僅包含一個 batch(我們假設使用 ZK rollup,將會消耗 50 萬 gas 用于驗證證明),那么該 batch 會有(1,200 萬 / 16)= 75 萬字節。如上圖所示,每一位用戶轉賬 ETH 僅消耗 12 字節,那么也就是說,該 batch 最多可以包含 62,500 筆交易。
在平均區塊時間為 13 秒的情況下,這相當于達到約 4,807 TPS(對比 Ethereum 目前 ETH 轉賬的 1,250萬 / 21,000 / 13 約為 45 TPS)。
部分用例擴容提升規模
那么擴容上限可以這么計算:
(L1 gas cost) / (bytes in rollup * 16) * 12million / 12.5million
現在值得注意的是這些數字還是過于樂觀,原因有幾個:
首先,最重要的是一個區塊幾乎永遠不會僅包含一個 batch,因為將可能會存在多個 rollup 方案同時運作。第二,存款和提款將持續存在。第三,短期內使用量會很低,所以固定成本成為主要消耗。但即使將這些因素考慮在內,預計擴容規模也會超過 100 倍。
現在,如果我們想要超過 ~ 1,000 - 4,000 TPS,該怎么辦呢?這就是 ETH 數據分片的意義所在,sharding 建議每 12 秒開辟一個 16MB 的空間,這個空間可以被任何數據填滿,系統保證對這些數據的可用性達成共識,而這些數據空間可以被 rollup 使用。
這個約 1,398 kB/s 的數據量比當前 Ethereum 60 kB/s 提高了 23 倍,從長遠來看,數據容量有望進一步增長。因此,使用 Eth2 分片數據的 rollup 可以處理高達約 100k TPS,未來甚至會更多。
雖然現在 Rollup 的基本概念已經被大家所熟知,我們也很確認它們從根本上是可行的、安全的,以及已有多個 rollup 方案被部署到主網上,但 rollup 的設計仍然存在許多地方沒有被很好地探索,將 Ethereum 生態系統的大部分內容完全遷移到 rollup 上以利用其擴容能力也存在不少挑戰:
User and ecosystem onboarding - 使用 rollups 的應用不多,用戶對 rollups 也不熟悉,目前很少有錢包開始整合 rollups,而商家和慈善機構還不接受它們用于支付。
Cross-rollup transactions - 有效地將資產和數據 (例如 oracle 輸出) 從一個 rollup 轉移到另一個 rollup 中,而不會產生經過 Layer1 的費用。
Auditing incentives - 如何最大限度地提高至少一個誠實節點會真正全面驗證一個 Optimistic rollup 的概率,以便出錯時他們會發布欺詐性證明。對于小規模的 rollup(幾百個 TPS 以下)來說,這不是一個重要的問題,可以簡單地借助利他主義,但對于更大規模的 rollup 來說,需要更嚴謹地推理這個問題。
Exploring the design space in between plasma and rollups - 是否存在一些方法可以將狀態更新的相關數據放在鏈上,而不是所有的數據。
Maximizing security of pre-confirmations - 許多 rollup 為了更快的用戶體驗,提供了一個「預確認」的概念,即 sequencer 立即給予一個承諾,交易將被包含在下一個 batch 中,如果他們食言,sequencer 的押金將被銷毀。但這種方案的經濟安全性是有限的,因為可能同時向許多用戶做出承諾,這種機制能否獲得改進?
Improving speed of response to absent sequencers - 如果一個 rollup 的 sequencer 突然下線,那么快速和經濟地從這種情況中恢復過來將是非常有價值的:要么快速且經濟地大規模退出到另一個 rollup,要么更換 sequencer。
Efficient ZK-VM - 生成通用 EVM 代碼的 ZK-SNARK 證明(或者將現有的智能合約編譯適配到其他 VM)可以被正確執行,并且有一個明確結果。
Rollups 是一種強大的 Layer2 擴容范式,預計將成為 Ethereum 短期和中期(甚至長期)擴容的基石。我們已經看到了 Ethereum 社區對此感到大大的興奮,因為這與之前的 Layer2 擴容方案不同,它們可以支持通用的 EVM 代碼,允許現有的智能合約輕松遷移。
這是通過一個關鍵的妥協來實現的:放棄將數據和計算完全放在鏈下,而是將每筆交易的少量數據留在鏈上。
Rollups 方案有很多種,在設計空間上會有很多選擇:可以采用欺詐性證明的 Optimistic rollup,或者采用有效性證明的 ZK rollup(又名 ZK-SNARKs)。Sequencer(可以將交易 batch 發布到鏈上的用戶)可以是一個中心化的角色,也可以是一個去中心化的角色,或者是介于兩者之間的其他選擇。
總的來說,Rollup 仍然是一項早期階段的技術,一切仍在迅速發展,特別是 Loopring,ZKSync 和 DeversiFi 已經運作了幾個月。
期待在未來的幾年內,Rollup 領域會出現更多令人興奮的工作成果。
原文:An Incomplete Guide to Rollups
作者:Vitalik
譯者:阿樹
Tags:ROLLROLTCHBATTROLLBNBControl2XYWITCH幣Dopex Rebate Token
中國已全面進入建設數字經濟的新時代,數字身份認證與管理及用戶隱私保護已成為數字經濟發展不可回避的核心問題之一.
1900/1/1 0:00:00除了 Proof of Stake 之外,eth2 設計中的另外一個顯著改變就是分片 (sharding).
1900/1/1 0:00:00日前,中山大學鄭子彬教授牽頭,聯合微眾銀行等企業和高校申報的國家重點研發計劃2020年度項目成功立項.
1900/1/1 0:00:00原標題:幣圈投資 為何受傷的總是你?近日,颯姐團隊接到多起幣圈投資引發的糾紛咨詢,由于訴訟標的為虛擬貨幣,無論是提起民事訴訟還是刑事報案都會遇到區別于傳統維權的特殊法律問題.
1900/1/1 0:00:001,以太坊——信任之樹 比特幣和以太坊并不是最早出現在互聯網領域的“有機體”。計算機病基本和互聯網一樣年代久遠.
1900/1/1 0:00:002020 年 12 月 29 日,基于波卡的DeFi聚合器 Reef Finance(REEF)在幣安上線后便以 0.3 美元的價格高開,隨后 5 分鐘時間里基本也維持在 0.1 美元以上.
1900/1/1 0:00:00