版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
項目1:初識區(qū)塊鏈1.0項目1任務(wù):體驗比特幣測試鏈知識導(dǎo)圖1區(qū)塊鏈的起源2區(qū)塊鏈的工作原理3區(qū)塊鏈技術(shù)的特征目錄CONTENTS4比特幣客戶端常用命令知識目標(biāo)教學(xué)目標(biāo)了解區(qū)塊鏈的起源和分類熟悉區(qū)塊鏈的特性和優(yōu)勢掌握比特幣測試網(wǎng)絡(luò)搭建方法熟悉比特幣客戶端常用命令能力目標(biāo)素質(zhì)目標(biāo)認(rèn)真的學(xué)習(xí)態(tài)度追根溯源的學(xué)習(xí)精神團(tuán)隊合作的精神教學(xué)目標(biāo)能夠搭建比特幣測試網(wǎng)絡(luò)能夠熟練使用比特幣客戶端常用命令進(jìn)行基本操作1區(qū)塊鏈的起源2區(qū)塊鏈的工作原理3區(qū)塊鏈技術(shù)的特征目錄CONTENTS4比特幣客戶端常用命令2008中本聰提出比特幣概念2011交易網(wǎng)站“絲綢之路”上線并使用比特幣作為支付手段2014以太坊問世如今國內(nèi)外聯(lián)盟鏈發(fā)展迅猛,各行業(yè)陸續(xù)應(yīng)用聯(lián)盟鏈開展業(yè)務(wù)2009創(chuàng)世區(qū)塊的誕生2013德國政府、美國參議院承認(rèn)比特幣的貨幣地位及合法性2015聯(lián)盟鏈產(chǎn)生1.1區(qū)塊鏈發(fā)展歷程1.區(qū)塊鏈的起源區(qū)塊鏈本質(zhì)上是一個去中心化的分布式數(shù)據(jù)庫,包括數(shù)據(jù)生成機(jī)制、數(shù)據(jù)傳輸機(jī)制、數(shù)據(jù)存儲結(jié)構(gòu),區(qū)塊鏈中通過分布式、區(qū)塊化的存儲將全部賬戶的余額與交易流水進(jìn)行記錄,從而使得每個節(jié)點都有記錄了全部交易數(shù)據(jù)的完整的賬本數(shù)據(jù)庫,且每個節(jié)點都有唯一的一對公、私鑰,確保數(shù)據(jù)的完整性、安全性以及準(zhǔn)確性。每一筆交易數(shù)據(jù)都存儲在某一個區(qū)塊上,每個區(qū)塊都有唯一的ID和HASH值,區(qū)塊之間彼此連接形成鏈條,產(chǎn)生了區(qū)塊鏈。1.2區(qū)塊鏈定義1.區(qū)塊鏈的起源舉例:比特幣、以太坊公鏈舉例:HyperledgerFabric、FISCOBCOS聯(lián)盟鏈由單個機(jī)構(gòu)構(gòu)建的區(qū)塊鏈私有鏈1.3區(qū)塊鏈的分類1.區(qū)塊鏈的起源1區(qū)塊鏈的起源2區(qū)塊鏈的工作原理3區(qū)塊鏈技術(shù)的特征目錄CONTENTS4比特幣客戶端常用命令區(qū)塊是一種聚合了交易信息的容器數(shù)據(jù)結(jié)構(gòu),由區(qū)塊大小、區(qū)塊頭、交易計數(shù)器和交易信息四個字段組成。區(qū)塊大?。赫?個字節(jié),該值表示區(qū)塊的大小。區(qū)塊頭:三組區(qū)塊元數(shù)據(jù)組成,第一粗記錄上一區(qū)塊的哈希值,第二組記錄挖礦競爭相關(guān)的難度、時間戳和用于工作量證明算法的計數(shù)器Nonce,第三組記錄Merkle樹根的哈希值。交易計數(shù)器:表示當(dāng)前區(qū)塊中包含的交易的數(shù)量,交易信息表示記錄在該區(qū)塊中所有的交易信息。一個區(qū)塊的區(qū)塊頭占用80個字節(jié),平均每個交易至少是250字節(jié),平均每個區(qū)塊至少包含500個交易。2.1區(qū)塊結(jié)構(gòu)2.區(qū)塊鏈的工作原理2.區(qū)塊鏈的工作原理創(chuàng)世區(qū)塊包括區(qū)塊的基本信息和一個具體的交易詳情,是區(qū)塊鏈里面所有區(qū)塊的共同祖先。這意味著你從任一區(qū)塊循鏈向后回溯,最終都將到達(dá)創(chuàng)世區(qū)塊,創(chuàng)世區(qū)塊的哈希值為:“000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f”。創(chuàng)世區(qū)塊被編入比特幣客戶端軟件里,每一個節(jié)點都記錄了至少包含創(chuàng)世區(qū)塊的區(qū)塊鏈,從而確保創(chuàng)世區(qū)塊不會被改變。每一個節(jié)點都“知道”創(chuàng)世區(qū)塊的哈希值、結(jié)構(gòu)、被創(chuàng)建的時間和里面的一個交易。因此,每個節(jié)點都把該區(qū)塊作為區(qū)塊鏈的首區(qū)塊,從而構(gòu)建了一個安全的、可信的區(qū)塊鏈的根。2.2創(chuàng)世區(qū)塊2.區(qū)塊鏈的工作原理區(qū)塊鏈的工作流程主要包含:生成區(qū)塊、共識驗證、賬本維護(hù)三個步驟。1.將區(qū)塊鏈節(jié)點收集的廣播在網(wǎng)絡(luò)中的交易打包生成區(qū)塊,通過節(jié)點將區(qū)塊廣播至網(wǎng)絡(luò)中;2.全網(wǎng)節(jié)點接收到區(qū)塊后,按接收的時間順序進(jìn)行共識和內(nèi)容的驗證,通過共識和內(nèi)容驗證的區(qū)塊形成具有特定結(jié)構(gòu)的區(qū)塊集,這個區(qū)塊集就叫做賬本。3.節(jié)點長期存儲驗證通過的賬本數(shù)據(jù)并提供回溯檢驗等功能,同時為上層應(yīng)用提供訪問接口。2.3區(qū)塊鏈的工作流程2.區(qū)塊鏈的工作原理區(qū)塊鏈工作基本原理2.區(qū)塊鏈的工作原理1區(qū)塊鏈的起源2區(qū)塊鏈的工作原理3區(qū)塊鏈技術(shù)的特征目錄CONTENTS4比特幣客戶端常用命令去中心化開放性自治性信息不可篡改中心化指不存在中心化的硬件或管理機(jī)構(gòu),系統(tǒng)中的數(shù)據(jù)由所有具有維護(hù)功能的節(jié)點共同管理,任意節(jié)點的權(quán)利和義務(wù)都是均等的。自治性指區(qū)塊鏈基于協(xié)商一致的規(guī)范和協(xié)議(如公開的算法),使系統(tǒng)中的所有節(jié)點都能在去信任的環(huán)境中自由安全地交換數(shù)據(jù),讓對“人”的信任改成對機(jī)器的信任,任何人為的干預(yù)都無法發(fā)揮作用,節(jié)點具有高度自治性。區(qū)塊鏈系統(tǒng)是開放的,主要體現(xiàn)在對交易各方的私有數(shù)據(jù)進(jìn)行加密保護(hù),同時公開所有歷史數(shù)據(jù)。信息不可篡改指一旦信息經(jīng)過驗證并添加到區(qū)塊鏈,就會被永久地存儲起來,只有同時控制系統(tǒng)中超過51%的節(jié)點修改才能生效,單個節(jié)點上對數(shù)據(jù)庫的修改是無效的,因為篡改信息代價極高,從而達(dá)到不可篡改的目的。區(qū)塊鏈技術(shù)特征匿名性匿名性指節(jié)點之間的交換遵循固定算法,其數(shù)據(jù)交互是無須信任的,交易對手不用通過公開身份的方式讓對方對自己產(chǎn)生信任,有利于信用的累計。1區(qū)塊鏈的起源2區(qū)塊鏈的工作原理3區(qū)塊鏈技術(shù)的特征4比特幣客戶端常用命令目錄CONTENTS比特幣客戶端常用命令命令功能bitcoin-cligetwalletinfo查看錢包信息bitcoin-clilistreceivedbyaddress1true獲取所有錢包地址及其賬號名bitcoin-cligetbalance查看錢包余額bitcoin-cligetnewaddress賬號名生成錢包賬號的地址bitcoin-cligetreceivedbyaddress錢包地址查詢指定地址錢包收到幣的數(shù)量bitcoin-cligetaccountaddress""查看默認(rèn)錢包地址bitcoin-cliencryptwallet密碼加密錢包bitcoin-cliwalletpassphrasechange原密碼新密碼修改錢包密碼bitcoin-cliwalletlock鎖定錢包bitcoin-cliwalletpassphrase密碼解鎖時間解鎖錢包,其中解鎖時間單位是秒bitcoin-clibackupwallet備份文件名備份錢包文件bitcoin-cliimportwallet備份文件名導(dǎo)入備份文件,需要先解鎖錢包bitcoin-clidumpwallet文件名導(dǎo)出所有錢包地址和私鑰到指定文件,需要先解鎖bitcoin-cliimportwallet文件名導(dǎo)入錢包和私鑰,需要先解鎖bitcoin-clidumpprivkey錢包地址導(dǎo)出指定錢包地址的私鑰bitcoin-cliimportprivkey錢包私鑰賬號名true導(dǎo)入指定錢包私鑰bitcoin-cligetaccount錢包地址獲取指定錢包地址的賬號名bitcoin-clilistaddressgroupings獲取本節(jié)點所有錢包的賬號名及余額表1-1錢包常用命令比特幣客戶端常用命令表1-2交易常用命令命令功能bitcoin-clisendtoaddress目標(biāo)地址轉(zhuǎn)賬金額從默認(rèn)賬戶給目標(biāo)地址轉(zhuǎn)賬bitcoin-clisendfrom賬戶名目標(biāo)地址轉(zhuǎn)賬金額
從指定賬戶給目標(biāo)地址轉(zhuǎn)賬,需要生成區(qū)塊才能確認(rèn)交易并到賬bitcoin-cligenerate區(qū)塊數(shù)量生成區(qū)塊,使得交易得到確認(rèn)bitcoin-clilisttransactions錢包賬戶名企圖的交易數(shù)量跳過的交易數(shù)量是否包含watch-only地址獲取交易列表,例如命令bitcoin-clilisttransactions"*"50true,表示獲取所有賬戶的5筆交易,不跳過任何交易,包含watch-only地址bitcoin-cligettransaction交易ID根據(jù)交易ID查詢交易詳情bitcoin-clilistunspent查詢未花費的交易bitcoin-clihelp查詢所有命令bitcoin-clihelp命令名稱查詢某個命令的詳細(xì)幫助信息任務(wù)實施詳細(xì)步驟請參考教材任務(wù)實施部分謝謝觀看項目2:認(rèn)識區(qū)塊鏈2.0項目2任務(wù)2:本地以太坊私有鏈的快速部署任務(wù)3:以太坊交易實戰(zhàn)任務(wù)4:Solidity投票智能合約知識導(dǎo)圖1以太坊概述2以太坊開發(fā)工具3智能合約編寫、編譯、部署目錄CONTENTS4智能合約Solidity控制結(jié)構(gòu)知識目標(biāo)教學(xué)目標(biāo)了解以太坊的發(fā)展歷程及相關(guān)概念熟悉以太坊的開發(fā)工具使用熟悉智能合約編寫規(guī)則掌握智能合約的編譯、部署及執(zhí)行的方法能力目標(biāo)素質(zhì)目標(biāo)認(rèn)真的學(xué)習(xí)態(tài)度追根溯源的學(xué)習(xí)精神團(tuán)隊合作的精神教學(xué)目標(biāo)能夠部署以太坊網(wǎng)絡(luò)能夠編寫、編譯、部署、執(zhí)行智能合約1以太坊概述2以太坊開發(fā)工具3智能合約編寫、編譯、部署目錄CONTENTS4智能合約Solidity控制結(jié)構(gòu)1.以太坊概述以太坊(Ethereum)是一個建立在區(qū)塊鏈技術(shù)之上的去中心化應(yīng)用平臺,作為一個開源的公共區(qū)塊鏈平臺,共識機(jī)制采用權(quán)益證明(ProofofStake,PoS)算法,被業(yè)界認(rèn)為是區(qū)塊鏈2.0。以太坊中不僅具備像比特幣的具有加密貨幣屬性的以太幣,同時也是一個智能合約(SmartContract)系統(tǒng),能夠用來構(gòu)建應(yīng)用程序。以太坊平臺如同一個分布于全世界的完全去中心化的計算機(jī),對底層區(qū)塊鏈技術(shù)進(jìn)行了封裝,讓區(qū)塊鏈應(yīng)用開發(fā)者可以只專注于開發(fā)應(yīng)用本身邏輯的智能合約,從而進(jìn)行業(yè)務(wù)應(yīng)用,大大降低了開發(fā)難度,任何人都能夠在平臺中建立和使用通過區(qū)塊鏈技術(shù)運行的去中心化應(yīng)用。1.1以太坊簡介1.以太坊概述1.2以太坊相關(guān)概念1.智能合約定義:在以太坊網(wǎng)絡(luò)上運行的程序稱為智能合約起源:智能合約由尼克薩博在1995年提出,旨在將法律條文寫成可執(zhí)行的代碼,讓法律條文的執(zhí)行中立化。語言:以太坊智能合約大多采用Solidity高級編程語言編寫,工具:可通過在線開發(fā)環(huán)境Remix和本地開發(fā)工具開發(fā),由以太坊虛擬機(jī)(EthereumVirtualMachine,EVM)編譯執(zhí)行,以太坊網(wǎng)絡(luò)中的每個節(jié)點(計算機(jī))都有一個EVM,只需要把合約部署到以太坊網(wǎng)絡(luò)便可以運行。1.以太坊概述1.2以太坊相關(guān)概念2.賬戶外部賬戶:外部賬戶可以觸發(fā)交易,地址由公鑰決定,賬戶交易由私鑰控制合約賬戶:合約賬戶的地址在創(chuàng)建合約時確定,由存儲的代碼控制,且每個賬戶都有一個以太幣(Ether)1.以太坊概述1.2以太坊相關(guān)概念3.交易交易是指在以太坊中從一個賬戶到另一個賬戶的消息數(shù)據(jù),可以是以太幣或者合約執(zhí)行參數(shù),是以太坊執(zhí)行操作的最小單位,每個交易包括以下字段:to:目標(biāo)賬戶地址;value:轉(zhuǎn)移的以太幣數(shù)量,單位是Wei;nonce:交易順序值,是一個連續(xù)的整數(shù),每完成一筆交易,nonce的值就會加1,主要目的是防止雙花問題;gasPrice:執(zhí)行交易需要消耗的Gas價格,一個單位的Gas表示執(zhí)行一個基本指令的費用;startgas:交易消耗的最大Gas值,表示這個交易的執(zhí)行最多被允許使用的計算步驟;signature:簽名信息。1.以太坊概述1.2以太坊相關(guān)概念4.以太坊網(wǎng)絡(luò)太坊主網(wǎng)以太坊測試網(wǎng)以太坊私有網(wǎng)任務(wù)實施LOGO詳細(xì)步驟請參考教材任務(wù)實施部分1以太坊概述2以太坊開發(fā)工具3智能合約編寫、編譯、部署目錄CONTENTS4智能合約Solidity控制結(jié)構(gòu)2.以太坊開發(fā)工具1.2以太坊相關(guān)概念GethMistEthereum-WalletGanache-cliTruffleRemix-ideRemix-appMetaMaskWeb3.js2.以太坊開發(fā)工具Geth是由Go語言開發(fā)的開源項目,實現(xiàn)以太坊協(xié)議的三種方式之一,是GoEthereum的簡稱。通常被作為以太坊的客戶端來使用,用于以太坊中賬戶的新建、編輯、刪除、開戶探礦、以太幣轉(zhuǎn)移以及智能合約的部署和執(zhí)行。2.1Geth2.以太坊開發(fā)工具M(jìn)ist是以太坊官方提供的瀏覽器,可以連接到以太坊主網(wǎng)和以太坊測試網(wǎng)絡(luò),以觀察網(wǎng)絡(luò)當(dāng)前算力、區(qū)塊數(shù)等情況。同時也可以連接到私有網(wǎng)絡(luò)上,方便開發(fā)、調(diào)試和測試智能合約。另外它還集成了以太坊的錢包(EthereumWallet)功能。2.2Mist2.以太坊開發(fā)工具Ethereum-Wallet是以太坊錢包,可以新建賬戶、轉(zhuǎn)移以太幣、部署和執(zhí)行智能合約等。2.3Ethereum-Wallet2.以太坊開發(fā)工具Ganache-cli是以太坊節(jié)點的仿真器軟件,開發(fā)者不必進(jìn)行較長時間的挖礦等待,便可以快速進(jìn)行以太坊應(yīng)用的開發(fā)與測試。2.4Ganache-cli2.以太坊開發(fā)工具Truffle是基于JavaScript開發(fā)的針對Solidity語言的開發(fā)框架,使用Truffle可方便的構(gòu)建、開發(fā)、測試、部署智能合約項目,以及配置變化時智能合約的自動發(fā)布和部署。還可以使用web3.js直接在代碼中操作對應(yīng)的合約函數(shù)等。2.5Truffle2.以太坊開發(fā)工具Remix是一個智能合約開發(fā)環(huán)境,通過/訪問,提供Solidity語言編輯器,可編寫、調(diào)試、編譯智能合約,可以訪問已部署的智能合約的狀態(tài)和屬性,同時支持代碼分析和錯誤提示功能,可以調(diào)試和測試DAPP(DecentralizationApplication),操作界面如下圖2-6所示2.6Remix-ide2.以太坊開發(fā)工具Remix是一個智能合約開發(fā)環(huán)境,通過/訪問,提供Solidity語言編輯器,可編寫、調(diào)試、編譯智能合約,可以訪問已部署的智能合約的狀態(tài)和屬性,同時支持代碼分析和錯誤提示功能,可以調(diào)試和測試DAPP(DecentralizationApplication),操作界面如下圖2-6所示2.6Remix-ide最左邊菜單欄從上到下,依次是文件資源管理器、合約編譯、合約部署、合約數(shù)據(jù)分析2.以太坊開發(fā)工具新建一個項目的步驟①創(chuàng)建工作區(qū),在文件資源管理器界面,點擊“+”即可完成,如圖2-7所示,2.6Remix-ide2.以太坊開發(fā)工具新建一個項目的步驟②創(chuàng)建合約,如圖2-8所示,選中【contracts】(圖中1)文件夾,點擊“新建”圖標(biāo)(圖中2)可以創(chuàng)建新合約,輸入“test”為新合約名稱(圖中3),讀者可自行定義合約名稱。2.6Remix-ide2.以太坊開發(fā)工具新建一個項目的步驟③編輯合約內(nèi)容,界面的右邊是工作區(qū),如圖2-9所示,工作區(qū)上半部是代碼編輯區(qū),在這里可以編寫Solidity合約,代碼每5秒自動保存一次。2.6Remix-ide2.以太坊開發(fā)工具這是Remix-ide的一個本地app版本,是用electron構(gòu)建的,官方的預(yù)編譯版本目前只提供了Linux和OSX平臺的支持。2.7Remix-app2.以太坊開發(fā)工具M(jìn)etaMask是一款瀏覽器插件,開源的以太坊錢包,可以在谷歌瀏覽器的擴(kuò)展應(yīng)用中心里找到,用戶能夠在瀏覽器中通過該插件連接到以太坊網(wǎng)絡(luò)中,控制賬戶進(jìn)行交易。2.8MetaMask2.以太坊開發(fā)工具Web3.js是一個javascript庫,可使用http或ipc連接本地或遠(yuǎn)程以太坊節(jié)點進(jìn)行交互。通過Web3.js與以太坊節(jié)點建立連接后,Web3.js可實現(xiàn)檢索用戶賬戶、發(fā)送交易、與智能合約交互等功能。2.9Web3.js1以太坊概述2以太坊開發(fā)工具3智能合約編寫、編譯、部署目錄CONTENTS4智能合約Solidity控制結(jié)構(gòu)3.智能合約編寫、編譯、部署一個智能合約由一組代碼(合約的函數(shù))和數(shù)據(jù)(合約的狀態(tài))組成,是一套以數(shù)字形式定義的承諾,包括合約參與方可以在上面執(zhí)行這些承諾的協(xié)議,運行在以太坊虛擬機(jī)上,本節(jié)介紹使用Solidity語言編寫智能合約的方法,一個最簡單的智能合約結(jié)構(gòu)如下。pragmasolidity^0.4.18;contractHelloWorld{}3.智能合約編寫、編譯、部署狀態(tài)變量表示永久地寫入以太坊的鏈上,供后續(xù)使用者進(jìn)行訪問和調(diào)用。下面語句定義了一個storedData變量,并賦值100,其中uint類型表示無符號數(shù)據(jù)類型,其值為非負(fù)數(shù),有符號的整數(shù)用int表示。uintstoredData=1001.狀態(tài)變量3.智能合約編寫、編譯、部署字符串變量用string表示,可以保存任意長度的UTF-8數(shù)據(jù),例如:stringname=”Hello”2.字符串變量3.智能合約編寫、編譯、部署Solidity支持定義結(jié)構(gòu)體,這是一個更為復(fù)雜的數(shù)據(jù)類型,用struct表示,可以包含多個屬性,例如以下代碼定義了一個名為Student的結(jié)構(gòu)體,該結(jié)構(gòu)體中包含了age、name和class字段。structStudent{unitage;stringname;stringclass;}3.結(jié)構(gòu)體3.智能合約編寫、編譯、部署Solidity支持靜態(tài)數(shù)組和動態(tài)數(shù)組,數(shù)組定義方式如下所示。uint[5]array;//固定長度為5的靜態(tài)數(shù)組string[3]stringArray;//固定長度為3的string類型的靜態(tài)數(shù)組uint[]array2;//動態(tài)數(shù)據(jù),可動態(tài)添加元素4.數(shù)組和公共數(shù)組3.智能合約編寫、編譯、部署函數(shù)通過關(guān)鍵字“function”定義,分為公開函數(shù)和私有函數(shù)。Solidity中函數(shù)默認(rèn)為public屬性,任何外部賬戶都可以進(jìn)行訪問。//定義公開函數(shù)“drink”,返回string類型的返回值。functiondrink(string_name,uint_amount)publicreturns(string){};//定義一個私有函數(shù)function_waterToDrink(unit_amount)private{};5.函數(shù)3.智能合約編寫、編譯、部署事件是合約和區(qū)塊鏈通訊的一種機(jī)制,可以對合約內(nèi)容發(fā)生的狀態(tài)變化進(jìn)行記錄。6.事件3.智能合約編寫、編譯、部署7.智能合約編譯Remix提供智能合約編譯工具,通過點擊左邊編譯器按鈕進(jìn)入編譯環(huán)境,如圖2-10所示,對編譯器、智能合約語言等進(jìn)行配置,選中需要編譯的合約點擊【Compile】進(jìn)行編譯即可。3.智能合約編寫、編譯、部署8.智能合約部署對編譯好的智能合約進(jìn)行部署,部署需要對運行環(huán)境、賬戶、合約交易消耗最大值和發(fā)送以太幣的數(shù)量等參數(shù)進(jìn)行設(shè)置,合約部署界面如下圖2-12所示。任務(wù)實施LOGO詳細(xì)步驟請參考教材任務(wù)實施部分1以太坊概述2以太坊開發(fā)工具3智能合約編寫、編譯、部署目錄CONTENTS4智能合約Solidity控制結(jié)構(gòu)首先要為投票創(chuàng)建一個合約,發(fā)起者作為主席來給每一個獨立的地址分配權(quán)限,每一個參與者可以自己投票或者委托給信任的人,程序最后會返回得票數(shù)最多的那個提議。4.1投票智能合約簡介4.智能合約Solidity控制結(jié)構(gòu)4.智能合約Solidity控制結(jié)構(gòu)1.條件語句Solidity語言中條件語句與C語言中的條件語句語法結(jié)構(gòu)一樣,包括單分支、二分支和多分支條件語句。其中單分支語句表示只有一個分支的條件語句,用if語句實現(xiàn),當(dāng)滿足條件時執(zhí)行;二分支語句表示有兩個分支的條件語句,用if...else語句實現(xiàn),當(dāng)滿足條件時執(zhí)行某段代碼,不滿足時執(zhí)行另一段代碼;多分支表示有多個分支的條件語句,用if..elseif...語句實現(xiàn),根據(jù)條件的判斷結(jié)果選擇滿足條件的分支執(zhí)行。4.智能合約Solidity控制結(jié)構(gòu)2.循環(huán)語句循環(huán)語句與C語言中的循環(huán)語句一樣,Solidity提供while、do...while和for循環(huán)語句,語法結(jié)構(gòu)與C語言一致,此處不再詳述。4.智能合約Solidity控制結(jié)構(gòu)3.require函數(shù)require函數(shù)用于確認(rèn)條件有效性,例如輸入變量,或合約狀態(tài)變量是否滿足條件,或驗證外部合約調(diào)用返回的值。該函數(shù)有兩個參數(shù),第一個參數(shù)為條件判斷表達(dá)式,是必選參數(shù),第二個參數(shù)為要返回的異常消息提醒,是可選參數(shù),其語法格式如下:require(條件表達(dá)式,提醒消息)//例子1require(msg.value%3==0,"Evenvaluerequired.");//例子2require(msg.value%3==0);任務(wù)實施詳細(xì)步驟請參考教材任務(wù)實施部分謝謝觀看項目3:認(rèn)識區(qū)塊鏈3.0項目3任務(wù)5:快速部署Fabric任務(wù)6:鏈碼交易實戰(zhàn)1Fabric簡介2Fabric的體系架構(gòu)3Fabric的核心優(yōu)勢目錄CONTENTS鏈碼簡介鏈碼分類45鏈碼的運行方式6鏈碼的生命周期7知識導(dǎo)圖知識目標(biāo)教學(xué)目標(biāo)了解Fabric的發(fā)展歷程及相關(guān)概念熟悉Fabric的體系架構(gòu)和核心優(yōu)勢熟悉鏈碼的概念及運行周期掌握鏈碼執(zhí)行的方法能力目標(biāo)素質(zhì)目標(biāo)認(rèn)真的學(xué)習(xí)態(tài)度追根溯源的學(xué)習(xí)精神刻苦鉆研的精神教學(xué)目標(biāo)能夠部署、運行Fabric網(wǎng)絡(luò)能夠部署、執(zhí)行智能合約1Fabric簡介2Fabric的體系架構(gòu)3Fabric的核心優(yōu)勢目錄CONTENTS鏈碼簡介鏈碼分類45鏈碼的運行方式6鏈碼的生命周期71.Fabric簡介HyperledgerFabric是來自LinuxFoundation的開源項目,這是一個模塊化區(qū)塊鏈框架,也是企業(yè)區(qū)塊鏈平臺實際采用的標(biāo)準(zhǔn)。作為開發(fā)企業(yè)級應(yīng)用程序和行業(yè)解決方案的基礎(chǔ),開放式模塊化架構(gòu)使用即插即用組件來滿足各種用例的要求。在120000多個參與組織和15000多名參與工程師的共同努力下,HyperledgerFabric提供了一種獨特的共識方法,既可以大規(guī)模提升性能,又可以保護(hù)企業(yè)要求的數(shù)據(jù)隱私。1.1Fabric是什么1.Fabric簡介為了進(jìn)一步推動區(qū)塊鏈的跨行業(yè)應(yīng)用發(fā)展,Linux基金組織開展以改善區(qū)塊鏈底層技術(shù)的超級賬本(Hyperledger)項目,隨著IBM、Intel、Cisco等國際大公司的陸續(xù)加入,超級賬本被一個由各行各業(yè)組成的技術(shù)指導(dǎo)委員會管理,這大大促進(jìn)了超級賬本的快速發(fā)展。到目前為止,超級賬本有Fabric、Iroha、BlockChainExplorer和Cello等十個頂級項目,其中Fabric是最活躍的,因此提到超級賬本默認(rèn)指Fabric,區(qū)塊鏈3.0則是以Fabric為代表的聯(lián)盟鏈。相比于公有鏈,聯(lián)盟鏈加入了準(zhǔn)入機(jī)制,節(jié)點需要通過身份認(rèn)證才可以加入網(wǎng)絡(luò),但其規(guī)模又比私有鏈大得多,具有弱中心化、較強(qiáng)可控性和數(shù)據(jù)默認(rèn)不公開等特性。1.2Fabric起源1.Fabric簡介1.3Fabric節(jié)點Fabric區(qū)塊鏈網(wǎng)絡(luò)由節(jié)點(Peer)構(gòu)成,通過節(jié)點進(jìn)行交易處理和賬本維護(hù)。每個節(jié)點都擁有一份或多份賬本和智能合約的實例。節(jié)點可以被創(chuàng)建、啟動、停止、重新配置及刪除,且管理員及應(yīng)用程序可以通過一組公開的API訪問節(jié)點的服務(wù)。1.Fabric簡介1.3Fabric節(jié)點根據(jù)功能可將接地那分為:背書節(jié)點(EndorserPeer):背書節(jié)點負(fù)責(zé)對發(fā)起的交易進(jìn)行簽名背書,背書節(jié)點不是固定的,而是鏈碼在實例化的時候通過指定某些節(jié)點為背書節(jié)點提交節(jié)點(CommitterPeer):提交節(jié)點負(fù)責(zé)維護(hù)狀態(tài)數(shù)據(jù)和賬本副本根據(jù)通信范圍分為:錨節(jié)點(AnchorPeer):錨節(jié)點隨通道而存在,每個通道上有一個或多個錨節(jié)點,且其能夠被其他通道發(fā)現(xiàn)。主節(jié)點(LeadingPeer):主節(jié)點負(fù)責(zé)與通道內(nèi)的Orderer通信,并將共識后的區(qū)塊傳輸?shù)狡渌?jié)點。1Fabric簡介2Fabric的體系架構(gòu)3Fabric的核心優(yōu)勢目錄CONTENTS鏈碼簡介鏈碼分類45鏈碼的運行方式6鏈碼的生命周期72.Fabric體系架構(gòu)2.1Fabric邏輯構(gòu)架2.Fabric體系架構(gòu)2.1Fabric邏輯構(gòu)架成員管理
成員管理負(fù)責(zé)管理用戶標(biāo)識、隱私、以及網(wǎng)絡(luò)的保密性和可審計性。在公鏈中,參與者不需要授權(quán),所有節(jié)點可以平等地提交交易或者將交易累積成區(qū)塊,即不區(qū)分角色。而在聯(lián)盟鏈里,參與方需要通過注冊獲得長期身份憑證,用戶身份可以被區(qū)分。2.Fabric體系架構(gòu)2.1Fabric邏輯構(gòu)架區(qū)塊服務(wù)區(qū)塊服務(wù)提供了最基礎(chǔ)的構(gòu)建分布式賬本的能力,實現(xiàn)數(shù)據(jù)傳輸、共識達(dá)成等底層功能,并且提供了發(fā)布、訂閱的事件管理框架,分布式賬本內(nèi)部的各種事件可通知到外部監(jiān)聽的應(yīng)用。2.Fabric體系架構(gòu)2.1Fabric邏輯構(gòu)架鏈碼服務(wù)
Fabric中的智能合約又稱為鏈上代碼(ChainCode,簡稱鏈碼),一般是開發(fā)人員使用Go語音編寫的應(yīng)用程序代碼,用于提供分布式賬本的業(yè)務(wù)處理邏輯。鏈碼被部署在Fabric的網(wǎng)絡(luò)節(jié)點中,能夠獨立運行在具有安全的、受保護(hù)的Docker容器中,通過gRPC協(xié)議與相應(yīng)的peer節(jié)點進(jìn)行交互通信,以操作(初始化或管理)分布式賬本中的數(shù)據(jù),鏈碼一旦部署便無法修改。2.Fabric體系架構(gòu)2.1Fabric邏輯構(gòu)架鏈碼服務(wù)啟動Fabric網(wǎng)絡(luò)后,可以驗證網(wǎng)絡(luò)是否正常運行,通過命令完成鏈碼操作。應(yīng)用程序通過向區(qū)塊鏈網(wǎng)絡(luò)發(fā)送交易來調(diào)用鏈碼,從而操作賬本中的內(nèi)容。1Fabric簡介2Fabric的體系架構(gòu)3Fabric的核心優(yōu)勢目錄CONTENTS鏈碼簡介鏈碼分類45鏈碼的運行方式6鏈碼的生命周期73.Fabric核心優(yōu)勢3.1Fabric優(yōu)勢Fabric的是一個區(qū)塊鏈框架,并不只是一條公鏈,也沒有內(nèi)置代幣。采用了松耦合設(shè)計,將身份驗證、共識機(jī)制等組件模塊化,使之在應(yīng)用過程中可以方便的根據(jù)應(yīng)用場景來選擇相應(yīng)的模塊。Fabric采用了容器技術(shù),將鏈碼放在Docker中運行,使得智能合約可以用任意高級語言編寫。任務(wù)實施LOGO詳細(xì)步驟請參考教材任務(wù)5的任務(wù)實施部分1Fabric簡介2Fabric的體系架構(gòu)3Fabric的核心優(yōu)勢目錄CONTENTS鏈碼簡介鏈碼分類45鏈碼的運行方式6鏈碼的生命周期74.鏈碼簡介1.2以太坊相關(guān)概念鏈碼是Fabric的智能合約,是提供分布式賬本的狀態(tài)處理邏輯業(yè)務(wù)代碼,被部署在Fabric的網(wǎng)絡(luò)節(jié)點中,能夠獨立運行在具有安全特性的受保護(hù)的Docker容器中,以gRPC協(xié)議與相應(yīng)的Peer節(jié)點進(jìn)行通信,來操作分布式賬本中的數(shù)據(jù),由go、java等各種主流高級語言編寫。1Fabric簡介2Fabric的體系架構(gòu)3Fabric的核心優(yōu)勢目錄CONTENTS鏈碼簡介鏈碼分類45鏈碼的運行方式6鏈碼的生命周期75.鏈碼分類鏈碼分為系統(tǒng)鏈碼和用戶鏈碼,通常所說的鏈碼指的是用戶鏈碼。用戶鏈碼:用于實現(xiàn)用戶的應(yīng)用功能,由應(yīng)用程序開發(fā)人員根據(jù)不同場景需求及成員制定的相關(guān)規(guī)則,使用Go語言或Java語言等進(jìn)行編寫的基于操作區(qū)塊鏈分布式賬
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物理-山東省淄博市2024-2025學(xué)年第一學(xué)期高三期末摸底質(zhì)量檢測試題和答案
- 小學(xué)一年級20以內(nèi)數(shù)學(xué)口算練習(xí)題大全
- 廈門第一中學(xué)初中英語八年級上冊-Unit-6基礎(chǔ)練習(xí)(培優(yōu)專題)
- 小學(xué)四年級數(shù)學(xué)乘除法豎式計算題
- 小學(xué)數(shù)學(xué)六年級上冊分?jǐn)?shù)乘除法計算單元小測試卷
- 普通高等學(xué)校招生全國統(tǒng)一考試(湖北卷)語文
- 《工業(yè)的區(qū)位選擇sk》課件
- 廣東省潮州市2023-2024學(xué)年高三上學(xué)期期末教學(xué)質(zhì)量檢測英語試題
- 環(huán)保企業(yè)保安工作內(nèi)容詳解
- 印刷行業(yè)印刷技術(shù)培訓(xùn)總結(jié)
- 委托招生協(xié)議書范本2025年
- 解剖學(xué)試題與參考答案
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實踐指導(dǎo)材料之11:“5領(lǐng)導(dǎo)作用-5.5崗位、職責(zé)和權(quán)限”(雷澤佳編制-2025B0)
- 物業(yè)保安培訓(xùn)工作計劃
- 開題報告課件(最終)
- 2024版短視頻IP打造與授權(quán)運營合作協(xié)議3篇
- 北京市某中學(xué)2024-2025學(xué)年七年級上學(xué)期期中考試語文試卷
- 2023-2024學(xué)年浙江省寧波市鄞州區(qū)多校統(tǒng)編版六年級上冊期末考試語文試卷
- 2024-2025學(xué)年上學(xué)期深圳初中地理七年級期末模擬卷3
- 中國當(dāng)代文學(xué)專題-003-國開機(jī)考復(fù)習(xí)資料
- 期末測試卷-2024-2025學(xué)年外研版(一起)英語六年級上冊(含答案含聽力原文無音頻)
評論
0/150
提交評論