來源:Bitcoin Magazine;編譯:五銖,金色財經
Rollups 最近已成為比特幣擴容的焦點,成為第一個真正從閃電網路「搶走風頭」的東西,在更廣泛的關注度方面。 Rollups 旨在成為一個不受閃電網路核心流動性限制約束或限制的鏈下第二層,即最終用戶需要有人提前分配(或「借出」)資金才能收到錢,或者中間路由節點需要通道餘額來促進支付金額從發送者到接收者的全程流動。
這些系統最初是在以太坊和其他圖靈完備系統上運行的,但最近重點已轉移到將它們移植到基於UTXO 的區塊鏈(例如比特幣)。本文不打算討論目前在比特幣上實施的現狀,而是討論人們長期追求的理想化Rollup的功能,這取決於比特幣目前不支持的功能,即直接在比特幣上驗證零知識證明(ZKP)的能力。
Roll 的基本架構如下:單一帳戶(在比特幣中為UTXO)保存Rollup 中所有使用者的餘額。此UTXO 包含一個承諾,該承諾以Merkle 樹的Merkle 根的形式存在,承諾Rollup 中現有帳戶的所有當前餘額。所有這些帳戶均使用公鑰/私鑰對授權,因此為了提出鏈下支出,使用者仍必須使用金鑰簽署某些內容。這個結構的這一部分允許用戶隨時無需許可即可離開,只需製作交易證明其帳戶是Merkle 樹的一部分,他們就可以單方面退出Rollup,而無需運營商的許可。
Rollup 的經營者必須在交易中包含一個ZKP,以便在完成鏈下交易的過程中更新鏈上帳戶餘額的merkle 根,如果沒有這個ZKP,交易將無效,因此不能包含在區塊鏈中。此證明允許人們驗證對鏈下帳戶的所有更改是否得到了帳戶持有人的適當授權,以及運營者是否沒有惡意更新餘額以竊取用戶的資金或不誠實地將其重新分配給其他用戶。
問題是,如果只有merkle 樹的根發佈在鏈上,用戶可以查看和訪問它,那麼他們如何將他們的分支放在樹中,以便能夠在他們想要的時候無需許可就退出?
合適的Rollup
在適當的Rollup中,每次確認新的鏈下交易並且Rollup帳戶的狀態發生變化時,資訊都會直接放入區塊鏈中。不是整個樹,那樣太荒謬了,而是重建樹所需的資訊。在一個簡單的實作中,Rollup中所有現有帳戶的摘要將包含餘額,並且帳戶只是在更新Rollup的交易中添加的。
在更高級的實現中,使用餘額差異。這本質上是對在更新過程中哪些帳戶增加了或減少了資金的摘要。這使得每個Rollup更新僅包含發生的帳戶餘額變更。然後,用戶可以簡單地掃描鏈並從Rollup的開頭「進行計算」以得出帳戶餘額的當前狀態,這允許他們重建當前餘額的默克爾樹。
這樣可以節省大量開銷和區塊空間(從而節省資金),同時仍允許用戶保證訪問單方面退出所需的資訊。 rollup 規則要求將這些資料包含在使用區塊鏈向使用者提供的正式rollup 中,即不包含帳戶摘要或帳戶差異的交易被視為無效交易。
有效期限
處理用戶提取資料可用性問題的另一種方法是將資料放在區塊鏈之外的其他地方。這引入了微妙的問題,rollup 仍然需要強制確保資料在其他地方可用。傳統上,其他區塊鏈用於此目的,專門設計為作為rollup 等系統的資料可用性層。
這造成了安全保障同樣強大的困境。當資料直接發佈到比特幣區塊鏈時,共識規則可以保證它絕對正確。然而,當它被發佈到外部系統時,它能做的最好的就是驗證SPV 證明,即資料已發佈到另一個系統。
這需要驗證資料存在於其他鏈上的證明,這最終是預言機問題。比特幣的區塊鏈無法完全驗證除了發生在自己區塊鏈上的事情之外的任何事情,它能做的最好的事情就是驗證ZKP。然而,ZKP 無法驗證包含rollup 資料的區塊在生成後是否真的被公開廣播。它無法驗證外部資訊是否真的對所有人公開。
這為資料扣留攻擊打開了大門,即創建對發布資料的承諾並將其用於推進rollup ,但資料實際上並未可用。這導致用戶無法提取資金。唯一真正的解決方案是完全依賴比特幣以外的系統的價值和激勵結構。
進退維谷
這給rollup 帶來了一個困境。當涉及到數據可用性問題時,基本上存在將數據發佈到比特幣區塊鏈還是其他地方的二元選擇。這項選擇對rollup 的安全性和主權以及其可擴展性都具有重大影響。
一方面,使用比特幣區塊鏈作為資料可用性層會給rollup 的可擴展性設定一個硬性上限。區塊空間是有限的,這為一次可以存在的rollup 數量以及所有rollup 總共可以在鏈下處理的交易數量設定了上限。每次rollup 更新都需要與自上次更新以來餘額變化的帳戶數量成比例的區塊空間。資訊理論只允許資料被壓縮到一定程度,在這一點上,就沒有更多的擴展潛力了。
另一方面,使用不同的層來實現資料可用性會消除可擴展性增益的硬性上限,但它也帶來了新的安全性和主權問題。在使用比特幣實現數據可用性的Rollup 中,如果用戶需要提取的數據沒有自動發佈到區塊鏈上,Rollup 的狀態就不可能改變。使用Validiums,這種保證完全取決於所使用的外部系統抵禦欺騙和資料隱藏的能力。
現在,外部數據可用性系統上的任何區塊生產者都能夠透過生產區塊而不是實際廣播該區塊來劫持比特幣Rollup用戶的資金,從而讓數據可用。
那麼,如果我們真的在比特幣上實現理想的Rollup實現,真正實現單方面用戶提款,那會是怎樣的呢?