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