大多區塊鏈應用最有價值的屬性之一就是“免信任” (trustlessness),即應用能夠以預期的方式保持運行而無需依賴特定參與者以特定形式行事,即使他們將來的相關利益可能產生變化并使其做出意料之外的舉動,區塊鏈應用從來都不是完全的免信任化,但是某些應用確實比其他應用的免信任程度更高。如果我們想要朝著信任最小化的目標前進,就需要首先具備辨別信任程度的高低。
首先,我個人對“信任”的簡單定義是:信任就是對他人行為進行假設。在疫情爆發前,你走在街上不會因為防止有人突然捅你一刀而刻意跟他人保持兩米的距離,這就是一種信任:一是信任人們很少會失心瘋,二是法制系統的維護者有很強的動機約束這種行為。當你運行其他人寫的一段代碼時,你信任他們在編寫代碼時是誠實的 (無論是出于他們自己的良知或是維持聲譽的經濟利益),或者至少存在足夠多的人對代碼進行檢查以找到漏洞。不親自種糧食也是另一種信任,相信會有足夠多的人為了獲取收益耕種糧食并出售給你,你可以信任不同規模的群體,信任的類型也不盡相同。
為了對區塊鏈進行分析,我嘗試將信任分解為以下幾個維度:
- 你需要多少人按照你的預期行事?
- 人數總量多大?
- 人們需要什么動機?他們需要是利他主義者,還是唯利是圖者?他們需要避免協作嗎?
- 如果違反了這些假設,系統會受到多嚴重的影響?
現在,我們先關注前兩點,下面有一個圖表:
綠色越深,表示該模型越健康。讓我們對這幾個種類進行詳細分析:
- 1 of 1:整個系統只有一個參與者。如果這名參與者按照你預期的那樣行事,系統就會 (才會) 正常運行。這就是傳統的 “中心化” 模型,也是我們要超越的模型,
- N of N:“反烏托邦” 世界,系統中的所有參與者都要按照預期行事,系統才能正常運行,如果其中任何人失敗,我們沒有補救措施。
- N/2 of N:這是區塊鏈的運作方式,如果大部分礦工 (或 PoS 驗證者) 是誠實的,區塊鏈就能正常運作。要注意的是,N 值越大,N/2 就越有價值,相比只由少量礦工/驗證者控制的區塊鏈,礦工/驗證者廣泛分布的網路更有意義,盡管如此,由于 51% 攻擊的可能性,我們還是想在這種程度的安全性上更進一步,
- 1 of N:有很多參與者,只要其中至少有一個按照預期行事,系統就能正常運作。任何基于欺詐證明的系統都屬于這一類,信任設置也是如此,盡管在這種情況下 N 值通常較小。請注意,我們確實希望 N 值盡可能大!
- 極少數 of 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” 系統中我們別無他選,
尤其要注意即使是你所運行的軟體,其正確性通常取決于 “極少數 of N” 信任模型,以確保代碼出現漏洞時有人會進行糾查。明白這一點后,努力使應用中其他部分從 “1 of N” 模型切換到 “0 of N” 模型就像是為你家裝上防盜門,但窗戶是打開的,
另一個重要的區別在于,如果你的信任假設被打破,對系統的破壞有多大?在區塊鏈上,最常見的兩種故障類型是活性故障(liveness failure) 和 安全性故障(safety failure)。活性故障就是你暫時無法進行操作(例如,提幣、將交易打包進區塊、讀取鏈上數據)。安全性故障就是出現了系統想要預防的情況(例如,無效塊被添加到區塊鏈上)。
以下列舉了一些區塊鏈 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 系統中任何一個全節點的幫助下自行提款);不存在安全故障風險。
- ZK rollup(輕取款增強型):不存在活性故障風險和安全故障風險,
最后就是“激勵”的問題,要促使參與者遵循預期,你所信任的參與者需要非常利他主義、輕微利他主義,還是說足夠理性?默認情況下,“欺詐證明” (fraud proofs) 需要參與者具有輕微利他主義傾向,但其程度取決于計算的復雜性 (詳見 “驗證者困境” ),并且存在很多方式改進過程,使其更加理性。
如果我們增加一種為服務支付費用的機制,那么幫助他人從 ZK rollup 中提款的行為就是理性的,因此幾乎沒必要擔心無法退出 rollup 的問題,與此同時,如果社區都同意不接受 51% 攻擊下的區塊鏈 (回滾很長的交易歷史或是審查區塊過久),那么其他系統所面臨的風險可以被減輕。
結論:如果有人說某個系統 “依賴于信任機制”,那我們可以刨根問底!他們的意思是 “1 of 1” 模型、“1 of N” 模型還是 “N/2 of N” 模型?該系統需要參與者是利他主義還是理性主義?如果是利他主義,參與者的代價有多大?如果違反了假設,需要等待多久才能取回自己的資金?幾個小時?幾天?還是永遠被凍結?明白這些問題后,我們可能對于是否采用該系統會有截然不同的答案。