《區(qū)塊鏈技術(shù)及應(yīng)用》以太坊與智能合約技術(shù)解析_第1頁(yè)
《區(qū)塊鏈技術(shù)及應(yīng)用》以太坊與智能合約技術(shù)解析_第2頁(yè)
《區(qū)塊鏈技術(shù)及應(yīng)用》以太坊與智能合約技術(shù)解析_第3頁(yè)
《區(qū)塊鏈技術(shù)及應(yīng)用》以太坊與智能合約技術(shù)解析_第4頁(yè)
《區(qū)塊鏈技術(shù)及應(yīng)用》以太坊與智能合約技術(shù)解析_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

以太坊與智能合約技術(shù)解析目錄/CONTENTS1.1以太坊技術(shù)1.2超級(jí)賬本項(xiàng)目1.3智能合約開發(fā)框架1.4案例介紹本章小結(jié)思考題1.1.1以太坊技術(shù)特點(diǎn)以太坊是什么:一個(gè)重要的區(qū)塊鏈應(yīng)用平臺(tái),是公有鏈技術(shù)的代表之一。以太坊技術(shù)的定位:以太坊具有圖靈完備性的腳本,將可信任的代碼嵌入?yún)^(qū)塊鏈,實(shí)現(xiàn)去中心化應(yīng)用,它是對(duì)區(qū)塊鏈技術(shù)的一次顛覆。特點(diǎn): (1)以太坊使用了同比特幣一樣的區(qū)塊鏈技術(shù),但是在比特幣區(qū)塊鏈技術(shù)上做了一些調(diào)整。區(qū)塊主

要由區(qū)塊頭、交易列表、叔區(qū)塊頭三部分組成。 (2)以太坊區(qū)塊鏈上區(qū)塊數(shù)據(jù)結(jié)構(gòu)的一個(gè)重大改變就是保存了三棵Merkle樹的樹根,分別是狀態(tài)

樹、交易樹和收據(jù)樹。 (3)區(qū)塊鏈上的第一個(gè)區(qū)塊稱為“創(chuàng)世區(qū)塊”。區(qū)塊鏈上除了創(chuàng)世區(qū)塊以外,每個(gè)區(qū)塊都有它的父

塊,這些區(qū)塊連接起來(lái)組成一個(gè)區(qū)塊鏈。1.1.2整體架構(gòu)以太坊的整體架構(gòu)分為三層:底層服務(wù)、核心層、頂層應(yīng)用。各層服務(wù): (1)底層服務(wù):包括P2P網(wǎng)絡(luò)、LevelDB數(shù)據(jù)庫(kù)、加密算法和分片優(yōu)化等基礎(chǔ)服務(wù)。(2)核心層:包含區(qū)塊鏈、共識(shí)機(jī)制和以太坊虛擬機(jī)等核心元件。(3)頂層應(yīng)用:包括API接口、智能合約和去中心化應(yīng)用等。圖1-1以太坊的整體架構(gòu)1.1.3以太坊智能合約

概念廣義上的智能合約指能夠讓用戶自己編寫,并能夠?qū)崿F(xiàn)用戶所需的交易邏輯的代碼程序。智能合約與區(qū)塊鏈的結(jié)合智能合約從本質(zhì)上來(lái)說(shuō)是通過算法、程序編碼等技術(shù)手段將傳統(tǒng)合約內(nèi)容編碼成為一段可以在區(qū)塊鏈上自動(dòng)執(zhí)行的程序,是傳統(tǒng)合約的數(shù)字化形式。智能合約使區(qū)塊鏈在保留去中心化、不可篡改等特性的基礎(chǔ)上增加了可編程性。圖1-2智能合約的運(yùn)行機(jī)制1.2.1超級(jí)賬本項(xiàng)目超級(jí)賬本項(xiàng)目起源

超級(jí)賬本是由非營(yíng)利組織Linux基金會(huì)發(fā)起成立的、致力于企業(yè)級(jí)區(qū)塊鏈開發(fā)及應(yīng)用的開源、開放、

跨國(guó)界、跨行業(yè)的項(xiàng)目。目標(biāo)超級(jí)賬本項(xiàng)目的目標(biāo)是建立一個(gè)跨行業(yè)的開放式標(biāo)準(zhǔn)以及開源代碼開發(fā)庫(kù),允許企業(yè)根據(jù)自己的需

