區(qū)塊鏈部署與運(yùn)維 課件全套 武春嶺 第1-8章 區(qū)塊鏈漫游- 區(qū)塊鏈平臺監(jiān)控_第1頁
區(qū)塊鏈部署與運(yùn)維 課件全套 武春嶺 第1-8章 區(qū)塊鏈漫游- 區(qū)塊鏈平臺監(jiān)控_第2頁
區(qū)塊鏈部署與運(yùn)維 課件全套 武春嶺 第1-8章 區(qū)塊鏈漫游- 區(qū)塊鏈平臺監(jiān)控_第3頁
區(qū)塊鏈部署與運(yùn)維 課件全套 武春嶺 第1-8章 區(qū)塊鏈漫游- 區(qū)塊鏈平臺監(jiān)控_第4頁
區(qū)塊鏈部署與運(yùn)維 課件全套 武春嶺 第1-8章 區(qū)塊鏈漫游- 區(qū)塊鏈平臺監(jiān)控_第5頁
已閱讀5頁,還剩358頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

區(qū)塊鏈漫游高等職業(yè)教育新目錄新專標(biāo)電子與信息大類教材區(qū)塊鏈部署與運(yùn)維第一章01認(rèn)識區(qū)塊鏈區(qū)塊鏈概念2008年10月31日,中本聰(SatoshiNakamoto)發(fā)表一篇題為《比特幣:一種點(diǎn)對點(diǎn)式的電子現(xiàn)金系統(tǒng)》的論文,標(biāo)志著不需要交易雙方互信就可以安全交易的點(diǎn)對點(diǎn)價(jià)值交換體系的誕生。區(qū)塊鏈的概念是從比特幣系統(tǒng)的結(jié)構(gòu)中抽象出來的,本質(zhì)上是一個(gè)分布式賬本。認(rèn)識區(qū)塊鏈傳統(tǒng)的記賬方式大多基于中心化結(jié)構(gòu),具有絕對地位的特權(quán)節(jié)點(diǎn)獨(dú)立記賬,其他節(jié)點(diǎn)服從于特權(quán)節(jié)點(diǎn)的權(quán)威,從而達(dá)成集體共識,共同維護(hù)此中心化結(jié)構(gòu)記賬系統(tǒng)的穩(wěn)定。然而,中心化結(jié)構(gòu)存在中心節(jié)點(diǎn)作惡、中心節(jié)點(diǎn)負(fù)載過高等問題,無法保證絕對信任可靠。去中心化結(jié)構(gòu),也叫分布式結(jié)構(gòu),通過每個(gè)節(jié)點(diǎn)都執(zhí)行記賬任務(wù)來保證只要大于51%的節(jié)點(diǎn)是誠實(shí)的,那么記賬結(jié)果一定是真實(shí)可靠的。認(rèn)識區(qū)塊鏈采用分布式結(jié)構(gòu)的缺點(diǎn)在于賬本信息的冗余程度較高,每個(gè)節(jié)點(diǎn)都需要獨(dú)立維護(hù)一份賬本,存儲成本和計(jì)算成本都很高。同時(shí)分布式賬本在節(jié)點(diǎn)記賬權(quán)需要通過一定的規(guī)則進(jìn)行分配,以保證系統(tǒng)不會出現(xiàn)惡性爭奪或不順從指揮等問題,這個(gè)規(guī)則稱為共識機(jī)制。節(jié)點(diǎn)之間達(dá)成共識是通過P2P網(wǎng)絡(luò)實(shí)現(xiàn)通信的,而不是通過傳統(tǒng)中心化的服務(wù)器統(tǒng)一進(jìn)行信息交換的。認(rèn)識區(qū)塊鏈交換的信息包括剛剛產(chǎn)生的交易和已經(jīng)打包為區(qū)塊結(jié)構(gòu)的交易。剛剛產(chǎn)生的交易通過“洪水算法”告知每個(gè)節(jié)點(diǎn),而最近取得記賬權(quán)的節(jié)點(diǎn)將其驗(yàn)證過合法性的交易列表打包為區(qū)塊結(jié)構(gòu),并告知其他節(jié)點(diǎn)。所有節(jié)點(diǎn)對于這個(gè)新區(qū)塊的合法性進(jìn)行獨(dú)立檢查,如果符合要求,就將新區(qū)塊放到所有合法區(qū)塊的后面,通過鏈表式的結(jié)構(gòu)連接起來,于是稱為區(qū)塊鏈。認(rèn)識區(qū)塊鏈總的來說,區(qū)塊鏈?zhǔn)且环N全新的融合型技術(shù),存儲上基于塊鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),通信上基于點(diǎn)對點(diǎn)對等網(wǎng)絡(luò),架構(gòu)上基于去中心化的分布式系統(tǒng),交易上基于哈希算法與非對稱加密技術(shù),維護(hù)上基于共識機(jī)制。區(qū)塊鏈作為一種多方共享的技術(shù),融合了計(jì)算機(jī)科學(xué)、社會學(xué)、經(jīng)濟(jì)學(xué)、管理學(xué)等學(xué)科,實(shí)現(xiàn)了多個(gè)主體之間的分布式協(xié)作,構(gòu)建了信任基礎(chǔ)。認(rèn)識區(qū)塊鏈去中心化去中心化是指眾多節(jié)點(diǎn)均具有平等的地位,沒有永久性的特權(quán)節(jié)點(diǎn),只有臨時(shí)主導(dǎo)記賬的節(jié)點(diǎn)。不可篡改性信息一經(jīng)打包為區(qū)塊并加入?yún)^(qū)塊鏈的最長合法鏈,就永久地被記錄在區(qū)塊鏈上。開放性區(qū)塊鏈系統(tǒng)是相對開放的。對于公有鏈,所有人都可以申請成為本區(qū)塊鏈的一個(gè)節(jié)點(diǎn)?!啊闭J(rèn)識區(qū)塊鏈區(qū)塊鏈特性匿名性盡管區(qū)塊鏈的所有數(shù)據(jù)是公開透明的,但是用戶的隱私依然能夠得到保護(hù)。自治性去中心化的結(jié)構(gòu)導(dǎo)致區(qū)塊鏈中節(jié)點(diǎn)的獨(dú)立性很高,但是獨(dú)立性不代表充分自由,不遵守區(qū)塊鏈協(xié)議和規(guī)范的節(jié)點(diǎn)往往會受到懲罰。認(rèn)識區(qū)塊鏈在遙遠(yuǎn)的舊石器時(shí)代,“貨幣”一開始是實(shí)物貨幣,如貝殼、金銀等,因?yàn)樗鼈兙哂邢∪毙裕虼丝捎糜诔洚?dāng)一般等價(jià)物。人們的記賬方式也較為簡單,普遍依靠死記硬背和心算。區(qū)塊鏈由來認(rèn)識區(qū)塊鏈01020304隨著部落人數(shù)的增長和生產(chǎn)力的提高,開始出現(xiàn)生產(chǎn)剩余,人們就發(fā)明了用不同的符號來刻畫記錄和把場景畫下來這兩種方法記賬。此后,結(jié)繩記事、書契等文字記錄法,都是賬本最初的形態(tài)。后來,我們開始用紙幣進(jìn)行支付,比如100元面額的人民幣的制作成本可能只有幾毛錢,卻能夠換取價(jià)值100元的物品。這是因?yàn)橛袊业男庞帽硶?,讓人民相信這本來一文不值的紙幣能夠換100元的商品。認(rèn)識區(qū)塊鏈隨著互聯(lián)網(wǎng)的發(fā)展,我們從紙幣過渡到記賬貨幣。比如發(fā)工資只是在員工銀行卡賬號上做數(shù)字的加法、買衣服消費(fèi)只是做減法,整個(gè)過程中都是銀行在記賬,且只有銀行有記賬權(quán)。但是這種記賬方法仍然存在著信息不對稱和信用問題。在2008年全球經(jīng)濟(jì)危機(jī)中,美國政府因?yàn)橛杏涃~權(quán)所以可以無限增發(fā)貨幣,將金融風(fēng)險(xiǎn)轉(zhuǎn)嫁至其他國家。美聯(lián)儲可以為所欲為,通過無限量印鈔來救市,也預(yù)示著在市場經(jīng)濟(jì)條件下法定貨幣信用的不確定性。認(rèn)識區(qū)塊鏈2008年,比特幣的創(chuàng)造者中本聰創(chuàng)建了一種新型支付體系:大家都有權(quán)利進(jìn)行記賬,貨幣不能超發(fā),整個(gè)賬本完全公開透明,十分公平,這就是比特幣產(chǎn)生的原因和動(dòng)機(jī)。認(rèn)識區(qū)塊鏈區(qū)塊鏈1.0是以比特幣為代表的虛擬貨幣的時(shí)代,代表了虛擬貨幣的應(yīng)用,包括其支付、流通等虛擬貨幣的職能,目標(biāo)是實(shí)現(xiàn)貨幣的去中心化與數(shù)字貨幣交易支付功能。區(qū)塊鏈1.0:從比特幣看區(qū)塊鏈區(qū)塊鏈2.0是指智能合約。智能合約與貨幣相結(jié)合,為金融領(lǐng)域提供了更加廣泛的應(yīng)用場景。區(qū)塊鏈2.0:以太坊與通證區(qū)塊鏈3.0是指區(qū)塊鏈在金融行業(yè)之外各行業(yè)的應(yīng)用場景,能夠滿足更加復(fù)雜的商業(yè)邏輯。區(qū)塊鏈3.0被稱為互聯(lián)網(wǎng)技術(shù)之后的新一代技術(shù)創(chuàng)新,足以推動(dòng)更大的產(chǎn)業(yè)改革。區(qū)塊鏈3.0:去中心化應(yīng)用認(rèn)識區(qū)塊鏈區(qū)塊鏈發(fā)展里程碑區(qū)塊鏈發(fā)展機(jī)遇與挑戰(zhàn)國際貿(mào)易。發(fā)展機(jī)遇數(shù)字版權(quán)。金融服務(wù)。征信和權(quán)屬管理。共享經(jīng)濟(jì)。認(rèn)識區(qū)塊鏈安全:區(qū)塊鏈?zhǔn)腔诿艽a學(xué)、點(diǎn)對點(diǎn)通信、共識算法、智能合約、頂層應(yīng)用構(gòu)建等技術(shù)的融合型技術(shù),因此針對每個(gè)采用的技術(shù),都存在一定的安全風(fēng)險(xiǎn)。人才:從2008年區(qū)塊鏈概念問世至今,區(qū)塊鏈已經(jīng)經(jīng)過了十幾年的飛速發(fā)展,但是由于時(shí)間有限,社會認(rèn)知困難,人才儲備一直不足。觀念:區(qū)塊鏈的概念在普及過程中遇到很大阻力,有兩點(diǎn)原因。標(biāo)準(zhǔn)。法律:區(qū)塊鏈行業(yè)一方面有待完善相關(guān)法律法規(guī),另一方面要嚴(yán)格遵守反洗錢、限制ICO等法律的規(guī)范,處于一個(gè)謹(jǐn)慎發(fā)展的階段。認(rèn)識區(qū)塊鏈“新基建”將加速中國經(jīng)濟(jì)社會的數(shù)字化進(jìn)程,“新基建”的應(yīng)用需要新的信任機(jī)制作為紐帶,而區(qū)塊鏈?zhǔn)菢?gòu)建未來數(shù)字基建的信任基石,將推動(dòng)信息互聯(lián)網(wǎng)升級到價(jià)值互聯(lián)網(wǎng),加速數(shù)字基建的進(jìn)程,迎來全新而廣闊的數(shù)字時(shí)代。物聯(lián)網(wǎng)物聯(lián)網(wǎng)(InternetofThings,IOT),是傳統(tǒng)互聯(lián)網(wǎng)和電信網(wǎng)深度結(jié)合的產(chǎn)物,實(shí)現(xiàn)了獨(dú)立物品個(gè)體的萬物互聯(lián)。認(rèn)識區(qū)塊鏈區(qū)塊鏈如何助力“新基建”區(qū)塊鏈“去中心化”的特質(zhì)將降低中心化架構(gòu)的高額運(yùn)維成本。降低成本區(qū)塊鏈中所有傳輸?shù)臄?shù)據(jù)都經(jīng)過加密處理,用戶的數(shù)據(jù)和隱私將更加安全。隱私保護(hù)身份權(quán)限管理和多方共識有助于識別非法節(jié)點(diǎn),及時(shí)阻止惡意節(jié)點(diǎn)的接入和作惡。設(shè)備安全認(rèn)識區(qū)塊鏈數(shù)據(jù)只要寫入?yún)^(qū)塊鏈就難以被篡改,依托鏈?zhǔn)浇Y(jié)構(gòu)有助于構(gòu)建可證可溯的電子證據(jù)存證。追本溯源區(qū)塊鏈的分布式架構(gòu)和主體對等的特點(diǎn)有助于打破物聯(lián)網(wǎng)現(xiàn)存的多個(gè)信息孤島桎梏,以低成本建立互信,促進(jìn)信息的橫向流動(dòng)和網(wǎng)間協(xié)作。網(wǎng)間協(xié)作認(rèn)識區(qū)塊鏈大數(shù)據(jù)2020年4月,國家發(fā)改委在例行新聞發(fā)布會上,首次明確了“新基建”的范圍,區(qū)塊鏈被首次正式提及,同時(shí)被提及的還有大數(shù)據(jù)、人工智能。人工智能人工智能是一門基于大數(shù)據(jù)的交叉科學(xué),應(yīng)用最廣的領(lǐng)域包括智能機(jī)器人、語音語義識別、圖像圖片識別等。云計(jì)算區(qū)塊鏈的本質(zhì)就是分布式賬本和智能合約。分布式賬本是一個(gè)獨(dú)特的數(shù)據(jù)庫,這個(gè)數(shù)據(jù)庫像網(wǎng)絡(luò)一樣,所有人都使用區(qū)塊鏈就會建立一個(gè)生態(tài)系統(tǒng)?!啊闭J(rèn)識區(qū)塊鏈填寫任務(wù)評價(jià)表,如表1-1所示。認(rèn)識區(qū)塊鏈02區(qū)塊鏈分類公有鏈:公有鏈對外公開,用戶不用注冊便能參與,能自由訪問區(qū)塊鏈上的所有信息。公有鏈?zhǔn)钦嬲饬x上的完全去中心化的區(qū)塊鏈,通過密碼學(xué)保證信息不被篡改,通過經(jīng)濟(jì)學(xué)上的激勵(lì),在匿名的P2P網(wǎng)絡(luò)中達(dá)成共識,從而形成去中心化的區(qū)塊鏈。區(qū)塊鏈的三種類型區(qū)塊鏈分類公有鏈具有如下特點(diǎn)。所有交易數(shù)據(jù)公開、透明。無法篡改。公有鏈?zhǔn)歉叨热ブ行幕姆植际劫~本,篡改交易數(shù)據(jù)幾乎不可能實(shí)現(xiàn)。低吞吐量。交易速度緩慢。低吞吐量必然帶來緩慢的交易速度。區(qū)塊鏈分類聯(lián)盟鏈聯(lián)盟鏈?zhǔn)侵钙涔沧R過程受到預(yù)選節(jié)點(diǎn)控制的區(qū)塊鏈,由某個(gè)群體內(nèi)部指定多個(gè)預(yù)選的節(jié)點(diǎn)為“記賬人”,每個(gè)塊的生成由所有的預(yù)選節(jié)點(diǎn)共同決定(預(yù)選節(jié)點(diǎn)參與共識過程),其他接入節(jié)點(diǎn)可以參與交易,但不過問記賬過程(本質(zhì)上還是托管記賬,只是變成分布式記賬,每個(gè)塊的記賬人成為該區(qū)塊鏈的主要風(fēng)險(xiǎn)點(diǎn)),其他任何人可以通過該區(qū)塊鏈開放的API進(jìn)行限定查詢。這些區(qū)塊鏈可視為部分去中心化。區(qū)塊鏈分類01020304部分去中心化。聯(lián)盟鏈具有如下特點(diǎn):可控性較強(qiáng)。數(shù)據(jù)不會默認(rèn)公開。交易速度很快。區(qū)塊鏈分類私有鏈?zhǔn)侵钙鋵懭霗?quán)限由某個(gè)組織和機(jī)構(gòu)控制的區(qū)塊鏈,讀取權(quán)限或者對外開放,或者被進(jìn)行了任意程度的限制。相關(guān)的應(yīng)用可以包括數(shù)據(jù)庫管理、審計(jì)等,盡管在有些情況下希望它能有公共的可審計(jì)性,但在很多的情形下,公共的可讀性似乎并非是必需的。私有鏈區(qū)塊鏈分類私有鏈具有如下特點(diǎn)。交易速度非???。更好地保障隱私。交易成本大幅降低,甚至在零私有鏈上可以進(jìn)行完全免費(fèi)或非常廉價(jià)的交易。有助于保護(hù)其基本的產(chǎn)品不被破壞。區(qū)塊鏈分類01020304超級賬本(Hyperledger)是當(dāng)前最著名的聯(lián)盟鏈基礎(chǔ)平臺。超級賬本簡介作為一個(gè)聯(lián)合項(xiàng)目,超級賬本由面向不同目的和場景的子項(xiàng)目構(gòu)成。超級賬本的組成超級賬本包括三大組件:區(qū)塊鏈、鏈碼、成員權(quán)限管理。超級賬本架構(gòu)設(shè)計(jì)超級賬本主要應(yīng)用于開放可信供應(yīng)鏈、資產(chǎn)存管、商務(wù)合同、銀聯(lián)積分交換平臺、商品身份溯源、食品安全等。超級賬本應(yīng)用場景區(qū)塊鏈分類超級賬本應(yīng)用填寫任務(wù)評價(jià)表,如表1-2所示。區(qū)塊鏈分類03區(qū)塊鏈應(yīng)用區(qū)塊鏈應(yīng)用價(jià)值區(qū)塊鏈提供一種在不可信環(huán)境中進(jìn)行信息與價(jià)值傳遞的交換機(jī)制,是構(gòu)建未來價(jià)值互聯(lián)網(wǎng)的基石,也符合黨的十九大以來一直提倡的區(qū)塊鏈要為實(shí)體經(jīng)濟(jì)提供可信平臺。區(qū)塊鏈發(fā)展到現(xiàn)在,我們可以從以下幾個(gè)方面來分析其應(yīng)用的方向。區(qū)塊鏈應(yīng)用從應(yīng)用需求視角來看,區(qū)塊鏈行業(yè)應(yīng)用正加速推進(jìn)。從市場應(yīng)用來看,區(qū)塊鏈正逐步成為市場的一種工具,主要作用是減少中間環(huán)節(jié),讓傳統(tǒng)的或高成本的中間機(jī)構(gòu)成為過去,進(jìn)而降低流通成本。從底層技術(shù)來看,區(qū)塊鏈有望推進(jìn)數(shù)據(jù)記錄、數(shù)據(jù)傳播和數(shù)據(jù)存儲管理模式的轉(zhuǎn)型。區(qū)塊鏈應(yīng)用從服務(wù)提供形式來看,云的開放性和云資源的易獲得性決定了公有云平臺是當(dāng)前區(qū)塊鏈創(chuàng)新的最佳載體,利用云平臺讓基于區(qū)塊鏈的應(yīng)用快速進(jìn)入市場,獲得先發(fā)優(yōu)勢。從社會結(jié)構(gòu)來看,區(qū)塊鏈技術(shù)有望將法律、經(jīng)濟(jì)、信息系統(tǒng)融為一體,顛覆原有社會的監(jiān)管和治理模式,組織形態(tài)也會因此發(fā)生一定的變化。區(qū)塊鏈應(yīng)用區(qū)塊鏈應(yīng)用的發(fā)展趨勢如圖1-2所示,從比特幣加密數(shù)字貨幣到金融結(jié)算市場的優(yōu)化,逐漸演進(jìn)到創(chuàng)造性地重構(gòu)傳統(tǒng)行業(yè)的大量應(yīng)用。區(qū)塊鏈應(yīng)用隨著應(yīng)用場景日益豐富,應(yīng)用將推動(dòng)著區(qū)塊鏈技術(shù)不斷完善,區(qū)塊鏈與云的結(jié)合日趨緊密,該技術(shù)也會逐漸應(yīng)用于新興市場經(jīng)濟(jì),如房屋租賃共享經(jīng)濟(jì)、社交網(wǎng)絡(luò)、內(nèi)容分發(fā)網(wǎng)絡(luò)等場景中。區(qū)塊鏈應(yīng)用區(qū)塊鏈系統(tǒng)以其特有的價(jià)值實(shí)現(xiàn)數(shù)據(jù)流轉(zhuǎn)過程中的不可逆,從而保障數(shù)據(jù)的可靠性;區(qū)塊鏈數(shù)據(jù)流轉(zhuǎn)的可信性將有效簡化流程、提升效率、降低成本;區(qū)塊鏈的系統(tǒng)架構(gòu)和優(yōu)勢使構(gòu)建產(chǎn)業(yè)生態(tài)更加容易,并降低產(chǎn)業(yè)成本??梢灶A(yù)見,區(qū)塊鏈?zhǔn)莾r(jià)值網(wǎng)絡(luò)的基礎(chǔ),將逐漸成為未來互聯(lián)網(wǎng)不可或缺的一部分,區(qū)塊鏈技術(shù)也將逐步適應(yīng)監(jiān)管政策要求,逐步成為科技監(jiān)管領(lǐng)域的重要組成部分。區(qū)塊鏈應(yīng)用區(qū)塊鏈在教育領(lǐng)域的應(yīng)用教育是國之大計(jì)、黨之大計(jì)。區(qū)塊鏈在醫(yī)療領(lǐng)域的應(yīng)用醫(yī)療健康行業(yè)以保障人民群眾身心健康為目標(biāo)。區(qū)塊鏈在公益方面的應(yīng)用公益事業(yè)包括慈善捐助、志愿服務(wù)、公益扶貧等領(lǐng)域。“”區(qū)塊鏈應(yīng)用區(qū)塊鏈應(yīng)用場景區(qū)塊鏈在政務(wù)領(lǐng)域的應(yīng)用近年來,“互聯(lián)網(wǎng)+政務(wù)”快速發(fā)展,國家機(jī)關(guān)在政務(wù)活動(dòng)中,全面應(yīng)用現(xiàn)代信息技術(shù)、網(wǎng)絡(luò)技術(shù)及辦公自動(dòng)化技術(shù)等多項(xiàng)技術(shù)進(jìn)行辦公、管理和為社會提供公共服務(wù),也稱為電子政務(wù)。區(qū)塊鏈在智慧交通方面的應(yīng)用21世紀(jì)以來,各國政府積極助推現(xiàn)代化交通體系建設(shè),尤其重視交通運(yùn)輸智能化與信息化建設(shè)。區(qū)塊鏈應(yīng)用區(qū)塊鏈在智慧能源方面的應(yīng)用能源行業(yè)主要涉及電力、石油、天然氣和新興能源等領(lǐng)域,囊括上游的開采、勘探、生產(chǎn),中游的提煉、分發(fā)、輸送,以及下游的分銷、交付和使用等。它是服務(wù)工業(yè)商業(yè)、居民生活的核心行業(yè),維護(hù)著我們經(jīng)濟(jì)生活的正常運(yùn)轉(zhuǎn)。區(qū)塊鏈應(yīng)用供應(yīng)鏈金融是貿(mào)易金融的一個(gè)典型場景,如圖1-9所示。區(qū)塊鏈應(yīng)用供應(yīng)鏈金融業(yè)務(wù)應(yīng)用實(shí)踐從上面的例子中可以看到這是一個(gè)三贏的局面,企業(yè)和供應(yīng)商的業(yè)務(wù)可以正常開展,金融機(jī)構(gòu)也能從中受益。行業(yè)現(xiàn)狀供應(yīng)鏈金融的核心問題有三點(diǎn):融資難、風(fēng)控難、監(jiān)管難。業(yè)務(wù)痛點(diǎn)供應(yīng)鏈金融場景中的關(guān)鍵需求是如何存證供應(yīng)鏈的關(guān)鍵信息;如何確保可信資質(zhì)的評估;如何保障交易各方的權(quán)益;如何建立供應(yīng)鏈的上下游核心企業(yè)和供應(yīng)商之間的互信,降低融資的成本。基于區(qū)塊鏈的解決方案區(qū)塊鏈應(yīng)用填寫任務(wù)評價(jià)表,如表1-3所示。區(qū)塊鏈應(yīng)用歸納總結(jié):區(qū)塊鏈應(yīng)用謝謝觀看區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)構(gòu)建高等職業(yè)教育新目錄新專標(biāo)電子與信息大類教材區(qū)塊鏈部署與運(yùn)維第二章01創(chuàng)建區(qū)塊任務(wù)布置:學(xué)習(xí)區(qū)塊賬本基本概念。學(xué)習(xí)區(qū)塊整體結(jié)構(gòu)。認(rèn)識創(chuàng)世區(qū)塊。編碼創(chuàng)建一個(gè)區(qū)塊。創(chuàng)建區(qū)塊從宏觀上講,賬本(Ledger)是具有一定格式的,以會計(jì)憑證為依據(jù),對所有經(jīng)濟(jì)業(yè)務(wù)進(jìn)行序時(shí)分類記錄的若干賬頁組成的本籍,也就是通常我們所說的賬冊。區(qū)塊鏈表示一種特有的數(shù)據(jù)記錄格式。所謂的區(qū)塊就是數(shù)據(jù)塊的意思,每一個(gè)區(qū)塊之間通過某個(gè)標(biāo)志連接起來,從而形成一條鏈,區(qū)塊鏈就是“區(qū)塊+鏈”。區(qū)塊賬本(Ledgerium)是一種分布式數(shù)字分類賬,以可驗(yàn)證和永久的方式高效地記錄各方之間的交易。創(chuàng)建區(qū)塊

