區(qū)塊鏈技術(shù)原理與應(yīng)用 課件全套 項目1-11 初識區(qū)塊鏈1.0- 國產(chǎn)加密鏈?zhǔn)綌?shù)據(jù)庫_第1頁
區(qū)塊鏈技術(shù)原理與應(yīng)用 課件全套 項目1-11 初識區(qū)塊鏈1.0- 國產(chǎn)加密鏈?zhǔn)綌?shù)據(jù)庫_第2頁
區(qū)塊鏈技術(shù)原理與應(yīng)用 課件全套 項目1-11 初識區(qū)塊鏈1.0- 國產(chǎn)加密鏈?zhǔn)綌?shù)據(jù)庫_第3頁
區(qū)塊鏈技術(shù)原理與應(yīng)用 課件全套 項目1-11 初識區(qū)塊鏈1.0- 國產(chǎn)加密鏈?zhǔn)綌?shù)據(jù)庫_第4頁
區(qū)塊鏈技術(shù)原理與應(yīng)用 課件全套 項目1-11 初識區(qū)塊鏈1.0- 國產(chǎn)加密鏈?zhǔn)綌?shù)據(jù)庫_第5頁
已閱讀5頁,還剩353頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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ū)塊鏈分布式賬本的狀態(tài)的業(yè)務(wù)處理邏輯代碼,運行在鏈碼容器中,通過Fabric提供的接口與賬本狀態(tài)進(jìn)行交互,下可對賬本數(shù)據(jù)進(jìn)行操作,上可給企業(yè)級應(yīng)用程序提供調(diào)用接口。5.鏈碼分類系統(tǒng)鏈碼:負(fù)責(zé)Fabric節(jié)點自身的邏輯處理,包括系統(tǒng)配置、背書和校驗等工作,其僅支持go語言編寫,在Peer節(jié)點啟動時自動完成注冊和部署,共有五種類型類型作用配置系統(tǒng)鏈碼(CSCC)Peer端的Channel配置生命周期系統(tǒng)鏈碼(LSCC)對用戶鏈碼的生命周期進(jìn)行管理查詢系統(tǒng)鏈碼(QSCC)提供賬本查詢API,如獲取區(qū)塊和交易等信息背書管理系統(tǒng)鏈碼(ESCC)負(fù)責(zé)背書(簽名)過程,并可以支持對背書策略進(jìn)行管理驗證系統(tǒng)鏈碼(VSCC)處理交易的驗證,包括檢查背書策略以及多版本并發(fā)控制1Fabric簡介2Fabric的體系架構(gòu)3Fabric的核心優(yōu)勢目錄CONTENTS鏈碼簡介鏈碼分類45鏈碼的運行方式6鏈碼的生命周期76.鏈碼的運行方式在Fabric中,鏈碼運行在節(jié)點上的Docker容器中,被調(diào)用時的基本工作流程如圖所示首先客戶端(SDK或CLI)向背書節(jié)點(endorser)發(fā)出調(diào)用鏈碼的交易提案(proposal),節(jié)點收到請求后檢查提案的合法性,通過檢查則創(chuàng)建模擬執(zhí)行這一交易的環(huán)境,接著背書節(jié)點與鏈碼容器之間通過gRPC協(xié)議進(jìn)行交互,模擬執(zhí)行交易并給出背書結(jié)論,最后客戶端收到足夠的背書節(jié)點的支持后,便可以將這筆交易發(fā)送給排序節(jié)點(Orderer)進(jìn)行排序,并最終寫入?yún)^(qū)塊鏈。1Fabric簡介2Fabric的體系架構(gòu)3Fabric的核心優(yōu)勢目錄CONTENTS鏈碼簡介鏈碼分類45鏈碼的運行方式6鏈碼的生命周期77.鏈碼的運行周期鏈碼開發(fā)編寫完成后,在鏈碼生命周期的管理下完成客戶端提交的交易。鏈碼管理的生命周期包括安裝、實例化、升級、打包和簽名7.鏈碼的運行周期鏈碼生命周期相關(guān)命令:命令作用安裝(install)將已編寫完成的鏈碼安裝在網(wǎng)絡(luò)節(jié)點中實例化(instantiate)對已安裝的鏈碼進(jìn)行實例化升級(upgrade)對已有鏈碼進(jìn)行升級,鏈代碼可以在安裝后根據(jù)具體需求的變化進(jìn)行升級打包(package)對指定的鏈碼進(jìn)行打包的操作簽名(singnpackage)對已打包的文件進(jìn)行簽名7.鏈碼的運行周期通過install將已編寫完成的鏈碼安裝到網(wǎng)絡(luò)節(jié)點中,使用instantiate對已安裝的鏈碼進(jìn)行實例化,然后使用invoke、query調(diào)用和查詢鏈碼。如果需要對已有鏈碼進(jìn)行升級,則可以在安裝后根據(jù)具體需求的變化使用upgrade對鏈碼進(jìn)行升級。另外鏈碼的另一種部署方式是將鏈碼進(jìn)行打包,然后對已打包的文件簽名,最后再進(jìn)行安裝與實例化。需要注意的是:安裝、實例化、升級這三項操作不適用于系統(tǒng)鏈碼。任務(wù)實施LOGO詳細(xì)步驟請參考教材任務(wù)6的任務(wù)實施部分謝謝觀看項目4:新一代區(qū)塊鏈系統(tǒng)概述項目4任務(wù)7:新一代區(qū)塊鏈系統(tǒng)快速部署任務(wù)8:新一代區(qū)塊鏈系統(tǒng)用戶管理任務(wù)9:新一代區(qū)塊鏈系統(tǒng)管理1新一代區(qū)塊鏈系統(tǒng)簡介2新一代區(qū)塊鏈系統(tǒng)的體系架構(gòu)3新一代區(qū)塊鏈系統(tǒng)的部署目錄CONTENTS新一代區(qū)塊鏈系統(tǒng)編輯器的使用用戶的管理及其相關(guān)操作45系統(tǒng)的管理及其相關(guān)操作6知識導(dǎo)圖知識目標(biāo)教學(xué)目標(biāo)了解新一代區(qū)塊鏈系統(tǒng)的發(fā)展歷程掌握新一代區(qū)塊鏈系統(tǒng)的特征和部署方法掌握新一代區(qū)塊鏈系統(tǒng)用戶管理功能掌握新一代區(qū)塊鏈系統(tǒng)系統(tǒng)管理功能能力目標(biāo)素質(zhì)目標(biāo)認(rèn)真的學(xué)習(xí)態(tài)度追根溯源的學(xué)習(xí)精神刻苦鉆研的精神教學(xué)目標(biāo)能夠部署、運行新一代區(qū)塊鏈系統(tǒng)能夠通過內(nèi)置函數(shù)進(jìn)行用戶的注冊、登錄、激活等操作能夠通過內(nèi)置函數(shù)進(jìn)行黑、白名單的管理1新一代區(qū)塊鏈系統(tǒng)簡介2新一代區(qū)塊鏈系統(tǒng)的體系架構(gòu)3新一代區(qū)塊鏈系統(tǒng)的部署目錄CONTENTS新一代區(qū)塊鏈系統(tǒng)編輯器的使用用戶的管理及其相關(guān)操作45系統(tǒng)的管理及其相關(guān)操作61.新一代區(qū)塊鏈系統(tǒng)簡介新一代區(qū)塊鏈系統(tǒng)由辰宜科技研發(fā),于2018年5月首次公開發(fā)布,已經(jīng)平穩(wěn)運行3年多,并始終致力于系統(tǒng)功能和性能的提升,2021年3月完成系統(tǒng)高階更新迭代。新一代區(qū)塊鏈系統(tǒng)是一個融合了密碼學(xué)、P2P網(wǎng)絡(luò)、可插拔共識機(jī)制、分布式鏈結(jié)構(gòu)數(shù)據(jù)庫技術(shù)的純國產(chǎn)區(qū)塊鏈系統(tǒng),采用分層體系架構(gòu),提供包括身份認(rèn)證、證書管理、合約管理、數(shù)據(jù)上鏈、區(qū)塊生成、交易查詢、通道管理和節(jié)點管理等區(qū)塊鏈核心功能,以及能夠容納千億個頂點和萬億條邊的毫秒級查詢延時的分布式存儲功能。1.1新一代區(qū)塊鏈的起源1.新一代區(qū)塊鏈系統(tǒng)簡介自主可控中文區(qū)塊鏈體系區(qū)塊鏈體系的高度專用化和集成化自主可控中文區(qū)塊鏈體系是數(shù)字新基建的典型基礎(chǔ)設(shè)施,也是數(shù)字新基建的首選創(chuàng)新基礎(chǔ)平臺。1.2新一代區(qū)塊鏈的優(yōu)勢1.新一代區(qū)塊鏈系統(tǒng)簡介1.2新一代區(qū)塊鏈的優(yōu)勢新一代區(qū)塊鏈與開源的區(qū)塊鏈fabric在頂層設(shè)計、安全性、智能合約、節(jié)點、存儲技術(shù)、數(shù)字簽名、業(yè)務(wù)接口支持、上鏈、用戶管理、配套平臺、生態(tài)建設(shè)等方面具有優(yōu)勢,對比如下表所示。技術(shù)、功能項新一代區(qū)塊鏈HyperledgerBesu區(qū)塊鏈可快速改進(jìn)√:優(yōu)秀O:一般X:不支持頂層設(shè)計國家政策契合度√X

