鏈得得 ChainDD.com
|得區塊鏈者得天下|
區塊鏈應用永遠不可能實現完全免信任,但是不同應用在免信任程度上卻差別顯著。
作者|Vitalik Buterin,以太坊創始人
翻譯|閔敏 & 阿劍
對於許多區塊鏈應用來說,免信任性都是最重要的特徵之一。
所謂的免信任性,就是應用的正常工作不以特定參與者按特定方式行事為前提,即使他們將來會在利益的驅使下做出意料之外的舉動(也不能使應用的工作狀況脫離預期)。
區塊鏈應用永遠不可能實現完全免信任,但是有一些應用在免信任程度上遠遠高於另一些專案。如果我們想要朝著信任最小化邁出堅實的步伐,就得先辨別出信任程度的高低。
首先,我個人對信任的定義很簡單:信任就是對其他人行為的假設。在疫情爆發前,你不會因為害怕別人突然捅你一刀而與刻意跟他人保持兩米的距離。
這就是一種信任:一方面是信任他人不會暴走,另一方面是信任法律制度對違法犯罪行為的約束力。
當你執行其他人寫的一段程式碼時,你相信他們是誠實的(不管是從人品的角度,還是從經濟利益的角度),至少有足夠多的人對這段程式碼進行過審計,知道里面沒有 bug 。
不自己種菜也是一種信任:相信會有足夠多的人為了賺錢而生產糧食。你可以信任不同群體,信任的型別也多種多樣。
為了分析區塊鏈協議,我會將信任拆解成四個維度:
你需要多少人如你預期的那樣行事?
總參與人數有多少?
需要這些人出於什麼動機如你預期的那樣行事?需要他們是利他主義者,還是唯利是圖者?是否需要避免他們之間產生協同?
如果這些假設被打破了,對系統的破壞有多大?
現在,先讓我們聚焦於前兩個問題。透過下圖,我們可以更加直觀地看出:
綠色越深表示越健康
讓我們詳細分析以下幾種情況:
1 : 1:整個系統只有一個參與者。如果這名參與者確實如你預期的那樣行事,系統就會正常執行。這就是傳統的 「中心化」 模型,也是我們所要超越的模型。
N : N:「反烏托邦」 世界。系統中的所有參與者都要如你預期的那樣行事,系統才能正常執行,如果有任意參與者失敗,那也沒有備份方案。
N/2 : N:這是區塊鏈的運作方式 —— 如果大部分礦工(或 PoS 驗證者)是誠實的,區塊鏈就能正常運作。要注意的是,N 越大,N/2 就越有價值。相比只由少量礦工 / 驗證者控制的區塊鏈,礦工 / 驗證者廣泛分佈的網路有趣得多。儘管如此,我們依然想要獲得更高的安全性,因為還有 51% 攻擊的問題存在。
1 : N:在眾多參與者中,只要有一名參與者如你預期的那樣行事,整個系統就能正常執行。任何基於欺詐證明的系統都屬於這一類。可信設定也是如此,不過在可信設定中,N 通常較小。要注意的是,N 越大越好!
極少數 : N:在眾多參與者中,只要有達到固定人數的小部分參與者如你預期的那樣行事,整個系統就能正常執行。資料可用性檢查(data availability check)就屬於這一類。
0 : N:系統無需依賴外部參與者即可正常執行。自我驗證區塊有效性就屬於這一類。
儘管除 「0 : N」 之外的模型都是建立在 「信任」 基礎上的,但是這些模型之間存在巨大差異!
相信某個特定的人(組織)會如你所預期的那樣行事,和相信任何一個人都會如你所預期的那樣行事,二者之間有著天壤之別。
相比 「N/2 : N」 和 「1 : 1」,「1 : N」 與 「0 : N」 更為接近。或許有人會覺得 「1 : N」 模型與 「1 : 1」 模型很像,因為這兩種系統都依賴一名參與者,但實際上它們之間迥然不同:在 「1 : N」 系統中,如果這名參與者消失或作惡,換一名參與者即可;如果是 「1 : 1」 系統,你就只能束手無策。
尤其要注意的是,即使是你正在執行的軟體,其正確性通常也取決於 「極少數 : N」 信任模型,以此確保軟體程式碼出現 bug 時,會有人及時發現。
在瞭解這一事實後,你就會發現,努力從 「1 : N」 模型轉向 「0 : N」 模型如同為敞開窗戶的房子安裝防盜門。
另一個重要的區別在於,如果你的信任假設被打破,對系統的破壞有多大?在區塊鏈上,最常見的兩種故障型別是活性故障(liveness failure)和安全性故障(safety failure)。
活性故障就是你暫時無法進行操作(例如,提幣、將交易打包進區塊、讀取鏈上資料)。安全性故障就是出現了系統想要預防的情況(例如,無效塊被新增到區塊鏈上)。
以下列舉了一些區塊鏈 Layer 2 協議所採用的信任模型。我使用 「small N」 來指代 layer 2 系統本身的參與者集合,「big N」 來指代底層區塊鏈的參與者。
我的假設是 Layer 2 的社羣總是小於其底層區塊鏈的社羣。另外,我所謂的 「活性故障」 特指代幣長時間卡住的情況。無法使用系統但能即時提款的情況不算作活性故障。
Channel 類(包括狀態通道、閃電網路等):使用 「1 : 1」 信任模型來確保活性(你的交易對手可以暫時凍結你的資金,不過你可以將資金分散到多個通道中,從而減輕負面影響),「N/2 : big N」 模型來確保安全性(攻擊者可以透過 51% 攻擊來偷走你的資金)。
Plasma(採用中心化運營方):使用 「1 : 1」 模型來確保活性(運營者可以臨時凍結你的資金),「N/2 : big N」 模型來確保安全性(攻擊者可以透過 51% 攻擊來偷走你的資金)。
Plasma(採用半中心化運營方,如 DPOS):使用 「N/2 : small N」 模型來確保活性,「N/2 : big N」 模型來確保安全性。
Optimistic Rollup:使用 「1 : 1」 或 「N/2 : small N」 模型來確保活性(取決於運營者的型別),「N/2 : big N」 模型來確保安全性。
ZK Rollup:使用 「1 :small N」 模型來確保活性(如果運營者未能打包你的交易,你可以取回你的資金,如果運營者沒有立即打包你的取款交易,就無法打包更多交易,你可以在 Rollup 系統中任何一個全節點的幫助下自行提款。);不存在安全性故障風險。
ZK Rollup(輕取款增強型):不存在活性故障風險和安全性故障風險。
最後是關於激勵的問題:為了達到預期的效果,你所信任的參與者需要非常利他主義,一般利他主義,還是理性主義?
預設情況下,「欺詐證明」 需要參與者是利他主義的,但是程度如何取決於計算的複雜性(詳見 「驗證者困境」 ),而且有很多方法可以修改規則,使之變得理性。
如果我們增加一種方式來支付服務費,那麼幫助他人從 ZK Rollup 上取款的行為就是理性的,因此沒必要擔心無法退出 Rollup 的問題。
與此同時,如果整個社羣都同意 不接受透過 51% 攻擊建立的區塊鏈(將交易歷史回滾到很久之前,或審查很久之前的區塊),就可以減輕其它系統的風險。
結論:如果你聽到有人說某個系統 「依賴於信任」,一定要問清楚!這個系統是 「1 : 1」 模型、「1 : N」 模型還是 「N/2 : N」 模型?這個系統需要參與者是利他主義還是理性主義?
如果是利他主義,參與者需要付出多大代價?如果假設被打破,那麼你需要等待多久才能取回自己的資金?幾個小時?幾天?還是永遠無法取回?搞清楚了這些問題,你才能決定要不要使用這個系統。