序言
如果我們仔細(xì)回顧一下今年區(qū)塊鏈技術(shù)的進(jìn)展,就會(huì)發(fā)現(xiàn)各種有新的想法的公鏈團(tuán)隊(duì)越來越少出現(xiàn)了,大家談?wù)撘约瓣P(guān)注的點(diǎn)也都不那么聚焦在公鏈上了。反倒是很多新的 Layer 2 項(xiàng)目在不斷涌現(xiàn),非常活躍。
要知道在這之前,尤其是 2017 年,大家無人不談公鏈,無人不做公鏈,各種 ICO 的項(xiàng)目宛如烈火烹油,火的一塌糊涂。
為什么會(huì)有這樣的思潮轉(zhuǎn)變呢?
這里還是需要提到不可能三角問題
2017 的很多區(qū)塊鏈團(tuán)隊(duì)都是野心勃勃,說要顛覆比特幣,顛覆以太坊,各種區(qū)塊鏈 3.0,甚至是區(qū)塊鏈 4.0。比特幣和以太坊所為人所詬病的 TPS ,也成了區(qū)塊鏈團(tuán)隊(duì)攻擊并且用來給自己 PR 的材料,很多宣稱有百萬 TPS 的項(xiàng)目誕生。
而經(jīng)過一年的發(fā)展,大家發(fā)現(xiàn)要純靠一套算法和共識(shí)來解決區(qū)塊鏈的不可能三角問題是不現(xiàn)實(shí)的,因?yàn)槿绻阋WC系統(tǒng)的去中心化和安全性,每一筆交易必須由網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)進(jìn)行處理,而這樣就注定了它的性能肯定是達(dá)不到我們要求的。
于是大家的關(guān)注點(diǎn)開始轉(zhuǎn)變,越來越多人開始關(guān)注第一層的擴(kuò)容方案。以太坊生態(tài)其實(shí)一直在研究相關(guān)的擴(kuò)容方案,只是大家在做公鏈遇到瓶頸的時(shí)候,很多人才反過來關(guān)注這些東西。
讓每個(gè)節(jié)點(diǎn)做更多的工作量?
公鏈吞吐量的根本限制來自于它不能高于我們對(duì)單個(gè)節(jié)點(diǎn)所要求的交易吞吐量,由此突破的方向我們可以想到,是不是能夠讓每一個(gè)節(jié)點(diǎn)做更多的工作?
我們確實(shí)可以讓每個(gè)節(jié)點(diǎn)做更多的工作,比方說把擴(kuò)大區(qū)塊大小擴(kuò)大四倍,這個(gè)意味著每一個(gè)節(jié)點(diǎn)的工作量是之前的四倍,但是這樣它就提高了加入門檻和犧牲了部分去中心化。
因?yàn)閿U(kuò)容之后,節(jié)點(diǎn)做的工作多了,計(jì)算量也需要擴(kuò)展,這樣會(huì)把一批算力小的機(jī)器給淘汰,會(huì)導(dǎo)致算力變的更中心化。
而且說實(shí)話,這種擴(kuò)容方式對(duì)提升到我們需要的區(qū)塊鏈性能還差的遠(yuǎn)。
那么現(xiàn)在的問題是,我們?cè)趺丛诓辉黾訂蝹€(gè)節(jié)點(diǎn)工作量的情況下做更多有用的事情?
每個(gè)節(jié)點(diǎn)不需要處理每個(gè)操作?
在我們慣常的思維中,每一個(gè)節(jié)點(diǎn)是需要并行處理每一個(gè)交易的,那么如果每一個(gè)節(jié)點(diǎn)不需要處理每一個(gè)操作呢?
設(shè)想一下,網(wǎng)絡(luò)分成了兩個(gè)部分,每個(gè)部分可以半獨(dú)立運(yùn)作。A 部分處理一批交易,B 部分處理一批交易,A 和 B 之間彼此獨(dú)立,目前的交易限制就變成了兩個(gè)節(jié)點(diǎn)同時(shí)處理的交易總量,區(qū)塊鏈的吞吐量是翻倍的。
而如果我們把區(qū)塊鏈分成很多部分,盡可能的細(xì)分,我們就可以成倍的增加區(qū)塊鏈的 Tps。
這就是我們俗稱的分片技術(shù)( Sharding )
區(qū)塊鏈被分成不同的部分,稱為碎片,每個(gè)部分都可以單獨(dú)處理交易,這個(gè)技術(shù)通常被稱為第一層的擴(kuò)展方案,它是在以太坊本身的基礎(chǔ)協(xié)議中實(shí)現(xiàn)的。
分片從設(shè)想上來說是一個(gè)非常棒的想法,但是在技術(shù)實(shí)現(xiàn)上,還是遇到了很多挑戰(zhàn)和問題。
從現(xiàn)有的容量擠出更多有用的業(yè)務(wù)?
我們?nèi)绻麖南喾吹姆较蚩紤],我們并不增加區(qū)塊鏈本身的容量,但是我們用已有的容量做更多的事情呢?
這個(gè)很自然聯(lián)想到的是壓縮計(jì)算。
目前區(qū)塊鏈上絕大多數(shù)的共識(shí)的達(dá)成其實(shí)并不需要經(jīng)過所有節(jié)點(diǎn)的確認(rèn),有些東西只發(fā)生在你我之間,我們兩者之間清楚就好。
那么我們可不可以考慮把這些東西放在鏈外去做,最后底層擔(dān)任一個(gè) Crypto Court 的角色呢?這樣可以兼顧去中心化、安全性和性能。
我覺得是完全可以的,而且我認(rèn)為這個(gè)才是正確的一個(gè)方向
這就是我們接下來要著重講述的「鏈下」技術(shù),它們包括狀態(tài)通道、Plasma、Truebit 等,它們也叫做第二層解決方案,簡稱 Layer 2。
狀態(tài)通道(State Channel)
我們先來談?wù)劆顟B(tài)通道,舉一個(gè)例子方便大家理解。
Alice 和 Bob 一起玩一個(gè)劃拳游戲。
Alice 贏了可以從 Bob 那里得到 1 塊錢,而如果 Alice 輸了需要給 Bob 1 塊錢,反之亦然。
如果這個(gè)游戲是在以太坊主鏈上運(yùn)行,我們通常的方法是 Alice 和 Bob 一起創(chuàng)建一個(gè)智能合約,每當(dāng)劃拳游戲開始的時(shí)候,他們向智能合約發(fā)起一個(gè)交易,當(dāng)其中一個(gè)玩家贏了的時(shí)候,智能合約會(huì)執(zhí)行規(guī)則付給贏家 1 塊錢。
這個(gè)很清晰,也很簡單,但是在以太坊上還是效率太低了。因?yàn)檫@個(gè)只局限 Alice 和 Bob 之間的交易需要整個(gè)以太坊來處理。
而且每次玩家需要操作的時(shí)候,都必須支付 Gas 費(fèi)用,他們必須等待幾個(gè)塊之后才能開始行動(dòng),這個(gè)對(duì)于來玩游戲是很不友好的。
那么我們?cè)谶@里可以不可以設(shè)計(jì)出一種系統(tǒng),盡可能的減少 Alice 和 Bob 在鏈上的操作?
是可以的。
Alice 和 Bob 能在鏈下更新游戲的狀態(tài),同時(shí)有必要可以恢復(fù)到以太坊主鏈的狀態(tài)的這種系統(tǒng),就叫做狀態(tài)通道,它實(shí)現(xiàn)的過程可以概括為以下幾個(gè)步驟。
- 打開狀態(tài)通道
- 質(zhì)押資產(chǎn)
- 建立一個(gè)去中心化的制衡機(jī)制
- 在鏈下發(fā)送交易
- 對(duì)狀態(tài)簽名并發(fā)送
- 雙方確認(rèn)狀態(tài)的改變
- 關(guān)閉狀態(tài)通道
具體的過程如下:
首先,我們?cè)谝蕴簧蟿?chuàng)建一個(gè)智能合約,這個(gè)是一個(gè)類似法官的角色,Alice 和 Bob 為兩個(gè)參與游戲的玩家。
然后 Alice 和 Bob 開始玩游戲。
Alice 創(chuàng)建并簽署了一個(gè)描述她第一次操作的交易,并且把這個(gè)交易發(fā)給了 Bob,Bob 簽了名之后,把簽名版本發(fā)了回去,并且自己保留了一個(gè)副本,然后 Bob 創(chuàng)建并簽署了他第一次操作的交易,把這個(gè)發(fā)送給了 Alice ,Alice 也對(duì)交易進(jìn)行了簽名,再發(fā)回去,并且為自己保留了一個(gè)副本。
每次他們都能更新當(dāng)前的游戲狀態(tài),每個(gè)交易包含一個(gè)聲明,這意味著后面的交易總是能知道每個(gè)操作發(fā)生的順序。
這個(gè)其實(shí)暫時(shí)還沒有任何事情發(fā)生在鏈上,他們只是在網(wǎng)站上互相發(fā)送交易,沒有任何東西傳到區(qū)塊鏈上。但是所有的游戲交易都能發(fā)送到智能合約上,它們都是有效的區(qū)塊鏈交易。
我們可以把這個(gè)看成是兩個(gè)人互相寫在一系列區(qū)塊鏈認(rèn)證的支票,實(shí)際上沒有錢存入銀行或者取出,但每個(gè)人都有一堆可以隨時(shí)存入的支票。
當(dāng) Alice 和 Bob 結(jié)束游戲之后,他們需要向法官提交最終的狀態(tài)來關(guān)閉這個(gè)通道,這樣只付一筆交易的費(fèi)用。
假設(shè)最后劃拳游戲經(jīng)過了很多輪,Alice 合計(jì)贏了 5 局,那么 Bob 要給 Alice 5塊錢。法官合約保證這個(gè)最終的狀態(tài)是雙方都簽過名的,經(jīng)過一段時(shí)間挑戰(zhàn)期之后,確保沒有人能夠合法的修改這個(gè)結(jié)果,合約就會(huì)向 Alice 付 5 塊錢。
而需要「挑戰(zhàn)期」的原因是防止玩家作惡。
如果 Bob 發(fā)送給法官的是更早的狀態(tài),沒有發(fā)送最終的真實(shí)狀態(tài),由于法官只是一個(gè)智能合約,它是無法知曉這個(gè)是不是最新的狀態(tài)的,那么 Alice 的資產(chǎn)就會(huì)受到損失。
所以我們有挑戰(zhàn)期,讓 Alice 有向法官合約證明 Bob 游戲狀態(tài)作惡的機(jī)會(huì)。
比方說,如果 Bob 發(fā)送的是更早的狀態(tài),那么 Alice 是保留過這個(gè)狀態(tài)的副本的,她可以把這個(gè)狀態(tài)提交給法官合約。法官合約通過查看聲明就能判斷 Alice 發(fā)送的狀態(tài)是最新的,拒絕 Bob ,并且罰沒掉 Bob 的押金。
再舉個(gè)例子,不是很精確,但是方便大家簡單的理解狀態(tài)通道在做什么。
我們?nèi)ベ€場賭博,都要把現(xiàn)金換成籌碼,而賭場不管你在賭場游戲過程發(fā)生了什么,他們只看你結(jié)束游戲時(shí)候的籌碼。
而每一次游戲結(jié)束你都可以離開賭場,你可以把你當(dāng)時(shí)你的籌碼給到賭場官方,他們會(huì)把相應(yīng)的籌碼兌換成現(xiàn)金給你。
就好比我們?cè)跔顟B(tài)通道進(jìn)行的交易是可以即使終結(jié)的
中間有很多不一樣的東西,例如在賭場是你一個(gè)人在執(zhí)行,而狀態(tài)通道需要兩個(gè)人甚至是多人等等,而且中間有很多博弈過程,我們不做詳細(xì)比較,我只是想通過這個(gè)例子給大家描述清楚狀態(tài)通道大致在做什么。
而通過描述過程,我們可以發(fā)現(xiàn)狀態(tài)通道有以下幾個(gè)特點(diǎn)。
優(yōu)點(diǎn)
- 狀態(tài)通道具有良好的隱私性
不管在狀態(tài)通道上發(fā)生了多少的瞬時(shí)交易,這些交易都是在通道內(nèi)部發(fā)生的,并沒有廣播和記錄在鏈上,其他人不會(huì)知道,所以具有非常好的隱私性。
- 即時(shí)終結(jié)性
只要狀態(tài)雙方都簽署了狀態(tài)更新,這個(gè)狀態(tài)就可以被認(rèn)為是最終狀態(tài),大家可以隨時(shí)退出。
- 適合長時(shí)間多狀態(tài)更新
狀態(tài)通道特別適合那些需要長時(shí)間里交換許多狀態(tài)更新的參與者,因?yàn)樵诓渴鸷霞s的時(shí)候,創(chuàng)建的狀態(tài)通道有一個(gè)初始成本,而一旦部署完畢,狀態(tài)通道的邊際成本就接近于零。
缺點(diǎn)
- 每打開和關(guān)閉一個(gè)狀態(tài)通道都需要一個(gè)鏈上交易
打開狀態(tài)通道如果只給發(fā) 1 筆交易,這樣會(huì)很不合算,因?yàn)檫€需要在鏈上做其他的兩筆交易,它不適合低頻操作。
- 狀態(tài)通道的參與者要保持隨時(shí)在線
由于挑戰(zhàn)期的存在,狀態(tài)通道的參與者需要一直在線,如果不在線,資產(chǎn)就有可能損失掉,我們平常用 imToken 做轉(zhuǎn)賬,等待幾個(gè)區(qū)塊的確認(rèn)就好了,需要一直在線對(duì)于參與者來說確實(shí)是一件很不友好的事情。
- 比較適合具有一組確定參與者的應(yīng)用程序
因?yàn)闋顟B(tài)通道的法官合約始終需要知道作為通道的一部分的實(shí)體(地址),當(dāng)我們需要添加和刪除成員的時(shí)候,每次都需要更改合約,重新建一條通道,這個(gè)也是很麻煩的一個(gè)點(diǎn)。
接下來我們講講通過狀態(tài)通道實(shí)現(xiàn)的項(xiàng)目,幫助大家來理解其應(yīng)用。
閃電網(wǎng)絡(luò)( Lighting network )
這個(gè)是比特幣網(wǎng)絡(luò)的微支付通道,已經(jīng)做了很多年了,但是由于比特幣本身對(duì)于腳本和智能合約的支持非常的差,它的解鎖和鎖定的流程設(shè)計(jì)的非常的復(fù)雜,所以這個(gè)項(xiàng)目一直發(fā)展很緩慢。
雷電網(wǎng)絡(luò)( Radien Network )
這個(gè)是以太坊上的微支付通道,叫做雷電網(wǎng)絡(luò),和閃電網(wǎng)絡(luò)類似。由于以太坊支持智能合約,所以它比閃電網(wǎng)絡(luò)要簡單很多,發(fā)展也快很多。
雷電網(wǎng)絡(luò)借鑒了閃電網(wǎng)絡(luò)的技術(shù)理念,關(guān)鍵技術(shù)也和閃電網(wǎng)絡(luò)一致,包括 RSMC、HTLC 等技術(shù)。
它們出眾的地方在于,你不必與每個(gè)想要與之交易的特定人員都開通一個(gè)狀態(tài)通道,你可以打開一個(gè)連接著更大的狀態(tài)通道網(wǎng)絡(luò)的通道,這樣的話你可以向任何連接在這個(gè)狀態(tài)通道網(wǎng)絡(luò)上的人付款,并且不需與額外的費(fèi)用。
參與者越多,網(wǎng)絡(luò)處理轉(zhuǎn)賬能力越高。但是在網(wǎng)絡(luò)建立初期,由于支付通道很少,所以需要有人多主動(dòng)建立中介點(diǎn),才能讓整個(gè)網(wǎng)絡(luò)更有價(jià)值。
Sprites
它引入了經(jīng)濟(jì)模型,給保持狀態(tài)通道的用戶提供經(jīng)濟(jì)激勵(lì),以使他們能夠保持狀態(tài)通道。
A 和 B 交易、B 和 C 交易時(shí)需要?jiǎng)?chuàng)立狀態(tài)通道,它們交易完之后都會(huì)把狀態(tài)通道關(guān)掉,而當(dāng)下次 A 和 C 需要交易的時(shí)候,還需要另外建立狀態(tài)通道。
如果我們能通過經(jīng)濟(jì)激勵(lì)的模式把 A 和 B、B 和 C 之間的狀態(tài)通道給保持住,那么下次 A 和 C 交易,就可以以 A 和 B、B 和 C 的狀態(tài)通道作為跳板,進(jìn)項(xiàng)交互。那么它們就不需要再建了。
這就是 Sprites 在做的事情 ,提供了經(jīng)濟(jì)激勵(lì)鼓勵(lì)大家維護(hù)狀態(tài)通道,讓其能夠幫別人去做交互。
Counterfactual
它做的事情是 Generalize State Channel。
我們之前提的都是 Payment 的狀態(tài)通道,如果是一個(gè)基于游戲的狀態(tài)通道,像下五子棋、卡牌,它的退出的時(shí)候,法官的智能合約相對(duì)會(huì)寫的很復(fù)雜,工程實(shí)現(xiàn)方面更難。
而 Counterfactual 做的就是把法官這一層給 Generalize 了,只要你做完一次狀態(tài)通道的 Open,它就可以適應(yīng)于各種應(yīng)用,各種退出的方式。它抽象化了狀態(tài)通道的打開和退出機(jī)制,通過通用模塊化的實(shí)現(xiàn),允許大家更方便的使用狀態(tài)通道。
Liquidity Network
Liquidity Network 旨在解決以太坊支付速度的問題,它相對(duì)于閃電網(wǎng)絡(luò)和雷電網(wǎng)絡(luò)做了很多優(yōu)化。
雷電網(wǎng)絡(luò)是兩方之間的一個(gè)單向通道交易。而 Liquidity Network 采用了 Hub 的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),用戶可以加入到任意一個(gè) Hub 中,通過 Hub 與其它用戶進(jìn)行交易和支付轉(zhuǎn)賬,實(shí)現(xiàn)了多方之間的雙向通道交易。
在之前的狀態(tài)方案當(dāng)中,如果 A 要發(fā)給 C,他們之間沒有建立通道,但 A 和B、B 和 C 都有建立通道,那 A 可以付費(fèi)給 B 來「借道」完成與 C 的交易,如果中間環(huán)節(jié)過多的話,“借道費(fèi)”都也是一筆不小的開支。而由于 Liquidity Network 采用了 Hub 的結(jié)構(gòu),所以 A 如果要發(fā)給 C,就不再需要通過 B 了,也就不存在「借道費(fèi)」的概念了。
而且在 Liquidity 里面,利用 REVIVE 的押金再平衡算法,解決了雷電網(wǎng)絡(luò)通道之間資金獨(dú)立,不能自動(dòng)平衡的問題。
比方說在雷電網(wǎng)絡(luò)中,如果 A 給 B 發(fā)交易,然后 B 給 C 發(fā)交易,假設(shè) B 的余額是 0,那么 A 發(fā)給 B 之后,B 不能直接發(fā)交易給 C,它必須跟 C 建立支付通道,并且充值足夠的錢(大于交易金額),才能和 C 交易,顯得很麻煩。
而 Liquidity 通過 REVIVE 技術(shù)可以直接讓 B 和 A 交易完之后,立即和 C 交易 ,大大增加了交易的效率。
FunFair
FunFair 是一個(gè)由以太坊智能合約支持的去中心化游戲平臺(tái),其通過一對(duì)一的狀態(tài)通道( Fate Channel )建立了一個(gè) P2P 的賭場,旨在實(shí)現(xiàn)在線區(qū)塊鏈博弈的公平公正,解決「賭場」游戲高費(fèi)用和低信任度的問題。
SpankChain
SpankChain 是一個(gè)基于以太坊的,成人娛樂平臺(tái),其現(xiàn)有產(chǎn)品包括 Vynos,一種點(diǎn)對(duì)點(diǎn)微支付處理錢包,它已經(jīng)為成人參與者建立了單向支付通道( 其 ICO 的時(shí)候使用的就是狀態(tài)通道)
Plasma
Plasma 是一個(gè)鏈下交易的技術(shù),由 Vitalik Buterin 和 Joseph Poon 在2017 年 提出,它相當(dāng)于貢獻(xiàn)了一條子鏈,可以讓你在主鏈上質(zhì)押資產(chǎn),然后在子鏈上產(chǎn)生資產(chǎn),而且它提供一個(gè)服務(wù)器,不需要點(diǎn)對(duì)點(diǎn)的交互,在服務(wù)器上就可以進(jìn)行交互。
Plasma 子鏈可以更快地操作,且交易費(fèi)用更低,因?yàn)樗牟僮鞑恍枰谡麄€(gè)以太坊區(qū)塊鏈存留副本
它的基本流程和狀態(tài)流程也比較相似。
主鏈上抵押資產(chǎn)
在子鏈上交易
提現(xiàn)退出
不過狀態(tài)通道更多的是針對(duì)你想交易的那幾個(gè)點(diǎn),是兩個(gè)人之間的交互,而它想要在一個(gè)大的庫里面進(jìn)行復(fù)雜的操作是一個(gè)很困難的事情。而 Plasma 可以在子鏈上進(jìn)行各種形式的交易,調(diào)動(dòng)智能合約,轉(zhuǎn)賬給多個(gè)人等等,非常靈活,不像 State Channel 一樣,只有打開通道的人能用,任何人都可以隨時(shí)進(jìn)來。
Plasma 是一個(gè)大的框架,細(xì)分有好幾種不同的實(shí)現(xiàn)方式。
首先,讓我來詳細(xì)介紹一下整個(gè)過程,來幫助你理解 Plasma 的整個(gè)框架,如下圖所示。