求創(chuàng)建自定義的分布式賬本解決方案,以促進(jìn)區(qū)塊鏈技術(shù)在各行各業(yè)的應(yīng)用。項(xiàng)目舉例Fabric項(xiàng)目、SawtoothLake項(xiàng)目、Libra項(xiàng)目、1.2.2

Fabric項(xiàng)目Fabric項(xiàng)目的目標(biāo)是實(shí)現(xiàn)一個(gè)通用的權(quán)限區(qū)塊鏈的底層基礎(chǔ)框架。克服了比特幣等公有鏈項(xiàng)目的低

吞吐量、無(wú)隱私性、無(wú)最終確定性、低效的一致性算法等缺點(diǎn),使用戶可以輕松開發(fā)商業(yè)應(yīng)用。圖1-3Fabric的邏輯架構(gòu)1.2.2

Fabric項(xiàng)目Fabric項(xiàng)目部署方式:Fabric的網(wǎng)絡(luò)由身份服務(wù)節(jié)點(diǎn)、驗(yàn)證節(jié)點(diǎn)、非驗(yàn)證節(jié)點(diǎn)和若干個(gè)應(yīng)用節(jié)點(diǎn)。如下圖所示。圖1-4Fabric的網(wǎng)絡(luò)節(jié)點(diǎn)及拓?fù)?.2.2

Fabric項(xiàng)目交易的執(zhí)行:(1)Fabric客戶端可以通過API提交應(yīng)用代碼給任意一個(gè)驗(yàn)證節(jié)點(diǎn),如圖(a)所示。(2)驗(yàn)證節(jié)點(diǎn)在確認(rèn)是有效的應(yīng)用代碼后,將該應(yīng)用同步到其他驗(yàn)證節(jié)點(diǎn)中。通過這種分發(fā)機(jī)制,應(yīng)用代碼最終會(huì)在各個(gè)驗(yàn)證節(jié)點(diǎn)保存一份,如圖(b)所示。1.2.2

Fabric項(xiàng)目應(yīng)用代碼的執(zhí)行步驟:(1)客戶端發(fā)送執(zhí)行請(qǐng)求給任意一個(gè)驗(yàn)證節(jié)點(diǎn)。(2)驗(yàn)證節(jié)點(diǎn)收到請(qǐng)求后,向本地賬本(Ledger)發(fā)送啟動(dòng)交易的指令。(3)驗(yàn)證節(jié)點(diǎn)創(chuàng)建隔離的運(yùn)行環(huán)境,啟動(dòng)應(yīng)用(智能合約)的代碼。(4)應(yīng)用執(zhí)行過程中更新本地賬本的狀態(tài)。(5)應(yīng)用完成后,驗(yàn)證節(jié)點(diǎn)向本地賬本確認(rèn)交易。(6)驗(yàn)證節(jié)點(diǎn)向其他驗(yàn)證節(jié)點(diǎn)廣播交易。應(yīng)用代碼的執(zhí)行過程,如下圖所示。圖1-4應(yīng)用代碼執(zhí)行過程1.2.3

SawtoothLake項(xiàng)目SawtoothLake是由超級(jí)賬本聯(lián)盟成員Intel公司發(fā)起的一個(gè)分布式賬本平臺(tái)試點(diǎn)項(xiàng)目,為構(gòu)建、部署和運(yùn)行分布式賬本提供了一個(gè)高度模塊化的平臺(tái),功能上有其獨(dú)特的地方。例如,SawtoothLake將賬本和交易分開,使兩者成為松散耦合的關(guān)系;提出了交易家族的概念,可以擴(kuò)展到不同的業(yè)務(wù)領(lǐng)域;適合權(quán)限或無(wú)權(quán)限區(qū)塊鏈的可插拔共識(shí)機(jī)制。圖1-5SawtoothLake架構(gòu)1.2.4

