卿蘇德 中國信息通信研究院產業與規劃研究所工程師
姜瑩 中國信息通信研究院產業與規劃研究所工程師
王秋野 中國信息通信研究院產業與規劃研究所工程師
區塊鏈的技術原理和意義
卿蘇德 中國信息通信研究院產業與規劃研究所工程師
姜瑩 中國信息通信研究院產業與規劃研究所工程師
王秋野 中國信息通信研究院產業與規劃研究所工程師
當前,區塊鏈技術引發世界的廣泛關注和探討。本文從區塊鏈的定義和特點入手,研究探討了區塊鏈技術原理、數據結構、運行機制及區塊鏈的分叉,闡述了區塊鏈的重要意義。
區塊鏈;分布式賬本;SHA256
從技術上來講,區塊鏈是一種分布式的記賬方法。說到記賬,經歷了從實物記賬向電子記賬的演變。如圖1所示,實物記賬分別經過泥板標記、甲骨刻字、竹板刻書、紙質賬本5個階段;在20世紀60年代半導體微處理器的誕生,打孔計算機的出現,代表著記賬進入了電子化時代;隨著20世紀70年代IBM引領的大型計算機深入滲透至金融行業,7×24h的批處理替代了朝九晚五的人工記賬;20世紀80年代~90年代的個人PC和局域網的發展,實現了內部協同和遠程服務。隨著互聯網在21世紀初的興起,無國界的跨境業務開始繁榮;隨著夢網、3G、4G的代際躍遷,進入了移動金融時代,開始用智能手機管理自己的電子銀行。與此同時,加密安全技術在20世紀80年代~21世紀初也得到了廣泛發展,其中的哈希加密、橢圓曲線密碼學、HashCash工作量證明機制,以及P2P網絡后來的發展,即區塊鏈,也叫分布式總賬技術,奠定了堅實的技術基礎。

圖1 區塊鏈(分布式賬本)的演進歷史
(1)區塊鏈的定義和特點
區塊鏈的定義是一種分布式數據庫,通過去中心化、去信任的方式,集體維護一個可靠數據庫。傳統數據庫的4種操作可以簡寫為CURD,C代表創建、U代表更新、R代表讀取、D代表刪除。如圖2所示,區塊鏈作為分布式數據庫,相當于是放棄了更新(U)和刪除(D)操作,換來“無法篡改”和“不可抵賴”兩個重要特點,依托P2P網絡提供的分布式端對端網絡的特點,可將之歸結為CROSS原則。其中,R代表可追溯,依托區塊彼此相連的鏈式結構,用戶可以追溯至最初交易來查看整個交易過程;O代表開放,任何一個人都可以通過接入P2P網絡來記賬;第一個S代表安全,基于密碼學的安全通信,以及工作量證明機制,無人可以篡改數據庫中的數據;第二個S代表穩定。系統中任何節點的退出,都不會影響整個系統的穩定性,不會遇到中心化節點經常遇到的“單點故障”問題。具有CROSS特點的區塊鏈技術可以改變現有的交易模式。在傳統交易中,商家和消費者彼此不信任。為了保證對方可信,需要國家信用背書(如央行)或企業背書(如支付寶)的第三方機構。在證明自己合規的過程中,卻把自己所有隱私信息都匯聚到第三方機構,還交了很多手續費,忍受著低效率的交易時滯。區塊鏈技術逐步實現去中心化、去中介的過程,實現消費者和商家之間直接支付,極大地提升了交易效率,降低了交易成本。

圖2 區塊鏈的特性
(2)區塊鏈的技術原語
如圖3所示,區塊鏈主要運用了4個基礎技術,分別是哈希運算(SHA256)、數字簽名、P2P網絡和工作量證明(PoW)。
哈希加密算法(SHA256)
美國國家安全局研發,由美國國家標準與技術研究院(NIST)在2001年發布,屬于SHA-2分支。將任何一串數據輸入到SHA256將得到一個256位的Hash值(散列值)。其特點:相同的數據輸入將得到相同的結果。輸入數據只要稍有變化(如一個7變成了8)則將得到一個千差萬別的結果,且結果無法事先預知。