我們?cè)谝蕴簧蟿?chuàng)建一套智能合約,作為 Plasma 的 Root Chain,而 Root Chain 包含了子鏈的狀態(tài)交易規(guī)則,記錄子鏈的哈希值,并且其作為一個(gè)橋梁,讓用戶在以太坊主鏈和子鏈之間轉(zhuǎn)移資產(chǎn)。
然后我們創(chuàng)建子鏈,子鏈可以擁有它們自己的共識(shí)算法,假設(shè)這里我們使用 POA ( Proof of authority )共識(shí)機(jī)制。
這個(gè)是一個(gè)依賴可信區(qū)塊生產(chǎn)者的共識(shí)機(jī)制,每個(gè)驗(yàn)證者都必須都是通過身份驗(yàn)證的可信人,打個(gè)簡單的比方,以前交易需要一群互不認(rèn)識(shí)的人來比拼算力,艱難計(jì)算一道復(fù)雜的數(shù)學(xué)題,但是現(xiàn)在我們有一個(gè)可信的人做擔(dān)保,所以便可以快速通過交易,要是這個(gè)人使壞,其他的人可以把他踢出網(wǎng)絡(luò)。
假設(shè)游戲公司是唯一一個(gè)創(chuàng)建區(qū)塊的實(shí)體,這個(gè)實(shí)體運(yùn)行著幾個(gè)節(jié)點(diǎn),而這些節(jié)點(diǎn)被當(dāng)作子鏈的塊生產(chǎn)者。
而子鏈一旦創(chuàng)建開始工作,塊生產(chǎn)者將定期向根合同做出聲明,這個(gè)將被記錄在 Plasma 的鏈上,作為子鏈發(fā)生計(jì)算的證據(jù)。
而用戶要玩游戲的時(shí)候,他們得先在主鏈上抵押資產(chǎn)獲得在子鏈上的資產(chǎn),然后在子鏈上交互。
因?yàn)椴恍枰c主鏈交互,而且只有少數(shù)幾個(gè)節(jié)點(diǎn)必須處理交易,所以交易費(fèi)會(huì)很低,而且操作會(huì)很快。
我們結(jié)束游戲之后,可以選擇提現(xiàn)退出。
下面我將通過幾個(gè)問題,幫你更加深入理解 Plasma 的細(xì)節(jié),包括周期性提交和安全退出機(jī)制。
當(dāng)你在子鏈上宣布要退出,你有 100 個(gè)以太要提現(xiàn)時(shí),由于主鏈不一定知道子鏈的情況,它是不能相信你擁有這筆資產(chǎn)的。
此時(shí)你就得提交證明,像默克爾樹證明,而默克爾樹證明是要證明到一個(gè)默克爾樹的根哈希的,你也得證明你上傳的根哈希是真實(shí)的。
這個(gè)就要求 Plasma 的子鏈周期性的把它的狀態(tài)(默克爾數(shù)的根哈希) Commit 到主鏈上,讓主鏈清楚子鏈根哈希的狀態(tài)。這就是周期性提交
不過這樣會(huì)存在問題
如果記賬節(jié)點(diǎn)放出來的信息是假的呢,他提交的根哈希和這條鏈實(shí)際產(chǎn)生的根哈希是不對(duì)應(yīng)的,因?yàn)橹麈溒鋵?shí)也不清楚,這個(gè)時(shí)候怎么辦?
我們就需要提供一個(gè)數(shù)學(xué)證明,證明它在同一個(gè)區(qū)塊高度簽名的數(shù)據(jù)都是一樣的,比方說 Validator 如果在這個(gè)區(qū)塊高度發(fā)出的信息是 A ,而 Commit 到主鏈上的區(qū)塊信息是 B ,我能通過這種數(shù)學(xué)形式發(fā)現(xiàn)記賬節(jié)點(diǎn)是作惡了的,這樣就可以罰沒它主鏈上的押金。
但是如果子鏈壓根就不公布區(qū)塊信息,這樣就沒有作惡證明提交到主鏈上,這個(gè)時(shí)候怎么辦?
這個(gè)時(shí)候 Plasma 提供了一種 Safe Exit 的機(jī)制。
每一個(gè)在子鏈上的節(jié)點(diǎn),如果意識(shí)到子鏈有可能作惡,而且他自己沒辦法證明子鏈作惡的時(shí)候,這個(gè)機(jī)制能夠允許參與者退出。參與者提交他最后的一個(gè)的可信證明,有多少余額,就把這個(gè)余額提現(xiàn)到主鏈上,保證資金的安全
這個(gè)是 Plasma 的核心理念,Plasma 不會(huì)為了速度犧牲安全。你可以在子鏈上自由交易,并且在子鏈作惡之前,把幣提走。
MVP ( MInimal Viable Plasma )
這個(gè)是 Plasma 最早的實(shí)現(xiàn),它采了取一條 UTXO-Based 的鏈作為子鏈,由于它需要子鏈不是概率確認(rèn)的鏈,所以它一般采用的是 PoA 共識(shí)算法(或者 BFT)
所有的 Plasma 的核心都是在退出和挑戰(zhàn)的機(jī)制上,我們這里也著重強(qiáng)調(diào)一下它的退出和挑戰(zhàn)機(jī)制。。

