對於區塊鏈應用來說,從來都不是完全的免信任化,但是某些應用確實比其他應用的免信任程度更高。
作者:whiskoy.eth
區塊鏈應用最有價值的屬性之一就是免信任(trustlessness),即應用能夠以預期的方式保持運行而無需依賴特定參與者以特定形式行事,即使他們將來的相關利益可能產生變化並使其做出意料之外的舉動。 不同的系統採用的是不同的信任模型,為了更好地分析區塊鏈協定,Vitalik 通過四個維度對不同系統的信任模型進行劃分。 本課題旨在研究和評估不同信任模型的優勢和適用場景,並將市面上常見系統的模型套用到 trust 模型評估系統中,分析各個系統的 trade-off 和原因。
一、什麼是 trust 模型
對於區塊鏈應用來說,從來都不是完全的免信任化(比如比特幣需要相信至少一半算力的礦工是誠實的),但是某些應用確實比其他應用的免信任程度更高。 如果我們想要朝著信任最小化的目標前進,就需要首先具備辨別信任程度的高低。
Vitalik 個人對「信任」的簡單定義是:信任就是對他人行為進行假設,並在博客中將信任模型分解為以下幾個維度:
- 你需要多少人按照你的預期行事?
- 模型基於的人數總量多大?
- 人們需要什麼動機? 他們需要是利他主義者,還是唯利是圖者? 他們需要避免協作嗎?
- 如果違反了這些假設,系統會受到多嚴重的影響?
在疫情爆發前,你走在街上不會因為防止有人突然捅你一刀而刻意跟他人保持兩米的距離,這就是一種信任:一是信任人們很少會失心瘋,二是法制系統的維護者有很強的動機約束這種行為。 當你運行其他人寫的一段代碼時,你信任他們在編寫代碼時是誠實的(無論是出於他們自己的良知或是維持聲譽的經濟利益),或者至少存在足夠多的人對代碼進行檢查以找到漏洞。 不親自種糧食也是另一種信任,相信會有足夠多的人為了獲取收益耕種糧食並出售給你。 你可以信任不同規模的群體,信任的類型也不盡相同。
Vitalik 在最新文章博客文章《Different types of layer 2s》中指出, Layer2 項目之間正在朝著更加異構的趨勢發展,並且預測這種趨勢會繼續進行下去。 文章提出了兩個維度去看待 Layer2 專案:「取款回乙太坊的安全性」維度,以及「無需信任地讀取乙太坊」維度,本質上也是出自對信任模型的考量。 其中,「取款回乙太坊的安全性」維度說的是,Rollup、validiums 和獨立系統之間,由於不同技術的選擇造成了不同的成本和安全性。
其次,技術與技術之間的雜交,造就了不同的技術光譜(例如,在 rollup 和 validium 之間的光譜)。 每條光譜存在著更多的中間選項,專案會根據數據成本和自身需求,去進行選擇處在光譜的什麼位置。
二、模型的幾種分類
1、信任範圍
現在,我們先關注前兩點進行拆分(需要多少人按照你的預期行事、模型基於的人數總量多大),可以得到下面有一個圖表。 綠色越深,表示該模型越健康。 讓我們對這幾個種類進行詳細分析:
- 1 of 1:整個系統只有一個參與者。 如果這名參與者按照你預期的那樣行事,系統就會(才會)正常運行。 這就是傳統的「中心化」模型,也是我們要超越的模型。
- N of N:「反烏托邦」世界。 系統中的所有參與者都要按照預期行事,系統才能正常運行,如果其中任何人失敗,我們沒有補救措施。
- N/2 of N:這是區塊鏈的運作方式,如果大部分礦工(或 PoS 驗證者)是誠實的,區塊鏈就能正常運作。 要注意的是,N 值越大,N/2 就越有價值。 相比只由少量礦工/驗證者控制的區塊鏈,礦工/驗證者廣泛分佈的網路更有意義。 儘管如此,由於 51% 攻擊的可能性,我們還是想在這種程度的安全性上更進一步。
- Few of N:在眾多參與者中,只要有固定數量的小部分參與者按照預期行事,系統就能正常運行。 數據可用性採樣就當屬其中。
- 1 of N:有很多參與者,只要其中至少有一個按照預期行事,系統就能正常運作。 任何基於欺詐證明的系統都屬於這一類,信任設置也是如此,儘管在這種情況下 N 值通常較小。 請注意,我們確實希望 N 值盡可能大!
- 0 of N:系統無需依賴外部參與者即可正常運行。 親自驗證區塊就歸為這一類。
儘管除「0 of N」之外的模型都有一定「信任」程度 ,但是這些模型之間存在巨大差異! 相信特定的某個人(或組織)會按照預期行事,與相信隨便一個人都會按照預期形式,是完全不同的情況。 相比 “N/2 of N” 和 “1 of 1”,“1 of N” 與 “0 of N” 更相似。 可能有人會覺得「1 of N」模型與「1 of 1」模型很像,因為這兩種模型都依賴一名參與者,但實際上這兩者十分迥異:在 “1 of N” 系統中,如果該名參與者突然消失或者黑化,大可以重新換一個參與者,但在 “1 of 1” 系統中我們別無他選。
2、激勵模式
如果從激勵部分去看,要促使參與者遵循預期,你所信任的參與者需要非常利他主義、輕微利他主義,還是說足夠理性。 我們可以得到:
- 默認情況下,“欺詐證明”(fraud proofs)需要參與者具有輕微利他主義傾向,但其程度取決於計算的複雜性(詳見 “驗證者困境”),並且存在很多方式改進過程,使其更加理性。
- PoS 是基於負向激勵(懲罰)的系統,比特幣的 PoW 是基於正向激勵(獎勵)的系統。 乙太坊 PoS 使用兩個關鍵要素來確保交易和出塊正確:
- 第一個要素是時不時地製作特殊的「檢查點區塊(checkpoint blocks)」,其目的是向網路中的每一個人保證這個系統在不同時間的「真相」。。 創建一個檢查點需要以「押金(stake)」計算的 2/3 的多數同意,這樣就能保證在該時間點,絕大多數的 “驗證者(validator)” 都認可一個事實。
- 第二個要素是懲罰給網路增加不確定性的使用者,也就是所謂的「罰沒(slashing)」。。 舉個例子,如果一個驗證者創建了一條分叉鏈,或者給一條更老的分叉鏈投票(類似於 51% 攻擊),那麼 TA 的押金就會被罰沒。 驗證者也會因為不活躍而被懲罰,但力度不會那麼大。
3、故障後果
另一個重要的區別在於,如果你的信任假設被打破,對系統的破壞有多大? 在區塊鏈上,最常見的兩種故障類型是活性故障(liveness failure)和安全性故障(safety failure)。 活性故障就是你暫時無法進行操作(例如,提幣、將交易打包進區塊、讀取鏈上數據)。 安全性故障就是出現了系統想要預防的情況(例如,無效塊被添加到區塊鏈上)。
3.1 活性故障
對於乙太坊來說,PoS 升級後區塊能夠確認最終性,且一旦網路出現 Liveness failure 的情況(超過 4 個 epoch 而沒有最終確定),可以啟用 Inactivity leak 的緊急協定,為鏈恢復「最終性」創造所需的條件。
- 最終性需要乙太幣質押總量的 2/3 多數就 target&source 達成一致。 如果占驗證者總數超過 1/3 的驗證者離線或未能提交正確的證明,則 2/3 的絕對多數不可能達成 finality。
- Inactivity leak 通過讓不活躍驗證者的權益金逐漸流失,直到他們控制的權益少於總權益的 1/3,從而允許剩餘的活躍驗證者可以確定鏈的最終性。 無論不活躍驗證者池有多大,剩餘的活躍驗證者最終將控制超過 2/3 的權益。
3.2 安全性故障
對於安全性來說,當網路出現巨大故障時,是否可以採取分叉或回滾方式進行恢復,是比較重要的考量方式。 對於 rollup 來說,從「無需信任地讀取乙太坊」維度,指的是「系統讀取乙太坊區塊鏈的能力」和「系統在乙太坊發生回滾時進行回滾的能力」,構成了選擇 Layer2 的另一個維度。
- 系統讀取乙太坊區塊鏈的能力:讀取的是 finality 的區塊,還是最新的區塊; 以及讀取區塊數據的速度。 但存在一個問題,當乙太坊發生 51% 攻擊同一高度出現兩個區塊時,無法確定此時應該讀哪一個區塊。(因此需要考察回滾能力)
- 系統在乙太坊發生回滾時進行回滾的能力:乙太坊區塊鏈發生回滾,頂層鏈本身是否發生回滾。
三、常見技術的 trust 假設
以下列舉了一些區塊鏈 layer 2 協定所採用的信任模型。 我用 “small N” 來指代 layer 2 系統本身的參與者集合,“big N” 來指代區塊鏈底層的參與者。 我的假設是 layer 2 的社區總是小於底層區塊鏈。 另外,我使用的「活性故障」一詞特指代幣長時間無法提出的情況。 無法使用系統但是能夠幾乎即時提款的情況不算作活性故障。
- Channels(包括狀態通道、閃電網路等):使用 “1 of 1” 信任模型來確保活性(你的對手方可以暫時凍結你的資金,不過你可以通過將資金分散在多個通道中減少風險),使用 “N/2 of big N” 模型來確保安全性(有可能在 51% 攻擊中失去資金)。
- Plasma(中心化運營者):使用 “1 of 1” 信任模型來確保活性(運營者可以暫時凍結你的資金),“N/2 of big N” 模型來確保安全性(有可能在 51% 攻擊中失去資金)。
- Plasma(半去中心化運營方,如 DPOS):使用 “N/2 of small N” 信任模型來確保活性,“N/2 of big N” 模型來確保安全性。
- Optimistic rollup:使用 “1 of 1” 或 “N/2 of small N” 信任模型來確保活性(取決於運營者的類型),“N/2 of big N” 模型來確保安全性。
- ZK rollup:使用 “1 of small N” 信任模型來確保活性(如果運營者未能打包你的交易,你可以提款,如果運營者沒有立即打包你的取款交易,就無法打包更多交易包,你可以在 rollup 系統中任何一個全節點的説明下自行提款); 不存在安全故障風險。
總結
如果我們想要朝著信任最小化的目標前進,就需要首先具備辨別信任程度的高低。 如果有人說某個系統「依賴於信任機制」,那我們可以刨根問底! 他們的意思是 “1 of 1” 模型、“1 of N” 模型還是 “N/2 of N” 模型? 該系統需要參與者是利他主義還是理性主義? 如果是利他主義,參與者的代價有多大? 如果違反了假設,需要等待多久才能取回自己的資金? 幾個小時? 幾天? 還是永遠被凍結? 明白這些問題后,我們可能對於是否採用該系統會有截然不同的答案。
參考
https://foresightnews.pro/article/detail/16210[1]
https://vitalik.ca/general/2020/08/20/trust.html[2]
https://hackmd.io/@vbuterin/zk_slides_20221010#/[3]
https://twitter.com/whiskoy_eth/status/1719669296526475505[4]
https://threadreaderapp.com/thread/1579764717975138305.html[5]
免責聲明:作為區塊鏈資訊平臺,本站所發佈文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。 文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。