圖3 區塊鏈的技術原語
數字簽名
基于橢圓曲線加密技術的公私鑰來實現。以下兩個概念很重要:
第一,公私鑰是非對稱加密技術,公鑰和私鑰不同,但是可以基于私鑰生成公鑰。
第二,相關性,公鑰加密的,對應的私鑰才能解密。私鑰加密的內容,對應的公鑰才能解密。
P2P網絡
根據比特幣協議,區塊鏈采用一種無結構的P2P網絡。P2P網絡分為有結構和無結構兩種,區別在于路由規則的制定方面。有結構的P2P網絡,例如Chord,利用一致性哈希表(DHT)構建每個節點的路由表。無結構的P2P網絡代表是鈕特拉(Gnutella),節點之間的路由靠廣播的方式。一個節點要想查找一個文件,首先問其鄰居有沒有這個文件,他的鄰居再問各自的鄰居有沒有,如此迭代。這樣容易形成廣播風暴,因此一般設置一個網絡TTL,來限制廣播傳播的范圍。
工作量證明機制
簡單理解就是一份證明,用來確認你做過一定量的工作。工作量是信任產生的基礎。在區塊鏈中,通過解決一個數學難題來證明自己的工作量。這個數據難題就是,對一個數字串進行兩次SHA256運算,如果得到的數小于一個指定的值,就算成功。否則,要通過不斷的嘗試試錯,來求解這個數。一般來說,指定的結果值,前面都是多個零開頭,例如圖3中對于固定的上下文,隨機數選擇123456,得到的值小于指定值,從而解決了該數學難題。這里充分利用了SHA256加密算法的偽隨機性。
(3)區塊鏈的數據結構
如圖4(a)所示,一個區塊鏈依托于一個P2P網絡。節點可以有4種功能,即錢包、完整的區塊鏈拷貝、挖礦和路由。路由功能是每個節點必需的,前3個功能,根據節點自己的需求來定。對于一個區塊鏈拷貝來說,它記錄了從2009年,中本聰建立創世區塊以來,系統運行時記錄的所有交易記錄。如圖4(b)所示,區塊鏈分為區塊頭和區塊體。區塊頭包含版本號、上一個區塊的哈希值、Merkle根節點哈希值、時間戳、難度值、隨機數和交易記錄這些字段。區塊與區塊之間彼此相連,構成的一個鏈式結構,叫做區塊鏈。這跟以前編寫C語言,用指針實現鏈表是一個道理。不過,這里的指針,不是內存地址,而是將上一個區塊的區塊頭,使用兩次SHA256加密算法,得到的哈希值。

圖4 區塊鏈的數據結構
區塊頭沒有包含任何交易記錄信息,怎么能保證交易記錄不被篡改?答案是,為了提高區塊鏈的校驗效率,把一個區塊里的所有交易記錄,構建成Merkle樹這樣的二叉樹結構。如圖4(c)所示,如果交易記錄是奇數,圖中的3個記錄,剩下的二叉樹節點由自己填補:圖中的交易2和自己構成了一個二叉樹。以此類推,直到根節點。二叉樹的兩個交易記錄哈希值直接串聯,作為下一個二叉樹的輸入。通過這種方式,如果有人更改任何一個交易記錄,按照前面SHA256加密哈希的特性,Merkle根節點就會變動很大,以致其他節點在驗證區塊鏈的哈希值時,能夠很明顯地發現問題。
如圖4(d)所示,區塊體里記錄了所有這個區塊時間段里產生的交易記錄,一個區塊體至少包括一個交易,Coinbase交易,即創建這個區塊,系統贈送給礦工的比特幣交易。交易記錄也是前后相連的鏈式結構,上一個交易記錄的2次SHA256哈希值,說明了比特幣的來源。如果需要交易,通過節點A的私鑰,產生A的數字簽名,和交易記錄中的公鑰相互驗證授權,然后就可以按照節點B的地址,將比特幣發送給節點B了。
(4)區塊鏈的運行機制
如圖5所示,用戶A想把比特幣支付給用戶B,首先要知道用戶B的錢包地址。B可以通過錢包,產生一對公私鑰,通過一些處理,得到新的私鑰和錢包B的地址。通過數字簽名,B將錢包地址發給A。A根據B的地址,發起一個交易,通過自己的數字簽名授權,將這個交易發給B,這時B已經收到了這些比特幣,但是還不能用,因為沒有得到系統的確認。之后,A向全網內所有人廣播,告訴其他節點有關交易的信息。類似的交易重復發生,直到區塊確權時間到,礦工們開始競爭記賬權。首先,計算Merkle根節點的哈希值,然后不斷調整區塊頭中的隨機數,爭取小于系統的設定值,此為工作量證明。第一個算出結果的礦工,得到系統給予的比特幣獎勵,也向全網廣播這個消息。其他節點在收到該消息時,結束工作量證明,并對區塊進行驗證(隨機數),如果驗證合格,將區塊接入到區塊鏈的末尾。
相關的技術實現細節如下:
地址生成機制