我們從圖可以很清楚的看到,用戶在主鏈上抵押了 Fungible Token 之后,在子鏈上獲得了未花費(fèi)的 UTXO。
假設(shè)這個(gè)用戶花費(fèi)掉了這筆 UTXO,分成了四筆輸出,然后決定要退出,要把這個(gè)錢提交到主鏈上,發(fā)起了一個(gè) Start Exit。 同時(shí)他提交我擁有這個(gè) UTXO 的證明,這個(gè)證明在默克爾樹的根哈希中,這個(gè)是由記賬節(jié)點(diǎn)定期的 Commit 到主鏈上的。這兩個(gè)數(shù)值就可以證明這個(gè)用戶擁有這個(gè) UTXO。
但是這樣就需要一個(gè) Challenge 的過程,因?yàn)橛脩籼峤坏淖C明只能保證他在當(dāng)前的區(qū)塊是擁有這個(gè) UTXO 的,它并不能保證用戶之后不會(huì)花費(fèi)這個(gè) UTXO。
所以這里有一個(gè)比較長的挑戰(zhàn)期( Challenge Period),即一定的出塊時(shí)間,讓別人去提交他作惡的證明 。
假設(shè)用戶在發(fā)起提現(xiàn)之后又給一個(gè)人轉(zhuǎn)了一筆賬,那么挑戰(zhàn)者是可以將這個(gè)轉(zhuǎn)賬交易記錄和這個(gè)默克爾樹哈希發(fā)送到主鏈上來證明用戶 Exit 是無效的,以此來罰沒用戶在主鏈上的押金,這個(gè)時(shí)候挑戰(zhàn)者就可以拿到這筆押金。
這里我們細(xì)化談?wù)勊淖鲪汉屯顺鰴C(jī)制。
如果現(xiàn)在有一個(gè)密碼學(xué)證明,證明這個(gè)東西屬于張三。因?yàn)檫@個(gè)交易打包在區(qū)塊里,這個(gè)區(qū)塊的默克爾樹哈希放在這個(gè)主鏈上。
但是如果一條線都是作惡的,出塊節(jié)點(diǎn)是作惡的,出塊節(jié)點(diǎn)做一個(gè)假的交易,做了一個(gè)假的區(qū)塊和一個(gè)假的默克爾樹哈希,放到了根鏈上,這個(gè)時(shí)候根鏈實(shí)際是無法判斷的,如果我不把這個(gè)區(qū)塊公布出來,它是不知道我作惡的證據(jù)的。
這個(gè)時(shí)候用戶如果需要退出,怎么才能保證用戶能夠正常退出呢?
假設(shè)我作為一個(gè)作惡節(jié)點(diǎn),知道你們要退出,我可以先生成一批金額特別大的交易,優(yōu)先你們退出,假設(shè)你要提現(xiàn) 100 個(gè)以太,我就可以偽造一個(gè) 101 以太的提現(xiàn)交易,這個(gè)等于說拿著你的錢就跑了。
因此 MVP 設(shè)置了一個(gè)優(yōu)先級(jí)的設(shè)計(jì)。每一筆進(jìn)入 Plasma 的交易都會(huì)有一個(gè)優(yōu)先的序號(hào),高位是區(qū)塊高度,然后是交易在區(qū)塊里面的次序和這個(gè) Output UTXO 在這個(gè)交易中的次序。這樣就形成了一個(gè)全局唯一的序號(hào),所有人按照這個(gè)序號(hào)退出。
如果某一個(gè)時(shí)刻大家開始發(fā)現(xiàn)節(jié)點(diǎn)開始作惡,要退出,一定是早期交易的區(qū)塊先退出,后期作惡的區(qū)塊后退出,我作惡區(qū)塊的意義不大。
但是這里還有一種作惡的方法。
如果誠實(shí)的交易被礦工打包到了作惡交易的后面,因?yàn)榈V工是可以選擇打包次序的。在這個(gè)錯(cuò)誤的塊里面,誠實(shí)的交易打包到錯(cuò)誤的交易后面,導(dǎo)致誠實(shí)交易的退出優(yōu)先級(jí)低于作惡交易的優(yōu)先級(jí)。
1 個(gè)大戶把 1000 個(gè)以太打入到 Plasma 鏈上,作惡礦工在存入的這個(gè)區(qū)塊里優(yōu)先造了一個(gè)假交易,然后放到區(qū)塊里面,先把 1000個(gè) 以太提走了,大戶是沒有辦法的
這里的解決辦法是對(duì)每個(gè)存款( Deposit )都做二次確認(rèn),第一次是存進(jìn)去,確認(rèn)這筆交易被打包在 Plasma 的區(qū)塊里,第二次是在用戶把幣存進(jìn)去,確認(rèn)存進(jìn)去的區(qū)塊以及之前的區(qū)塊都是真實(shí)、合法的情況下,再發(fā)一筆交易,去確認(rèn)這個(gè)交易是正確的。
在做了兩次確認(rèn),證明交易都是真實(shí)之后,用戶再去退出就能夠安全退出了。
More Viable PlasmA
不過 MVP 每一筆存儲(chǔ)交易多了一次簽名之后,對(duì)系統(tǒng)來說還是開銷很大的,所以有人提出了 More Viable Plasma。
它退出的次序不是以打包的次序?yàn)闇?zhǔn),而是以退出的時(shí)候提交的 UTXO 的證據(jù),UTXO 輸入最早的一個(gè) Input( Input 可能有四五個(gè)),哪個(gè)早就哪個(gè)先退出。
這個(gè)的好處在于,早的 Input 一定是已經(jīng)被打包到交易區(qū)塊里面了,如果這個(gè) Input 是假的,那么在 Input 發(fā)生的那一刻就已經(jīng)有人開始做退出了,這個(gè)是不可能的。
因此這個(gè)時(shí)候我可以假設(shè)這個(gè) Input 是真實(shí)的,越早的 Input 它的真實(shí)性就越高,我退出的時(shí)候就按照 Youngest 的 Input 退出,它的保障性最高, 這個(gè)是 More VP。
Plasma Cash
Plasma 還有一個(gè)實(shí)現(xiàn)叫做 Plasma Cash。
MVP 的缺點(diǎn)是,每一個(gè)人,不光是礦工,都要時(shí)刻緊盯著這條鏈,如果有人作惡,就趕緊退出。
而且一旦出現(xiàn)問題,退出還需要提供相應(yīng)的數(shù)學(xué)證明。數(shù)學(xué)證明還得從本地同步的區(qū)塊中獲取,因?yàn)閯e人同步的可能都是假的,這就要求你還要同步區(qū)塊。
這一系列的過程對(duì)用戶是很不友好的。
這個(gè)時(shí)候有人就提出了 Plasma Cash,它最大的特點(diǎn)是用戶只需要關(guān)注自己的數(shù)據(jù)就好了。
它采用的是 Non-Fungible Token 的存儲(chǔ)機(jī)制,它的 Deposit 進(jìn)來之后是不分割的,每一筆存款,比方說 1號(hào)是 10 個(gè)以太,2 號(hào)是一只貓,它們被打包成一個(gè) Non-Fungible Token 放進(jìn)來,系統(tǒng)給每一個(gè)打包的包裹一個(gè)序號(hào),如圖所示,這個(gè)系統(tǒng)現(xiàn)在是有八個(gè)存款,每一個(gè)存款都是一個(gè)包裹。