100%自主知識產(chǎn)權(quán)√X

操作系統(tǒng)級支持√X

多鏈融合√X

支鏈能力√√

安全性加密散列函數(shù)自研,純國產(chǎn)SHA-256、SHA-384、SHA-512、UMAC、Whirlpool

CA純國產(chǎn),成本優(yōu)勢明顯√

區(qū)塊鏈專用防火墻√X

防御機(jī)制通過遞歸共識、簽名共識與新建共識實現(xiàn)100%共識機(jī)制IBFT2.0達(dá)到66%其他共識算法只需達(dá)到51%

智能合約市場主體的可參與度√(中文合約,所見即所得,深度參與)X

開發(fā)者體驗O√√中文合同無縫對接√X

1.新一代區(qū)塊鏈系統(tǒng)簡介1.2新一代區(qū)塊鏈的優(yōu)勢新一代區(qū)塊鏈與開源的區(qū)塊鏈fabric在頂層設(shè)計、安全性、智能合約、節(jié)點、存儲技術(shù)、數(shù)字簽名、業(yè)務(wù)接口支持、上鏈、用戶管理、配套平臺、生態(tài)建設(shè)等方面具有優(yōu)勢,對比如下表所示。節(jié)點節(jié)點組織主鏈,超級賬本,級聯(lián)賬本,智能合約,預(yù)言合約5類引導(dǎo)節(jié)點、數(shù)據(jù)節(jié)點、賬號節(jié)點和權(quán)限節(jié)點4類

JSON-RPC節(jié)點通訊√√

存儲技術(shù)賬號節(jié)點存儲自研存儲技術(shù)Oracle和本地存儲

數(shù)據(jù)節(jié)點存儲自研存儲技術(shù)RocksDB

數(shù)據(jù)無縫跨平臺性√X

數(shù)字簽名核心技術(shù)自研,純國產(chǎn)OpenSSL

生成方式全自動開發(fā)人員可自選

業(yè)務(wù)接口支持Websocket√√

JSON-RPCX√√GraphQLX√√1.新一代區(qū)塊鏈系統(tǒng)簡介1.2新一代區(qū)塊鏈的優(yōu)勢上鏈IDE定制IDE傳統(tǒng)研發(fā)調(diào)試工具

開發(fā)者體驗O√√上鏈效率(尤其大文件)√X

存儲空間利用率√O

雙花問題√X

區(qū)塊生成能效比√O

用戶部分批量創(chuàng)建,導(dǎo)入√X

批量CA√X

個性化密碼體驗√X

用戶和區(qū)塊鏈耦合性耦合非耦合

全鏈單點登錄√X

配套平臺測試平臺XO√監(jiān)控平臺O√√故障恢復(fù)√√

數(shù)據(jù)查詢√√

數(shù)據(jù)分析√X

區(qū)塊鏈生態(tài)建設(shè)抽象推理√X

供需推薦√X

鏈上通訊√X

物聯(lián)網(wǎng)/移動端節(jié)點能力√X