Libra項(xiàng)目Libra是由Facebook主導(dǎo)發(fā)行的建立在區(qū)塊鏈技術(shù)基礎(chǔ)上的、由專門協(xié)會(huì)負(fù)責(zé)管理的加密數(shù)字貨幣。目的是建立一套簡(jiǎn)單的、無(wú)國(guó)界的貨幣,為數(shù)十億人提供金融基礎(chǔ)設(shè)施服務(wù)。特點(diǎn):Libra區(qū)塊鏈從根本上來(lái)講是一種采用區(qū)塊鏈技術(shù)的數(shù)字貨幣。通過與法定貨幣、比特幣、Q幣和其他穩(wěn)定幣比較,具有中心化、以資產(chǎn)儲(chǔ)備為后盾、無(wú)發(fā)行上限等特點(diǎn)。Libra核心技術(shù)涉及3個(gè)方面:Move編程語(yǔ)言、拜占庭共識(shí)機(jī)制和區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)。Libra可以簡(jiǎn)單理解為采用拜占庭共識(shí)機(jī)制的一種聯(lián)盟鏈。

(1)Libra設(shè)計(jì)和使用可靠性和安全性更高的Move編程語(yǔ)言。

(2)采用基于LibraBFT共識(shí)協(xié)議的BFT機(jī)制。

(3)采用梅克爾樹的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),確保存儲(chǔ)交易數(shù)據(jù)的安全性。1.3智能合約開發(fā)框架TruffleTruffle是現(xiàn)在比較流行的Solidity智能合約開發(fā)框架,本身基于JavaScript,功能十分強(qiáng)大,可以幫助開發(fā)人員快速搭建一個(gè)DApp??蚣芴匦?

(1)內(nèi)建智能合約編譯、鏈接、部署和二進(jìn)制包管理功能。

(2)支持對(duì)智能合約的自動(dòng)測(cè)試。

(3)支持自動(dòng)化部署、移植。

(4)支持公有鏈和私有鏈,可以輕松部署到不同的網(wǎng)絡(luò)中。

(5)支持訪問外部包,可以方便地基于Node.js包管理(NPM)和Ethereum包管理(EthPM)引入其他

智能合約的依賴。

(6)可以使用Truffle命令行工具執(zhí)行外部腳本。1.3智能合約開發(fā)框架Truffle以Truffle框架完成代幣發(fā)行的示例步驟:(1)新建一個(gè)文件夾Demo,首先在確保Node.js環(huán)境安裝成功的前提下安裝Truffle框架:npminstall-gtruffle。(2)下載官方定義的模板tutorialtoken:truffleunboxtutorialtoken。(3)進(jìn)入開發(fā)者模式:truffledevelop,對(duì)模板中已有的代碼進(jìn)行編譯部署,查看執(zhí)行效果。(4)npmrundev圖1-6運(yùn)行效果1.3智能合約開發(fā)框架Truffle利用OpenZeppelin框架完成該完整的代幣發(fā)行的步驟:(1)首先切換到Demo02目錄下。(2)安裝OpenZeppelin:npminstallOpenZeppelin。(3)編寫智能合約。(4)

編譯運(yùn)行。圖1-6驗(yàn)證代幣發(fā)行效果1.3智能合約開發(fā)框架Truffle轉(zhuǎn)賬功能的測(cè)試:向地址0xc5fdf4076b8f3a5357c5e395ab970b5b54098fef的用戶轉(zhuǎn)入2000枚代幣。圖1-7驗(yàn)證代幣發(fā)行效果1.4案例介紹寵物商城案例步驟介紹:(1)新建一個(gè)文件夾Demo3。(2)進(jìn)入文件然后下載關(guān)于寵物商城的box:truffleunboxpet–shop。(3)進(jìn)入開發(fā)者模式:truffledevelop。(4)編譯部署現(xiàn)有官方提供的模板項(xiàng)目:compile、migrate。(5)運(yùn)行項(xiàng)目:npmrundev。圖1-8運(yùn)行成功后界面1.4案例介紹寵物商城案例步驟介紹:(6)實(shí)現(xiàn)“領(lǐng)養(yǎng)”功能函數(shù),在寵物和領(lǐng)養(yǎng)人之間建立聯(lián)系,對(duì)應(yīng)到項(xiàng)目中就是把寵物的編號(hào)和領(lǐng)養(yǎng)人的地址建立聯(lián)系。(7)已被領(lǐng)養(yǎng)的寵物無(wú)法重復(fù)領(lǐng)養(yǎng)。圖1-9運(yùn)行成功后界面1.4本章回顧本章小結(jié)本章首先

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論