大多區(qū)塊鏈應(yīng)用最有價值的屬性之一就是“免信任”(trustlessness),即應(yīng)用能夠以預(yù)期的方式保持運行而無需依賴特定參與者以特定形式行事,即使他們將來的相關(guān)利益可能產(chǎn)生變化并使其做出意料之外的舉動。區(qū)塊鏈應(yīng)用從來都不是完全的免信任化,但是某些應(yīng)用確實比其他應(yīng)用的免信任程度更高。如果我們想要朝著信任最小化的目標(biāo)前進(jìn),就需要首先具備辨別信任程度的高低。
首先,我個人對“信任”的簡單定義是:在疫情爆發(fā)前,你走在街上不會因為防止有人突然捅你一刀而刻意跟他人保持兩米的距離,這就是一種信任:一是信任人們很少會失心瘋,二是法制系統(tǒng)的維護(hù)者有很強(qiáng)的動機(jī)約束這種行為。當(dāng)你運行其他人寫的一段代碼時,你信任他們在編寫代碼時是誠實的(無論是出于他們自己的良知或是維持聲譽的經(jīng)濟(jì)利益),或者至少存在足夠多的人對代碼進(jìn)行檢查以找到漏洞。不親自種糧食也是另一種信任,相信會有足夠多的人為了獲取收益耕種糧食并出售給你。你可以信任不同規(guī)模的群體,信任的類型也不盡相同。
為了對區(qū)塊鏈進(jìn)行分析,我嘗試將信任分解為以下幾個維度:
你需要多少人按照你的預(yù)期行事?
人數(shù)總量多大?
人們需要什么動機(jī)?他們需要是利他主義者,還是唯利是圖者?他們需要避免協(xié)作嗎?
如果違反了這些假設(shè),系統(tǒng)會受到多嚴(yán)重的影響?
現(xiàn)在,我們先關(guān)注前兩點,下面有一個圖表:
綠色越深,表示該模型越健康。讓我們對這幾個種類進(jìn)行詳細(xì)分析:
整個系統(tǒng)只有一個參與者。如果這名參與者按照你預(yù)期的那樣行事,系統(tǒng)就會(才會)正常運行。這就是傳統(tǒng)的“中心化”模型,也是我們要超越的模型。
“反烏托邦”世界。系統(tǒng)中的所有參與者都要按照預(yù)期行事,系統(tǒng)才能正常運行,如果其中任何人失敗,我們沒有補救措施。
這是區(qū)塊鏈的運作方式,如果大部分礦工(或PoS驗證者)是誠實的,區(qū)塊鏈就能正常運作。要注意的是,N值越大,N/2就越有價值。相比只由少量礦工/驗證者控制的區(qū)塊鏈,礦工/驗證者廣泛分布的網(wǎng)絡(luò)更有意義。盡管如此,由于51%攻擊的可能性,我們還是想在這種程度的安全性上更進(jìn)一步。
有很多參與者,只要其中至少有一個按照預(yù)期行事,系統(tǒng)就能正常運作。任何基于欺詐證明的系統(tǒng)都屬于這一類,信任設(shè)置也是如此,盡管在這種情況下N值通常較小。請注意,我們確實希望N值盡可能大!
在眾多參與者中,只要有固定數(shù)量的小部分參與者按照預(yù)期行事,系統(tǒng)就能正常運行。數(shù)據(jù)可用性檢查就當(dāng)屬其中。
系統(tǒng)無需依賴外部參與者即可正常運行。親自驗證區(qū)塊就歸為這一類。
盡管除“0 of N”之外的模型都有一定“信任”程度,但是這些模型之間存在巨大差異!相信特定的某個人(或組織)會按照預(yù)期行事,與相信隨便一個人都會按照預(yù)期形式,是完全不同的情況。相比“N/2 of N”和“1 of 1”,“1 of N”與“0 of N”更相似??赡苡腥藭X得“1 of N”模型與“1 of 1”模型很像,因為這兩種模型都依賴一名參與者,但實際上這兩者十分迥異:在“1 of N”系統(tǒng)中,如果該名參與者突然消失或者黑化,大可以重新?lián)Q一個參與者,但在“1 of 1”系統(tǒng)中我們別無他選。
尤其要注意即使是你所運行的軟件,其正確性通常取決于“極少數(shù)of N”信任模型,以確保代碼出現(xiàn)漏洞時有人會進(jìn)行糾查。明白這一點后,努力使應(yīng)用中其他部分從“1 of N”模型切換到“0 of N”模型就像是為你家裝上防盜門,但窗戶是打開的。
另一個重要的區(qū)別在于,如果你的信任假設(shè)被打破,對系統(tǒng)的破壞有多大?在區(qū)塊鏈上,最常見的兩種故障類型是和?;钚怨收暇褪悄銜簳r無法進(jìn)行操作(例如,提幣、將交易打包進(jìn)區(qū)塊、讀取鏈上數(shù)據(jù))。安全性故障就是出現(xiàn)了系統(tǒng)想要預(yù)防的情況(例如,無效塊被添加到區(qū)塊鏈上)。
以下列舉了一些區(qū)塊鏈layer 2協(xié)議所采用的信任模型。我用來指代layer 2系統(tǒng)本身的參與者集合,來指代區(qū)塊鏈底層的參與者。我的假設(shè)是layer 2的社區(qū)總是小于底層區(qū)塊鏈。另外,我使用的“活性故障”一詞特指代幣長時間無法提出的情況。無法使用系統(tǒng)但是能夠幾乎即時提款的情況不算作活性故障。
(Channels,包括狀態(tài)通道、閃電網(wǎng)絡(luò)等):使用“1 of 1”信任模型來確保活性(你的對手方可以暫時凍結(jié)你的資金,不過你可以通過將資金分散在多個通道中減少風(fēng)險),使用“N/2 of big N”模型來確保安全性(有可能在51%攻擊中失去資金)。
(中心化運營者):使用“1 of 1”信任模型來確保活性(運營者可以暫時凍結(jié)你的資金),“N/2 of big N”模型來確保安全性(有可能在51%攻擊中失去資金)。
(半去中心化運營方,如DPOS):使用“N/2 of small N”信任模型來確保活性,“N/2 of big N”模型來確保安全性。
使用“1 of 1”或“N/2 of small N”信任模型來確保活性(取決于運營者的類型),“N/2 of big N”模型來確保安全性。
使用“1 of small N”信任模型來確?;钚?如果運營者未能打包你的交易,你可以提款,如果運營者沒有立即打包你的取款交易,就無法打包更多交易包,你可以在rollup系統(tǒng)中任何一個全節(jié)點的幫助下自行提款);不存在安全故障風(fēng)險。
(輕取款增強(qiáng)型):不存在活性故障風(fēng)險和安全故障風(fēng)險。
最后就是“激勵”的問題。要促使參與者遵循預(yù)期,你所信任的參與者需要非常利他主義、輕微利他主義,還是說足夠理性?默認(rèn)情況下,“欺詐證明”(fraud proofs)需要參與者具有輕微利他主義傾向,但其程度取決于計算的復(fù)雜性(詳見“驗證者困境”),并且存在很多方式改進(jìn)過程,使其更加理性。
如果我們增加一種為服務(wù)支付費用的機(jī)制,那么幫助他人從ZK rollup中提款的行為就是理性的,因此幾乎沒必要擔(dān)心無法退出rollup的問題。與此同時,如果社區(qū)都同意不接受51%攻擊下的區(qū)塊鏈(回滾很長的交易歷史或是審查區(qū)塊過久),那么其他系統(tǒng)所面臨的風(fēng)險可以被減輕。
結(jié)論:如果有人說某個系統(tǒng)“依賴于信任機(jī)制”,那我們可以刨根問底!他們的意思是“1 of 1”模型、“1 of N”模型還是“N/2 of N”模型?該系統(tǒng)需要參與者是利他主義還是理性主義?如果是利他主義,參與者的代價有多大?如果違反了假設(shè),需要等待多久才能取回自己的資金?幾個小時?幾天?還是永遠(yuǎn)被凍結(jié)?明白這些問題后,我們可能對于是否采用該系統(tǒng)會有截然不同的答案。