1.新一代區(qū)塊鏈系統(tǒng)簡介新一代區(qū)塊鏈系統(tǒng)提供公鏈、聯(lián)盟鏈和私有鏈的搭建服務(wù),由主鏈數(shù)據(jù)服務(wù)器、超級賬本服務(wù)器、級聯(lián)賬本服務(wù)器、智能合約服務(wù)器和預(yù)言合約服務(wù)器等5種類型的節(jié)點構(gòu)成,如圖所示1.3新一代區(qū)塊鏈系統(tǒng)的工作原理主鏈數(shù)據(jù)服務(wù)器:主鏈數(shù)據(jù)服務(wù)器節(jié)點類型用“1”表示,用來管理節(jié)點、上鏈、用戶、區(qū)塊以及網(wǎng)絡(luò)路由;超級賬本服務(wù)器:超級賬本服務(wù)器節(jié)點類型用“2”表示,可以是多組,能夠參與主鏈數(shù)據(jù)服務(wù)器記賬,只記區(qū)塊信息級聯(lián)賬本服務(wù)器:級聯(lián)賬本服務(wù)器節(jié)點類型用“3”表示,是一個分布式記賬服務(wù)器,能夠參與超級賬本服務(wù)器的記賬,只記區(qū)塊信息智能合約服務(wù)器:智能合約服務(wù)器節(jié)點類型用“5”表示,用來保存智能合約文件,合約來源于主鏈數(shù)據(jù)服務(wù)器預(yù)言合約服務(wù)器:預(yù)言合約服務(wù)器節(jié)點類型用“6”表示,負(fù)責(zé)執(zhí)行中文編程代碼,是主鏈數(shù)據(jù)服務(wù)器與終端應(yīng)用之間的橋梁。1.3新一代區(qū)塊鏈系統(tǒng)的工作原理1.新一代區(qū)塊鏈系統(tǒng)簡介一條完整的聯(lián)盟鏈至少包括超級賬本節(jié)點、級聯(lián)賬本節(jié)點和主鏈節(jié)點,當(dāng)主鏈節(jié)點將上鏈數(shù)據(jù)打包發(fā)出生成區(qū)塊的請求之后,超級賬本節(jié)點進(jìn)行確認(rèn)、生成區(qū)塊并記賬,超級賬本(也稱原始賬本)由此生成,有且只有一個超級賬本,而級聯(lián)賬本節(jié)點掛載超級賬本的副本,當(dāng)新的區(qū)塊在超級賬本記賬結(jié)束后會廣播給鏈上所有節(jié)點,節(jié)點通過百分百共識機(jī)制進(jìn)行確認(rèn)并完成記賬。區(qū)塊鏈通過預(yù)言合約服務(wù)器與上層應(yīng)用連接,通過預(yù)言合約服務(wù)器可以進(jìn)行區(qū)塊鏈去中心化應(yīng)用(DecentralizedApplications,DAPP)的開發(fā),而智能合約的開發(fā)由智能合約節(jié)點提供服務(wù),可采用中文編程語言進(jìn)行開發(fā),同時系統(tǒng)提供Java、Python的SDK包,通過Java、Python也能完成開發(fā)。1.3新一代區(qū)塊鏈系統(tǒng)的工作原理1.新一代區(qū)塊鏈系統(tǒng)簡介系統(tǒng)還提供全加密鏈?zhǔn)綌?shù)據(jù)庫服務(wù)、通證服務(wù)、金融服務(wù)、隱私保護(hù)服務(wù),能夠為用戶頒發(fā)CA證書,系統(tǒng)功能如圖所示1.3新一代區(qū)塊鏈系統(tǒng)的工作原理1.新一代區(qū)塊鏈系統(tǒng)簡介1新一代區(qū)塊鏈系統(tǒng)簡介2新一代區(qū)塊鏈系統(tǒng)的體系架構(gòu)3新一代區(qū)塊鏈系統(tǒng)的部署目錄CONTENTS新一代區(qū)塊鏈系統(tǒng)編輯器的使用用戶的管理及其相關(guān)操作45系統(tǒng)的管理及其相關(guān)操作62.新一代區(qū)塊鏈系統(tǒng)的架構(gòu)新一代區(qū)塊鏈系統(tǒng)體系結(jié)構(gòu)分為技術(shù)層、管理層和場景應(yīng)用層。其中,技術(shù)層提供密碼學(xué)與安全技術(shù)、P2P網(wǎng)絡(luò)技術(shù)、賬本與權(quán)限技術(shù)、共識機(jī)制、分布式賬本、智能內(nèi)核和智能合約技術(shù)服務(wù),管理層面主要包括網(wǎng)絡(luò)部署、網(wǎng)絡(luò)管理、用戶管理、BI管理、節(jié)點管理、智能合約管理和人機(jī)交互管理服務(wù),場景應(yīng)用層指區(qū)塊鏈系統(tǒng)適用的領(lǐng)域及場景,包括防偽溯源、可信存證、版權(quán)保護(hù)、租賃融資、電子票證、跨境貿(mào)易、慈善公益和智能制造等,系統(tǒng)架構(gòu)如圖所示。2.新一代區(qū)塊鏈系統(tǒng)的架構(gòu)1新一代區(qū)塊鏈系統(tǒng)簡介2新一代區(qū)塊鏈系統(tǒng)的體系架構(gòu)3新一代區(qū)塊鏈系統(tǒng)的部署目錄CONTENTS新一代區(qū)塊鏈系統(tǒng)編輯器的使用用戶的管理及其相關(guān)操作45系統(tǒng)的管理及其相關(guān)操作6新一代區(qū)塊鏈系統(tǒng)的部署部署新一代區(qū)塊鏈系統(tǒng)需要進(jìn)行節(jié)點配置,包括主鏈服務(wù)器、智能合約服務(wù)器、預(yù)言合約服務(wù)器、賬本服務(wù)器、級聯(lián)賬本服務(wù)器和私有賬本服務(wù)器。賬本服務(wù)器、級聯(lián)賬本服務(wù)器與主鏈服務(wù)器通常部署在同一個物理機(jī)中,要使用新一代區(qū)塊鏈系統(tǒng),至少需要配置并開啟主鏈服務(wù)器、智能合約服務(wù)器和預(yù)言合約服務(wù)器。在整個區(qū)塊鏈網(wǎng)絡(luò)中,主鏈服務(wù)器和智能合約服務(wù)器僅能開啟一臺,其他服務(wù)器沒有限制開啟數(shù)量。部署主鏈服務(wù)器需要配置節(jié)點類型、服務(wù)器名稱、服務(wù)器IP地址、服務(wù)器端口號和智能合約服務(wù)器的名稱、IP地址和端口號等信息。其中,節(jié)點類型表示服務(wù)器的類型,主鏈數(shù)據(jù)服務(wù)器的服務(wù)器名稱可自定義,服務(wù)器IP地址為部署主鏈數(shù)據(jù)服務(wù)器的物理機(jī)的IP地址,端口號可自定義,只要不被占用即可。智能合約服務(wù)器的名稱、IP地址和端口號為該系統(tǒng)中部署智能合約服務(wù)器的名稱、IP地址和端口號,同時還可配置是否壓縮數(shù)據(jù)庫文件并重新建立索引和是否允許推薦服務(wù),如果要使用系統(tǒng)的抽象推理函數(shù),需要將是否允許推薦服務(wù)“allow_recommendation”的值設(shè)置為“yes”。3.1主鏈服務(wù)器部署3.新一代區(qū)塊鏈系統(tǒng)的部署部署賬本服務(wù)器需要配置節(jié)點類型、服務(wù)器名稱、IP地址、端口號,并指定上鏈服務(wù)器的名稱、IP地址和端口號,通常上鏈服務(wù)器指定為主鏈服務(wù)器。以及智能合約服務(wù)器的名稱、IP地址和端口號等信息。其中賬本服務(wù)器的服務(wù)器名稱可自定義,IP地址為部署賬本服務(wù)器的IP地址,端口號可自定義,只要不被占用即可。智能合約服務(wù)器的名稱、IP地址和端口號為該系統(tǒng)部署智能合約服務(wù)器的名稱、IP地址和端口號。3.2賬本服務(wù)器部署3.新一代區(qū)塊鏈系統(tǒng)的部署部署級聯(lián)賬本服務(wù)器需要配置節(jié)點類型、服務(wù)器名稱、IP地址、端口號,并指定上鏈服務(wù)器的名稱、IP地址和端口號,通常上鏈服務(wù)器指定為主鏈服務(wù)器。以及智能合約服務(wù)器的名稱、IP地址和端口號等信息。其中級聯(lián)賬本服務(wù)器的服務(wù)器名稱可自定義,IP地址為部署級聯(lián)賬本服務(wù)器的IP地址,端口號可自定義,只要不被占用即可。智能合約服務(wù)器的名稱、IP和端口號為該系統(tǒng)中部署智能合約服務(wù)器的名稱、IP地址和端口號。3.3級聯(lián)賬本服務(wù)器部署3.新一代區(qū)塊鏈系統(tǒng)的部署部署智能合約服務(wù)器需要配置節(jié)點類型、名稱、IP地址、端口號,并指定上鏈服務(wù)器的名稱、IP地址和端口號等信息,通常上鏈服務(wù)器指定為主鏈服務(wù)器。其中,智能合約服務(wù)器的服務(wù)器名稱可自定義,IP地址為部署智能合約服務(wù)器的IP地址,端口號可自定義,只要不被占用即可,同時可配置是否壓縮數(shù)據(jù)庫文件并重新建立索引。3.4智能合約服務(wù)器部署3.新一代區(qū)塊鏈系統(tǒng)的部署部署預(yù)言合約服務(wù)器需要配置節(jié)點類型、服務(wù)器名稱、IP地址、端口號,并指定上鏈服務(wù)器的名稱、IP地址和端口號等信息,通常上鏈服務(wù)器指定為主鏈服務(wù)器,可以是部署在本地的主鏈服務(wù)器,也可以是部署在別的物理機(jī)上的主鏈服務(wù)器,與其名稱、IP地址和端口號保持一致即可。其中預(yù)言合約服務(wù)器的名稱可自定義,IP地址為部署預(yù)言合約服務(wù)器的IP地址,端口號可自定義,只要不被占用即可。同時可配置是否壓縮數(shù)據(jù)庫文件并重新建立索引和是否允許使用循環(huán)語句,如果要使用系統(tǒng)中的循環(huán)語句,需要將允許使用循環(huán)語句“while_for”的值設(shè)置為“yes”,默認(rèn)不開啟循環(huán)語句。3.5預(yù)言合約服務(wù)器部署3.新一代區(qū)塊鏈系統(tǒng)的部署1)jvm故障:該故障是在啟動服務(wù)器時,由于找不到j(luò)vm.dll配置文件,無法正常啟動,故障彈窗如圖所示3.6系統(tǒng)部署故障3.新一代區(qū)塊鏈系統(tǒng)的部署解決方案:此時請檢查服務(wù)器是否正確配置了JAVA環(huán)境變量,若沒有正確配置環(huán)境變量,需要將JDK目錄對應(yīng)的路徑添加到PATH變量當(dāng)中,若已配置好環(huán)境變量,則在啟動的時候不要用雙擊的方式,而是通過點擊鼠標(biāo)右鍵,選擇“以管理員身份運行”的方式啟動即可。2)啟動故障:該故障代碼為0xc000007b,應(yīng)用程序無法正常啟動,故障如圖所示3.6系統(tǒng)部署故障3.新一代區(qū)塊鏈系統(tǒng)的部署解決方案:該故障需要使用“DirectXRepair”工具進(jìn)行修復(fù),若修復(fù)成功仍啟動失敗,則將JDK更換成1.8版本。3)連接錯誤故障:連接錯誤故障是由于主鏈數(shù)據(jù)服務(wù)器的配置文件出現(xiàn)錯誤,導(dǎo)致拒絕連接,該故障彈窗如圖所示。3.6系統(tǒng)部署故障3.新一代區(qū)塊鏈系統(tǒng)的部署解決方案:請查看本機(jī)IP地址,檢查主鏈數(shù)據(jù)服務(wù)器配置文件中的IP地址等信息是否配置正確,若連接的主鏈數(shù)據(jù)服務(wù)器不在本機(jī),檢查本機(jī)能否訪問主鏈數(shù)據(jù)服務(wù)器的IP地址。4)Java服務(wù)端口被占用故障:該故障是由于服務(wù)端口被占用,導(dǎo)致在啟動運行時出現(xiàn).BindException:Addressalreadyinuse:bind異常,該故障彈窗如圖所示。3.6系統(tǒng)部署故障3.新一代區(qū)塊鏈系統(tǒng)的部署解決方案:此時需要將配置文件中的服務(wù)端口號修改為沒被占用的端口號即可。1新一代區(qū)塊鏈系統(tǒng)簡介2新一代區(qū)塊鏈系統(tǒng)的體系架構(gòu)3新一代區(qū)塊鏈系統(tǒng)的部署目錄CONTENTS新一代區(qū)塊鏈系統(tǒng)編輯器的使用用戶的管理及其相關(guān)操作45系統(tǒng)的管理及其相關(guān)操作6簡介:新一代區(qū)塊鏈系統(tǒng)為開發(fā)者提供了一個簡易快捷、界面清晰,只需通過連接預(yù)言服務(wù)器訪問主鏈數(shù)據(jù)服務(wù)器進(jìn)行應(yīng)用開發(fā)的平臺。部署好系統(tǒng)之后,無需直接訪問主鏈數(shù)據(jù)服務(wù)器進(jìn)行應(yīng)用開發(fā),新一代區(qū)塊鏈系統(tǒng)提供區(qū)塊鏈編輯器,可以編輯、調(diào)試、編譯和運行智能合約。使用方法:區(qū)塊鏈編輯器工具通過瀏覽器打開,網(wǎng)址:/cyChain/index.html。打開區(qū)塊鏈編輯器工具后,在該頁面左上角輸入預(yù)言合約服務(wù)器的IP地址和端口號進(jìn)行連接,連接成功之后,可在編輯器編寫、編譯和執(zhí)行代碼。4.1新一代區(qū)塊鏈編輯器簡介4.新一代區(qū)塊鏈編輯器的使用使用系統(tǒng)之前,首先需要設(shè)置主鏈服務(wù)器和智能合約服務(wù)器,通過上鏈服務(wù)器設(shè)置函數(shù)和合約服務(wù)器設(shè)置函數(shù)進(jìn)行配置,兩個函數(shù)的三個參數(shù)分別為服務(wù)器名稱、IP和端口號。4.2新一代區(qū)塊鏈編輯器的配置3.新一代區(qū)塊鏈編輯器的使用主鏈服務(wù)器設(shè)置語法格式如下:上鏈服務(wù)器設(shè)置(服務(wù)器名稱,服務(wù)器IP,端口號)合約服務(wù)器設(shè)置語法格式如下:合約服務(wù)器設(shè)置(服務(wù)器名稱,服務(wù)器IP,端口號)4.3新一代區(qū)塊鏈編輯器的使用3.新一代區(qū)塊鏈編輯器的使用任務(wù)實施LOGO詳細(xì)步驟請參考教材任務(wù)7的任務(wù)實施部分1新一代區(qū)塊鏈系統(tǒng)簡介2新一代區(qū)塊鏈系統(tǒng)的體系架構(gòu)3新一代區(qū)塊鏈系統(tǒng)的部署目錄CONTENTS新一代區(qū)塊鏈系統(tǒng)編輯器的使用用戶的管理及其相關(guān)操作45系統(tǒng)的管理及其相關(guān)操作65.用戶的管理及其相關(guān)操作5.1用戶類型新一代區(qū)塊鏈系統(tǒng)通過用戶進(jìn)行相關(guān)的業(yè)務(wù)操作,根據(jù)權(quán)限劃分為系統(tǒng)管理員用戶、金融管理員用戶和普通用戶。管理員用戶通過注冊生成,無需激活即可登錄使用,用戶名指定為“系統(tǒng)管理員”,系統(tǒng)中只存在一個系統(tǒng)管理員用戶,除了具有普通用戶的權(quán)限,還具備節(jié)點管理權(quán)限,能夠激活和禁止用戶,也能刪除待激活的用戶。5.用戶的管理及其相關(guān)操作5.1用戶類型新一代區(qū)塊鏈系統(tǒng)通過用戶進(jìn)行相關(guān)的業(yè)務(wù)操作,根據(jù)權(quán)限劃分為系統(tǒng)管理員用戶、金融管理員用戶和普通用戶。普通用戶通過注冊生成,需要激活才可登錄使用,用戶名及用戶信息可自定義,具有登錄和退出系統(tǒng)、查詢用戶和修改密碼、查詢和更新資料、取出公鑰和私鑰等常用普通用戶權(quán)限。5.用戶的管理及其相關(guān)操作5.1用戶類型新一代區(qū)塊鏈系統(tǒng)通過用戶進(jìn)行相關(guān)的業(yè)務(wù)操作,根據(jù)權(quán)限劃分為系統(tǒng)管理員用戶、金融管理員用戶和普通用戶。金融管理員用戶通過注冊生成,無需激活即可登錄使用,用戶名指定為“金融管理員”,系統(tǒng)中只存在一個金融管理員用戶,除了具有普通用戶的權(quán)限,還具有金融服務(wù)管理權(quán)限,能夠開通金融服務(wù)功能、禁止和恢復(fù)指定普通用戶的金融服務(wù)使用權(quán)限,能夠進(jìn)行資產(chǎn)上鏈,為用戶分發(fā)資產(chǎn)。5.用戶的管理及其相關(guān)操作5.2注冊用戶新一代區(qū)塊鏈系統(tǒng)提供注冊用戶函數(shù),用來進(jìn)行用戶的注冊,注冊參數(shù)為:用戶名、私鑰密碼、手機(jī)號、ID、地址、備注信息,其中參數(shù)“備注信息”為選填項,可為空,用戶名和ID都不能是系統(tǒng)中已注冊過的,注冊時會自動校驗用戶名和ID,若其中任意一個被注冊過則會顯示“數(shù)字證書已存在”導(dǎo)致注冊失敗。注冊成功之后返回用戶的用戶名、公鑰、私鑰、私鑰密碼,以下為注冊用戶函數(shù)語法格式說明,并分別注冊系統(tǒng)管理員用戶、金融管理員用戶和普通用戶。5.用戶的管理及其相關(guān)操作5.2注冊用戶//注冊用戶函數(shù)語法注冊用戶(用戶名,私鑰密碼,手機(jī)號,身份證號,地址,備注信息)//注冊系統(tǒng)管理員用戶注冊用戶(“系統(tǒng)管理員”,“123456”,,,“廣東佛山”,“系統(tǒng)管理員用戶”)//注冊金融管理員用戶注冊用戶(“金融管理員”,“123456”,,,“廣東佛山”,“金融管理員用戶”)//注冊普通用戶小虹注冊用戶(“小虹”,“123456”,,,“廣東佛山”,“普通用戶”)5.用戶的管理及其相關(guān)操作5.3激活和禁止用戶普通用戶注冊成功之后,必須要系統(tǒng)管理員通過激活用戶函數(shù)將其激活之后,才能登錄使用。同時,若想要禁止某個用戶使用系統(tǒng),也可以通過系統(tǒng)管理員采用禁止用戶函數(shù)將其禁止。1、激活用戶當(dāng)用戶在首次注冊或已被禁用時,若想要正常使用,需要通過激活用戶函數(shù)進(jìn)行激活和恢復(fù)。該函數(shù)參數(shù)為用戶名,且只有系統(tǒng)管理員才能使用該函數(shù),語法格式如下:激活用戶(用戶名)5.用戶的管理及其相關(guān)操作5.3激活和禁止用戶普通用戶注冊成功之后,必須要系統(tǒng)管理員通過激活用戶函數(shù)將其激活之后,才能登錄使用。同時,若想要禁止某個用戶使用系統(tǒng),也可以通過系統(tǒng)管理員采用禁止用戶函數(shù)將其禁止。2、禁止用戶禁止用戶函數(shù)可以禁止指定用戶使用系統(tǒng),該函數(shù)參數(shù)為用戶名,能夠禁止該用戶使用系統(tǒng),只有系統(tǒng)管理員才能使用,語法格式如下:禁止用戶(用戶名)5.用戶的管理及其相關(guān)操作5.4登錄和退出系統(tǒng)登錄系統(tǒng)新一代區(qū)塊鏈系統(tǒng)提供登錄系統(tǒng)函數(shù)用來實現(xiàn)用戶的登錄,該函數(shù)有2個參數(shù),分別是用戶名和私鑰密碼,語法格式如下:登錄系統(tǒng)(用戶名,私鑰密碼)退出系統(tǒng)新一代區(qū)塊鏈系統(tǒng)提供退出系統(tǒng)函數(shù),用來退出系統(tǒng),該函數(shù)沒有參數(shù),能夠退出當(dāng)前登錄的用戶。建議所有登錄用戶,在不繼續(xù)使用區(qū)塊鏈系統(tǒng)時,立即退出區(qū)塊鏈系統(tǒng),退出系統(tǒng)函數(shù)語法格式如下:退出系統(tǒng)()5.用戶的管理及其相關(guān)操作5.5查詢用戶和修改密碼查詢用戶查詢用戶函數(shù)可根據(jù)條件查詢用戶資料,參數(shù)為用戶名、注冊開始時間和注冊結(jié)束時間,執(zhí)行此函數(shù)后可返回在開始時間到結(jié)束時間期間內(nèi)注冊的所有用戶的信息集合,包括用戶的用戶名、公鑰、注冊時間、注冊備注等信息,參數(shù)中用戶名和注冊時間可選其一,不能同時為空,語法格式如下:查詢用戶(用戶名,開始時間,結(jié)束時間)5.用戶的管理及其相關(guān)操作5.5查詢用戶和修改密碼修改密碼修改密碼函數(shù)可對當(dāng)前用戶的私鑰密碼進(jìn)行修改,包括2個參數(shù),分別是舊密碼和新密碼,語法格式如下:修改密碼(舊密碼,新密碼)5.用戶的管理及其相關(guān)操作5.6查詢資料和更新資料查詢資料查詢資料函數(shù)可以查詢當(dāng)前用戶的信息,無參數(shù),返回當(dāng)前用戶的用戶名、公鑰、私鑰、手機(jī)號碼、ID、地址、備注、注冊時間,語法格式如下:查詢資料()更新資料資料更新函數(shù)可以修改當(dāng)前用戶的手機(jī)號碼、ID、住址、備注信息,參數(shù)為新的手機(jī)號碼、ID、住址、備注信息,語法格式如下:資料更新(新手機(jī)號,新ID,新住址,新備注信息)5.用戶的管理及其相關(guān)操作5.7取出公鑰和取出私鑰取出公鑰取出公鑰函數(shù)可以取出當(dāng)前用戶的公鑰,無參數(shù),返回當(dāng)前用戶的公鑰,語法格式如下:取出公鑰()取出私鑰取出私鑰函數(shù)可以取出當(dāng)前用戶的私鑰,無參數(shù),返回當(dāng)前用戶的私鑰,語法格式如下:取出私鑰()任務(wù)實施LOGO詳細(xì)步驟請參考教材任務(wù)8的任務(wù)實施部分1新一代區(qū)塊鏈系統(tǒng)簡介2新一代區(qū)塊鏈系統(tǒng)的體系架構(gòu)3新一代區(qū)塊鏈系統(tǒng)的部署目錄CONTENTS新一代區(qū)塊鏈系統(tǒng)編輯器的使用用戶的管理及其相關(guān)操作45系統(tǒng)的管理及其相關(guān)操作66.系統(tǒng)管理6.1黑名單管理增加黑名單黑名單表示征信不良的用戶,被加入到黑名單的用戶將會被禁止在系統(tǒng)中進(jìn)行交易。使用增加黑名單函數(shù)實現(xiàn)增加失信用戶到黑名單的功能。被加入到黑名單的用戶不能進(jìn)行交易,但仍然具有數(shù)據(jù)上鏈權(quán)限。該函數(shù)參數(shù)為用戶名,只有金融管理員才有權(quán)限使用該函數(shù),語法格式如下:增加黑名單(用戶名)刪除黑名單進(jìn)入黑名單的用戶也可以使用刪除黑名單函數(shù)移除,該函數(shù)參數(shù)為用戶名,只有金融管理員才有權(quán)限使用該函數(shù),語法格式如下:刪除黑名單(用戶名)6.系統(tǒng)管理6.2白名單管理增加白名單白名單表示征信良好的用戶,被加入白名單的用戶可以在交易活動中進(jìn)行透支。新一代區(qū)塊鏈系統(tǒng)提供增加白名單函數(shù),用來添加系統(tǒng)白名單人員,該函數(shù)參數(shù)為用戶名,只有金融管理員用戶才有權(quán)限使用該函數(shù),語法格式如下:增加白名單(用戶名)刪除白名單金融管理員也可以使用刪除白名單函數(shù)將用戶從白名單中刪除,該函數(shù)參數(shù)為用戶名,只有金融管理員才有權(quán)限使用該函數(shù),語法格式如下:刪除白名單(用戶名)6.系統(tǒng)管理6.3信任節(jié)點管理增加信任節(jié)點在開啟賬本服務(wù)器、超級賬本服務(wù)器和級聯(lián)賬本服務(wù)器后,需要加入信任節(jié)點才能參與記賬。增加信任節(jié)點函數(shù)可以增加指定節(jié)點參與記賬,參數(shù)為節(jié)點名稱和IP地址,只有系統(tǒng)管理員才有權(quán)限使用該函數(shù),語法格式如下:增加信任節(jié)點(節(jié)點名稱,IP地址)刪除信任節(jié)點刪除信任節(jié)點函數(shù)可以取消指定節(jié)點參與記賬,參數(shù)為節(jié)點名稱和IP地址,刪除的節(jié)點必須是在信任節(jié)點名單中的節(jié)點,只有系統(tǒng)管理員才有權(quán)限使用該函數(shù),語法格式如下:刪除信任節(jié)點(節(jié)點名稱,IP地址)任務(wù)實施LOGO詳細(xì)步驟請參考教材任務(wù)9的任務(wù)實施部分謝謝觀看項目5:中文智能合約編程語言基礎(chǔ)項目5任務(wù)10:編程:計算三角形的面積任務(wù)11:投票系統(tǒng)的設(shè)計與實現(xiàn)任務(wù)12:“逢7拍手”小游戲的設(shè)計與實現(xiàn)任務(wù)13:簡易翻譯程序的設(shè)計與實現(xiàn)1數(shù)據(jù)類型2數(shù)組和運算符3條件語句目錄CONTENTS函數(shù)的定義和調(diào)用函數(shù)的參數(shù)和返回值56內(nèi)置函數(shù)74循環(huán)語句知識導(dǎo)圖知識目標(biāo)教學(xué)目標(biāo)掌握中文智能合約的基本語法掌握中文智能合約函數(shù)的定義和使用熟悉中文智能合約內(nèi)置函數(shù)的使用能力目標(biāo)素質(zhì)目標(biāo)認(rèn)真的學(xué)習(xí)態(tài)度追根溯源的學(xué)習(xí)精神刻苦鉆研的精神教學(xué)目標(biāo)能夠使用中文智能合約編程語言編寫程序能夠使用中文智能合約編程語言定義函數(shù)1數(shù)據(jù)類型2數(shù)組和運算符3條件語句目錄CONTENTS函數(shù)的定義和調(diào)用函數(shù)的參數(shù)和返回值56內(nèi)置函數(shù)74循環(huán)語句1.數(shù)據(jù)類型注釋就是對代碼進(jìn)行解釋說明,不參與編譯和運行。為了提高程序的可讀性,開發(fā)者在編寫程序時,通常會在關(guān)鍵代碼處或晦澀難懂的代碼處添加注釋。注釋分為單行注釋和多行注釋。1、單行注釋單行注釋通過"http://"標(biāo)識,"http://"之后的當(dāng)行內(nèi)容為注釋,注釋后的代碼不會被編譯和執(zhí)行。顯示信息(“hello”)//這是單行注釋,打印了hello2、多行注釋/*這是多行注釋這是多行注釋*/1.1注釋1.數(shù)據(jù)類型變量是計算機(jī)語言中能表示可變狀態(tài)、儲存計算結(jié)果或能表示值的抽象概念。在編程過程中,通常需要一個變量來存儲臨時數(shù)據(jù)。變量名由漢字、字母或數(shù)字組成,可自定義。新一代區(qū)塊鏈系統(tǒng)中文編程語言提供:文字變量數(shù)值變量邏輯變量三種基本變量類型。1.2變量1.數(shù)據(jù)類型1、文字變量文字變量類型為文字,用雙引號“”標(biāo)識,默認(rèn)值為空,賦值時需要加上雙引號,可在聲明時賦值,也可以在聲明之后賦值,聲明一個文字變量,語法格式如下:文字變量變量A其中“文字變量”為關(guān)鍵字,表示變量的類型,“變量A”是變量的名字,可自定義,盡量要做到見名知義,可同時聲明多個同類型的變量,多個變量之間用“,”隔開即可,但聲明多個變量的時候不能同時賦值1.2變量1.數(shù)據(jù)類型2、數(shù)值變量數(shù)值變量類型為數(shù)值,包括整數(shù)和小數(shù),默認(rèn)值為0,可在聲明時對其賦值,也可以在聲明之后再賦值,可同時聲明多個同類型的變量,多個變量之間用“,”隔開即可,但聲明多個變量的時候不能同時賦值,語法格式如下所示:數(shù)值變量變量B=10數(shù)值變量變量C,變量D1.2變量1.數(shù)據(jù)類型3、邏輯變量邏輯變量類型為邏輯值,包括“是”和“否”兩個值,默認(rèn)值為“否”,無需引號“”引起來,可同時聲明多個同類型的變量,多個變量之間用“,”隔開即可,但聲明多個變量的時候不能同時賦值,語法格式如下:邏輯變量邏輯A,邏輯B邏輯A=否邏輯B=是1.2變量1.數(shù)據(jù)類型在實際應(yīng)用中,為了滿足需要,不同數(shù)據(jù)類型之間通常需要進(jìn)行轉(zhuǎn)換,新一代區(qū)塊鏈系統(tǒng)中文編程語言提供了數(shù)值轉(zhuǎn)文字、文字轉(zhuǎn)數(shù)值、邏輯轉(zhuǎn)文字等三種數(shù)據(jù)類型轉(zhuǎn)換方法。1、數(shù)值轉(zhuǎn)文字?jǐn)?shù)值轉(zhuǎn)文字函數(shù)能夠?qū)?shù)值類型的值轉(zhuǎn)化成文字類型,參數(shù)必須為數(shù)值,語法格式如下:數(shù)值轉(zhuǎn)文字(數(shù)值變量)數(shù)值轉(zhuǎn)文字(5)//將數(shù)值5轉(zhuǎn)換為文字“5”2、文字轉(zhuǎn)數(shù)值文字轉(zhuǎn)數(shù)值函數(shù)能夠?qū)⑽淖诸愋偷闹缔D(zhuǎn)化成數(shù)值類型,參數(shù)類型必須為文字變量的數(shù)值文字變量變量A=“123”數(shù)值變量變量B=文字轉(zhuǎn)數(shù)值(變量A)1.3數(shù)據(jù)類型轉(zhuǎn)換1.數(shù)據(jù)類型在實際應(yīng)用中,為了滿足需要,不同數(shù)據(jù)類型之間通常需要進(jìn)行轉(zhuǎn)換,新一代區(qū)塊鏈系統(tǒng)中文編程語言提供了數(shù)值轉(zhuǎn)文字、文字轉(zhuǎn)數(shù)值、邏輯轉(zhuǎn)文字等三種數(shù)據(jù)類型轉(zhuǎn)換方法。3、邏輯轉(zhuǎn)文字邏輯轉(zhuǎn)文字函數(shù)能夠?qū)⑦壿嬵愋偷闹缔D(zhuǎn)化成文字類型,參數(shù)必須為邏輯值,語法格式如下:邏輯轉(zhuǎn)文字(邏輯變量)邏輯轉(zhuǎn)文字(是)//將邏輯變量值是轉(zhuǎn)化為文字變量值“是”1.3數(shù)據(jù)類型轉(zhuǎn)換1.數(shù)據(jù)類型關(guān)鍵字也叫作保留字,是智能合約中文編程語言中已經(jīng)定義好具有特殊意義的字符,例如“數(shù)值變量”、“正確則執(zhí)行”等,共包括20個關(guān)鍵字,具體如表5-1所示。1.4關(guān)鍵字?jǐn)?shù)值變量文字變量邏輯變量正確則執(zhí)行錯誤則執(zhí)行條件結(jié)束列表執(zhí)行開始列表選項列表執(zhí)行結(jié)束循環(huán)開始循環(huán)結(jié)束循環(huán)中斷計數(shù)循環(huán)開始沒有數(shù)據(jù)攜值退出無值退出且或是否任務(wù)實施LOGO詳細(xì)步驟請參考教材任務(wù)10的任務(wù)實施部分1數(shù)據(jù)類型2數(shù)組和運算符3條件語句目錄CONTENTS函數(shù)的定義和調(diào)用函數(shù)的參數(shù)和返回值56內(nèi)置函數(shù)74循環(huán)語句2.數(shù)組和運算符2.1數(shù)組數(shù)組是一個固定長度的存儲相同數(shù)據(jù)類型的數(shù)據(jù)結(jié)構(gòu),數(shù)組中的元素被存儲在一段連續(xù)的內(nèi)存空間中。若將有限個類型相同的變量的集合命名,那么這個名稱為數(shù)組名。組成數(shù)組的各個變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時也稱為下標(biāo)變量。用于區(qū)分?jǐn)?shù)組的各個元素的數(shù)字編號稱為下標(biāo)。語法如下:變量類型數(shù)組名稱[數(shù)組最大下標(biāo)]2.數(shù)組和運算符2.1數(shù)組舉例://聲明一個存放11個數(shù)值變量的分?jǐn)?shù)列表數(shù)組數(shù)值變量分?jǐn)?shù)列表[10]//為姓名列表數(shù)組賦初值“未知”文字變量姓名列表[8]=“未知”//修改姓名列表數(shù)組中第一個元素的值為“張三”姓名列表[0]="張三“//修改姓名列表數(shù)組中第二個元素的值為“李四”姓名列表[1]="李四"