區(qū)塊賬本區(qū)塊賬本生態(tài)系統(tǒng)有三個(gè)主要組成部分:區(qū)塊賬本、身份認(rèn)證平臺、區(qū)塊賬本文件存儲系統(tǒng)。區(qū)塊賬本擁有靈活多變的形式,可以獨(dú)立存在。創(chuàng)建區(qū)塊在區(qū)塊鏈中賬本層負(fù)責(zé)區(qū)塊鏈系統(tǒng)的信息存儲,包括收集交易數(shù)據(jù)、生成數(shù)據(jù)區(qū)塊、對本地?cái)?shù)據(jù)進(jìn)行合法性校驗(yàn),以及將校驗(yàn)通過的區(qū)塊加到鏈上。賬本層將上一個(gè)區(qū)塊的簽名嵌入下一個(gè)區(qū)塊中組成塊鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),使數(shù)據(jù)完整性和真實(shí)性得到保障,這正是區(qū)塊鏈系統(tǒng)防篡改、可追溯特性的來源。典型的區(qū)塊鏈系統(tǒng)數(shù)據(jù)賬本設(shè)計(jì)采用了一種按時(shí)間順序存儲的塊鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)。創(chuàng)建區(qū)塊賬本層有兩種數(shù)據(jù)記錄方式,分別是基于資產(chǎn)和基于賬號的。基于資產(chǎn)的數(shù)據(jù)模型中,首先以資產(chǎn)為核心進(jìn)行建模,然后記錄資產(chǎn)的所有權(quán),即所有權(quán)是資產(chǎn)的一個(gè)字段?;谫~號的數(shù)據(jù)模型中,建立賬號作為資產(chǎn)和交易的對象,資產(chǎn)是賬號下的一個(gè)字段。相比而言,基于賬號的數(shù)據(jù)模型可以更方便地記錄、查詢賬號相關(guān)信息,基于資產(chǎn)的數(shù)據(jù)模型可以更好地適應(yīng)并發(fā)環(huán)境。為了獲取高并發(fā)的處理性能,并且及時(shí)查詢到賬號的狀態(tài)信息,多個(gè)區(qū)塊鏈平臺正向兩種數(shù)據(jù)模型的混合模式發(fā)展。創(chuàng)建區(qū)塊區(qū)塊結(jié)構(gòu)真實(shí)的區(qū)塊鏈?zhǔn)且粭l長度不斷增長的鏈表結(jié)構(gòu),主要由區(qū)塊和哈希指針構(gòu)成。區(qū)塊是收納交易的容器,俗稱的礦工挖礦就是把交易打包到區(qū)塊中,然后把這個(gè)區(qū)塊告訴其他礦工:“嘿,各位礦友們,這些交易我已經(jīng)打包在這個(gè)塊里了,你們不用管這些交易了,繼續(xù)在我的后面打包其他交易到新的塊里吧”。創(chuàng)建區(qū)塊區(qū)塊鏈和區(qū)塊的結(jié)構(gòu)如圖2-1所示。創(chuàng)建區(qū)塊由圖2-1可知,區(qū)塊是區(qū)塊鏈的核心主體,一個(gè)區(qū)塊主要由兩部分組成:區(qū)塊頭和由交易列表構(gòu)成的區(qū)塊主體。具體可以用表2-1表示比特幣區(qū)塊整體結(jié)構(gòu)。創(chuàng)建區(qū)塊區(qū)塊鏈里的第一個(gè)區(qū)塊創(chuàng)建于2009年,被稱為創(chuàng)世區(qū)塊。它是區(qū)塊鏈里面所有區(qū)塊的共同祖先,這意味著你從任一區(qū)塊循序回溯,最終都將到達(dá)創(chuàng)世區(qū)塊。因?yàn)閯?chuàng)世區(qū)塊已經(jīng)預(yù)先寫入到比特幣客戶端軟件里,這能確保創(chuàng)世區(qū)塊不會被改變。每一個(gè)節(jié)點(diǎn)都“知道”創(chuàng)世區(qū)塊的哈希值、結(jié)構(gòu)、被創(chuàng)建的時(shí)間和里面的每一個(gè)交易。創(chuàng)世區(qū)塊創(chuàng)建區(qū)塊因此,每個(gè)節(jié)點(diǎn)都把該區(qū)塊作為區(qū)塊鏈的首區(qū)塊,從而構(gòu)建了一個(gè)安全、可信的區(qū)塊鏈的根。創(chuàng)建區(qū)塊創(chuàng)世區(qū)塊是區(qū)塊鏈上的第一個(gè)區(qū)塊,比特幣區(qū)塊鏈的創(chuàng)世區(qū)塊信息如圖2-2所示。創(chuàng)建區(qū)塊中本聰挖出的比特幣創(chuàng)世區(qū)塊還包含這樣一句話“TheTimes03/Jan/2009Chancelloronbrinkofseeondbailoutforbanks"。這句話是《泰晤士報(bào)》當(dāng)天的頭版文章標(biāo)題,引用這句話既是對該區(qū)塊產(chǎn)生時(shí)間的說明,也可視為半開玩笑地提醒人們一個(gè)獨(dú)立的貨幣制度的重要性,同時(shí)告訴人們隨著比特幣的發(fā)展,一場前所未有的世界性貨幣革命將要到來。該消息由比特幣的創(chuàng)立者中本聰嵌入創(chuàng)世區(qū)塊中。創(chuàng)建區(qū)塊區(qū)塊結(jié)構(gòu)設(shè)計(jì)。創(chuàng)建區(qū)塊編碼創(chuàng)建區(qū)塊生成創(chuàng)世區(qū)塊。創(chuàng)建區(qū)塊生成區(qū)塊設(shè)計(jì)。創(chuàng)建區(qū)塊生成區(qū)塊鏈結(jié)構(gòu)設(shè)計(jì)。創(chuàng)建區(qū)塊運(yùn)行區(qū)塊鏈代碼。創(chuàng)建區(qū)塊填寫任務(wù)評價(jià)表,如表2-2所示。創(chuàng)建區(qū)塊02生成Merkle樹任務(wù)場景區(qū)塊鏈中的交易都是一個(gè)個(gè)獨(dú)立的數(shù)據(jù),這些數(shù)據(jù)如何高效保存和查詢呢?利用Hash算法和Merkle樹,我們就可以將數(shù)據(jù)高效地組織在一起。通過Merkle樹最上端的Merkle根,就可以保證這些數(shù)據(jù)不被篡改并且可以利用生成路徑上的哈希值來判斷某一個(gè)數(shù)據(jù)是否屬于這個(gè)Merkle樹。生成Merkle樹Merkle樹是一種哈希二叉樹,它是一種用作快速歸納和校驗(yàn)大規(guī)模數(shù)據(jù)完整性的數(shù)據(jù)結(jié)構(gòu),它是區(qū)塊鏈技術(shù)里主要使用的數(shù)據(jù)結(jié)構(gòu)原型。在比特幣網(wǎng)絡(luò)中,Merkle樹被用來歸納一個(gè)區(qū)塊中的所有交易,同時(shí)生成整個(gè)交易集合的根哈希,并且提供了一種校驗(yàn)區(qū)塊是否存在某交易的高效途徑。Merkle樹基礎(chǔ)知識生成Merkle樹生成一棵完整的Merkle樹需要遞歸地對哈希節(jié)點(diǎn)(底層是交易哈希處理后的哈希節(jié)點(diǎn))進(jìn)行哈希操作,并將新生成的哈希節(jié)點(diǎn)插入Merkle樹中,直到只剩一個(gè)哈希節(jié)點(diǎn),該節(jié)點(diǎn)就是Merkle樹的根。生成Merkle樹在比特幣的Merkle樹中兩次使用到了SHA256算法,因此其加密哈希算法也被稱為double-SHA256.Merkle樹(哈希二叉樹)如圖2-3所示。生成Merkle樹Merkle根哈希是區(qū)塊主體的核心濃縮,它是該區(qū)塊中所有交易構(gòu)成的哈希二叉樹的根的哈希值。Merkle樹是自底向上構(gòu)建的數(shù)據(jù)結(jié)構(gòu),所以可由根部搜尋到任何一個(gè)在該樹中的數(shù)據(jù),簡而言之就是通過Merkle根哈希可以搜尋出任何一筆存儲在該區(qū)塊中的交易。同時(shí)又使得區(qū)塊頭存儲的數(shù)據(jù)非常小,只有32字節(jié),為快速驗(yàn)證交易(如SPV)提供了可能。生成Merkle樹如圖2-4所示就是比特幣完整區(qū)塊結(jié)構(gòu)。生成Merkle樹sha256哈希函數(shù)的使用:聲明使用UTF-8格式,并且引入哈希函數(shù)的包。編寫list_hashing函數(shù),使得數(shù)據(jù)列表中的每一個(gè)數(shù)據(jù)都能夠變?yōu)槠鋵?yīng)的哈希值。編寫catenate_hash函數(shù),將兩個(gè)數(shù)據(jù)拼接在一起后進(jìn)行sha256哈希操作,以十六進(jìn)制摘要的形式輸出。生成Merkle樹Merkle樹生成實(shí)現(xiàn)01020304建立MerkleTree類,編寫初始化函數(shù)。生成一棵Merkle樹編寫generate函數(shù),將本區(qū)塊所有數(shù)據(jù)都進(jìn)行哈希操作后生成多層Merkle樹,輸出為每一層樹和樹的層數(shù)。測試Merkle樹是否正常運(yùn)行。最后這個(gè)Merkle樹的根節(jié)點(diǎn)值就是存儲在本區(qū)塊頭的MerkleRoot,結(jié)果如下(結(jié)果由于隨機(jī)性一定會有不同,但是形式相同)。生成Merkle樹填寫任務(wù)評價(jià)表,如表2-3所示。生成Merkle樹03LevelDB數(shù)據(jù)存取任假設(shè)在某個(gè)業(yè)務(wù)場景中,存儲壓力較大,寫操作遠(yuǎn)大于讀操作,并且讀操作集中在最近寫入的數(shù)據(jù)中,要求根據(jù)LevelDB的特點(diǎn),編碼實(shí)現(xiàn)高效的業(yè)務(wù)數(shù)據(jù)存取操作。任務(wù)場景LevelDB數(shù)據(jù)存取任任務(wù)布置:學(xué)習(xí)賬本存儲基礎(chǔ)知識。學(xué)習(xí)LevelDB基礎(chǔ)知識。編碼實(shí)現(xiàn)LevelDB數(shù)據(jù)存取。LevelDB數(shù)據(jù)存取任賬本存儲以比特幣為代表的經(jīng)典區(qū)塊鏈核心客戶端使用Google的LevelDB存儲區(qū)塊鏈元數(shù)據(jù)。區(qū)塊被從遠(yuǎn)及近有序地連接在這個(gè)鏈條里,每個(gè)區(qū)塊都指向前一個(gè)區(qū)塊。區(qū)塊鏈經(jīng)常被視為一個(gè)垂直的棧,第一個(gè)區(qū)塊作為棧底的首區(qū)塊,隨后每個(gè)區(qū)塊都被放置在之前的區(qū)塊之上。LevelDB數(shù)據(jù)存取任用棧來形象化地表示區(qū)塊依次堆疊這一概念后,我們便可以使用一些術(shù)語,例如,“高度”表示區(qū)塊與首區(qū)塊之間的距離,“頂部”或“頂端”表示最新添加的區(qū)塊。LevelDB數(shù)據(jù)存取任如圖2-5所示是比特幣區(qū)塊賬本存儲的邏輯結(jié)構(gòu)。LevelDB數(shù)據(jù)存取任LevelDB(默認(rèn)的KV數(shù)據(jù)庫):支持鍵的查詢、組合鍵的查詢、鍵范圍查詢,是默認(rèn)的狀態(tài)數(shù)據(jù)庫。LevelDB是采用C++編寫的一種高性能嵌入式數(shù)據(jù)庫,沒有獨(dú)立的數(shù)據(jù)庫進(jìn)程,占用資源少,速度快。LevelDBLevelDB數(shù)據(jù)存取任基于鍵的基本操作包括:Put(key,value);Get(key);Delete(key)。它有如下一些特點(diǎn):支持批量修改的原子操作。鍵和值可以是任意的字節(jié)數(shù)組。數(shù)據(jù)是按鍵排序后存儲的??梢宰远x排序方法。LevelDB數(shù)據(jù)存取任支持創(chuàng)建快照。支持對數(shù)據(jù)前向和后向的迭代操作。數(shù)據(jù)采用Snappy壓縮技術(shù)。LevelDB數(shù)據(jù)存取任編碼實(shí)現(xiàn)LevelDB數(shù)據(jù)存取安裝LevelDBpipinstallpy-leveldbLevelDB數(shù)據(jù)存取任操作levelDB實(shí)例。LevelDB數(shù)據(jù)存取任LevelDB數(shù)據(jù)存取任LevelDB數(shù)據(jù)存取任填寫任務(wù)評價(jià)表,如表2-4所示。LevelDB數(shù)據(jù)存取任歸納總結(jié):LevelDB數(shù)據(jù)存取任謝謝觀看以太坊初探高等職業(yè)教育新目錄新專標(biāo)電子與信息大類教材區(qū)塊鏈部署與運(yùn)維第三章01認(rèn)識以太坊通過本單元的學(xué)習(xí),使學(xué)生能夠掌握區(qū)塊鏈中以太坊平臺、以太坊賬號交易、智能合約基本知識,掌握如何使用以太坊終端及IDE。培養(yǎng)學(xué)生使用以太坊客戶端、獨(dú)立搭建以太坊開發(fā)環(huán)境及使用Geth節(jié)點(diǎn)的技能。學(xué)習(xí)目標(biāo)認(rèn)識以太坊任務(wù)布置:學(xué)習(xí)以太坊平臺基本知識。學(xué)習(xí)以太坊賬號交易。了解智能合約。認(rèn)識以太坊以太坊平臺以太坊是典型的公有鏈,以太坊平臺是一個(gè)運(yùn)行智能合約去中心化的平臺,是一臺“世界計(jì)算機(jī)”。該平臺支持圖靈完備的分布式應(yīng)用,按照智能合約所約定的邏輯自動(dòng)執(zhí)行,理想情況下將不存在攻擊、欺詐等問題。認(rèn)識以太坊以太坊是由它的創(chuàng)始人VitalikButerin提出的,目前該平臺支持Go、C++、Python等多種語言實(shí)現(xiàn)的客戶端,智能合約使用Solidity語言實(shí)現(xiàn)。認(rèn)識以太坊我們來看看以太坊發(fā)展歷史上的一些重要時(shí)間節(jié)點(diǎn)。2013年年底,VitalikButerin提出在比特幣一樣的去中心化網(wǎng)絡(luò)上運(yùn)行任意圖靈完備的應(yīng)用程序(以太坊白皮書):2014年7月,以太幣預(yù)售,共籌集超過1800萬美元的比特幣;2016年6月,DAO眾籌受到漏洞攻擊,造成價(jià)值超過5000萬美元的以太幣被凍結(jié),通過硬分叉解決。認(rèn)識以太坊以太坊支持圖靈完備的智能合約,以及支持智能合約的虛擬機(jī)EVM選用了內(nèi)存需求較高的哈希函數(shù),避免出現(xiàn)強(qiáng)算力礦機(jī)和礦池攻擊。以太坊擁有叔塊激勵(lì)機(jī)制,并通過Gas限制代碼執(zhí)行命令數(shù)減少區(qū)塊產(chǎn)生間隔時(shí)間(15秒左右),避免循環(huán)執(zhí)行攻擊,支持POW共識算法,并支持效率更高的POS算法。認(rèn)識以太坊以太坊中的賬號主要分為兩種類型,如圖3-1所示。認(rèn)識以太坊以太坊賬號交易第一種為合約賬號,用于存儲智能合約代碼。當(dāng)合約賬號被調(diào)用時(shí),存儲其中的智能合約會在節(jié)點(diǎn)的虛擬機(jī)中執(zhí)行,并消耗一定的燃料。第二種是外部賬號,它是以太幣擁有者賬號,對應(yīng)到擁有者公鑰,可以創(chuàng)建交易發(fā)給其他合約賬號或外部賬號。上述兩種賬號擁有相同的地址空間和數(shù)據(jù)結(jié)構(gòu),但是功能不同。外部賬號由用戶用公鑰和私鑰控制,合約賬號由合約編譯后的code控制。認(rèn)識以太坊以太坊中的交易是指從一個(gè)賬號發(fā)送到其他賬號的消息數(shù)據(jù),根據(jù)用途可以分為轉(zhuǎn)賬、創(chuàng)建合約和調(diào)用合約三種類型。每個(gè)交易包含下面一些字段,例如,Recipient字段指目標(biāo)賬號地址;Amount字段指可以指定轉(zhuǎn)移的以太幣數(shù)量;AccountNonee字段指記錄已發(fā)送過的交易序號,用于防止交易被重放;Price字段指執(zhí)行交易需要消耗的Gas價(jià)格;GasLimit字段指交易執(zhí)行允許消耗的最大Gas值;Signature字段指簽名相關(guān)數(shù)據(jù)。認(rèn)識以太坊以太坊的交易可以看成是狀態(tài)轉(zhuǎn)移。我們可以將以太坊看作分布式狀態(tài)機(jī),通過交易實(shí)現(xiàn)狀態(tài)轉(zhuǎn)移,以太坊所有的節(jié)點(diǎn)維護(hù)相同的狀態(tài)。交易狀態(tài)轉(zhuǎn)移如圖3-2所示。認(rèn)識以太坊這里的初始狀態(tài)是地址1擁有1024eth,地址2擁有5202eth,經(jīng)過一筆地址1向地址2轉(zhuǎn)賬10eth的交易后,網(wǎng)絡(luò)中的狀態(tài)變成了地址1擁有1014eth,地址2擁有5212eth,這就是交易對狀態(tài)的改變。認(rèn)識以太坊如圖3-3所示為以太坊的區(qū)塊結(jié)構(gòu),和一般區(qū)塊結(jié)構(gòu)有一些區(qū)別,以太坊中有叔塊的概念,在區(qū)塊體中不止存儲了交易,還存儲了叔塊,就是圖3-3中的Uncles,在區(qū)塊頭中也存儲了叔塊哈希UncleHash。認(rèn)識以太坊叔塊是指當(dāng)兩個(gè)獨(dú)立的礦工先后發(fā)現(xiàn)了兩個(gè)不同的滿足要求的區(qū)塊時(shí),產(chǎn)生了臨時(shí)分叉,這里帶有笑臉圖標(biāo)的區(qū)塊就是叔塊,雖然它失敗了,但仍然是高度1的區(qū)塊的子區(qū)塊,是高度2的兄弟區(qū)塊。于是,高度3的區(qū)塊就尊稱帶有笑臉圖標(biāo)的區(qū)塊為叔叔,叔塊就是這么得名的。不能成為主鏈一部分的孤兒區(qū)塊,如果有幸被后來的區(qū)塊通過Uncles字段收留進(jìn)區(qū)塊鏈就變成了叔塊。認(rèn)識以太坊如果一個(gè)孤兒區(qū)塊沒有被任何區(qū)塊收留,這個(gè)孤兒區(qū)塊還是會被丟棄,不會進(jìn)入?yún)^(qū)塊鏈,也就是說孤兒區(qū)塊被收留后才會變成叔塊。以太坊的設(shè)計(jì)比比特幣人性得多,叔塊也是可以獲得獎(jiǎng)勵(lì)的,礦工們再也不用擔(dān)心白忙活了。而且如果哪個(gè)區(qū)塊把叔塊收留了,收留了叔塊的區(qū)塊還有額外的獎(jiǎng)勵(lì),收留叔塊也被稱為包含叔塊。認(rèn)識以太坊那么以太坊為什么要這么設(shè)計(jì)呢?因?yàn)橐蕴坏膮^(qū)塊時(shí)間是15秒左右,相對于比特幣,更容易出現(xiàn)臨時(shí)分叉和孤兒區(qū)塊。而且較短的區(qū)塊時(shí)間也使得區(qū)塊在整個(gè)網(wǎng)絡(luò)中更難以充分傳播,尤其是對那些網(wǎng)速慢的礦工,這是極其不公平的。為了平衡各方利益,才設(shè)計(jì)了這樣一個(gè)叔塊機(jī)制?!啊闭J(rèn)識以太坊智能合約以太坊是運(yùn)行智能合約的平臺,智能合約是一段可以部署運(yùn)行在以太坊上的程序(代碼和數(shù)據(jù)的集合),智能合約可以接受外部的交易請求和事件,進(jìn)而觸發(fā)提前編寫好的合約代碼,還可以生成新的交易和事件,進(jìn)一步調(diào)用其他智能合約;智能合約是確定性的“單線程”的程序,即在所有節(jié)點(diǎn)上運(yùn)行結(jié)果一樣。認(rèn)識以太坊普通轉(zhuǎn)賬會消耗21000Gas。以太坊的最小單位是wei,也是我們在命令行中顯示的默認(rèn)單位,它的單位換算如表3-1所示,每1000進(jìn)一個(gè)單位。認(rèn)識以太坊在以太坊平臺上運(yùn)行的智能合約編程語言一般為Solidity語言,它是類JavaScript語言,文件后綴為“.sol”。智能合約在編譯時(shí)會將高級語言Solidity編譯為以太坊虛擬機(jī)能理解的字節(jié)碼。一般智能合約的使用步驟是先編寫合約,然后編譯、部署、調(diào)用合約,這個(gè)過程也可以對合約進(jìn)行監(jiān)聽。認(rèn)識以太坊在代碼的最開始,要聲明編寫這段智能合約使用的Solidity版本號,如圖3-4所示。認(rèn)識以太坊編程實(shí)現(xiàn)智能合約由于智能合約有很多個(gè)版本,不同的版本的部分語法可能會不一樣,為了讓其他程序員看懂代碼,編寫者需要讓他們知道智能合約是用哪個(gè)版本的Solidity編寫的,這樣可以減少一些不必要的麻煩。認(rèn)識以太坊填寫任務(wù)評價(jià)表,如表3-2所示。認(rèn)識以太坊02使用以太坊客戶端任務(wù)場景以太坊是一個(gè)運(yùn)行智能合約的去中心化平臺,我們可以使用以太坊客戶端Geth進(jìn)行相關(guān)操作,包括賬號操作、賬號交易、部署智能合約等。使用以太坊客戶端01020304任務(wù)布置:掌握終端的使用方法。學(xué)習(xí)以太坊客戶端。掌握Geth的使用方法。使用以太坊客戶端一般操作系統(tǒng)分為兩個(gè)部分,一部分稱為內(nèi)核,另一部分稱為用戶交互界面,如圖3-8所示。使用以太坊客戶端什么是終端內(nèi)核部分負(fù)責(zé)系統(tǒng)的全部邏輯操作,由海量命令組成,這一部分是系統(tǒng)運(yùn)行的命脈,不與用戶接觸;交互界面則是開機(jī)之后我們所看到的東西,比如窗口、軟件、應(yīng)用程序等。使用以太坊客戶端如果想對系統(tǒng)內(nèi)核的某些操作邏輯做出一些修改,應(yīng)該怎么辦呢?終端是連接內(nèi)核與交互界面的橋梁,它允許用戶在交互界面上打開一個(gè)叫作“Terminal終端”的應(yīng)用程序,在其中輸入命令,系統(tǒng)會直接給出反饋。因?yàn)榻K端這座橋,實(shí)際允許用戶間接控制系統(tǒng)內(nèi)核,也就是控制系統(tǒng)的大腦,因此它理論上具備控制一切的權(quán)利。使用以太坊客戶端終端界面是一種命令行界面,它是在圖形用戶界面(我們現(xiàn)在用的界面)得到普及之前使用最為廣泛的用戶界面,它通常不支持鼠標(biāo),用戶只能通過鍵盤輸入命令,計(jì)算機(jī)接收到命令后執(zhí)行對應(yīng)的任務(wù)。使用以太坊客戶端什么是以太坊客戶端我們都知道,以太坊是一個(gè)開源項(xiàng)目,由“以太坊黃皮書”正式規(guī)范定義。除了各種以太坊改進(jìn)提案,此正式規(guī)范還定義了以太坊客戶端的標(biāo)準(zhǔn)行為。以太坊客戶端是一個(gè)軟件應(yīng)用程序,它實(shí)現(xiàn)以太坊規(guī)范并通過P2P網(wǎng)絡(luò)與其他以太坊客戶端進(jìn)行通信。如果不同的以太坊客戶端符合相同的參考規(guī)范和標(biāo)準(zhǔn)化通信協(xié)議,就可以進(jìn)行相互操作。因?yàn)橐蕴挥忻鞔_的正式規(guī)范,以太網(wǎng)客戶端有了許多獨(dú)立開發(fā)的軟件,它們之間又可以彼此交互。使用以太坊客戶端Geth的全稱為Go-Ethereum,如圖3-13所示,是目前最受歡迎的以太坊客戶端之一,我們可以使用它來管理以太坊賬號,部署執(zhí)行智能合約,還可以用它下載以太坊主鏈的交易數(shù)據(jù)。使用以太坊客戶端什么是Geth為了與區(qū)塊鏈進(jìn)行通信,我們必須使用區(qū)塊鏈客戶端??蛻舳耸悄軌蚺c其他客戶建立P2P通信信道,簽署和廣播交易、挖掘、部署和與智能合約交互等的軟件??蛻舳送ǔ1环Q為節(jié)點(diǎn)。在以太坊黃皮書中有對以太坊節(jié)點(diǎn)必須遵循的功能的正式定義。黃皮書定義了網(wǎng)絡(luò)上節(jié)點(diǎn)所需的函數(shù)、挖掘算法、私鑰/公鑰ECDSA參數(shù)。它定義了使節(jié)點(diǎn)與以太坊客戶端完全兼容的全部功能?;谝蕴稽S皮書,任何人都能夠以他們認(rèn)為合適的語言創(chuàng)建自己的以太坊節(jié)點(diǎn)。使用以太坊客戶端創(chuàng)建賬號。Geth應(yīng)用實(shí)踐轉(zhuǎn)賬。終端的使用。開發(fā)者環(huán)境準(zhǔn)備。開發(fā)環(huán)境的賬號。使用以太坊客戶端Geth應(yīng)用實(shí)踐填寫任務(wù)評價(jià)表,如表3-4所示。使用以太坊客戶端03搭建以太坊開發(fā)環(huán)境在開發(fā)智能合約時(shí),我們需要搭建以太坊開發(fā)環(huán)境,RemixIDESolidity編譯器可以在線編寫智能合約,對智能合約進(jìn)行編譯、部署和調(diào)用。任務(wù)場景搭建以太坊開發(fā)環(huán)境任務(wù)布置:掌握Remix的使用方法。掌握在Remix中部署智能合約的方法。掌握在Geth中部署智能合約的方法。搭建以太坊開發(fā)環(huán)境什么是RemixRemix是以太坊官方開源的Solidity在線集成開發(fā)環(huán)境,可以使用Solidity語言在網(wǎng)頁內(nèi)完成以太坊智能合約的在線開發(fā)、在線編譯、測試習(xí)題、在線部署、在線調(diào)試與在線交互,非常適合Solidity智能合約的學(xué)習(xí)與原型快速開發(fā)。搭建以太坊開發(fā)環(huán)境Remix為左中右三欄布局,左側(cè)為Remix文件管理器,中間為文件編輯器及終端,右側(cè)為開發(fā)工具面板。Remix界面如圖3-15所示。搭建以太坊開發(fā)環(huán)境Remix文件管理器文件管理器用來列出在瀏覽器本地存儲中保存的文件,分為“browser"和“config"兩個(gè)日錄。Remix文件編輯器及終端Remix中間區(qū)域?yàn)樯舷虏季?,分別提供文件編輯功能和終端訪問功能。搭建以太坊開發(fā)環(huán)境Remix界面合約編譯進(jìn)入在線RemixIDE,將HelloWorld合約代碼復(fù)制到helloworld.sol文件中并保存。搭建以太坊開發(fā)環(huán)境在Remix中部署智能合約合約部署合約編譯完成后,進(jìn)入合約部署界面,選擇一個(gè)測試賬號進(jìn)行部署。合約部署界面如圖3-24所示。搭建以太坊開發(fā)環(huán)境合約執(zhí)行在合約部署界面,合約部署成功后向下拉動(dòng),可以看到合約執(zhí)行的相關(guān)信息,單擊合約中的方法執(zhí)行合約,執(zhí)行成功后可以在右側(cè)控制臺看到返回信息,如圖3-26所示。搭建以太坊開發(fā)環(huán)境在Geth中部署合約合約編譯完成后會產(chǎn)生兩個(gè)文件:"ABI”和“Bytecode",我們在命令行中部署合約時(shí)需要使用到這兩個(gè)文件中的內(nèi)容。執(zhí)行合約helloworld這個(gè)合約中有兩個(gè)函數(shù):helloworld(函數(shù)和say(函數(shù)。sayO函數(shù)的功能是在命令行中顯示msg的值,因此可以使用這個(gè)函數(shù)在命令行中執(zhí)行合約。搭建以太坊開發(fā)環(huán)境填寫任務(wù)評價(jià)表,如表3-5所示。搭建以太坊開發(fā)環(huán)境歸納總結(jié):搭建以太坊開發(fā)環(huán)境謝謝觀看區(qū)塊鏈平臺部署高等職業(yè)教育新目錄新專標(biāo)電子與信息大類教材區(qū)塊鏈部署與運(yùn)維第四章01初識FISCOBCOS在實(shí)際區(qū)塊鏈平臺部署中,常會用到FISCOBCOS平臺,因此首先需要了解聯(lián)盟鏈底層平臺FISCOBCOS在實(shí)際開發(fā)中的作用及相關(guān)架構(gòu)。任務(wù)場景初識FISCOBCOSFISCOBCOS背景FISCOBCOS的發(fā)起單位FISCO金鏈盟(深圳市金融區(qū)塊鏈發(fā)展促進(jìn)會)是國內(nèi)最大的聯(lián)盟鏈組織,于2016年5月31日正式成立,是一個(gè)非營利組織。FISCOBCOOS金鏈盟由微眾銀行等20余家金融機(jī)構(gòu)和科技企業(yè)共同發(fā)起,目前已囊括金融機(jī)構(gòu)、科技公司、高等院校等多個(gè)領(lǐng)域的110余家機(jī)構(gòu)。初識FISCOBCOSFISCOBCOS是由國內(nèi)企業(yè)主導(dǎo)研發(fā)、對外開源、安全可控的金融級區(qū)塊鏈底層平臺,由金鏈盟開源工作組協(xié)作打造,并于2017年正式對外開源。FISCOBCOS以聯(lián)盟鏈的實(shí)際需求為出發(fā)點(diǎn),提供了可視化的中間件工具(WeBASE),大幅縮短了建鏈、開發(fā)、部署應(yīng)用的時(shí)間。截至2020年5月,F(xiàn)ISCOBCOS匯聚了超1000家企業(yè)及機(jī)構(gòu),逾萬名社區(qū)成員參與共建共治,已發(fā)展成為最大最活躍的國產(chǎn)開源聯(lián)盟鏈生態(tài)圈。初識FISCOBCOSFISCO開源自研區(qū)塊鏈技術(shù)方案如圖4-1所示。初識FISCOBCOSWeIdentity是基于區(qū)塊鏈的分布式多中心技術(shù)解決方案,提供分布式實(shí)體身份標(biāo)識及管理、可信數(shù)據(jù)交換協(xié)議等一系列的基礎(chǔ)層與應(yīng)用接口,可實(shí)現(xiàn)實(shí)體對象(人或物)數(shù)據(jù)的安全授權(quán)與交換。WeEvent是一套分布式事件驅(qū)動(dòng)架構(gòu),實(shí)現(xiàn)了可信、可靠、高效的跨機(jī)構(gòu)、跨平臺事件通知機(jī)制,可在不改變已有商業(yè)系統(tǒng)的開發(fā)語言、接入?yún)f(xié)議的情況下,實(shí)現(xiàn)跨機(jī)構(gòu)、跨平臺的事件通知與處理。初識FISCOBCOSWeBASE(WeBankBlockchainApplicationSoftwareExtension)是在區(qū)塊鏈應(yīng)用和底層節(jié)點(diǎn)之間搭建的中間件平臺。WeBASE邏輯架構(gòu)如圖4-2所示。初識FISCOBCOSFISCOBCOS的邏輯架構(gòu)分為基礎(chǔ)層、互聯(lián)核心層、鏈核心層、管理層和接口層,如圖4-3所示。初識FISCOBCOSFISCOBCOS簡介基礎(chǔ)層提供區(qū)塊鏈的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)和算法庫,包括密碼學(xué)算法、隱私算法等。鏈核心層主要實(shí)現(xiàn)區(qū)塊鏈的鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)存儲,采用了不同的數(shù)據(jù)庫來存儲區(qū)塊數(shù)據(jù)?;ヂ?lián)核心層實(shí)現(xiàn)了區(qū)塊鏈的基礎(chǔ)P2P網(wǎng)絡(luò)通信、共識機(jī)制和區(qū)塊同步機(jī)制等?!啊背踝RFISCOBCOS相對于區(qū)塊鏈基礎(chǔ)架構(gòu),F(xiàn)ISCOBCOS細(xì)分出了管理層,用于實(shí)現(xiàn)區(qū)塊鏈的管理功能,如參數(shù)配置、賬本管理等。接口層主要對應(yīng)的是應(yīng)用層,面向區(qū)塊鏈用戶,提供交互式控制臺、各類應(yīng)用接口等。初識FISCOBCOS填寫任務(wù)評價(jià)表,如表4-1所示。初識FISCOBCOS02FISCOBCOS網(wǎng)絡(luò)部署任務(wù)場景在FISCOBCOS中搭建部署各個(gè)節(jié)點(diǎn),掌握buildchain.sh腳本開發(fā)部署工具的使用,掌握使用FISCOBCOSgenerator運(yùn)維部署工具搭建多群組聯(lián)盟鏈的方法。FISCOBCOS網(wǎng)絡(luò)部署任務(wù)布置:(1)學(xué)習(xí)FISCOBCOS部署工具的使用。(2)掌握FISCOBCOS網(wǎng)絡(luò)搭建方法。FISCOBCOS網(wǎng)絡(luò)部署buildchain.sh腳本是FISCOBCOS的開發(fā)部署工具,它可以幫助用戶快速搭建FISCOBCOS聯(lián)盟鏈。FISCOBCOSgenerator是運(yùn)維部署工具,它可以幫助企業(yè)用戶部署、管理和監(jiān)控多機(jī)構(gòu)多群組聯(lián)盟鏈。FISCOBCOS部署工具FISCOBCOS網(wǎng)絡(luò)部署build_chain.sh腳本可以快速生成一條鏈中節(jié)點(diǎn)的配置文件,該腳本的功能如下(見圖4-4)。FISCOBCOS網(wǎng)絡(luò)部署buildchain.sh-1:-1選項(xiàng)可以指定生成鏈時(shí)節(jié)點(diǎn)的IP和數(shù)目。buildchain.sh-f:f選項(xiàng)可以使用指定格式的配置文件,創(chuàng)建復(fù)雜業(yè)務(wù)場景FISCOBCOS鏈。build_ehain.sh-p:-p選項(xiàng)可以指定生成節(jié)點(diǎn)時(shí)的端口。FISCOBCOS網(wǎng)絡(luò)部署如圖4-5所示這條命令中,就用1選項(xiàng)指定了節(jié)點(diǎn)IP為“”,生成節(jié)點(diǎn)個(gè)數(shù)為“4”;用-p選項(xiàng)指定了節(jié)點(diǎn)端口為“30300、20200、8545”,其中每個(gè)節(jié)點(diǎn)的端口號默認(rèn)從30300開始遞增,所有節(jié)點(diǎn)屬于同一個(gè)機(jī)構(gòu)和群組。FISCOBCOS網(wǎng)絡(luò)部署01020304當(dāng)運(yùn)行由build_chain.sh生成的區(qū)塊鏈節(jié)點(diǎn)時(shí),會自動(dòng)創(chuàng)建如下的腳本文件。start_all.sh:啟動(dòng)當(dāng)前目錄下的所有節(jié)點(diǎn)。stop_all.sh:停止當(dāng)前目錄下的所有節(jié)點(diǎn)。download_console.sh:下載console控制臺的腳本。FISCOBCOS網(wǎng)絡(luò)部署2.FISCOBCOSgenerator運(yùn)維部署工具FISCOBCOSgenerator為企業(yè)用戶提供了部署、管理和監(jiān)控多機(jī)構(gòu)多群組聯(lián)盟鏈的便捷工具,如圖4-7所示為多機(jī)構(gòu)多群組聯(lián)盟鏈結(jié)構(gòu)。FISCOBCOS網(wǎng)絡(luò)部署數(shù)字證書和私鑰在聯(lián)盟鏈中,多個(gè)對等機(jī)構(gòu)之間是不完全信任的,類似于多個(gè)企業(yè)合作時(shí),企業(yè)不會把所有數(shù)據(jù)都進(jìn)行共享。群組初始化群組初始化過程中需要多個(gè)節(jié)點(diǎn)協(xié)商生成創(chuàng)世區(qū)塊,創(chuàng)世區(qū)塊中包含節(jié)點(diǎn)身份信息,這個(gè)身份信息需要通過交換數(shù)字證書來構(gòu)建。FISCOBCOS網(wǎng)絡(luò)部署節(jié)點(diǎn)數(shù)字證書實(shí)例如圖4-8所示。FISCOBCOS網(wǎng)絡(luò)部署FISCOBCOSgenerator設(shè)計(jì)了上述問題的解決方案:靈活:無須安裝;支持多種部署方式,支持多種架構(gòu)改動(dòng)。安全:節(jié)點(diǎn)私鑰不出內(nèi)網(wǎng),機(jī)構(gòu)間只需要協(xié)商證書。易用:支持多種組網(wǎng)模式、多種命令,監(jiān)控審計(jì)腳本。對等:機(jī)構(gòu)地位對等,所有機(jī)構(gòu)共同產(chǎn)生創(chuàng)世區(qū)塊,機(jī)構(gòu)對等地管理所屬群組。FISCOBCOS網(wǎng)絡(luò)部署FISCO