圖5 區塊鏈的運行機制
B通過錢包,生成256位的私鑰,基于橢圓曲線加密算法,得到有前綴的512位公鑰哈希字符串;經過SHA256算法,得到256位的哈希加密字符串;通過RIPEMD160算法,得到160位的公鑰哈希字符串;使用Base58算法,將二進制字符串翻譯成人眼可識別的字符串,也就是B錢包的地址。
消息交互機制
在發送真正的廣播之前,用戶A將用戶B交易的真實ID,通過Inv消息(InventoryMessage)發送給用戶A在P2P網絡中的所有鄰居節點,鄰居節點在收到Inv消息之后,會返回Getdata消息至用戶A,用來“拉取”交易ID對應的交易詳情。在鄰居節點收到交易的所有信息之后,驗證交易的合法性。主要看每個輸入的比特是否是未使用的比特幣,輸入和輸出的比特幣必須相等。如果合法,重復用戶A的動作,實現交易消息的廣播。值得注意的是,這里的消息刷新是每100ms刷新一次。而且,A并不是把所有的交易記錄都發給B,而是隨機選取1/4交易記錄發給B,然后B再跟他的鄰居或者A拉取剩下的3/4交易記錄,這種設計是為了降低網絡的負載。
區塊確認機制
上下文固定,只能通過隨機數的不斷嘗試來進行暴力破解,爭取小于系統要求的門限值。最后的勝出者將區塊鏈入區塊鏈的末尾,這里一定要指出,只是鏈接到末尾,而不是確認。區塊鏈為了防止51%攻擊,延遲6個區塊再對這個區塊進行確認。
(5)區塊鏈的分叉和51%攻擊
區塊鏈的分叉是指同一時間段內全網不止一個節點能計算出隨機數,即會有多個節點在網絡中廣播它們各自打包好的臨時區塊(都是合法的)。某一節點若收到多個針對同一前續區塊的后續臨時區塊,則該節點會在本地區塊鏈上建立分支,多個臨時區塊對應多個分支。該僵局的打破要等到下一個工作量證明被發現,而其中的一條鏈條被證實為是較長的一條,那么在另一條分支鏈條上工作的節點將轉換陣營,開始在較長的鏈條上工作。其他分支將會被網絡徹底拋棄。
區塊鏈的分叉衍生出雙花問題和51%攻擊。雙花問題,即雙重支付,是指同一筆錢同時用作不同交易。一般來說,區塊鏈可以有效杜絕這個問題。因為在同一個區塊時間里,礦工有全局所有的交易記錄,能夠輕松識別同一份比特幣被用到了兩個不同的地方;如果不在同一個區塊時間,那么經過一個區塊的確認,權限已經轉移,需要后者的私鑰才能進行授權。目前,雙花問題會跟51%攻擊一起,被黑客用來進行撤銷攻擊。例如,黑客給B發送100比特幣,B收到比特幣以后,開始向黑客發送貨物或商品。但是黑客通過新建一個區塊分支,其中將交易改為100比特幣交易給自己,然后開始和系統產生區塊鏈的速率進行競爭。當黑客篡改的區塊鏈高度大于系統區塊鏈高度時,系統開始認可黑客的區塊鏈,達到篡改交易數據的目的。
這個過程可以建模成二項式隨機過程。其中,一個誠實節點創建新區塊的概率為p,攻擊者創建新區塊的概率為q,p+q=1。
當Z等于-1時,區塊鏈高度差等于-1,也就是意味著,黑客捏造的區塊鏈超過系統生成的區塊鏈,攻擊成功。如圖6(a)所示,當概率p等于51%時,經過模擬仿真,經過15輪的競爭,黑客達到了Z=-1,獲得了成功,這就是“51%攻擊”中,數字51的由來。如果攻擊者不足網絡全部算力的51%能進行有效攻擊么?答案是可以,因為根據工作量證明機制,只要計算出一個符合規則的數就算是成功,答案并不唯一,有一點運氣成分在里面。如圖6(a)所示,圖線并非是直線,有時也會有波動。
系統需要延遲6個區塊用于確認。如圖6(b)所示,當攻擊者哈希比率恒定,延遲確認區塊數越多,雙花攻擊成功率越低,要證明的工作量越多。但是在延遲區塊大于6之后,減少的概率明顯越來越低。此外,考慮到交易的延遲帶來的用戶體驗差的因素,比特幣區塊鏈把延遲確認區塊數定為6。
(1)區塊鏈的技術分類(見圖7)
從區塊鏈的發展來看,區塊鏈經歷了3個階段:
首先是記錄價值信息,例如記錄比特幣的歷史交易信息、記錄山寨幣的虛擬資產信息。
其次是記錄商品服務的交易和位置信息,例如為管理產品交易和服務開發應用程序、為共享經濟的物權交易開發應用程序。
第三是制定未來的規則,這個是智能合約的階段。從智能合約以后,稱之為區塊鏈2.0時代,以前的稱之為區塊鏈1.0時代。