假設(shè)三號(hào)包裹原來的持有人是 A,他把這個(gè)包裹轉(zhuǎn)給了 B,在這個(gè)區(qū)塊里,它就包含了一個(gè) A 到 B 的交易來指向三號(hào)包裹,六號(hào)包裹是 D 到 B,把所有權(quán)轉(zhuǎn)向了 B,剩下的包裹沒有動(dòng)作。
而用戶只需要關(guān)心和自己有關(guān)的數(shù)據(jù),像圖中的 A ,他只需要關(guān)注 3 號(hào)和 5 號(hào)包裹,不需要關(guān)注其他人,因?yàn)樗腥说腻X是自成體系的,不是像 Fungible Token 捆在一起的,所以像 6、7、8 該退就退,因?yàn)椴皇?A 的東西。
不過這里有一個(gè)問題,比如說 Bob 擁有 7 號(hào)包裹,要轉(zhuǎn)給 A,但是由于 A之前沒有和 7 號(hào)包裹交易,他只關(guān)注自己,他是不了解 7 的歷史的,所以Bob 給 A 轉(zhuǎn)賬的時(shí)候其實(shí) A 是不確定對(duì)方是否擁有 7 號(hào)包裹的所有權(quán)的。
而 Bob 要證明擁有 7 號(hào)包裹的所有權(quán),就必須把 7 號(hào)資產(chǎn)從創(chuàng)生到現(xiàn)在所有的資產(chǎn)、每一個(gè)默克爾樹和默克爾樹哈希都給 A,來證明這個(gè)塊是真實(shí)屬于 Bob 的。
所以 Plasma Cash 轉(zhuǎn)賬的時(shí)候數(shù)據(jù)量是很大的。
Plasma Cash 要求退出的時(shí)候,需要把最后關(guān)于這個(gè) Token 的兩筆交易上傳,比方說 A 轉(zhuǎn)給 B,B轉(zhuǎn)給 G,而G要退出,那么 G 就把這兩筆交易提交到子鏈上退出,退出其實(shí)不復(fù)雜,復(fù)雜的是 Challenge,其 Challenge 主要有三種。
- 假設(shè) A 退出之后又花費(fèi)了資產(chǎn)
A 提出申請(qǐng)之后又把這個(gè)錢轉(zhuǎn)給了別人,這個(gè)時(shí)候 Challenger 可以把這個(gè)這個(gè)交易提交給主鏈,讓 A 退出失敗
- 雙花交易
A 和礦工串通同時(shí)轉(zhuǎn)給 G 和 F,Challenger 可以采取和 1 相同的方式,讓 A 失敗。
- 歷史的證明
因?yàn)橥顺龅臅r(shí)候只提供最后的兩筆交易,而它們可能都是假的,這個(gè)時(shí)候 Challenger 可以任意指定一個(gè)塊,要求對(duì)方證明是怎么到這個(gè)狀態(tài)的,以保證系統(tǒng)安全性。
Plasma Cash 的挑戰(zhàn)很復(fù)雜,轉(zhuǎn)賬證明也很復(fù)雜,優(yōu)點(diǎn)是無需關(guān)心別人的狀態(tài),只需要關(guān)心自己。
Plasma Debt
Plasma Debt 和 Plasma Cash 比較像,轉(zhuǎn)賬、證明和挑戰(zhàn)都很類似,其區(qū)別是 Plasma Cash 里每一個(gè)包是一個(gè) Non—Fungible 的資產(chǎn),而在 Debt 里每一個(gè)包是一個(gè)狀態(tài)通道,這意味著和狀態(tài)通道的交互可以不按整個(gè)包來交互。
比如說我有 100 個(gè)以太,在 Plasma Cash 中,這 100 個(gè)以太我只能一起轉(zhuǎn)給張三或者一起轉(zhuǎn)給李四,但是在 Debt 里面,這100個(gè)以太,我可以轉(zhuǎn)一部分給張三,轉(zhuǎn)一部分給李四,不用全轉(zhuǎn)。
每一個(gè) Token 都是使用者和 Plasma 鏈的運(yùn)營者的一個(gè)小型狀態(tài)通道,這個(gè)狀態(tài)通道也可以按照 Plasma Cash 的方式進(jìn)行流轉(zhuǎn),這樣可以讓用戶可以不需要把資產(chǎn)當(dāng)成 Non-Fungible Token,還可以進(jìn)行比較高效的運(yùn)轉(zhuǎn)。
不過狀態(tài)通道按照 Cash 方式進(jìn)行流轉(zhuǎn)還是會(huì)和 Cash 面臨一樣的問題,轉(zhuǎn)賬證明很復(fù)雜,因?yàn)樗琅f需要所有的歷史交易。
Plasma Leap
Plasma Leap 是在 MVP 的基礎(chǔ)上做的,MVP 是一個(gè)類似比特幣的一個(gè) UXTO 鏈,在比特幣里面是有一個(gè)解鎖腳本來做智能合約的,Plasma Leap 就把這種類似比特幣的智能合約的理念帶到了 Plasma 里,引入了 P2SH 加鎖腳本,對(duì)于存儲(chǔ)結(jié)構(gòu)進(jìn)行了提升。
在每一個(gè)交易里面是可以加一個(gè) EVM 的二進(jìn)制代碼作解鎖腳本的,這個(gè)代碼是對(duì)應(yīng)一個(gè)智能合約,由智能合約來進(jìn)行解鎖。
不過這個(gè)智能合約不像以太坊上的智能合約,那么完整完善,它做的事情很簡單,就是證明用戶能不能花費(fèi)這個(gè) UTXO,就像比特幣一樣,用戶能不能花費(fèi)它,什么時(shí)候花費(fèi)它,它不能做更復(fù)雜的智能合約。
鏈下計(jì)算( Off Chain Computation )
以太坊聲稱要做計(jì)算機(jī),EOS 要做全球操作系統(tǒng),但無論是做計(jì)算機(jī)還是做操作系統(tǒng)都得正視計(jì)算這個(gè)問題,鏈上計(jì)算的開銷是非常大的,鏈上每一個(gè) EVM 的 Code 計(jì)算需要全球計(jì)算機(jī)都算一遍,才能得出結(jié)果,所以有人做了這么一個(gè)計(jì)算的擴(kuò)展,在鏈外做 Computation。
這個(gè)方式大致有兩種
TEE( Trusted Execution Environment )
第一種是在可信的執(zhí)行的環(huán)境中,把這個(gè)計(jì)算算出來,然后傳到鏈上去,再加上可信環(huán)境的一個(gè)證明。
這個(gè)證明不是計(jì)算結(jié)果的對(duì)和錯(cuò),而是證明這個(gè)計(jì)算是在安全的環(huán)境里運(yùn)行的。
可信的執(zhí)行環(huán)境在工業(yè)界相對(duì)來說還是比較成熟,ARM 芯片是支持 TrustZone 方案的,我們用的蘋果和安卓手機(jī)的指紋,它的秘鑰信息都是存在 TrustZone 里面的。
它的優(yōu)缺點(diǎn)通過介紹其實(shí)也比較清楚了。
s
優(yōu)點(diǎn)
- 隱私性很強(qiáng),因?yàn)樗袞|西都是在黑箱子里面的。
- 性能也非常的高,單個(gè)機(jī)器執(zhí)行即可,因?yàn)槲倚湃蔚牟皇沁@臺(tái)機(jī)器,而是這個(gè) Trust Zone。
- 功能非常的靈活,不像 Plasma 比較單一,它可以做各種各樣的東西甚至是遠(yuǎn)超過 EVM 的東西,因?yàn)?EVM 里面做一些加密運(yùn)算是很難的
缺點(diǎn)
黑箱計(jì)算引入了未知的風(fēng)險(xiǎn)
依賴于硬件限制了它的擴(kuò)展性,因?yàn)椴豢赡苊總€(gè)人都有一個(gè)符合硬件要求的設(shè)備來運(yùn)行這套系統(tǒng)。
系統(tǒng)的安全性是依賴于廠商的,廠商是可以在 Trustware 里面做任何的事情,這個(gè)也引入了風(fēng)險(xiǎn).
所以這種依賴于安全執(zhí)行環(huán)境的 Layer 2 方案一般是由聯(lián)盟鏈或者是企業(yè)內(nèi)部的鏈來使用的。
Truebit
第二種叫 Trurbit,它解決的也是鏈外運(yùn)算的問題,這個(gè)項(xiàng)目很有趣。
這里面有好幾個(gè)角色,包括用戶、Solver 和 Challenger。