BCOS

generator基本功能如圖4-9所示為generator的基本功能,generator可以更加靈活對等地對群組進(jìn)行運(yùn)維管理。FISCOBCOS網(wǎng)絡(luò)部署單群組FISCOBCOS聯(lián)盟鏈搭建單群組FISCOBCOS聯(lián)盟鏈需要用到buildchian.sh開發(fā)部署工具。如圖4-10所示為使用buildchain.sh腳本搭建單群組FISCOBCOS聯(lián)盟鏈的流程。FISCOBCOS網(wǎng)絡(luò)部署FISCOBCOS網(wǎng)絡(luò)搭建多群組FISCOBCOS聯(lián)盟鏈除了單群組聯(lián)盟鏈,還有多群組聯(lián)盟鏈,如圖4-12所示為一個(gè)6節(jié)點(diǎn)3機(jī)構(gòu)2群組的多群組FISCOBCOS聯(lián)盟鏈結(jié)構(gòu),機(jī)構(gòu)B和機(jī)構(gòu)C分別位于群組1和群組2中,機(jī)構(gòu)A、機(jī)構(gòu)C同屬于群組1和群組2中。FISCOBCOS網(wǎng)絡(luò)部署搭建單群組FISCOBCOS聯(lián)盟鏈?zhǔn)紫刃枰B接終端。本任務(wù)使用buildchain.sh腳本進(jìn)行一鍵搭鏈,開發(fā)部署工具build_chain.sh腳本依賴于“opensslcurl”,可以使用以下命令安裝依賴:aptinstall-yopensslcurlFISCOBCOS網(wǎng)絡(luò)部署依賴安裝結(jié)果如圖4-16所示。FISCOBCOS網(wǎng)絡(luò)部署檢查進(jìn)程。無外網(wǎng)條件下搭建單群組區(qū)塊鏈網(wǎng)絡(luò)。創(chuàng)建操作目錄,下載安裝腳本。搭建單群組4節(jié)點(diǎn)FISCO鏈。啟動(dòng)FISCOBCOS鏈。FISCOBCOS網(wǎng)絡(luò)部署針對某些場景下無外網(wǎng)條件下搭鏈,請?zhí)崆皬膅itee鏡像發(fā)布頁面下載v2.8.0版本目標(biāo)操作系統(tǒng)的二進(jìn)制文件和buildchain.sh腳本文件。上傳fisco-beos.tar.gz和build_ehain.sh文件到目標(biāo)服務(wù)器,需要注意,目標(biāo)服務(wù)器要求64位,要求安裝openssl1.0.2以上版本。解壓fisco-bcos.tar.gz得到fiseo-bcos可執(zhí)行文件,作為e選項(xiàng)的參數(shù)。FISCOBCOS網(wǎng)絡(luò)部署構(gòu)建本機(jī)內(nèi)4個(gè)節(jié)點(diǎn)的FISCOBCOS聯(lián)盟鏈,使用默認(rèn)起始端口30300、20200、8545(4個(gè)節(jié)點(diǎn)會占用30300-30303、20200-20203、8545-8548端口)。FISCOBCOS網(wǎng)絡(luò)部署填寫任務(wù)評價(jià)表,如表4-2所示。FISCOBCOS網(wǎng)絡(luò)部署03FISCOBCOS網(wǎng)絡(luò)管理FISCOBCOS聯(lián)盟鏈搭建成功之后,需要對鏈進(jìn)行管理,包括證書管理和賬號管理等。任務(wù)場景FISCOBCOS網(wǎng)絡(luò)管理任務(wù)布置:掌握FISCOBCOS證書的生成方法。掌握FISCOBCOS賬號的創(chuàng)建方法。FISCOBCOS網(wǎng)絡(luò)管理FISCO

