區(qū)塊鏈將要帶來320年(以世界第一個央行作參考)或520年(以復試記賬法作參考)一次的社會和金融和大改革, 這是因為區(qū)塊鏈將應用于社會的各層面
區(qū)塊鏈將要帶來320年(以世界第一個央行作參考)或520年(以復試記賬法作參考)一次的社會和金融和大改革, 這是因為區(qū)塊鏈將應用于社會的各層面,從最小到最大,從內到外。區(qū)塊鏈的互聯(lián)網將是一種新的互聯(lián)網:這是以價值為中心的異構網,包括區(qū)塊鏈網絡, 移動5G網, 內容/媒體網絡, 智能交通網絡/車聯(lián)網,物聯(lián)網/工業(yè)物聯(lián)網,智能城市/建筑/家庭網,醫(yī)療互聯(lián)網,智能電網,自動化的工廠網,云網絡,等等。
因此,區(qū)塊鏈的互聯(lián)網將成為真正的下一代互聯(lián)網。那么第二代的互聯(lián)網的結構會是什么樣的?”區(qū)塊鏈互聯(lián)網”(簡稱“鏈網”) 上層需要新的應用協(xié)議,中層需要支持區(qū)塊鏈的新數(shù)據(jù)庫和操作系統(tǒng),底層則需要支持區(qū)塊鏈的新網絡系統(tǒng)。
要構建這個龐大的網絡時,我們首先要考慮常遠的設計目標和配和的設計的原則。原始互聯(lián)網的設計者沒有長遠的規(guī)劃和對未來的清晰愿景,其結果是來自各方面的糟糕表現(xiàn)和麻煩。如今,花在修理互聯(lián)網上的錢比建設新網絡還要多。盡管有許多好處,端到端原則有其許多的缺點。數(shù)據(jù)報架構和IP路由的性能不佳,盡力而為 best effort等于努力不足 poor effort,TCP的不良性能可以提高100-1000倍。
這里主要講使用控制理論來分析區(qū)塊鏈互聯(lián)網??刂评碚撚幸粋€很長的歷史, 在網絡開始的時候,主要是在實踐網絡, 網絡優(yōu)化卻是現(xiàn)在網絡設計的重點工作。本文提到可觀察性, 一個控制理論重要的概念,用這概念分析一些互聯(lián)網,區(qū)塊鏈網絡的協(xié)議。
鏈網的基本屬性
一個鏈網由多個區(qū)塊鏈組成,因此,一個鏈網組成鏈的品質決定鏈網的的品質。為了設計一個好的鏈網,必須保證允許進入鏈網的鏈必須具有良好的品質。而每個鏈的品質取決于該鏈條基本屬性:
性能(Performance):吞吐量,延遲。
安全和隱私性(Security and Privacy)
可擴展性(Scalability)
容錯性(Fault-tolerance)
以上是所有參加的鏈的基本鏈屬性。但是一個鏈網還需要下面的基本鏈網屬性:
互通性(Interoperability):在異構網絡上,每一對不同的鏈都需要有互通的協(xié)議。
可延伸性(Extensibility):鏈網可以無限延伸擴大。
可更改性(Modifiability):被允許的機構和節(jié)點可以隨時的加入、離開,但是區(qū)塊鏈基本架構不改變,鏈網的基本架構也不改變。
可復制性(Duplicability):每個鏈可以很快的復制。如果鏈的復制很慢,鏈網需要很長的時間才能搭建起來,高可復制性可以迅速搭建和修復鏈網
可管理性(Manageability) :鏈網必須能被管理。由于管理機制的存在,鏈網應具有非對稱結構。有些節(jié)點或鏈會比其他的節(jié)點或鏈更加重要,并擁有非對稱的信息,例如監(jiān)管機構、域名服務商、控制節(jié)點等。
一致性(Consistency):每一條鏈都必須有自己的一致性,鏈與鏈之間也要有一致性的協(xié)議。
真實性 (Integrity):鏈網既然是一個價值網絡,其每一項資產就必須具有真實性。每一條鏈與每一條鏈的共識機制及消息的來源與真實性是不一樣的,因此不同的鏈的真實性是不一樣的。
保護鏈網的真實性
在上述鏈網屬性中,真實性尤為重要。低真實性的鏈不可以輸送數(shù)據(jù)到高真實性的鏈,而高真實性的鏈可以輸送數(shù)據(jù)到低真實性的鏈,如果高真實性鏈收了低真實性鏈的數(shù)據(jù),高真實性鏈的數(shù)據(jù)就會被污染 (contaminate)。此外,我們還需要下面保護真實性的六原則:
1. 區(qū)塊鏈比數(shù)據(jù)庫有更高的真實性:因為區(qū)塊鏈有拜占庭將軍協(xié)議以及加密的機制,所以勝過數(shù)據(jù)庫的事物一致性協(xié)議。所以區(qū)塊鏈的真實性勝過于數(shù)據(jù)庫的真實性。2. 拜占庭鏈比數(shù)據(jù)庫一致鏈有更高的真實性:一條鏈如果使用了拜占庭將軍容錯機制,其真實性就勝過另一條使用了數(shù)據(jù)庫事物一致的鏈的真實性。
3. 參與單位的真實性賦于其鏈的其真實性:所以監(jiān)管機構比被監(jiān)管的機構有更高的真實性,比如央行比銀行有更高的真實性,銀行比交易所有更高的真實性。
4. 真實性和節(jié)點數(shù)目、歷史有關:參與投票的節(jié)點越多,真實性會更高。過去有高真實性歷史的鏈網,可能會持續(xù)保持其高真實性。
5. 動態(tài)追蹤鏈的真實性、動態(tài)分類鏈的真實性:每個鏈的真實性應該做動態(tài)追蹤。兩條鏈互通時,可以查閱彼此的真實性。如果高真實性的鏈必須接受低真實性的數(shù)據(jù),低真實性的數(shù)據(jù)必須經過人工或自動驗證,才能夠被收入高真實性鏈中,并且該數(shù)據(jù)可能會被歸類為不真實可靠。
6. 數(shù)據(jù)分類:數(shù)據(jù)來源的真實性應該做分類,例如某個交易所的數(shù)據(jù)來源,可能比另一個交易所的數(shù)據(jù)來源真實性高,因為前者的歷史真實性好。
設計最基要的三屬性
為了確保鏈網和鏈的良好品質,是否有指導我們的設計原則?互聯(lián)網的歷史給了我們很好的教訓。正如之前的文章中所討論的,并非所有互聯(lián)網的設計都是合理的,許多不合理設計造成了低性能和各樣麻煩,這些都需要花費大量資金來改正, 直到今天仍然有一些問題尚未解決。例如,我們了解到網絡內控制比端到端控制更優(yōu)秀,路徑路由(virtual circuit路由)比鏈接路由(IP路由)更優(yōu)秀。
設計原則也與屬性不同。良好的設計原則導致良好的屬性;然而良好的設計原則也代表了良好的屬性。換句話說,屬性有不同的類型,有些屬性比其他屬性更為重要更為基要。我們認為三個最重要的設計原則是實現(xiàn)三個最基要的屬性:可觀察性,可控性,和可結構性。
可觀察性
根據(jù)控制理論,可觀察性是指重建系統(tǒng)完整狀態(tài)的能力。如果一個系統(tǒng)是可觀察的,發(fā)現(xiàn)系統(tǒng)的問題是很容易的。如果所有輸入和外部變量都已知,則系統(tǒng)的未來變化可以完全預測。大多數(shù)ICT系統(tǒng)的問題在于系統(tǒng)是不透明的,使人難以理解系統(tǒng)的真正狀態(tài)。
在計算機科學中,如上所述的可觀察性概念并不存在;最接近的概念是有限狀態(tài)機 (finite-state machine)。大多數(shù)ICT系統(tǒng)都應該用有限狀態(tài)機來設計。 但實際上,許多系統(tǒng)的設計常常缺少或完全沒有做有限狀態(tài)機分析。結果是:因為沒有做好有限狀態(tài)機分析,設計出的系統(tǒng)來得不到卓越的性能。
在許多科技公司里,開發(fā)人員的時間壓力是很大的。太多時侯開發(fā)人員沒有時間做適當?shù)脑O計分析,只能在系統(tǒng)構建后才使用有限狀態(tài)機來分析。結果是系統(tǒng)難以調試,性能差,而工程師也不知道如何提高系統(tǒng)性能。這是一個嚴重的問題,一個明顯的例子是TCP,其設計時沒有考慮所有可能的網絡條件,以致完全分析之后,我們發(fā)現(xiàn)其有限狀態(tài)機有太多奇怪轉換,而且系統(tǒng)過于復雜。如果TCP的原始設計者花足夠時間做有限狀態(tài)機分析,那么TCP今天會非常不同,它的有限狀態(tài)機不會這么復雜,也能有更好的性能。
誠然,有限狀態(tài)機分析工作量可能太大。一種簡化而有效的方法是做充足狀態(tài)規(guī)范 (sufficient state specification)。系統(tǒng)設計團隊應該坐下來問一個關鍵問題:什么是允許工程師去預測系統(tǒng)未來行為的所有必要信息?合宜的充足狀態(tài)規(guī)范具備以下特點:一旦充足狀態(tài)已知,加上已知的外在輸入和變量,系統(tǒng)的未來行為是可預測的。這并不意味著充足狀態(tài)允許我們預測所有未來的系統(tǒng)行為;真正的目的是:它允許我們在輸入和外部變量已知時,能預測所需的系統(tǒng)行為,而不是所有的系統(tǒng)行為。充足狀態(tài)不必非常龐大,它也可以隱藏很大部份系統(tǒng)的內部工作狀態(tài)。
系統(tǒng)充足狀態(tài)
應用充足狀態(tài)概念的一個簡單例子是區(qū)塊鏈的一致性算法。在區(qū)塊鏈系統(tǒng)中,多個節(jié)點各自維護一個區(qū)塊鏈,要保證數(shù)據(jù)在所有節(jié)點的一致性,需要保證每個節(jié)點維護的區(qū)塊鏈是一樣的。當系統(tǒng)中存在拜占庭故障時,節(jié)點中存在“叛徒節(jié)點”,要保證系統(tǒng)在這種情況下保持正常運作,且忠誠的正常節(jié)點的數(shù)據(jù)保持一致。 一種常見的方法是實用拜占庭共識算法拜。圖1顯示一個典型的拜占庭共識算法的時間線:
圖1: 實用拜占庭共識算法的時間線
一個叛徒節(jié)點會更改其收到的消息并將其發(fā)送到其他節(jié)點。檢測叛徒節(jié)點的唯一方法是檢查每一節(jié)點已收到的消息以及同一節(jié)點發(fā)出的轉發(fā)消息。為此,實用拜占庭共識算法事實采用了一種充足狀態(tài),即每個節(jié)點都有每個其他節(jié)點在系統(tǒng)中的廣播消息的操作的副本。
在圖1中,在第一階段(廣播 broadcast block)節(jié)點A向節(jié)點B,C和D廣播消息。在第二階段 (cast vote),每個節(jié)點將投票(1或0)并將其投票發(fā)送到每個其他節(jié)點。在第三階段 (forward vote),每個節(jié)點必須將它收到的所有投票內容發(fā)送給每個其他節(jié)點。在結束時,每個節(jié)點都知道每個其他節(jié)點所收到的每個其他節(jié)點投票內容。如此每個節(jié)點可以通過比較一個節(jié)點投票內容在每個節(jié)點是否一致。例如,節(jié)點A可以比較在節(jié)點A,C, 和D的節(jié)點B的投票內容是否一致。如果在C,A和D收到的B的投票不一致,則節(jié)點A可以確定節(jié)點B是叛徒節(jié)點。
在這種設計中,系統(tǒng)的充足狀態(tài)包括每個節(jié)點接收的每個其他節(jié)點發(fā)送的所有投票內容。因此,拜占庭算法事實上使用了一種精心設計的充足狀態(tài),而使系統(tǒng)變成可觀察。因此,拜占庭算法是具有可觀察性的協(xié)議的一個例子。
相反的,ARP (address resolution protocol) 協(xié)議是一個沒有可觀察性的協(xié)議。ARP與拜占庭算法完全相反,因為它在任何地方(在交換機或集線器或節(jié)點中)都不存儲充足狀態(tài)。拜占庭算法是專為檢測叛徒節(jié)點而設計的,而ARP的設計完全不考慮任何安全問題。因此,許多系統(tǒng)受到受到ARP欺騙或ARP中毒的傷害。在許多帶有局域網系統(tǒng)的ITC項目中,ARP中毒一直是一個常見的問題,它給許多科技公司造成了延誤和資金損失。
顯然ARP設計師從未做過可觀察性的分析。從控制理論而言,ARP的低性是能預見的。ARP問題很容易解決;只要在協(xié)議實現(xiàn)中添加一些狀態(tài)。盡管修復很容易,但大多數(shù)公司不愿意投入資金來做這件事,因為第2層路由對他們來說并不是一個重要的痛點。
從可觀察性到優(yōu)良的鏈網
一旦理解了可觀察性的重要性,我們可以運用可觀察性來設計鏈網。讓我們用金融區(qū)塊鏈作為例子。對于金融交易應用,鏈網面臨兩大問題。第一是帳戶的數(shù)據(jù)量可能很大,這將導致交易速度減慢。第二交易所交易的速度必須很快,但是處理大量的大數(shù)據(jù)量的帳戶交易會增加延遲。如果想減少延遲,那么交易的吞吐量必須降低;如果想增加交易的吞吐量,那么延遲就會增加, 而似乎沒有一個很好的權衡。
控制理論中通常將這種困境稱為可控性和可觀察性之間的權衡。如果我們花錢改善可觀察性,那么控制變得簡單;另一方面,如果系統(tǒng)狀態(tài)的觀察非常困難或異常昂貴,就應該花錢改善控制系統(tǒng)來實現(xiàn)控制目標。此外,控制理論也教導我們將控制執(zhí)行器與觀察(反饋)執(zhí)行器分開。
根據(jù)控制理論的權衡技術,設計一個高吞吐量低延遲的金融交易鏈網并不難。一種方法是創(chuàng)建一種雙鏈式架構,而把交易與賬戶分開。熊貓鏈網[4]就是使用雙鏈式架構,由ABC(Account Blockchain,賬戶鏈)、TBC(Trading Blockchain,交易鏈)組成的。ABC鏈的目的是通過在存儲設施中的大量帳戶中存儲大量數(shù)據(jù)來獲得可觀察性。通過雙鏈式結構,ABC鏈存儲帳戶中的大數(shù)據(jù)量,使得TBC鏈能用少量數(shù)據(jù)來從事?lián)脱舆t的交易,這也使TBC獲得高可控性,而ABC鏈獲得可高觀察性。
從控制理論的角度來看,ABC提供了系統(tǒng)充足狀態(tài),允許鏈網運營者能謹慎管理所有大數(shù)據(jù)量賬戶,并提供全面的賬戶服務質量。另一方面,TCP只配備必要且足夠的賬戶信息來執(zhí)行金融交易,使交易速度能達到最快。
圖2顯示了熊貓鏈網的雙鏈式結構。
圖2: 熊貓鏈網結構圖
從可觀察性到鏈網的優(yōu)良屬性
現(xiàn)在我們來看可觀察性如何幫助區(qū)塊鏈的每個關鍵屬性??捎^察性如何提高區(qū)塊鏈的基本屬性:
性能(Performance):從熊貓鏈網示例中,可觀察性極大地提高了鏈網絡的性能如吞吐量和延遲。
安全和隱私性(Security and Privacy):通過關鍵數(shù)據(jù)的可觀察性,系統(tǒng)可以輕松檢測各樣入侵和攻擊。
可擴展性(Scalability):通過關鍵數(shù)據(jù)的可觀察性,隨著系統(tǒng)規(guī)模的增加,系統(tǒng)操作員或工程師可以輕松發(fā)現(xiàn)瓶頸和性能不佳。反之,不可觀察的系統(tǒng)將很難調試和改進。
容錯性(Fault-tolerance):從拜占庭共識算法來看,一個不可觀察的系統(tǒng)會受到拜占庭錯誤的嚴重傷害。
可觀察性如何提高鏈網的基本屬性:
互通性(Interoperability):每個鏈的可觀察性允許在兩個不同鏈之間輕松轉換信息,從而使互通性變得容易。事實上,信息和功能的不匹配是多個鏈相互操作的主要障礙。
可延伸性(Extensibility):可觀察性允許系統(tǒng)操作員或工程師清晰地看到系統(tǒng)狀態(tài),因此當系統(tǒng)擴展時,將導致更少的錯誤。 可觀察性還顯示了每個鏈的限制,并允許系統(tǒng)操作員通過修改某些系統(tǒng)組件來擴展鏈。
可更改性(Modifiability):由於可觀察性,當系統(tǒng)被修改時,系統(tǒng)操作員可以清楚地觀察到狀態(tài)的變化,并且能預測系統(tǒng)可能的后續(xù)行為。此外,通過可觀察性,工程師更容易實驗(通過模擬或小規(guī)模測試)新的修改而不會實際損害真實的系統(tǒng)。
可復制性(Duplicability):可觀察系統(tǒng)具有干凈的設計,允許以邏輯和組件方式完成任何復制。通過這種方式,能以部分和邏輯的方式完成復制,從而避免復制中不必要的重復和錯誤。
可管理性(Manageability) :由於操作員或工程師可清楚地看到系統(tǒng)狀態(tài),可觀察系統(tǒng)易于管理。在多級別管理系統(tǒng)中,較高級別節(jié)點比低級別節(jié)點有更高的可見性。在可觀察的系統(tǒng)中,這種管理功能容易實現(xiàn)。如果沒有可觀察性,就很難根據(jù)級別和職責來管理每個節(jié)點的狀態(tài)。
一致性(Consistency):可觀察性是實現(xiàn)一致性的關鍵。在沒有可觀察性的情況下,系統(tǒng)操作員或工程師很難檢測到數(shù)據(jù)或資產的不一致性。可觀察性還允許簡單的計協(xié)議來保持鏈網的一致性。
真實性 (Integrity):可觀察性將有助于實現(xiàn)本文中闡述的保護真實性的六原則。保持數(shù)據(jù)和資產的真實性,系統(tǒng)操作員或工程師需要知道鏈數(shù)據(jù)和系統(tǒng)狀態(tài)??捎^察性允許系統(tǒng)操作員實時檢測資產和數(shù)據(jù),查看是否有高真實性數(shù)據(jù)被低真實性數(shù)據(jù)污染??捎^察性允許系統(tǒng)操作員動態(tài)地監(jiān)控每個資產,每個節(jié)點,以及每個鏈的真實性狀態(tài)。事實上,資產或數(shù)據(jù)塊的真實性是區(qū)塊鏈中的最重要的系統(tǒng)狀態(tài)。因此,鏈網系統(tǒng)必須對每個重要對象 (如資產,節(jié)點,鏈)的真實性進行動態(tài)監(jiān)控。(蔡維德)
關鍵詞: 區(qū)塊鏈互聯(lián)網 真實性