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