BCOS證書機(jī)制證書機(jī)制是聯(lián)盟鏈網(wǎng)絡(luò)安全的基石,鏈上的多方參與是一種協(xié)作關(guān)系,聯(lián)盟鏈向授權(quán)的組織或機(jī)構(gòu)開放,采用準(zhǔn)入機(jī)制。在準(zhǔn)入機(jī)制中,證書是各參與方互相認(rèn)證身份的重要憑證。FISCOBCOS網(wǎng)絡(luò)管理FISCOBCOS網(wǎng)絡(luò)采用面向CA的準(zhǔn)入機(jī)制,使用x509協(xié)議的證書格式,支持任意多級的證書結(jié)構(gòu),保障信息保密性、認(rèn)證性、完整性、不可抵賴性。FISCOBCOS默認(rèn)采用三級的證書結(jié)構(gòu),自上而下分別為鏈證書、機(jī)構(gòu)證書、節(jié)點(diǎn)證書。FISCOBCOS網(wǎng)絡(luò)管理證書內(nèi)容包括了證書版本、序列號、簽名算法、消息摘要算法等生成信息,同時(shí)包括了證書的頒發(fā)者、有效期、使用者、公鑰信息、SSL通信需要用到的密碼套件等信息,如圖4-33所示。FISCOBCOS網(wǎng)絡(luò)管理FISCOBCOS的證書結(jié)構(gòu)中,共有四種角色,分別是聯(lián)盟鏈委員會管理員、機(jī)構(gòu)管理員、節(jié)點(diǎn)和SDK。聯(lián)盟鏈委員會管理員管理鏈的私鑰,并根據(jù)機(jī)構(gòu)的證書請求文件agency.csr為機(jī)構(gòu)頒發(fā)機(jī)構(gòu)證書。FISCOBCOS進(jìn)行SSL加密通信時(shí),擁有相同鏈證書ca.crt的節(jié)點(diǎn)才可建立連接。FISCOBCOS網(wǎng)絡(luò)管理奉茶順序機(jī)構(gòu)管理員管理機(jī)構(gòu)私鑰,可以對機(jī)構(gòu)下屬頒發(fā)節(jié)點(diǎn)證書和SDK證書。敬茶禮節(jié)FISCO