2.數(shù)組和運算符2.2運算符運算符用于對數(shù)據(jù)進(jìn)行算術(shù)運算、賦值和比較等操作,如+、-、*、/、%、=等,根據(jù)運算符的作用,在中文編程語言中分為算術(shù)運算符邏輯運算符比較運算符賦值運算符2.數(shù)組和運算符2.2運算符算術(shù)運算符算術(shù)運算符用在數(shù)學(xué)表達(dá)式中,它們的作用和在數(shù)學(xué)中的作用一樣。下表5-1列出了中文編程語言中所有的算術(shù)運算符,表格中的實例假設(shè)數(shù)值變量A的值為10,B的值為20。操作符描述舉例+左操作數(shù)加上右操作數(shù)A+B,結(jié)果為30-左操作數(shù)減去右操作數(shù)A-B,結(jié)果為-10*左操作數(shù)乘以右操作數(shù)A*B,結(jié)果為200/左操作數(shù)除以右操作數(shù)A/B,結(jié)果為0.5%左操作數(shù)除以右操作數(shù)的余數(shù)A%B,結(jié)果為102.數(shù)組和運算符2.2運算符比較運算符中文編程語言中比較運算符支持大于、小于、大于等于、小于等于和等于五種比較運算符,分別用“>”,“<”,“>=”、“<=”和“=”表示,比較運算符比較左右兩邊操作數(shù)的大小,返回邏輯變量類型,表5-2的實例中,假設(shè)數(shù)值變量A的值為10,B的值為20,如表5-2所示操作符描述舉例>