第一個(gè)是計(jì)算需求的提出者(用戶),這個(gè)計(jì)算需求是用 Truebit 的 VM 來描述的,在實(shí)際操作的時(shí)候,Truebit 的 VM 是用 Rust 實(shí)現(xiàn)的
用戶可以選擇懸賞的方式找人來幫他做運(yùn)算,運(yùn)算的執(zhí)行人叫做 Solver。
Solver 把每一步的運(yùn)算狀態(tài)都算成一個(gè)哈希折疊到默克爾樹里面,在最后,Solver 把所有運(yùn)算結(jié)果的默克爾樹的根哈希,以及運(yùn)算的最終結(jié)果提交到區(qū)塊鏈上。
而 Challenger 需要自己算一遍生成結(jié)果,如果他發(fā)現(xiàn)算的結(jié)果和 Sovler 算的不一樣,他就能根據(jù)錯(cuò)誤信息找到哪一步或者是哪幾步錯(cuò)了。Challenger 就能把這個(gè)狀態(tài)和狀態(tài)運(yùn)行的指針上傳到區(qū)塊鏈上,挑戰(zhàn)這個(gè) Solver。
因?yàn)?Truebit 在鏈上擁有指令集,而且 State 可以證明它在原來的默克爾樹里面,于是鏈可以計(jì)算這個(gè) State 加指令得到一個(gè)新的 State,通過這個(gè)鏈可以開始判斷,這個(gè) State 是 Solver 生成的 State 還是 Challenger 生成的 State,誰對(duì)誰錯(cuò)。
Truebit 只需要鏈上的一步運(yùn)算,就能夠證明所有運(yùn)算是正確的還是錯(cuò)誤的,它能把普通運(yùn)算折疊成了最關(guān)鍵的計(jì)算,交給主鏈去運(yùn)算,驗(yàn)證。
鏈間通信( Interoperation )
跨鏈通信是一個(gè)跨鏈的技術(shù),它和 Plasma 不一樣,兩條鏈之間沒有特別強(qiáng)的主次關(guān)系,其子鏈和側(cè)鏈仍然有權(quán)利自己產(chǎn)生資產(chǎn),自己運(yùn)行,然后通過某種協(xié)議和主鏈或者其他鏈進(jìn)行跨鏈交互,大家進(jìn)行數(shù)據(jù)互通。
它嚴(yán)格來說不是 Layer 1 的 Layer 2,但是它對(duì)整個(gè)系統(tǒng) Scability 的提升是很有好處的。
接下來我簡單介紹兩個(gè)項(xiàng)目,方便大家來理解。
Cosmos
Cosmos 的系統(tǒng)架構(gòu)如圖所示,它中間有一個(gè) Cosmos Hub,周圍的叫做 Zone,可以認(rèn)為中間是一個(gè)交換鏈,周圍其他是子鏈。

