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