BCOS節(jié)點(diǎn)包括節(jié)點(diǎn)證書和私鑰,用于建立節(jié)點(diǎn)間SSL加密連接。SDK包括SDK證書和私鑰,用于與區(qū)塊鏈節(jié)點(diǎn)建立SSL加密連接。“”FISCOBCOS網(wǎng)絡(luò)管理節(jié)點(diǎn)證書node.crt包括節(jié)點(diǎn)證書和機(jī)構(gòu)證書信息,節(jié)點(diǎn)與其他節(jié)點(diǎn)/SDK通信驗(yàn)證時(shí)會用自己的私鑰node.key對消息進(jìn)行簽名,并發(fā)送自己的node.crt至對方進(jìn)行驗(yàn)證。FISCOBCOS網(wǎng)絡(luò)管理證書接入FISCOBCOS節(jié)點(diǎn)證書是節(jié)點(diǎn)身份的憑證,用于與其他持有合法證書的節(jié)點(diǎn)間建立SSL連接,并進(jìn)行加密通信。SDK證書是SDK與節(jié)點(diǎn)通信的憑證,由機(jī)構(gòu)生成SDK證書,允許SDK與節(jié)點(diǎn)進(jìn)行通信。FISCOBCOS證書管理FISCOBCOS網(wǎng)絡(luò)管理獲取證書:下載和安裝FISCOBCOS運(yùn)維部署工具。生成鏈證書。生成機(jī)構(gòu)證書。生成節(jié)點(diǎn)證書/SDK證書。FISCOBCOS網(wǎng)絡(luò)管理FISCOBCOS賬號管理賬號創(chuàng)建FISCOBCOS使用賬號來標(biāo)識和區(qū)分每一個(gè)獨(dú)立的用戶。在采用公私鑰體系的區(qū)塊鏈系統(tǒng)里,每一個(gè)賬號對應(yīng)著一對公鑰和私鑰。其中,由公鑰經(jīng)哈希等安全的單向性算法計(jì)算后得到的地址字符串被用作該賬號的賬號名,即賬號地址。為了與智能合約的地址相區(qū)別和一些其他的歷史原因,賬號地址也常被稱為外部賬號地址。FISCOBCOS網(wǎng)絡(luò)管理通過ECDSA生成賬號:生成ECDSA私鑰。生成ECDSA公鑰。FISCOBCOS網(wǎng)絡(luò)管理填寫任務(wù)評價(jià)表,如表4-8所示。FISCOBCOS網(wǎng)絡(luò)管理歸納總結(jié):FISCOBCOS網(wǎng)絡(luò)管理謝謝觀看智能合約應(yīng)用高等職業(yè)教育新目錄新專標(biāo)電子與信息大類教材區(qū)塊鏈部署與運(yùn)維第五章01部署智能合約智能合約定義了多方共同約定的規(guī)則,通過部署在區(qū)塊鏈網(wǎng)絡(luò)上,是可以被多方調(diào)用自動(dòng)執(zhí)行的程序,以實(shí)現(xiàn)多方事先約定的規(guī)則。在實(shí)際應(yīng)用中,如何在區(qū)塊鏈網(wǎng)絡(luò)上部署一個(gè)智能合約呢?任務(wù)場景部署智能合約任務(wù)布置:學(xué)習(xí)智能合約基本概念。學(xué)習(xí)Solidity基本數(shù)據(jù)類型。認(rèn)識Solidity程序。部署一個(gè)智能合約。部署智能合約智能合約基本概念計(jì)算機(jī)科學(xué)家、法學(xué)學(xué)者及密碼學(xué)者尼克·薩博(NickSzabo)最早于1994年提出了“智能合約”(SmartContract)的概念,他的定義是:“智能合約是一個(gè)計(jì)算機(jī)化的交易協(xié)議,它執(zhí)行一個(gè)合約的條款。”其中,交易協(xié)議中的“協(xié)議”二字指的是計(jì)算機(jī)協(xié)議(Protocol)。部署智能合約按《應(yīng)用密碼學(xué)》的定義,協(xié)議是一系列步驟,其中包括兩方或多方,設(shè)計(jì)它的目的是要完成一項(xiàng)任務(wù)。尼克·薩博說:“智能合約的實(shí)際目標(biāo)是執(zhí)行一般的合同條件,最大限度地減少惡意和意外的情況,最大限度地減少使用信任中介?!钡诤艽笠徊糠值臅r(shí)間里,由代碼組成的智能合約缺少可以執(zhí)行的環(huán)境,主要原因是在常規(guī)的計(jì)算環(huán)境中,代碼無法強(qiáng)制執(zhí)行要求一方履行其責(zé)任。部署智能合約例如,你我雙方達(dá)成一個(gè)協(xié)議,在滿足某個(gè)條件時(shí),我應(yīng)當(dāng)付100美元給你,由于常規(guī)計(jì)算環(huán)境中沒有資產(chǎn)的概念,因此智能合約無法在計(jì)算環(huán)境中獨(dú)立執(zhí)行,它需要用其他方式對外部資金與資產(chǎn)進(jìn)行控制。為了解決這個(gè)問題,尼克·薩博在1998年提出“比特黃金”(BitGold),以形成智能合約可以運(yùn)轉(zhuǎn)的執(zhí)行環(huán)境。2008年,中本聰提出“比特幣:一種點(diǎn)對點(diǎn)電子現(xiàn)金”,2019年1月3日比特幣系統(tǒng)上線,之后,智能合約就有了一個(gè)可以執(zhí)行的環(huán)境。部署智能合約比特幣網(wǎng)絡(luò)有智能合約所需要的幾個(gè)主要基礎(chǔ)條件:由公鑰、私鑰形成的所有權(quán)機(jī)制;在計(jì)算環(huán)境中,有可用于履行合同條款的原生資產(chǎn);提供了編程方式,即比特幣腳本。比特幣系統(tǒng)為智能合約做好了準(zhǔn)備,但并未能真正推動(dòng)智能合約的誕生,這一時(shí)刻還要等到幾年后。部署智能合約2014年,在比特幣系統(tǒng)的基礎(chǔ)上,維塔利克·布特林(VitalikButerin)撰寫了以太坊白皮書——《以太坊:智能合約與中心化應(yīng)用平臺》隨后正式啟動(dòng)了以太坊區(qū)塊鏈網(wǎng)絡(luò)。此后,智能合約從概念變成現(xiàn)實(shí)。按以太坊聯(lián)合創(chuàng)始人加文·伍德(GavinWood)的說法,以太坊是一臺永不停歇的“世界計(jì)算機(jī)”。以太坊提供了執(zhí)行圖靈完備代碼的環(huán)境——以太坊虛擬機(jī)(EthereumVirutalMacchine,EVM)。部署智能合約以太坊在系統(tǒng)設(shè)計(jì)層面提供了智能合約所需的多種機(jī)制,如僅包括智能合約的特定賬號合約賬號(ContractAeeounts),與之對應(yīng)的是外部賬號(ExternallyOwnedAccounts);又如它設(shè)計(jì)了執(zhí)行智能合約計(jì)算支付燃料費(fèi)(Gas)的經(jīng)濟(jì)機(jī)制。部署智能合約隨著以太坊從1.0向2.0升級,其中關(guān)于以太坊虛擬機(jī)有兩個(gè)變化,它們都將進(jìn)一步推動(dòng)智能合約的技術(shù)進(jìn)展:一是改用eWASM虛擬機(jī)方案,這是基于WASM(WebAssembly)命令集的虛擬機(jī)設(shè)計(jì)方案;二是智能合約由以太坊1.0的只有一個(gè)執(zhí)行環(huán)境變成2.0的有多個(gè)執(zhí)行環(huán)境。部署智能合約現(xiàn)在,以太坊上的智能合約最重要的應(yīng)用是創(chuàng)建ERC20、ERC721標(biāo)準(zhǔn)的通證(Token),并用智能合約對這些代表數(shù)字資產(chǎn)的通證進(jìn)行操作。這些數(shù)字資產(chǎn)可以對應(yīng)經(jīng)濟(jì)中的貨幣、股票、票據(jù)、倉單、房屋、知識產(chǎn)權(quán)、投票權(quán)、畢業(yè)證書等各種廣義的資產(chǎn)。以太坊虛擬機(jī)執(zhí)行的是EVM字節(jié)碼,程序員可以用高級語言編寫智能合約,然后將其編譯為字節(jié)碼部署在以太坊區(qū)塊鏈中進(jìn)行執(zhí)行?!啊辈渴鹬悄芎霞s在發(fā)展的過程中出現(xiàn)了多種智能合約高級語言,其中被廣泛接受的是加文·伍德開發(fā)的Solidity語言,它的語法類似于JavaScript語言,并且公有鏈、聯(lián)盟鏈、BaaS云服務(wù)算也開始支持Solidity語言。部署智能合約01020304尼克·薩博在1997年的文章中說,智能合約的原始祖先是不起眼的自動(dòng)售貨機(jī)。(1)我們向可樂售賣機(jī)投入硬幣,按一下出可樂的按鈕。(2)售賣機(jī)將一聽可樂從出貨口放出來。(3)售貨機(jī)恢復(fù)到最初的狀態(tài)。部署智能合約一般來說,區(qū)塊鏈上的智能合約的執(zhí)行包括四步,分別是制定合約、事件觸發(fā)、價(jià)值轉(zhuǎn)移、清算結(jié)算,如圖5-1所示。部署智能合約Solidity是一門面向合約的、為實(shí)現(xiàn)智能合約而創(chuàng)建的高級編程語言。Solidity是靜態(tài)類型語言,支持繼承、庫和復(fù)雜的用戶定義類型等特性,每個(gè)變量(狀態(tài)變量和局部變量)都需要在編譯時(shí)指定變量的類型。Solidity提供了幾種基本類型,通過幾種基本類型的組合,可以組合成復(fù)雜類型。Solidity基本數(shù)據(jù)類型部署智能合約比較運(yùn)算符。Solidity基本數(shù)據(jù)類型位運(yùn)算符。布爾類型。布爾類型運(yùn)算符。整型。部署智能合約移位運(yùn)算符。算術(shù)運(yùn)算符。字符串字面常數(shù)。部署智能合約下面代碼給出的是一個(gè)名為“HelloWorld”的智能合約:部署智能合約認(rèn)識Solidity程序“pragma”是定義代碼使用的Solidity編譯器版本的聲明?!癱ontract”用來定義智能合約?!癏elloWorld()”是構(gòu)造函數(shù),用來初始化變量name的值。“get()”是成員函數(shù),用來返回變量name的值,constant表示不可以修改name的值?!皊et()”是成員函數(shù),用來改變變量name的值,將其賦值為變量n的值。部署智能合約啟動(dòng)Console控制臺當(dāng)輸出如圖5-2所示內(nèi)容時(shí),表示操作正確。部署智能合約部署智能合約在Console控制臺中部署HelloWorld智能合約:第1步,創(chuàng)建智能合約。第2步,部署智能合約。部署智能合約填寫任務(wù)評價(jià)表,如表5-1所示。部署智能合約02調(diào)用智能合約任務(wù)場景在區(qū)塊鏈應(yīng)用中,部署智能合約是第一步任務(wù),接下來必須調(diào)用智能合約才能執(zhí)行約定的規(guī)則,那么如何調(diào)用智能合約呢?調(diào)用智能合約任務(wù)布置:學(xué)習(xí)import語法。導(dǎo)入智能合約。調(diào)用智能合約。調(diào)用智能合約在Java編程中,可以使用import語法將其他包中的類導(dǎo)入當(dāng)前文件中,并且可以直接使用導(dǎo)入的類創(chuàng)建對象,通過對象調(diào)用屬性和方法。在Solidity編程中,同樣可以使用import語法導(dǎo)入其他智能合約。import語法調(diào)用智能合約在全局層面上,可使用如下格式的導(dǎo)入語句:import"filename";此語句將從filename中導(dǎo)入所有的全局符號到當(dāng)前全局作用域中。import·assymbolNamefrom"filename";等同于import"filename"assymbolName;調(diào)用智能合約此語句創(chuàng)建一個(gè)新的全局符號symbolName,其成員均來自filename中的全局符號。上面的filename總是會按路徑來處理,以“”作為目錄分割符,以“”表示當(dāng)前目錄,以“”表示父目錄。當(dāng)“”或“…”后面跟隨的字符是“/”時(shí),它們才能被當(dāng)作當(dāng)前目錄或父目錄。調(diào)用智能合約調(diào)用智能合約導(dǎo)入智能合約“import"JFoo.sol";”語句把Foo合約導(dǎo)入當(dāng)前的Import合約中,可以在成員函數(shù)getFooName(中讀取Foo合約中變量name的值。調(diào)用智能合約第1種,在Console控制臺調(diào)用智能合約。從之前部署智能合約的命令中獲取合約地址為:0xbed5229a08300c80190c4446b8e2c43cc3b96496。在Console終端命令行中可以使用call方法調(diào)用函數(shù),格式為:call[合約名稱] [合約地址] [合約中的方法]調(diào)用智能合約調(diào)用智能合約使用命令執(zhí)行合約中的get0函數(shù),具體操作與返回內(nèi)容如下:調(diào)用智能合約通過get()方法就獲取了變量name的初始化內(nèi)容。接下來,使用set()函數(shù),對變量name進(jìn)行設(shè)置,通過getBlockNumber觀察區(qū)塊的高度已經(jīng)發(fā)生變化。調(diào)用智能合約調(diào)用智能合約第2種,在Remix中調(diào)用智能合約。登錄Remix在線平臺,在contracts文件中創(chuàng)建并編寫“5_Foo.sol”,如圖5-3所示。調(diào)用智能合約在contracts文件中創(chuàng)建并編寫“6_Import.sol”,如圖5-4所示。調(diào)用智能合約編譯“5_Foo.sol”,如圖5-5所示。編譯“6_Import.sol",如圖5-6所示。部署“6_Import.sol",如圖5-7所示。調(diào)用智能合約編譯“6_Import.sol",如圖5-6所示。調(diào)用智能合約部署“6_Import.sol",如圖5-7所示。調(diào)用智能合約調(diào)用6Import.sol中的getFooName0方法,輸出“Foo",如圖5-8所示。調(diào)用智能合約填寫任務(wù)評價(jià)表,如表5-3所示。調(diào)用智能合約歸納總結(jié):調(diào)用智能合約謝謝觀看區(qū)塊鏈網(wǎng)絡(luò)通信高等職業(yè)教育新目錄新專標(biāo)電子與信息大類教材區(qū)塊鏈部署與運(yùn)維第六章01認(rèn)識網(wǎng)絡(luò)通信模型在計(jì)算機(jī)網(wǎng)絡(luò)中,我們通過協(xié)議來進(jìn)行通信,那么區(qū)塊鏈節(jié)點(diǎn)之間是如何進(jìn)行通信的呢?任務(wù)場景認(rèn)識網(wǎng)絡(luò)通信模型任務(wù)布置:學(xué)習(xí)OSI參考模型的基本概念。學(xué)習(xí)TCP/IP參考模型的基本概念。使用虛擬機(jī)計(jì)算機(jī)軟件(VMwareWorkstation),搭建虛擬局域網(wǎng)。認(rèn)識網(wǎng)絡(luò)通信模型配置VMware虛擬機(jī)軟件的虛擬網(wǎng)絡(luò)設(shè)置(選擇使用VMnet8網(wǎng)卡進(jìn)行配置),如圖6-1所示。認(rèn)識網(wǎng)絡(luò)通信模型類似于網(wǎng)卡配置,可以設(shè)置子網(wǎng)和子網(wǎng)掩碼,在如圖6-2所示的①中進(jìn)行修改。認(rèn)識網(wǎng)絡(luò)通信模型在②中設(shè)置網(wǎng)關(guān),配置如圖6-3所示。認(rèn)識網(wǎng)絡(luò)通信模型在③中設(shè)置網(wǎng)段下的IP地址使用DHCP協(xié)議,獲取IP地址范圍,配置如圖6-4所示。認(rèn)識網(wǎng)絡(luò)通信模型創(chuàng)建兩臺虛擬機(jī),修改網(wǎng)卡配置文件內(nèi)容,如圖6-5所示。認(rèn)識網(wǎng)絡(luò)通信模型重啟網(wǎng)卡服務(wù),并使用ipa命令查看IP地址,如圖6-6所示。認(rèn)識網(wǎng)絡(luò)通信模型使用ping對方IP地址c4命令查看與對方的連通性,如圖6-7和圖6-8所示。認(rèn)識網(wǎng)絡(luò)通信模型填寫任務(wù)評價(jià)表,如6-1所示。認(rèn)識網(wǎng)絡(luò)通信模型02使用RPC協(xié)議任務(wù)場景在區(qū)塊鏈中,節(jié)點(diǎn)間可以通過RPC協(xié)議互相調(diào)用對方的服務(wù)來完成某些任務(wù),或查詢數(shù)據(jù)。使用RPC協(xié)議任務(wù)布置:學(xué)習(xí)RPC協(xié)議的基本概念。學(xué)習(xí)FISCOBCOS的RPC模塊。學(xué)習(xí)FISCOBCOS的RPC模塊的簡單命令。使用RPC協(xié)議RPC協(xié)議全名為遠(yuǎn)程過程調(diào)用協(xié)議(RemoteProcedureCallProtocol),允許運(yùn)行于一臺計(jì)算機(jī)上的程序調(diào)用另一臺計(jì)算機(jī)的子程序,而程序員無須額外地為這個(gè)交互作用編程。RPC協(xié)議使用RPC協(xié)議目前RPC協(xié)議是P2P網(wǎng)絡(luò)中運(yùn)用較廣泛的通信協(xié)議之一,是目前區(qū)塊鏈節(jié)點(diǎn)通信的主流協(xié)議之一。RPC協(xié)議遠(yuǎn)程調(diào)用的目的是實(shí)現(xiàn)服務(wù)的遠(yuǎn)程調(diào)用,如有節(jié)點(diǎn)A和節(jié)點(diǎn)B,現(xiàn)有調(diào)用業(yè)務(wù)部署于節(jié)點(diǎn)A,需要調(diào)用節(jié)點(diǎn)B的函數(shù)或方法,此時(shí)可以借助RPC協(xié)議通過網(wǎng)絡(luò)表達(dá)調(diào)用的語義和傳達(dá)調(diào)用的數(shù)據(jù)。使用RPC協(xié)議如圖6-9所示為基于RPC協(xié)議節(jié)點(diǎn)A與節(jié)點(diǎn)B的通信流程。使用RPC協(xié)議在上述流程中,Stub表示存根,節(jié)點(diǎn)AStub的作用為保存節(jié)點(diǎn)B的地址信息,將節(jié)點(diǎn)A的請求參數(shù)數(shù)據(jù)信息打包,再向下傳輸通過網(wǎng)絡(luò)發(fā)送。節(jié)點(diǎn)BStub的作用為接收節(jié)點(diǎn)A的請求數(shù)據(jù)信息并解析,然后調(diào)用本地服務(wù)進(jìn)行相應(yīng)處理。使用RPC協(xié)議FISCOBCOS的RPC模塊目前,包括FISCOBCOS等在內(nèi)的經(jīng)典區(qū)塊鏈技術(shù)都具備RPC模塊,可用于支持基于RPC協(xié)議的遠(yuǎn)程功能調(diào)用。RPC模塊負(fù)責(zé)提供FISCOBCOS的外部接口,客戶端通過RPC發(fā)送請求,RPC通過調(diào)用賬本管理模塊和P2P模塊獲取相關(guān)響應(yīng),并將響應(yīng)返回給客戶端。其中,賬本管理模塊通過多賬本機(jī)制管理區(qū)塊鏈底層的相關(guān)模塊,具體包括共識模塊、同步模塊、區(qū)塊管理模塊、交易池模塊及區(qū)塊鏈驗(yàn)證器。使用RPC協(xié)議如圖6-10所示為RPC模塊在FISCOBCOS中支持的功能。使用RPC協(xié)議客戶端請求jsonrpc:指定JSON-RPC協(xié)議版本的字符串,必須準(zhǔn)確地寫為“2.0”。method:調(diào)用方法的名稱。params:調(diào)用方法所需要的參數(shù),方法參數(shù)可選。id:已建立客戶端的唯一標(biāo)識ID,ID必須是一個(gè)字符串、數(shù)值或NULL空值。使用RPC協(xié)議01020304jsonrpc:指定JSON-RPC協(xié)議版本的字符串,必須準(zhǔn)確地寫為“2.0"。服務(wù)端響應(yīng)result:正確結(jié)果字段。eror:錯(cuò)誤結(jié)果字段。id:響應(yīng)id。使用RPC協(xié)議獲取節(jié)點(diǎn)版本信息。調(diào)用方法method為getClientVersion,操作如下:使用RPC協(xié)議FISCOBCOS的RPC模塊的簡單命令輸出內(nèi)容對應(yīng)解釋,即節(jié)點(diǎn)獲取信息的說明,如表6-2所示。使用RPC協(xié)議獲取區(qū)塊高度。調(diào)用方法method為getBlockNumber,操作如下:使用RPC協(xié)議獲取群組節(jié)點(diǎn)信息。通過指定方法getGroupPeers獲取指定群組內(nèi)的共識節(jié)點(diǎn)和觀察節(jié)點(diǎn)列表,如下命令為查詢?nèi)航M編號為1的節(jié)點(diǎn)列表:使用RPC協(xié)議查詢?nèi)航MID列表。通過方法getGroupList獲取信息,操作如下:使用RPC協(xié)議填寫任務(wù)評價(jià)表,如表6-3所示。使用RPC協(xié)議03搭建P2P網(wǎng)絡(luò)任務(wù)布置:學(xué)習(xí)P2P網(wǎng)絡(luò)通信的基本知識。學(xué)習(xí)FISCOBCOS的網(wǎng)絡(luò)傳輸協(xié)議。掌握搭建P2P網(wǎng)絡(luò)和添加新節(jié)點(diǎn)進(jìn)入網(wǎng)絡(luò)的方法。搭建P2P網(wǎng)絡(luò)P2P網(wǎng)絡(luò)又稱對等網(wǎng)絡(luò)(Peer-to-Peernetworking),或?qū)Φ扔?jì)算(Peer-to-Peercomputing),是一種在對等節(jié)點(diǎn)(Peer)之間分配任務(wù)和工作負(fù)載的分布式應(yīng)用架構(gòu),是對等計(jì)算模型在應(yīng)用層層面的一種組網(wǎng)或網(wǎng)絡(luò)形式。P2P網(wǎng)絡(luò)通信搭建P2P網(wǎng)絡(luò)在P2P網(wǎng)絡(luò)環(huán)境中,彼此連接的多臺計(jì)算機(jī)之間處于對等的地位,各臺計(jì)算機(jī)有相同的功能,無主從之分,一臺計(jì)算機(jī)既可以作為服務(wù)器,設(shè)定共享資源供網(wǎng)絡(luò)中其他計(jì)算機(jī)使用,又可以作為工作站。網(wǎng)絡(luò)中的參與者能被其他對等節(jié)點(diǎn)直接訪問,無須經(jīng)過中間實(shí)體,它既是資源、服務(wù)和內(nèi)容的提供者,也可以是資源、服務(wù)和內(nèi)容的獲取者。搭建P2P網(wǎng)絡(luò)奉茶順序整個(gè)網(wǎng)絡(luò)不需要專用的集中服務(wù)器或?qū)S玫墓ぷ髡尽>床瓒Y節(jié)網(wǎng)絡(luò)中的每臺計(jì)算機(jī)既能充當(dāng)網(wǎng)絡(luò)服務(wù)的請求者,又能對其他計(jì)算機(jī)的請求做出響應(yīng),提供資源、服務(wù)和內(nèi)容。通常這些資源和服務(wù)包括:信息的共享和交換、計(jì)算資源(如CPU計(jì)算能力共享)、存儲共享(如緩存和磁盤空間的使用)、網(wǎng)絡(luò)共享、打印機(jī)共享等?!啊贝罱≒2P網(wǎng)絡(luò)在區(qū)塊鏈技術(shù)中由于采用了去中心化的理論,數(shù)據(jù)均以點(diǎn)對點(diǎn)的通信方式實(shí)現(xiàn),因此P2P通信技術(shù)在節(jié)點(diǎn)通信中應(yīng)用極其廣泛。搭建P2P網(wǎng)絡(luò)FISCOBCOS的網(wǎng)絡(luò)傳輸協(xié)議基于P2P網(wǎng)絡(luò)通信的原理,F(xiàn)ISCOBCOS針對自身區(qū)塊鏈業(yè)務(wù)設(shè)計(jì)了個(gè)性化的網(wǎng)絡(luò)傳輸協(xié)議。在FISCOBCOS網(wǎng)絡(luò)傳輸協(xié)議中包含了兩類數(shù)據(jù)包格式,分別為:(1)P2PMessage格式:用于實(shí)現(xiàn)節(jié)點(diǎn)與節(jié)點(diǎn)之間的通信。搭建P2P網(wǎng)絡(luò)(2)ChannelMessage格式:用于實(shí)現(xiàn)節(jié)點(diǎn)與客戶端通過SDK的方式通信。如圖6-11所示為FISCOBCOS網(wǎng)絡(luò)傳輸協(xié)議的實(shí)現(xiàn)形式。搭建P2P網(wǎng)絡(luò)P2PMessage作為區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)間進(jìn)行數(shù)據(jù)傳輸?shù)膮f(xié)議,從2.0開始擴(kuò)展了群組ID和模塊ID的范圍,最多支持32767個(gè)群組,且新增了Version字段來支持其他特性(如網(wǎng)絡(luò)壓縮),包頭大小為16字節(jié),其數(shù)據(jù)包的結(jié)構(gòu)如圖6-12所示。搭建P2P網(wǎng)絡(luò)表6-4為P2PMessage數(shù)據(jù)包內(nèi)容的描述。搭建P2P網(wǎng)絡(luò)我們可以通過在FISCOBCOS節(jié)點(diǎn)的配置文件中對節(jié)點(diǎn)的通信進(jìn)行配置。根據(jù)之前學(xué)習(xí)的內(nèi)容,我們已經(jīng)部署了FISCOBCOS的測試區(qū)塊鏈網(wǎng)絡(luò),在網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)都有其對應(yīng)的配置文件,包括主配置config.ini和多個(gè)賬本配置group.group_id.genesis、group.groupid.ini,不同配置文件描述如下。FISCOBCOS節(jié)點(diǎn)的通信設(shè)置搭建P2P網(wǎng)絡(luò)config.ini主配置文件,主要配置RPC、P2P、SSL證書、賬本配置文件路徑、兼容性等信息。group.group_id.genesis群組配置文件,群組內(nèi)所有節(jié)點(diǎn)一致,節(jié)點(diǎn)啟動(dòng)后,不可手動(dòng)更改該配置,主要包括群組共識算法、存儲類型、最大Gas限制等配置項(xiàng)。group.group_id.ini群組可變配置文件,包括交易池大小等,配置后重啟節(jié)點(diǎn)生效。“”搭建P2P網(wǎng)絡(luò)添加新節(jié)點(diǎn)目前FISCOBCOS已支持IPv6的配置信息,可以在config.ini文件中找到“[P2P]”關(guān)鍵字進(jìn)行相關(guān)配置。添加新節(jié)點(diǎn)進(jìn)入網(wǎng)絡(luò)。前提是已有節(jié)點(diǎn)1“nodes”,節(jié)點(diǎn)2“node1”。搭建P2P網(wǎng)絡(luò)填寫任務(wù)評價(jià)表,如表6-5所示。搭建P2P網(wǎng)絡(luò)歸納總結(jié):搭建P2P網(wǎng)絡(luò)謝謝觀看區(qū)塊鏈平臺維護(hù)高等職業(yè)教育新目錄新專標(biāo)電子與信息大類教材區(qū)塊鏈部署與運(yùn)維第七章01區(qū)塊鏈管理工具在現(xiàn)有的開發(fā)環(huán)境中,有不同的工具幫助我們簡易管理開發(fā)系統(tǒng),那么在區(qū)塊鏈中有哪些工具幫助操作人員?它們是如何工作的?任務(wù)場景區(qū)塊鏈管理工具任務(wù)布置:學(xué)習(xí)FISCO

