- 區塊鏈技術指南
- 鄒均 張海寧 唐屹 李磊等
- 4815字
- 2019-01-04 10:27:54
前言
為什么要寫這本書
1900年9月8日,一場4級強度的颶風橫掃德克薩斯州的加爾維斯頓。這個位于墨西哥灣的島城,靠近德克薩斯海岸,在災難來臨前擁有37000人口和光明的經濟前景。颶風猛烈攻擊了這個毫無防備的低海拔城市,給該市帶來了巨大的毀壞。颶風風速為每小時225千米,毀掉了3600座建筑,使占整個城市3/4的12個街區徹底消失,死亡人數為8000~10000人。是迄今為止,美國歷史上死亡人數最多的自然災害。
而2016年8月2日在中國華南沿海登錄的“妮妲”臺風,風力14級,最高風速每小時151.2千米,臺風過境的廣東、廣西、湖南、貴州、云南5省(自治區),雖然也造成了重大經濟損失,但在人員傷亡統計報告中,只有1人失蹤。
這兩次自然災害的結果如此不同,歸功于人類掌握了計算這個神奇工具。在妮妲形成過程中,美國、日本、中國氣象監控部門就不斷跟蹤,通過監控數據,氣象數學模型和強大的計算能力,對臺風進行了準確的預報和預警。在臺風到來前,有關部門做了積極準備,7.6萬人得以緊急轉移安置,使得損失得以降到最低。
今天,IT已經滲透到各行各業,人們已經能近距離接觸無人駕駛、機器人、虛擬現實(Virtual Reality)、增強現實(Augmented Reality)等先進技術,當人們在享受IT給人們生活帶來的各種便利和好處的時候,也日益感受到來自不當使用科技所帶來的挑戰。例如,國內日益猖獗的電信詐騙,全球范圍內黑客的攻擊和安全勒索,以及未來基因技術和AI(人工智能)技術給人類所帶來的倫理、生活和工作方面的全方位沖擊,都使得有識之士開始思考如何應對科技發展所帶來的風險。
一直以來,筆者對計算技術有一種既感恩又敬畏的情結。首先感恩我們的時代,計算技術的發展使我們避過很多前人無法避過的災難;但高速發展的計算技術必然導致機器的智能超過人類自身,因此而產生的未來不確定性也使筆者的敬畏之心油然而生。
筆者也一直有一個預感,未來可能需要針對IT,特別是與業務結合緊密的云計算和智能設備建立監管、問責的機制。筆者的意思不完全是對從事IT或智能設備的人進行監管問責,甚至要考慮對智能設備進行自動問責。這個看似荒謬的想法促使筆者選擇了云計算的問責機制(Accountability in Cloud Services)作為博士研究方向。
所謂云計算的問責機制(Accountability),指的是在云計算架構中,能建立一個自動化的問責機制。該機制包括形式化的標準服務合同定義,服務合同的發布,服務合同執行的監控,合同違約方的自動發現,違約方的罰則和執行,以及合同雙方爭議的仲裁。舉個例子來說,今天公有云的提供商,都沒有提供能讓電腦理解的云服務合同。合同雙方的責任、義務和權利沒有精確的界定;云服務提供商的服務好壞,是否遵從合同,都沒有自動化的方法去檢測;服務故障責任也沒有辦法界定;出現爭議也只能靠人工去解決。而云計算的問責機制,旨在建立一個自動化的體系來讓電腦自動規范電腦的行為。
可想而知,這個研究課題非常有挑戰。在博士研究的過程中,筆者也走了很多彎路,一直沒有找到好的解決方法,直到三年前接觸到比特幣,突然意識到區塊鏈技術是提供問責機制的最理想平臺。這是因為區塊鏈技術中的防偽、防篡改、交易可追溯、數字簽名和智能合約技術提供了一個公正、可問責(Accountable)、自動執行的技術平臺基礎。
但是區塊鏈目前還停留在概念炒作階段,很多關注點還停留在金融應用,特別是虛擬貨幣方面的應用。筆者認為,區塊鏈未來可能最適合作智能設備的“警察”,為物聯網和智能設備的自治管理提供一個基礎平臺。區塊鏈技術應該推廣應用到除金融外的行業,因此萌生了寫這本書的念頭,作為博士研究工作的一個延續。
而寫這本書的另一個原因,也是深感在學習區塊鏈技術過程中碰到的參考資料不足的痛苦,希望能整理過去的學習所得,對區塊鏈初學者有所幫助。
從2008年中本聰發表比特幣白皮書算起,區塊鏈技術才走過短短8年的時間。雖然區塊鏈1.0、2.0和3.0的架構理念已經提出并得到一定程度上的認可,但區塊鏈的技術發展仍然處于初級階段,區塊鏈的應用還剛起步,成熟的區塊鏈應用除了比特幣系統,還寥寥無幾。在這種情況下寫關于區塊鏈的書籍,其實面臨一個兩難境況。一是區塊鏈的技術變化快,像個移動的靶子;可供參考的資料又少,要準確把握一個快速變化的技術非常困難,而且受限于寫筆者的水平,實踐經驗,寫出來的書難免有很多錯誤,弄不好會貽笑大方。而另一方面,正因為變化快,資料少,廣大區塊鏈技術愛好者又渴望能找到一本對他們學習、理解、掌握區塊鏈架構和技術有所幫助的書。
目前在市場上的區塊鏈書籍大致分為兩類:一類是以梅蘭妮·斯萬(Melanie Swan)的《區塊鏈:新經濟藍圖及導讀》為代表的,談區塊鏈對整個宏觀層面所帶來的革命性影響的戰略性書籍;一類是以安德魯·安東普洛斯(Andreas M. Antonpulos)的《精通比特幣》,以及普林斯頓大學以阿文·拿瑞延南(Arvind Narayanan)為首編著的《比特幣和密碼學技術》為代表的專注于比特幣的技術性書籍。這些書籍滿足了目前市場上一部分對區塊鏈在行業中的應用有興趣的偏業務的人士,以及對比特幣技術有興趣的偏技術的人士的需求。
在這兩類書籍所覆蓋的市場中,其實還有一個很大的空白。我們發現,在對整個區塊鏈架構(包括區塊鏈1.0、2.0和3.0)進行系統性剖析,包括對其中關鍵技術(密碼學、共識算法)等進行系統性論述,對不同的區塊鏈架構形式(聯盟鏈、公共鏈、私有鏈、側鏈、多鏈、互聯鏈等)進行系統性介紹的書好像還沒有。而這樣的書對理解、普及區塊鏈技術,推動區塊鏈應用落地可能會有所幫助。因此,與其等待這樣的書籍出現,不如自己行動,為區塊鏈技術的推廣盡綿薄之力。筆者也就自不量力,把可能被同行笑話的風險置之腦后,鼓起勇氣集合幾個對區塊鏈著迷、志同道合的朋友,在條件不成熟,時間比較倉促的情況下,經過不少不眠之夜的努力,克服重重困難,特別是在機械工業出版社華章分社編輯高婧雅的大力協助下,完成了該書。
本書的缺點是顯而易見的。
一是因資料匱乏、技術變化快而難免出現技術錯誤。因此,本書的目的,主要是拋磚引玉,歡迎讀者多提寶貴意見,爭取在下一版本能糾正大部分的錯誤,不斷完善、提升本書的質量。
二是缺少應用案例。其實目前網上的應用案例也有不少,但是我們認為,如果只是拿別人在網上的案例加工修改,從深度、廣度方面都經不起推敲,起不了真正案例的作用。除非由真正落地該應用案例的主要負責人來寫,才能使讀者有真正的收獲。受限于我們的人脈圈子和條件,目前只能請到PPKpub.org開源社區組織者陳暉先生來寫一個區塊鏈在標識注冊方面的應用案例。在此鳴謝陳暉先生的大力支持,將來也歡迎有更多的區塊鏈應用的領軍團隊提供應用案例,在未來更新的版本中補上在應用案例方面的短板。
本書特色
1)和目前市場上主流的區塊鏈書籍強調區塊鏈去中心化的概念,以及對業界帶來的革命性影響不同,本書主要是從技術的角度,介紹區塊鏈的基礎概念,特別是對區塊鏈的架構進行了詳細的剖析。
2)對區塊鏈的關鍵技術,包括區塊鏈架構(1.0、2.0、3.0)、密碼學和共識算法等做了一個詳盡的介紹。
3)提供了比特幣開發指南,通過以太坊智能合約開發來幫助初學者入門。本書也用專門一章來討論區塊鏈的常見問題,包括對近期發生的DAO攻擊事件,都有詳細的分析。
4)在區塊鏈技術落地方面,本書也提供比較典型的區塊鏈解決方案,包括支付和標識登記方面的解決方案。
5)以獨特的架構演進對IT發展的影響為切入點,給讀者展示一個全新觀察整個IT歷史的視角,并在這個視角下探討區塊鏈技術在未來IT發展中的影響和地位。
本書中一些實操的例子和章節,比較適合區塊鏈初學者和程序員,可以成為區塊鏈入門的書;架構剖析和深入分析方面的章節,比較適合IT架構師,以及區塊鏈技術愛好者來深入了解區塊鏈架構特點和技術細節,對設計區塊鏈的解決方案有所幫助;解決方案和常見問題章節有助于區塊鏈從業人員全面了解區塊鏈應用落地方面的情況。最后一章是從架構視角對IT發展的一些觀察,僅供喜愛思考的IT從業者參考。
讀者對象
?區塊鏈從業者
?IT架構師
?區塊鏈應用開發人員
?對區塊鏈技術感興趣的人員
如何閱讀本書
本書分為三大部分,共11章。
第一部分介紹基礎和入門,包括以下2章內容。
第1章 本書的開篇,首先介紹區塊鏈的定義和特點,并簡單介紹了區塊鏈的主要類型,然后通過介紹購買、存儲和交易比特幣等實際使用場景來讓讀者對區塊鏈有所體驗,然后再探討一些關于區塊鏈的常見問題。
第2章 介紹區塊鏈的基礎概念,為后面深入介紹區塊鏈技術做鋪墊。
第二部分介紹架構和核心技術,包括以下8章內容:
第3章 詳細介紹區塊鏈1.0、2.0、3.0典型架構,同時介紹了互聯鏈的概念和架構。
第4章 詳細介紹了區塊鏈涉及的密碼學原理和典型的算法。
第5章 介紹了在區塊鏈架構中常用的共識算法。
第6章 提供比特幣開發指南,通過實際案例來幫助初學者入門。
第7章 提供以太坊上的智能合約開發指南,幫助初學者掌握智能合約的開發要領。
第8章 詳細介紹HyperLedger開源項目及其架構。
第9章 討論區塊鏈上常見的問題,包括最近出現的The DAO攻擊的源碼級分析。
第10章 討論區塊鏈上的典型解決方案,一個是以閃電網絡為主的支付方案,另一個是以標識登記為主的開源ODIN解決方案。
第三部分為回顧和展望,即第11章,主要回顧IT架構演進歷史并展望未來區塊鏈對IT發展的影響。
勘誤和支持
由于筆者的水平有限,編寫時間倉促,書中難免會出現一些錯誤或者不準確的地方,懇請讀者批評指正。如果你有更多的寶貴意見,歡迎通過微信或郵件進行討論。你可以通過微信joezou3986、微博@云中君3986,或者發送郵件到郵箱joezou@openstack.org.cn聯系到我,期待能夠得到你們的真摯反饋,在技術之路上互勉共進。
致謝
首先感謝我的作者伙伴——張海寧先生、唐屹教授、李磊教授、劉天喜博士、陳暉先生、曲烈博士和鄭曉明博士。他們在工作之余,擠出寶貴時間為本書貢獻了他們對區塊鏈技術的理解和洞察。特別感謝我的大學同門師弟Henry張海寧先生在關鍵時刻的出手相助,為本書貢獻了很多精力,他不單在內容上積極供稿,也在本書的審定、修改和校正方面下了很多工夫。唐屹教授和李磊教授也在繁忙的教學和學術研究中抽出時間來對一些區塊鏈的基本概念和關鍵技術(包括密碼學和共識算法)做了詳盡的闡述。劉天喜博士在本書的框架規劃和開篇設計上做了很大貢獻。而陳暉先生的比特幣開發指南對很多初學者入門有很大的幫助,他的ODIN開源項目也是區塊鏈登記方面的一個典型解決方案。曲烈博士的智能合約開發章節給眾多以太坊開發初學者提供一個易懂、易上手的應用指引。鄭曉明博士也對主流代幣做了比較全面的介紹。
本書作者也得到中關村區塊鏈聯盟的大力支持,在此也特別鳴謝中關村區塊鏈產業聯盟秘書長王安平先生、副秘書長范金剛先生和林大鵬先生以及聯盟發展部張培部長。同時也感謝江源老師、江苑絳博士,他們的鼓勵成為我堅持下來的動力。另外在寫書過程中也得到澳洲富士通區塊鏈技術架構師董仲利先生、信達證劵區塊鏈首席專家曹寅先生、亞投行企業IT項目管理專家Allen邵以及合肥工業大學劉古劉和方輝先生的幫助,在此對他們表示感謝。
另外感謝比特幣開源社區、以太坊開源社區,以及巴比特社區的各位技術專家們的博客文章,每次閱讀必有所獲,本書也多處引用了他們的觀點和思想。
非常感謝機械工業出版社華章公司的編輯高婧雅,她的敬業精神和編輯效率令我由衷敬佩,她的反饋、建議、鼓勵和幫助引導我們克服諸多困難完成全部書稿。
特別致謝
最后,因為工作和寫書,犧牲了很多本該陪伴家人的時間。我要特別感謝我的母親從小對我的培養,也要感謝我的哥哥姐姐們在兒時營造的和睦互助、求知好學的家庭環境,這對我長大以后形成對新興技術濃厚的求知欲性格有很大影響,一直以來在我的職業生涯中都受益匪淺。更要感謝我太太Annie長期以來對我的默默支持,以及女兒Beverley,兒子Skyler對我工作的理解。
謹以此書獻給我最親愛的家人,多年以來幫助、支持我的師友們,以及眾多熱愛區塊鏈技術的朋友們!
我想和作者聊聊
如果你想和本書作者溝通,可以通過以下方式。
1)微信群“區塊鏈技術交流群”,添加群助理微信號xiaodanmyd入群。
2)QQ群“區塊鏈技術交流群”,群號375936045。
3)關注微信公眾號“鏈信Chain2Trust”。
4)鄒均微信號:JoeZou3986,添加請注明溝通事項。
鄒均