Zone 是用 Tendermint 來做的,采用的是 BFT 共識(shí)以及區(qū)塊鏈框架,它也滿足 Instant Finality(即時(shí)終結(jié)性),如果系統(tǒng)是少于三分之一的作惡節(jié)點(diǎn),它一定是正確的。
它引入了鏈間通訊協(xié)議( Inter-Blockchain Communication ,簡稱 IBC) ,這個(gè)是類似 Plasma 和 State Channel 的一個(gè)協(xié)議。
它的簡單流程如下,A、B鏈都是 Zone。
- 用戶在 A 鏈上鎖了 10 個(gè)幣
- A 鏈10 個(gè)幣被鎖住的密碼學(xué)證明被提交到了 B 鏈上
- 如果被 2/3 的驗(yàn)證者驗(yàn)證通過,則它是有效的。
- B 鏈上將會(huì)產(chǎn)生 10個(gè)幣
而之所以需要 Cosmos Hub 的原因是它能夠把 Zone 相互建立的IBC 的數(shù)量從 N^2 變成 N,不過這個(gè)也是有前提的,即所有的 Zone 必須是 Instant Finality,你給我一個(gè)證據(jù),我就認(rèn)為你的幣就鎖在那里,拿不出來了,它不能是概率確認(rèn)的,不能這里生成,那里又推翻了。
但是由于比特幣和以太坊是概率確認(rèn)的鏈,如果這樣 Cosmos 就連接不到它們上面了,所以它做一個(gè)Peg Zone,這是一個(gè)代理鏈,給概率確認(rèn)的鏈做了一個(gè)代理,這樣 Cosmos 就能和它們交互了。
Polkadot
相對(duì) Cosmos 來說 ,Polkadot 是非常完善的項(xiàng)目,但它的架構(gòu)和 Cosmos 幾乎是一致的。
它的中間叫做 Relay Chain ,是 Cosmos 中 Hub 的角色,周圍的 Para Chain 是 Cosmos 中 Zone 的角色。
Para Chain 用的是 Parity Substrate 這么一個(gè)框架,這個(gè)鏈?zhǔn)腔?BFT 的,所以也是 Instant Finality,而這樣同樣會(huì)遇到連接概率確認(rèn)的區(qū)塊鏈的問題,所以它提了一個(gè) Bridge Chain 這樣的概念,這個(gè)和 Cosmos 的 Peg Zone 是一樣的。
但是 Polkadot 的 Parity Substrate 相對(duì) Cosmos 的 Tendermint 是做的是比較完善的。
Polkadot 的創(chuàng)始人用 Rust 實(shí)現(xiàn)的 VM 以及 BFT 做了一個(gè)升級(jí),增加了隨機(jī)選舉驗(yàn)證節(jié)點(diǎn)的方式加速了共識(shí)協(xié)議,所以它的速度會(huì)非???,而且它部署智能合約以及升級(jí)節(jié)點(diǎn)的能力也很強(qiáng)。而且 Substrate 上引入了相對(duì)其他鏈更完善的治理機(jī)制。
現(xiàn)在我們重點(diǎn)來說說它的安全機(jī)制,這個(gè)是和 Cosmos 區(qū)別非常大的。
它提了一個(gè)概念叫做共享安全池( Shared Pool Security ),在 Polkadot 里面,它的記賬節(jié)點(diǎn)和出塊節(jié)點(diǎn)是混在一起的。
其中有幾個(gè)角色, Collator、Validator、Fisherman 、高階Validator、 Nominator。
其中 Collator 是做區(qū)塊的打包和收集和交易的驗(yàn)證,但是它沒有權(quán)利把這個(gè)區(qū)塊給確認(rèn),即他不能把區(qū)塊寫到區(qū)塊鏈里面,而把區(qū)塊寫到區(qū)塊鏈里是 Validator 來做的。
Collator 是針對(duì)每一條鏈的,每條 Para Chain 都有一組有相對(duì)應(yīng)的 Collator,但是 Validator 是整個(gè)全網(wǎng)公用,是隨機(jī)選出來的。
假設(shè) PareChain 有一組 Collator 生成了一個(gè)區(qū)塊,這個(gè)區(qū)塊由哪些 Validator來驗(yàn)證我們并不清楚,它是隨機(jī)選的,而選出的 Validator 將會(huì)投票看區(qū)塊是否合法,只有合法才能寫到這個(gè)子鏈的區(qū)塊鏈里面。
而 Fisher Man 是用來監(jiān)督 Validator的,那些經(jīng)得起考驗(yàn)的 Validator,可以變成一個(gè)更高階的 Validator,高階的 Validator 可以判斷這個(gè) Fisherman 的監(jiān)督是正確還是錯(cuò)誤,比方說 Fisherman 舉報(bào)這個(gè) Validator 作惡,之后高階 Validator 會(huì)判斷它是不是真的作惡了。
高階 Validator 的選舉需要滿足兩個(gè)要求,一方面 Fisher Man 沒有舉報(bào)過低階 Validator ,另外一方面 Nominator 會(huì)來提名誰能來當(dāng)高階的 Validator,這是一個(gè)互相制衡的結(jié)果。
但是它是怎么制衡,它最新的設(shè)計(jì)里面還沒有公開,它只是大致實(shí)現(xiàn)了這樣的一個(gè)點(diǎn)。
通過以上,我大致介紹了一些 Layer 2 團(tuán)隊(duì)和項(xiàng)目,雖然有的嚴(yán)格意義上來說并不能稱作是 Layer 2,但是我也一并列了出來,方便大家理解。
目前的情況就是,公鏈的創(chuàng)新和熱度已經(jīng)逐漸趨于平緩,各種 Layer 2 的新團(tuán)隊(duì)在不斷地涌現(xiàn),我覺得這也是一個(gè)正確的趨勢,Layer 1 本來就不需做這么多事情,做好去中心化和安全就可以了。
這也是 Nervos 在做的事情,我們認(rèn)為一個(gè)好的 Layer 1 只需要做好 Key State 的存儲(chǔ), Key Computation 以及對(duì) Layer 2 友好就夠了。
像 Turebit 只需要鏈上的一步運(yùn)算就能夠證明所有運(yùn)算是正確還是錯(cuò)誤,和我們認(rèn)為 Layer 1 需要做好的 Key Computation 是非常一致的,而 State Channel 和 Plasma 中所強(qiáng)調(diào)的 State 也和我們的方案很契合。
希望文章對(duì)你有所啟發(fā),以上。