




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
智能合約應用高等職業(yè)教育新目錄新專標電子與信息大類教材區(qū)塊鏈部署與運維第五章01部署智能合約智能合約定義了多方共同約定的規(guī)則,通過部署在區(qū)塊鏈網絡上,是可以被多方調用自動執(zhí)行的程序,以實現多方事先約定的規(guī)則。在實際應用中,如何在區(qū)塊鏈網絡上部署一個智能合約呢?任務場景部署智能合約任務布置:學習智能合約基本概念。學習Solidity基本數據類型。認識Solidity程序。部署一個智能合約。部署智能合約智能合約基本概念計算機科學家、法學學者及密碼學者尼克·薩博(NickSzabo)最早于1994年提出了“智能合約”(SmartContract)的概念,他的定義是:“智能合約是一個計算機化的交易協(xié)議,它執(zhí)行一個合約的條款?!逼渲?,交易協(xié)議中的“協(xié)議”二字指的是計算機協(xié)議(Protocol)。部署智能合約按《應用密碼學》的定義,協(xié)議是一系列步驟,其中包括兩方或多方,設計它的目的是要完成一項任務。尼克·薩博說:“智能合約的實際目標是執(zhí)行一般的合同條件,最大限度地減少惡意和意外的情況,最大限度地減少使用信任中介。”但在很大一部分的時間里,由代碼組成的智能合約缺少可以執(zhí)行的環(huán)境,主要原因是在常規(guī)的計算環(huán)境中,代碼無法強制執(zhí)行要求一方履行其責任。部署智能合約例如,你我雙方達成一個協(xié)議,在滿足某個條件時,我應當付100美元給你,由于常規(guī)計算環(huán)境中沒有資產的概念,因此智能合約無法在計算環(huán)境中獨立執(zhí)行,它需要用其他方式對外部資金與資產進行控制。為了解決這個問題,尼克·薩博在1998年提出“比特黃金”(BitGold),以形成智能合約可以運轉的執(zhí)行環(huán)境。2008年,中本聰提出“比特幣:一種點對點電子現金”,2019年1月3日比特幣系統(tǒng)上線,之后,智能合約就有了一個可以執(zhí)行的環(huán)境。部署智能合約比特幣網絡有智能合約所需要的幾個主要基礎條件:由公鑰、私鑰形成的所有權機制;在計算環(huán)境中,有可用于履行合同條款的原生資產;提供了編程方式,即比特幣腳本。比特幣系統(tǒng)為智能合約做好了準備,但并未能真正推動智能合約的誕生,這一時刻還要等到幾年后。部署智能合約2014年,在比特幣系統(tǒng)的基礎上,維塔利克·布特林(VitalikButerin)撰寫了以太坊白皮書——《以太坊:智能合約與中心化應用平臺》隨后正式啟動了以太坊區(qū)塊鏈網絡。此后,智能合約從概念變成現實。按以太坊聯合創(chuàng)始人加文·伍德(GavinWood)的說法,以太坊是一臺永不停歇的“世界計算機”。以太坊提供了執(zhí)行圖靈完備代碼的環(huán)境——以太坊虛擬機(EthereumVirutalMacchine,EVM)。部署智能合約以太坊在系統(tǒng)設計層面提供了智能合約所需的多種機制,如僅包括智能合約的特定賬號合約賬號(ContractAeeounts),與之對應的是外部賬號(ExternallyOwnedAccounts);又如它設計了執(zhí)行智能合約計算支付燃料費(Gas)的經濟機制。部署智能合約隨著以太坊從1.0向2.0升級,其中關于以太坊虛擬機有兩個變化,它們都將進一步推動智能合約的技術進展:一是改用eWASM虛擬機方案,這是基于WASM(WebAssembly)命令集的虛擬機設計方案;二是智能合約由以太坊1.0的只有一個執(zhí)行環(huán)境變成2.0的有多個執(zhí)行環(huán)境。部署智能合約現在,以太坊上的智能合約最重要的應用是創(chuàng)建ERC20、ERC721標準的通證(Token),并用智能合約對這些代表數字資產的通證進行操作。這些數字資產可以對應經濟中的貨幣、股票、票據、倉單、房屋、知識產權、投票權、畢業(yè)證書等各種廣義的資產。以太坊虛擬機執(zhí)行的是EVM字節(jié)碼,程序員可以用高級語言編寫智能合約,然后將其編譯為字節(jié)碼部署在以太坊區(qū)塊鏈中進行執(zhí)行?!啊辈渴鹬悄芎霞s在發(fā)展的過程中出現了多種智能合約高級語言,其中被廣泛接受的是加文·伍德開發(fā)的Solidity語言,它的語法類似于JavaScript語言,并且公有鏈、聯盟鏈、BaaS云服務算也開始支持Solidity語言。部署智能合約01020304尼克·薩博在1997年的文章中說,智能合約的原始祖先是不起眼的自動售貨機。(1)我們向可樂售賣機投入硬幣,按一下出可樂的按鈕。(2)售賣機將一聽可樂從出貨口放出來。(3)售貨機恢復到最初的狀態(tài)。部署智能合約一般來說,區(qū)塊鏈上的智能合約的執(zhí)行包括四步,分別是制定合約、事件觸發(fā)、價值轉移、清算結算,如圖5-1所示。部署智能合約Solidity是一門面向合約的、為實現智能合約而創(chuàng)建的高級編程語言。Solidity是靜態(tài)類型語言,支持繼承、庫和復雜的用戶定義類型等特性,每個變量(狀態(tài)變量和局部變量)都需要在編譯時指定變量的類型。Solidity提供了幾種基本類型,通過幾種基本類型的組合,可以組合成復雜類型。Solidity基本數據類型部署智能合約比較運算符。Solidity基本數據類型位運算符。布爾類型。布爾類型運算符。整型。部署智能合約移位運算符。算術運算符。字符串字面常數。部署智能合約下面代碼給出的是一個名為“HelloWorld”的智能合約:部署智能合約認識Solidity程序“pragma”是定義代碼使用的Solidity編譯器版本的聲明?!癱ontract”用來定義智能合約?!癏elloWorld()”是構造函數,用來初始化變量name的值?!癵et()”是成員函數,用來返回變量name的值,constant表示不可以修改name的值?!皊et()”是成員函數,用來改變變量name的值,將其賦值為變量n的值。部署智能合約啟動Console控制臺當輸出如圖5-2所示內容時,表示操作正確。部署智能合約部署智能合約在Console控制臺中部署HelloWorld智能合約:第1步,創(chuàng)建智能合約。第2步,部署智能合約。部署智能合約填寫任務評價表,如表5-1所示。部署智能合約02調用智能合約任務場景在區(qū)塊鏈應用中,部署智能合約是第一步任務,接下來必須調用智能合約才能執(zhí)行約定的規(guī)則,那么如何調用智能合約呢?調用智能合約任務布置:學習import語法。導入智能合約。調用智能合約。調用智能合約在Java編程中,可以使用import語法將其他包中的類導入當前文件中,并且可以直接使用導入的類創(chuàng)建對象,通過對象調用屬性和方法。在Solidity編程中,同樣可以使用import語法導入其他智能合約。import語法調用智能合約在全局層面上,可使用如下格式的導入語句:import"filename";此語句將從filename中導入所有的全局符號到當前全局作用域中。import·assymbolNamefrom"filename";等同于import"filename"assymbolName;調用智能合約此語句創(chuàng)建一個新的全局符號symbolName,其成員均來自filename中的全局符號。上面的filename總是會按路徑來處理,以“”作為目錄分割符,以“”表示當前目錄,以“”表示父目錄。當“”或“…”后面跟隨的字符是“/”時,它們才能被當作當前目錄或父目錄。調用智能合約調用智能合約導入智能合約“import"JFoo.sol";”語句把Foo合約導入當前的Import合約中,可以在成員函數getFooName(中讀取Foo合約中變量name的值。調用智能合約第1種,在Console控制臺調用智能合約。從之前部署智能合約的命令中獲取合約地址為:0xbed5229a08300c80190c4446b8e2c43cc3b96496。在Console終端命令行中可以使用call方法調用函數,格式為:call[合約名稱] [合約地址] [合約中的方法]調用智能合約調用智能合約使用命令執(zhí)行合約中的get0函數,具體操作與返回內容如下:調用智能合約通過get()方法就獲取了變量name的初始化內容。接下來,使用set()函數,對變量name進行設置,通過getBlockNumber觀察區(qū)塊的高度已經發(fā)生變化。調用智能合約調用智能合約第2種,在Remix中調用智能合約。登錄Remix在線平臺,在contracts文件中創(chuàng)建并編寫“5_Foo.sol”,如圖5-3所示。調用智能合約在contracts文件中創(chuàng)建并編寫“6_Import.sol”,如圖5-4所示。調用智能合約編譯“5_Foo.sol”,如圖5-5所示。編譯“6_Import.sol",如圖5-6所示。部署“6_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 正經借款合同范本
- 壓縮合同范本
- 人員培訓發(fā)展計劃
- 2025年應彩云犟龜標準教案
- 科技創(chuàng)新匯從研發(fā)到市場的全程跟蹤
- 科技在提升肉品新鮮度中的應用前景
- 科技如何重塑餐飲業(yè)以網絡訂餐為例的案例分析
- 現代辦公室中的領導力培養(yǎng)
- 衛(wèi)生間砂漿層補漏施工方案
- 鋼結構水泥模板施工方案
- 有限公司事業(yè)合伙人管理辦法
- 工余安健環(huán)管理制度
- 某學校食堂服務投標書
- 空調維保服務項目質量保障措施
- 《馬克思主義與社會科學方法論》課后思考題答案全
- 急性心肌梗塞
- 八年級地理下期教學計劃(星球地圖版)
- 藍色科技風半導體產業(yè)PPT模板
- 院感手衛(wèi)生培訓課件
- 鑄牢中華民族共同體意識學習PPT
- 多重耐藥鮑曼不動桿菌治療課件
評論
0/150
提交評論