-
>
以利為利:財政關系與地方政府行為
-
>
立足飯碗 藏糧于地——基于中國人均耕地警戒值的耕地保護視角
-
>
營銷管理
-
>
茶葉里的全球貿易史(精裝)
-
>
近代華商股票市場制度與實踐(1872—1937)
-
>
麥肯錫圖表工作法
-
>
海龜交易法則
區塊鏈技術解析(從第一代到第三代) 版權信息
- ISBN:9787030693709
- 條形碼:9787030693709 ; 978-7-03-069370-9
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
區塊鏈技術解析(從第一代到第三代) 本書特色
本書適合的讀者有區塊鏈應用開發人員、區塊鏈技術愛好者、高校計算機及相關專業師生。
區塊鏈技術解析(從第一代到第三代) 內容簡介
本書主要闡述2008~2020年期間區塊鏈技術從**代到第三代的發展軌跡,并選取其中具有代表性的各項技術進行詳細闡述。主要內容分成三部分:**部分介紹比特幣的基本概念、獲取方法,總結了以比特幣為主要表現形式的區塊鏈的技術特點和發展現狀;第二部分介紹以太坊及智能合約的基本概念、構建方法,并以代碼實例的形式展示了智能合約的編寫技術和技巧;第三部分選取了NEO和Zoro作為第三代區塊鏈中的代表,詳細介紹其基本概念、構建方法,并分別以代碼實例的形式展示了搭建私鏈、創建錢包、發行代幣的方法。 本書適合的讀者有區塊鏈應用開發人員、區塊鏈技術愛好者、高校計算機及相關專業師生。
區塊鏈技術解析(從第一代到第三代) 目錄
前言
第1章 **代區塊鏈與比特幣 1
1.1 為什么要有區塊鏈? 2
1.1.1 人類需要傳輸、存儲信息的原因 2
1.1.2 人類傳輸、存儲信息技術的發展 3
1.1.3 區塊鏈對人類傳輸、存儲信息技術的影響 3
1.2 區塊鏈與比特幣 4
1.2.1 哈希函數 4
1.2.2 什么是比特幣? 4
1.2.3 比特幣與區塊鏈的關系 7
1.2.4 區塊鏈的數據結構 10
1.3 比特幣的共識機制 16
1.3.1 拜占庭將軍問題 16
1.3.2 比特幣的共識機制 18
1.3.3 礦工與挖礦 21
1.4 比特幣的缺點 23
參考文獻 23
第2章 第二代區塊鏈與以太坊 25
2.1 為什么要有以太坊? 25
2.1.1 什么是以太坊? 26
2.1.2 以太坊的賬戶模型 26
2.1.3 以太坊虛擬機 27
2.1.4 以太幣 28
2.1.5 以太坊中的燃料 28
2.1.6 以太坊的共識機制 29
2.1.7 Ghost協議 30
2.1.8 以太坊客戶端 32
2.1.9 以太坊錢包 39
2.2 智能合約 43
2.2.1 智能合約的概念 43
2.2.2 智能合約的本質 44
2.2.3 傳統合約與智能合約的對比 44
2.2.4 智能合約與以太坊區塊鏈的關系 46
2.2.5 智能合約的工作原理 46
2.2.6 智能合約發展中的挑戰 49
2.2.7 智能合約的應用場景 50
2.3 智能合約的編寫 52
2.3.1 Solidity簡介 53
2.3.2 Remix-Ethereum-IDE簡介 58
2.3.3 合約實例—HelloWorld合約 63
2.3.4 合約實例—眾籌合約 65
2.3.5 合約實例—Ballot合約 75
2.3.6 在測試網絡中部署智能合約 84
第3章 第三代區塊鏈NEO 85
3.1 NEO白皮書 87
3.1.1 NEO的設計目標 87
3.1.2 NEO中的數字資產 87
3.1.3 NEO中的數字身份 87
3.1.4 NEO中的智能合約 87
3.1.5 NEO中的應用與生態 88
3.1.6 NEO中的經濟模型 88
3.1.7 NEO中的分發機制 88
3.1.8 NEO中的治理機制 89
3.1.9 NEO中的共識機制 89
3.1.10 NEO中的智能合約體系 90
3.1.11 NEO中的跨鏈互操作協議 91
3.1.12 NEO中的分布式存儲協議 91
3.1.13 NEO中的抗量子密碼學機制 91
3.2 NEO節點 92
3.2.1 NEO-GUI 92
3.2.2 NEO-CLI 97
3.3 NEO搭建私鏈 100
3.4 NEO智能合約 106
參考文獻 115
第4章 跨鏈應用解決方案Zoro 116
4.1 Zoro白皮書 116
4.1.1 Zoro鏈 117
4.1.2 應用引擎 125
4.1.3 節點激勵 127
4.1.4 代幣發行 128
4.1.5 Zoro的治理機制 128
4.2 Zoro實例 129
4.2.1 搭建Zoro私鏈 129
4.2.2 安裝開發環境 132
4.2.3 發布Zoro代幣合約 134
4.2.4 測試合約接口 135
4.2.5 測試LockKuoZhan合約 141
區塊鏈技術解析(從第一代到第三代) 節選
第1章**代區塊鏈與比特幣 2008年11月1日,中本聰在論文“Bitcoin:A Peer-To-Peer Electronic Cash System”中首次提出比特幣的概念⑴,區塊鏈是比特幣的技術層面實現。比特幣是一種數字貨幣,與其他傳統貨幣不同,比特幣是一種對等網絡(peer to peer,P2P)的數字貨幣。P2P*早可以追溯到2003年左右的比特流(BitTorrent,BT)下載,當時很多使用BT下載的用戶并不了解P2P技術的細節,但在使用BT下載的過程中,發現這是一種與之前截然不同的下載方式。之前用戶都是在指定的網站通過指定的網址下載,下載速度取決于用戶與指定網站之間的連接速度和帶寬。而BT下載則是用戶僅下載一個很小的種子文件(幾千字節,甚至幾百字節),該種子文件將完整的下載內容分成多個“小塊”,擁有相同種子文件的眾多用戶之間互相傳輸內容,即:將自己擁有的“小塊”傳輸給其他用戶,同時又從其他用戶那里下載自己沒有的“小塊”。這樣的下載方式使得各個用戶之間是對等的,并沒有一個固定的網站來提供所謂的“中心化”下載,并且參與BT下載的用戶越多,用戶下載的速度越快,甚至可以逼近用戶帶寬的理論下載上限。這種BT下載就是P2P技術的一種典型應用,在P2P中,所有節點都是對等的,并沒有一個“中心”來協調和控制各個節點,因此它是一種去中心化的系統。 比特幣是一種點對點形式的數字貨幣,因此,就是一個去中心化的交易系統,去中心化意味著比特幣不依靠中心機構發行,比特幣通過大量的計算(俗稱挖礦)產生并發行,分布在P2P中的各個節點通過共識算法來確認和記錄比特幣的交易,并且通過加密算法來保證比特幣在流通過程中的安全性。比特幣所運用的加密算法及其本身的去中心化特性可以避免人為產生過多比特幣進而操縱幣值。比特幣基于加密算法設計出的公私鑰對使非持幣者無法盜用比特幣,也同時保證了比特幣持有者在比特幣交易過程中的匿名性。傳統貨幣都是無限的,由中心機構根據市場情況發行,但是比特幣在其誕生之初就規定了其數量是有限的,具有極強的稀缺性[2]。 比特幣的主要特征如下。 (1)去中心化。比特幣網絡由分布在全世界的各個節點組成,這些節點是平等的,沒有凌駕于其他節點的中心節點,這種去中心化網絡的設計保證了比特幣的安全和自由。 (2)全世界流通。比特幣網絡中的節點可以處在全世界的任意一個地方,只要電腦連上網絡,就可以隨時隨地進行比特幣交易。 (3)專屬所有權。每個比特幣持有者都有專屬于自己賬戶的私鑰,私鑰不為其他人所知道,擁有私鑰就可以進行比特幣交易,需要妥善保存。 (4)低交易費用。比特幣的交易可以是免費的,但是我們*好在進行交易時給礦工一些額外的交易費(比如1比特分),使交易更快得到確認。 (5)無隱藏成本。比特幣在進行轉賬時只需要對方的賬戶地址即可,無須復雜操作和額度限制。 (6)跨平臺挖掘。比特幣需要通過挖礦來發行,礦工可以在眾多計算平臺上進行挖掘。 1.1為什么要有區塊鏈? 為了對區塊鏈有一個完整的、準確的認知,我們要解決的**個根本性的問題就是:為什么需要區塊鏈?這個問題需要從區塊鏈本身的性質上去尋找答案。說到底,區塊鏈并不是實物,而是一種新的記載、傳輸信息的工具。那么我們需要搞清楚以下三個問題。 (1)人類為什么需要傳輸、存儲信息? (2)在區塊鏈產生之前,人類的信息記載、傳輸技術是什么樣子的?經歷過哪些轉變? (3)區塊鏈對人類傳輸、存儲信息的需求有哪些貢獻?與以往的技術相比,又具有哪些缺陷? 1.1.1人類需要傳輸、存儲信息的原因 首先,對于地球上多種多樣的動物,它們之間是存在信息傳遞的,例如,海豚通過脈沖波進行交流,蜜蜂通過空中舞蹈進行溝通,螞蟻使用觸角間的信息素化學物質來傳遞信息。但是它們之間信息交流的深度,遠遠不及人類。人類的語言不僅發展出了眾多的詞匯和各種精妙的表達法,更擁有汗牛充棟的書籍和影音記錄[3]。 此外,人類的語言不僅可以描述具體的事物,還可以表達抽象的概念,甚至僅憑作家的構思就可以描繪出宏大的、精致的、卻又不存在的虛擬世界。 現在我們可以回答“人類為什么需要傳輸、存儲信息”這個問題了,因為隨著人類生產力的發展、技術的進步,人與人之間需要大規模的緊密合作,這種合作需要人與人之間可以通暢地傳遞消息產生信任,同時也對信息的存儲提出了要求,從而使得人類的知識可以代際傳播。可以說,傳輸和存儲信息,就是人類的生存本能。 1.1.2人類傳輸、存儲信息技術的發展 人*初并不記載信息,只是通過某些簡單的發音來表達自己的意愿以及彼此間進行合作。隨著時間的推移,越來越多的場景需要更復雜的表達,比如合作狩獵、修建房屋等,也就逐漸產生了更復雜的語音交流。而隨著生產力的發展,部落內逐漸有了獵物或水果的盈余,需要記錄,結繩、畫線等記錄方式應運而生,進而發展出了繪畫、符號,乃至文字。綜上所述,人類的這些傳遞信息、表達信息、存儲信息的方法,都是在長期的生產、生活實踐中總結而來的,來自于民間不斷的創造、交流、積累和試錯,并不是來自于某一個人或神的強行安排、推廣。 隨著技術的進步,將信息刻在土地上、貝殼上、石壁上都顯得過于呆板,隨之而產生了更方便書寫、保存的介質,例如竹簡、絲綢、紙張等,這些發明對信息的表達、傳遞、存儲都起到了積極的推動作用,但同時也造成了信息的“中心化”因為這些媒介在古代都是相對昂貴的,窮人無法承擔。例如,南宋名將岳飛,年幼時家貧,無錢買紙筆,只能以樹枝為筆,沙地為紙,學習文化。 1.1.3區塊鏈對人類傳輸、存儲信息技術的影響 互聯網誕生于20世紀90年代,*初互聯網是一個去中心化的世界,沒有權威,沒有巨頭,各個用戶自由表達和發揮,雖然也存在野蠻生長的成分,但總體還是積極向上的。然而萬事萬物都逃不脫“分久必合”的趨勢,隨著多年的發展,權威出現了,巨頭也出現了,互聯網資源和信息逐漸被少數幾個巨型公司所掌握。例如,世界上大部分的IPV4網絡地址由美國所掌握,世界上大部分的根路由和域名解析由美國所掌握,越來越多的視頻、圖像資源由Instagram、Facebook所控制,自媒體資源由Twitter所控制,等等。 區塊鏈技術和比特幣給互聯網的去中心化帶來了一絲曙光,它的貢獻在于,為互聯網上的信息傳遞和存儲提供了一個去中心化的、可靠的、不可篡改的、透明的解決方案,可以說它真正做到了信息傳遞和存儲的公開、公正。但這一切都是有代價的,這種技術也不是完美的。首先,區塊鏈的成本要高于中心化的網絡,例如,一筆比特幣的交易,可能會在全世界的數萬臺電腦上同時進行記錄,而中心化的交易,只需要在銀行的賬目上記錄一次即可。乍一看,區塊鏈網絡造成了數據的冗余,張三轉給李四一個比特幣,有必要讓全世界都知道嗎?仔細考慮一下,我們到底想從區塊鏈技術得到什么,便捷?速度?省錢?安全?是的,就是安全。區塊鏈技術旨在提供安全的、可靠的去中心化解決方案,為了安全,適當犧牲了其他指標。總之,區塊鏈技術提供了安全的分布式互聯網信息傳輸和存儲方法,為互聯網“草根”對抗互聯網巨頭,提供了技術支持和可能性。 1.2區塊鏈與比特幣 區塊鏈的本質是一種去中心化的記賬系統,而比特幣正是這個系統上承載的“以數字形式存在”的貨幣。我們可以認為區塊鏈與比特幣之間的關系就是記賬貨幣與貨幣之間的關系,也可以說比特幣只是記賬的表征,而區塊鏈就是由其背后的一套信用記錄以及信用記錄的清算構成的體系。 比特幣是一種數字貨幣,而區塊鏈就是承載比特幣的去中心化記賬系統。所以我們可以認為區塊鏈實際上就是記載著以比特幣為貨幣的各種交易的網絡賬本。區塊鏈,顧名思義,它是由一個個區塊首尾相連組成的一條邏輯上的鏈子,一個區塊可以看作賬本的一頁,記載著大概幾百個比特幣的交易。區塊鏈可以看作是一套每個節點都可以參與背書的信用體系。 從技術層面上看,實現比特幣的底層技術就是區塊鏈,區塊鏈是一系列技術(P2P、共識算法、加密技術等)的集成,區塊鏈創造了比特幣,比特幣也讓區塊鏈這項新興技術為大眾所知。 1.2.1哈希函數 在介紹比特幣之前,首先需要了解哈希(hash)函數,這是整個比特幣系統的底層核心機制。 哈希函數又稱散列函數,假設將Z(Z可以是字符串、文本、圖像、音頻、視頻等)作為輸入,哈希函數返回一個對應的輸出H{X)。其中X可以是任意長度的字符串,而H(X)的長度則是固定的;同時保證不同的輸入X,可以得到不同的輸出H(X),即免碰撞性,盡管這在理論上是有瑕疵的,例如目前比特幣系統使用的是256位哈希函數,這意味著如果我們進行2256+1次不同輸入X的哈希函數運算,就必然可以得到至少兩個相同的H(X),理論證明只要有2m次輸入,就有99%的可能性得到相同的H(X),但213G是如此的巨大,以至于目前人類*快的計算機即使從宇宙誕生之日開始計算到現在,其碰撞的可能性也微乎其微,這就在實際操作中保證了哈希函數的免碰撞性;并且哈希函數是一個單向的函數,即在知道X的情況下,我們可以通過哈希函數快速地計算得到H(X),但是在知道H(X)的情況下,我們無法逆向求解X,即隱匿性。 1.2.2什么是比特幣? 比特幣是一種數字貨幣,但是從本質上來說,比特幣是通過哈希算法得到的滿足系統規定條件下的特解。滿足這種條件下的解是無窮的,我們只需要得到無窮多個的特解中的一組。而每一個特解都能解開方程并且是唯一的[4]。 獲取比特幣的過程就是找尋特解的過程,這個類似于解方程組的過程就是挖礦。在比特幣設計之初,規定了前2100萬個解是有限的,后續的解將不再產生比特幣,所以比特幣的數量是2100萬。 關于比特幣和挖礦的本質已經說得差不多了。但是還有一些問題沒有解決。比如,我們一直說比特幣就是特解,也就是一串數字,那么這串數字為什么可以稱作數字貨幣呢?又如何證明你擁有著某個比特幣呢? 比特幣本身作為一個字符串,需要依托于比特幣網絡(即區塊鏈)才能正常運作,實現貨幣的功能。這就好比是聲音的傳播需要媒介,離開了媒介,任何聲音也無法傳播,沒有比特幣網絡,比特幣也無法運轉。 比特幣的底層技術區塊鏈就是一種分布式存儲數據庫,記錄了在比特幣網絡中發生的每筆交易。這個數據庫并不只是存在于某一個或者某幾個中心的服務器里,而是面向所有的節點公開,一個比特幣錢包就是一個節點,這些節點通過P2P相連,每個節點都可以通過P2P更新自己本地的區塊數據。但是由于比特幣的發展,區塊一直變多,導致節點需要存儲的數據量過大,并不是所有人都愿意去保存這樣龐大的數據,所以在發展過程中出現了輕量級錢包,只保存了比特幣區塊鏈的頭部數據,因此大部分節點都選擇了輕量錢包。 為什么要把比特幣網絡設計成分布式存儲數據庫呢? 比特幣是一串數字,如何保證這串數字的唯一性,即在某個時刻只屬于某一個人? 比特幣系統是這樣設計的,我們以一次交易為例。特解12345的擁有者節點X,現在想和節點Y發生一筆交易,即將特解12345轉給節點Y。于是,節點X發起了交易,向整個比特幣網絡發出廣播,內容是:“我是節點X,有特解12345,我現在把這個特解轉給了節點Y,你們看到了嗎?”這時處在比特幣網絡中的其他節點收到了廣播信息就會做出應對,它們會將收到的信息與自己本地保存的數據庫進行比對。其他節點需要確認幾個信息,包括X的確是X、12345的確是方程的特解、節點Y確實存在等等。如果確認無誤的話,每個節點都會承認這筆交易。當確認這筆交易的節點將它打包成區塊,并連上比特幣網絡中的前一個區塊時,這筆交易就發生了。 當有著越來越多的區塊順著這個區塊連接下去,這個交易記錄就已經不可篡改了(一般來說是有6個區塊就可以保證不可篡改性)。至此,
- >
苦雨齋序跋文-周作人自編集
- >
企鵝口袋書系列·偉大的思想20:論自然選擇(英漢雙語)
- >
唐代進士錄
- >
羅曼·羅蘭讀書隨筆-精裝
- >
中國人在烏蘇里邊疆區:歷史與人類學概述
- >
自卑與超越
- >
月亮虎
- >
伯納黛特,你要去哪(2021新版)