區(qū)塊鏈公鏈的創(chuàng)新與升級究竟蘊(yùn)含了什么樣的價(jià)值和意義
公鏈的創(chuàng)新與升級,依舊是區(qū)塊鏈發(fā)展的重中之重。第二層擴(kuò)展方案作為熱點(diǎn)技術(shù)方向,究竟蘊(yùn)含了什么樣的價(jià)值和意義呢?
目前區(qū)塊鏈交易吞吐量有很大的局限性,這主要?dú)w結(jié)于為了安全和保持去中心化,所有節(jié)點(diǎn)都需要處理系統(tǒng)里每一筆交易。
鏈下擴(kuò)展技術(shù)允許相互不信任的用戶群在本地處理交易達(dá)到共識,而不用上鏈達(dá)到全網(wǎng)共識。這項(xiàng)技術(shù)的難關(guān)是建立鏈下狀態(tài)機(jī)機(jī)制,使得當(dāng)當(dāng)?shù)爻霈F(xiàn)爭議的時(shí)候成員可以提供欺詐證據(jù),該爭議也會(huì)在鏈上得到利落的解決。通常,我們稱這些技術(shù)稱之為“第二層擴(kuò)展方案,或者鏈外擴(kuò)展方案”
“鏈外擴(kuò)展方案”的項(xiàng)目早已存在。閃電網(wǎng)絡(luò)無需節(jié)點(diǎn)間的信任,通過支持hashlock和時(shí)間鎖的HTCLs來提供可行的小額支付通道。Plasma以太坊的智能合約上運(yùn)行。這些智能合約扮演著Plasma子鏈的根基的角色。當(dāng)子鏈處理小額支付交易時(shí),子鏈的根基保障了交易安全性和最終性。Counterfactual引進(jìn)了和上述支付通道類似的狀態(tài)通道,除了可以作為支付通道,它還可以擴(kuò)展其他鏈上需要狀態(tài)的功能。
智能合約在JURA網(wǎng)絡(luò)中是以FUSUS數(shù)據(jù)的形式存在的。它是由外部賬戶或者另一個(gè)智能合約初始化的,由賬戶里的代碼控制。它有可以反映狀態(tài)的儲(chǔ)存空間。接收交易與信息在FUSUS數(shù)據(jù)中構(gòu)成DAG。 當(dāng)交易需要整理結(jié)算的時(shí)候,相應(yīng)的發(fā)送交易或者消息由代碼自動(dòng)生成。這和外部賬戶通過給自己發(fā)送交易結(jié)算很像。每一單發(fā)送交易(消息)的時(shí)候都需要計(jì)算最新的狀態(tài)。
發(fā)送交易在FUSUS數(shù)據(jù)中構(gòu)成了一條發(fā)送鏈。通過兩筆發(fā)送之間的接受交易(消息),在下次發(fā)送交易的時(shí)候,你可以知道新狀態(tài)的和相應(yīng)的轉(zhuǎn)換。 關(guān)于狀態(tài)轉(zhuǎn)換的Merkel 證明會(huì)在每次發(fā)送交易時(shí)候生成。
第二層解決方案不會(huì)提交每次的狀態(tài)轉(zhuǎn)移給鏈上全球賬本,因此需要設(shè)計(jì)一種支持多參與者的智能合約,該智能合約支持當(dāng)鏈下出現(xiàn)爭議時(shí)提交狀態(tài)來與主鏈交流,這種智能合約可以通過其他去中心化項(xiàng)目的智能合約繼承,初始的時(shí)候移進(jìn)合約定金,初始化交易狀態(tài),并確定狀態(tài)機(jī)的計(jì)算方式。我們稱這種合約叫第二層智能合約。
為了創(chuàng)造一個(gè)多參與者鏈外狀態(tài)通道,我們需要啟動(dòng)帶有一定定金的第二層智能合約。然后參與者就可以在里面活動(dòng):進(jìn)行交易,下棋,買保險(xiǎn)等。
參與者通過發(fā)送交易或者信息接收進(jìn)行互動(dòng)。 FUSUS智能合約把每一次互動(dòng)記錄為接受交易。如果這些交易(消息)順序并不重要,如屬于不同的參與者或者交易相互獨(dú)立。 那么這些交易將構(gòu)成DAG,這將增加交易或信息的吞吐量。 但在每次FUSUS得到有依存關(guān)系的交易時(shí),它會(huì)生成一條相應(yīng)的發(fā)送信息以便狀態(tài)轉(zhuǎn)換,交易間順序自然而然地進(jìn)行了組織。
在第二層智能合約中,我們把兩個(gè)連續(xù)的發(fā)送交易之間的交易行為稱為互動(dòng)回合。 每一次互動(dòng)回合的狀態(tài)轉(zhuǎn)變和必須讓所有相關(guān)的參與者簽名。
FUSUS賬戶的發(fā)送交易指令下達(dá)之后,將進(jìn)行狀態(tài)轉(zhuǎn)移。當(dāng)?shù)诙又悄芎霞s處理鏈外狀態(tài)轉(zhuǎn)換時(shí),相關(guān)用戶必須認(rèn)可當(dāng)前交易狀態(tài)才能進(jìn)行下一步。智能合約會(huì)在儲(chǔ)存數(shù)據(jù)里儲(chǔ)存利益相關(guān)參與者的狀態(tài)。關(guān)于利益相關(guān)者,只要在互動(dòng)回合中他的狀態(tài)改變就要由所有的利益相關(guān)參與者簽名確認(rèn)。那么下一個(gè)狀態(tài)就要以之前簽過的利益相關(guān)者簽名后的hash作為需要簽名數(shù)據(jù)的一部分,以保證安全和完結(jié)性。
利益相關(guān)者狀態(tài)是鏈下狀態(tài)機(jī)計(jì)算的結(jié)果,鏈下的共識可能會(huì)因?yàn)橛?jì)算環(huán)境不同等達(dá)不到,這也規(guī)定了鏈下只需要利益相關(guān)者狀態(tài)達(dá)到共識即可。
智能合約也保持一個(gè)“總結(jié)狀態(tài)”,這可以解釋為合約總的結(jié)論。如果狀態(tài)通道就是支付通道,那么“總結(jié)狀態(tài)”記錄就是這個(gè)通道所有的余額。“總結(jié)狀態(tài)”允許新的參與者進(jìn)入狀態(tài)通道。因?yàn)镴URA網(wǎng)絡(luò)嚴(yán)格區(qū)分接收交易和發(fā)送交易,當(dāng)有個(gè)新的參與者想加入時(shí),他可以發(fā)送一些token到智能合約上,智能合約會(huì)更新總狀態(tài)并將收到的錢存在總賬戶里。“相關(guān)輸出”也會(huì)加入新參與者的賬戶及其通道余額進(jìn)行更新。
但是對于那些不是只想進(jìn)行一次發(fā)送交易的參與者,我們鼓勵(lì)他們存進(jìn)更多存款,好讓智能合約不用分次上鏈去公布總結(jié)狀態(tài)達(dá)到共識。
在此通道中,“總結(jié)狀態(tài)”必須和所有參與者個(gè)人狀態(tài)的匯總符合。在支付通道中,這意味著每個(gè)參與者在此通道的余額必須加起來等于此通道的總存款。
第二層智能合約可以讓一個(gè)驗(yàn)證人維護(hù),這個(gè)人必須有權(quán)提出該通道鏈下的所有參與者的新狀態(tài)。
參與者離開通道不像進(jìn)來那么容易。參與者在驗(yàn)證人故意阻止交易,或者不想再進(jìn)行鏈下互動(dòng)的情況下會(huì)離開。脫離的程序要求鏈上狀態(tài)更新,脫離的人要在通道上公布狀態(tài)信息,之后他的狀態(tài)就不會(huì)再更新。我們不期待此人可以提供鏈下最新的狀態(tài),因?yàn)殒溝聽顟B(tài)可以非常快。但一旦該人提供merkel證明,需要等其他通道參與者給出反證。如果其他通道參與者提供一個(gè)想離開參與者簽署的更新的自己的狀態(tài),證明這個(gè)人不守信,那么這個(gè)人就需要交罰金。我們還有一些在離開狀態(tài)通道時(shí)候不需要提供最新狀態(tài)的案例,我們會(huì)在下一節(jié)詳細(xì)描述。
OP_RETURN操作碼的調(diào)用,可以這樣簡單的理解,將BCH鏈上的交易添加“備注信息”,因?yàn)锽CH鏈上數(shù)據(jù)不可篡改,有時(shí)間戳可以追溯,將Bitcoin Cash的區(qū)塊鏈里的OP_Return數(shù)據(jù)提取出來。
元數(shù)據(jù)存儲(chǔ)在BCH鏈上,合約執(zhí)行在蟲洞客戶端上。這樣分層設(shè)計(jì),可以保證數(shù)據(jù)的安全性,雖然不能保證數(shù)據(jù)回滾也就是雙花,但是雙花成本過高基本上可以忽略不計(jì)。
JURA第二層解決方案可以運(yùn)用到目前對支持智能合約的項(xiàng)目,如以太坊的智能合約和比特幣的“蟲洞”智能合約項(xiàng)目。在這些項(xiàng)目中,任何一個(gè)節(jié)點(diǎn)可以通過智能合約并配合JURA展方案實(shí)現(xiàn)鏈外通道和狀態(tài)通道的轉(zhuǎn)換。
總而言之,無論怎么發(fā)展,整個(gè)區(qū)塊鏈的技術(shù)源頭和代表,都是公鏈。幾乎所有的應(yīng)用場景,也都基于公鏈技術(shù)的發(fā)展而不斷拓展的。2019,公鏈的創(chuàng)新與升級,依舊是區(qū)塊鏈發(fā)展的重中之重。