BCOS管理工具。學(xué)習(xí)HyperledgerFabric管理工具。搭建Fabric基本環(huán)境。區(qū)塊鏈管理工具01020304build_chain.sh具有多種功能,主要包括:快速生成一條鏈中的節(jié)點(diǎn)的配置文件??焖賳?dòng)一條適應(yīng)各種復(fù)雜場景的FISCOBCOS鏈。使用部分選項(xiàng)可以使區(qū)塊鏈進(jìn)入測試模式(通過-T選項(xiàng)配置)。區(qū)塊鏈管理工具FISCO

BCOS管理工具由于build_chain.sh腳本依賴于openssl工具,我們需要掌握openssl工具的安裝。在CentOS系統(tǒng)上安裝openssl的命令如下:sudoyuminstallopensslsudoyuminstallopenssl-devel在Ubuntu系統(tǒng)上安裝openssl的命令如下:sudoapt-getinstallopensslsudoapt-getinstalllibssl-dev區(qū)塊鏈管理工具在上述信息中,已經(jīng)說明了FISCOBCOS節(jié)點(diǎn)的相關(guān)信息,我們在使用時(shí)還需注意如下配置內(nèi)容。cert文件夾下存放鏈的鏈證書和機(jī)構(gòu)證書。以IP命名的文件夾下存儲該服務(wù)器所有節(jié)點(diǎn)相關(guān)配置、fisco-bcos可執(zhí)行程序、SDK所需的證書文件。每個(gè)IP文件夾下的node*文件夾下存儲節(jié)點(diǎn)所需的配置文件。每個(gè)IP文件夾下提供startall.sh和stopall.sh兩個(gè)腳本用于啟動(dòng)和停止所有節(jié)點(diǎn)。區(qū)塊鏈管理工具在應(yīng)用部署模塊,我們已實(shí)現(xiàn)了使用Console工具部署一個(gè)測試智能合約。除了使用deploy實(shí)現(xiàn)合約部署,Console還包括諸多其他功能,在這里僅列出調(diào)用相關(guān)的命令。命令行交互工具Console的使用區(qū)塊鏈管理工具③合約接口名。④接口參數(shù)。參數(shù)包括:①合約路徑。②合約地址。區(qū)塊鏈管理工具HyperledgerFabric管理工具安裝與配置在本小節(jié)的任務(wù)實(shí)施中我們將搭建Fabric聯(lián)盟鏈網(wǎng)絡(luò),此過程中使用了包括peer,cryptogen等諸多命令。在HyperledgerFabric聯(lián)盟鏈的維護(hù)與管理方面,這些工具也是基礎(chǔ),我們需要掌握并使用這些工具。需要注意的是,由于HyperledgerFabric版本迭代較快,不同版本間的工具命令會有偏差,本書主要基于HyperledgerFabric的v2.3.0版本進(jìn)行介紹。區(qū)塊鏈管理工具peer工具是用于操作Fabric網(wǎng)絡(luò)中除orderer節(jié)點(diǎn)以外的peer節(jié)點(diǎn)的,包含peerchannel、peerlifecyclechaineode、peernode等子命令。在peer命令執(zhí)行時(shí)會讀取對應(yīng)的core.yaml配置文件,通過配置FABRIC_CFGPATH環(huán)境變量定義。peer命令

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論