圖6 區塊鏈的51%攻擊

圖7 區塊鏈的技術分類
從發展分類來看,一類是證明機制。可以將證明機制從工作量證明機制改為其他證明機制,例如股權證明機制(PoS)、拜占庭容錯機制(PBFT)等;一類是剛剛說的,記錄對象的不同;還有一類是入網許可的變動,以前的區塊鏈是公共鏈,允許所有人接入,現在發展成聯盟鏈和私有鏈,只有加入聯盟的,才能鏈入區塊鏈,或者直接在一個公司內部,部署區塊鏈,叫做私有鏈;最后,還有一種是混合鏈,既可以公有接入,也能夠支持企業私有化。
(2)區塊鏈的意義
主要從從學術意義、應用意義和戰略意義3個方面來看。
學術意義
在無信任的環境下,在整個網絡中的任意節點建立起共識機制,而無需擔心數據被篡改。區塊鏈技術主要解決了“拜占庭將軍問題”。拜占庭將軍問題是指,在整個網絡中的任意節點都無法信任與之通信的對方時,創建出共識基礎來進行安全的信息交互而無需擔心數據被篡改。
應用意義
隨著數據庫從集中式縱向擴展,向分布式橫向擴展發展,縱向擴展就是通過添加內存、存儲和CPU,增強單臺機器的性能,這種縱向擴展會遇到吞吐量瓶頸等問題。分布式數據庫通過橫向擴展,提升了吞吐量和計算效率,也開啟了大數據時代。分布式數據庫主要分為以Storm為代表的流數據庫,Hadoop為代表的批處理數據庫,以Spark為代表的內存數據庫和以Neo4j為代表的圖形數據庫。區塊鏈的意義在于,增加了一個分支,基于時間軸的分布式數據庫。
戰略意義
基于創建信任的機器,促進價值的全球流動。如果說基于TCP/IP的第一代互聯網實現了信息的全球流動,像WWW和HTTP協議,區塊鏈就是把各個機構和個人映射到虛擬世界,基于數學這種人類文明的最大公約數,匯集世界上不同人群、不同權利群體的共識,實現了價值,或者說資產的全球實時流動。
華為站點能效SEE正式成為國際標準
近日,華為提出的站點能效SEE(SiteEnergyEfficiency)通過國際電信聯盟ITU(InternationalTelecom Union)認證,ITU-TL.1350∶EnergyEfficiencyMetricsofBaseStationSite正式成為通信能源領域的國際標準。該標準的確立歷經兩年嚴謹的討論與反復驗證,將幫助全球電信運營商與鐵塔運營商優選站點級高效整體解決方案有據可依,并能更好地衡量現網能源效率,制定更有效的能效提升計劃,踐行節能減排工作。
近兩年,華為一直致力于積極推動該能效標準的國際化,通過業內各種展會對能效理念和成果進行推廣,并相繼在澳洲、中東、歐洲等地聯合全球領先運營商和業界權威咨詢機構舉辦全球能效專題峰會,深入研討ICT能效話題和標準,SEE已獲得廣泛認同與支持。
華為攜手產業伙伴成立邊緣計算產業聯盟
華為昨日宣布與6家聯盟發起單位成立邊緣計算產業聯盟,并參加在京舉行的首屆邊緣計算產業峰會。本次峰會題為“產業協同智贏未來”,華為與縱橫OT、IT、CT領域的產業領袖和行業專家共同探討邊緣計算產業未來。在此次峰會上,華為闡釋了在邊緣計算產業中的定位和貢獻,并展示了在能源、交通、智慧城市等行業中的數字化創新和實踐應用。
邊緣計算產業聯盟(EdgeComputingConsortium,ECC)由華為技術有限公司、中國科學院沈陽自動化研究所、中國信息通信研究院、英特爾公司、ARM和軟通動力信息技術(集團)有限公司6家單位共同發起組建。本次大會上,邊緣計算產業聯盟正式發布《邊緣計算產業白皮書》,在業界首次提出“OICT”理念,旨在搭建邊緣計算產業合作平臺,推動OT與ICT產業的開放協作。
Technologyprincipleandsignificanceofblockchain
QINGSude,JIANGYing,WANGQiuye
At present,blockchain technology is a hotspot which caused the world wide attention and discussion.This article startswiththedefinitionandcharacteristicsoftheblockchain,thendiscussestheblockchaintechnologyprinciple,datastructure,operationmechanismandbifurcationofblockchain,andfinallyexpoundsthesignificanceoftheblockchain.
blockchain;distributedledger;SHA256
2016-11-20)