區塊鏈即分布式多活數據庫,這是筆者一直以來對區塊鏈本質的理解。拋開賬本即事務日志的存儲模塊,其所謂的“共識”機制從本質上來說與分布式數據庫中“一致性算法”有異曲同工之處。
縱觀數據庫歷史的發展,IBM DB2 for z/OS與Oracle RAC是Share Disk架構中的鼻祖,其核心理念在于多個服務實例共享存儲,而在服務之間通過高速網絡連接以實現共享鎖與共享內存(RDMA等)。這種架構一般被用來實現高可用(HA),但是對于異地災備環境來說,業界的普遍做法是采用主從日志復制(Log Shipping)的方式進行。
在傳統Log Shipping機制中,集群中存在一個可讀寫的主數據節點,與一個或多個只讀的從節點(開始時從節點只是冷備,后來2008年前后業界才提出在業務層面犧牲強一致的理念,做到備節點只讀)。因此可以看出,數據庫發展到今天,其災備架構中一般來說存在一個相對持久的主節點進行交易日志生成,之后通過網絡將該節點生成的交易日志發送給其他備節點進行回訪,從而達到主備節點之間數據最終一致的目標。
而這種機制與區塊鏈的“出塊”何其相似。可以說區塊鏈數據同步的本質就是Log Shipping,唯一不同的地方在于每次出塊的過程中需要進行多節點間競爭,只有獲勝的節點才獲得記賬權(也就是發送事務日志的權利)。這部分與傳統數據庫永遠由主節點發送日志不同,區塊鏈的第一個開源實現比特幣,其十分鐘出塊的設計思路使得集群中的主節點每十分鐘改變一次,從而避免了任何“主從”概念,做到全節點對等。
而另一個與數據庫事務日志不同之處則在于,區塊鏈的節點間數據同步采用定時檢查點的理念,而非以事務提交回滾為檢查點。這里定義,檢查點即數據從內存真實落入磁盤的過程。只有數據從非永久存儲的內存寫入永久存儲介質后,才認為該數據被永久保存。數據庫一般在提交回滾操作時會觸發一個日志緩存刷盤的過程,通過DIO的方式將日志寫入磁盤。而比特幣則只有每次出塊時,才會將數據塊作為日志永久結構寫入鏈條并發送給其他節點進行持久化存儲。從本質上講,兩者之間沒有任何區別。
因此可以看到,區塊鏈的出塊、同步、以及回放機制都是一種檢查點同步的過程,而該過程不論從PoW、PoS、甚至DPoS來看都是一種同步操作。因此,我們可以認為,區塊鏈的鏈式結構中,使用賬本同步機制實現的共識算法為檢查點式同步持久化策略。
而IOTA則提出DAG模式,以及近期依據DAG思路所提出的一系列變種,則采用異步持久化策略。
從數據結構體系來看,DAG模式是一種典型的謠言傳播算法,那么不論IOTA的DAG白皮書中寫到的一大堆數學公式再如何精妙,也無法改變謠言傳播算法的本質,即異步通訊。
異步通訊所帶來最大的問題在于一致性不可控。就好像微服務架構中最讓開發者頭痛的在于各個微服務之間一致性與先后順序控制的邏輯,遠比傳統開發模式復雜許多。在DAG模型中所帶來最大的問題在于交易確認時間完全未知。當然,某種程度上同樣可以認為在鏈式模型中,一個區塊被超過2/3以上節點數接受才算全網最終確認,因此最終確認時間同樣無法準確判斷,但是IOTA的DAG所面對的是數以億計的海量小型設備節點,與全球萬級別的賬本節點所需要的通訊確認時長要高出很多。
另一個DAG一直宣稱的利用全部節點帶寬所帶來的優勢,實際上會被網絡中成幾何級數增長的通訊量所迅速湮滅。為什么這么說?
試想鏈式結構中僅僅賬本節點記賬,大量的錢包節點僅僅向一個賬本節點通訊即可,因此全網絡賬本節點的數量遠遠小于錢包節點。在這種情況下,所有的數據同步均在賬本節點之間完成,假設網絡中有M個賬本節點,每一條記錄在網絡中傳輸的次數為M+1(即錢包向一個賬本發送數據,同時賬本節點將數據轉發給其他賬本節點)。
而對比DAG結構,在全網存在N個設備節點時(N成千上萬倍大于M),每一個消息都需要在設備間進行點對點通訊,因此對于任何消息的發送,網絡中都會存在N^2次數據發送(每一個節點都嘗試將信息發送給其他鄰居節點)。及時進行優化,每個節點有針對性地發送給相鄰的K個節點,那么其網絡信息傳播速度同樣為K*N,當N取值極大時對整體網絡壓力極為夸張。
因此,DAG利用謠言傳播算法可以有效使用大量節點閑置網絡資源,但是帶來的負面影響則是每個節點的網絡通訊量暴增,因此對于整體網絡吞吐量并不一定會得到大幅度提升。
因此,DAG所帶來的兩個問題(1)交易時長不可控;(2)網絡傳輸數據量大幅度增加;這兩個問題某種程度上制約著DAG的應用場景。
首先,問題(1)基本明確了DAG很難作為嚴格的支付結算手段應用于高速響應的物聯網設備遠程調用。一般來說,服務提供者希望能夠在提供服務之前收取一部分甚至全部費用,或在服務提供后能夠最短時間內得到支付。而以DAG作為結算手段,會造成支付時間完全不可控,而在IOTA給出的實現原理中更沒有對極端情況作出設計,導致一些權重較低的交易長時間甚至永久無法被其他節點審批。在這種情況下,DAG在支付結算領域是否能夠得到應用是一個問題。
而問題(2)則在于對于簡單設備之間的調用命令尚可,但是如果調用命令較為復雜,甚至需要傳輸一段較長的指令代碼,其通訊原理必須使用P2P直連,否則如果所有信息以DAG轉發的形式傳輸會造成嚴重網絡風暴。
因此,筆者認為,DAG與鏈式結構相比有創新有不足,其優勢在于將異步通訊理念替換傳統的同步檢查點機制,以期望提升設備的響應速度。但是其幾個核心問題使其在物聯網交互與結算領域能否真正得到大規模應用,提出了不小的挑戰。
相關推薦
3月19日,中國工程院院士鄔江興在上海“NGB高峰論壇”介紹了《NGB戰略研究報告》(以下簡稱“《報告》”)的主要內容。這一報告由NGB專家組撰寫完成,并將在今天(3月22日)的CCBN主題報告上正式發布。在這一報告中,頗有幾個令人興奮的亮點,暫在此談一兩點自己粗淺的看法。NGB:廣播與IP四種模式并存之前對NGB的定義是:NGB是以有線電視數字化和移動多媒體廣播電視(CMMB)的成果為基礎,以自主創新的“
鄔江興介紹說,作為三網融合的戰略目標之一,我國下一代廣播電視網將通過“三步走”,用10年時間完成建設。根據《下一代廣播電視網戰略研究報告》,第一階段是從現在到2012年,一些省市完成三網融合試點示范,同時“立體電視”(3DTV)也將展開先試先行。下一代廣播電視網在這一階段將建立起產業創新體系和環境,成套裝備研制工程化。第二階段是從2012年到2015年,有線電視網絡與無線電視網絡融合。下一代廣播電視網向“家庭物聯網”靠近,實現智慧家庭。第三階段即到2019年,我國下一代廣播電視網將完成全網建設.
中國電信在長沙部署物聯網應用中國電信副總工程師靳東濱向通信世界網表示,中國電信目前已經在IPv6業務應用領域進行了積極探索,同時也承擔了IPv6城域網試驗床試點工作,先后在網絡基礎設施和IT支撐系統兩個層面進行探索。
“城市光網”行動計劃是中國電信為響應國家信息化發展戰略,配合上海建設“兩個中心”和亞太信息樞紐而制定的重大發展計劃,也是上海市政府和中國電信集團公司信息化領域戰略合作框架協議的重要內容之一。為實現三年內達到“百兆到戶、千兆進樓、T級出口”的網絡覆蓋能力,中國電信上海公司在2009年6月發布“城市光網”計劃,并持續推進建設。在接入能力方面,今年上海“城市光網”覆蓋能力將達到150萬戶。互聯網國際出口帶寬將從2009年的180G擴容到280G,國內出口帶寬將從1T提升到1.8T。“城市光網”究竟能給市民生活帶來哪些改變?目前,中國電信上海公司家庭寬帶用戶的帶寬已普遍達到2M。世博期間,中國電信將對