比較左操作數(shù)是否大于右操作數(shù)A>B,結(jié)果為否<

比較左操作數(shù)是否小于右操作數(shù)A<B,結(jié)果為是>=比較左操作數(shù)是否大于等于右操作數(shù)A>=B,結(jié)果為否<=比較左操作數(shù)是否小于等于右操作數(shù)A<=B,結(jié)果為是=比較左操作數(shù)是否等于右操作數(shù)A=B,結(jié)果為否2.數(shù)組和運算符2.2運算符邏輯運算符中文編程語言中邏輯運算符包括“且”和“或”,運算符“且”兩邊的操作符都為真時,結(jié)果才為真,運算符“或”兩邊的操作符都為假時,結(jié)果才為假。賦值運算符賦值運算符用“=”表示,例如A=10,表示將10賦值給變量A,當(dāng)“=”出現(xiàn)在判斷條件語句中的時候,是作為比較運算符表示比較兩個值是否相等。任務(wù)實施LOGO詳細(xì)步驟請參考教材任務(wù)11的任務(wù)實施部分1數(shù)據(jù)類型2數(shù)組和運算符3條件語句目錄CONTENTS函數(shù)的定義和調(diào)用函數(shù)的參數(shù)和返回值56內(nèi)置函數(shù)74循環(huán)語句3.條件語句3.1單分支條件語句中文編程語言中單分支條件語句語法格式如下:正確則執(zhí)行判斷條件執(zhí)行語句條件結(jié)束3.條件語句3.1單分支條件語句例5-1:編寫程序,根據(jù)小明的年齡判斷小明是否為成年人,若年齡大于等于18歲,則顯示小明是一個成年人。數(shù)值變量年齡=19正確則執(zhí)行年齡>=18

