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

下載本文檔

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

文檔簡介

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

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

BCOS

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

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

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

評論

0/150

提交評論