顯示信息("小明是成年人")條件結(jié)束3.條件語句3.2二分支條件語句中文編程語言中二分支條件語句語法格式如下:正確則執(zhí)行判斷條件

執(zhí)行語句1錯誤則執(zhí)行

執(zhí)行語句2條件結(jié)束3.條件語句3.2二分支條件語句例5-2:編寫程序,根據(jù)小明年齡判斷小明是否為成年人,如果年齡超過18歲,則顯示“小明是成年人”,否則顯示“小明是未成年人”。數(shù)值變量年齡=19正確則執(zhí)行年齡>=18

顯示信息("小明是成年人")錯誤則執(zhí)行

顯示信息(“小明是未成年人”)條件結(jié)束3.條件語句3.3多分支條件語句中文編程語言中多分支條件語句語法格式如下:列表執(zhí)行開始變量

列表選項常量1

執(zhí)行語句1

列表選項常量2

執(zhí)行語句2

列表選項常量3

執(zhí)行語句3 ……列表執(zhí)行結(jié)束3.條件語句3.3多分支條件語句例5-3:編寫程序?qū)崿F(xiàn)星期翻譯功能,假如值為“一”,則翻譯為英文星期一“Monday”,值為“二”則翻譯為星期二“Tuesday”,依此類推,用多分支語句完成程序編寫。文字變量翻譯文字="二"列表執(zhí)行開始翻譯文字

列表選項"一"

顯示信息("Monday")

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論