




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
以太坊和智能合約數(shù)據(jù)服務事業(yè)部2017-04-102021/6/271PPT模板:/moban/PPT素材:/sucai/PPT背景:/beijing/PPT圖表:/tubiao/PPT下載:/xiazai/PPT教程:/powerpoint/資料下載:/ziliao/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/PPT論壇:PPT課件:/kejian/語文課件:/kejian/yuwen/數(shù)學課件:/kejian/shuxue/英語課件:/kejian/yingyu/美術課件:/kejian/meishu/科學課件:/kejian/kexue/物理課件:/kejian/wuli/化學課件:/kejian/huaxue/生物課件:/kejian/shengwu/地理課件:/kejian/dili/歷史課件:/kejian/lishi/Part1Part2Part3Part4主要內容以太坊Demo演示智能合約Solidity2021/6/272Part1以太坊2021/6/273比特幣的腳本的缺點不支持循環(huán)語句缺少圖靈完備UTXO不可分割價值盲UTXO智能是已花費或未花費缺少狀態(tài)比特幣的腳本局限性內置有圖靈完備編程語言以太坊2021/6/274以太坊介紹以太坊通過建立終極的抽象的基礎層-內置有圖靈完備編程語言的區(qū)塊鏈-使得任何人都能夠創(chuàng)建合約和去中心化應用,并在其中設立他們自由定義的所有權規(guī)則、交易方式和狀態(tài)轉換函數(shù)。以太坊虛擬機(EVM)是以太坊中智能合約的運行環(huán)境。它不僅被沙箱封裝起來,事實上它被完全隔離,也就是說運行在EVM內部的代碼不能接觸到網(wǎng)絡、文件系統(tǒng)或者其它進程。甚至智能合約與其它智能合約只有有限的接觸。2021/6/275以太坊賬戶用戶用公鑰、私鑰控制由合約編譯后的code控制合約賬戶外部賬戶相同的地址空間相同的數(shù)據(jù)結構不同的功能包含四個部分:隨機數(shù),用于確定每筆交易只能被處理一次的計數(shù)器,參與生成交易的id賬戶目前的以太幣余額,以太幣(Ether)是以太坊內部的主要加密燃料,用于支付交易費用。以太幣的最小單位為Wei,最大單位為以太,1Ether=10^18Wei賬戶的合約代碼,如果有的話賬戶的存儲(默認為空)2021/6/276交易交易包含以下內容:消息的接收者地址用于確認發(fā)送者的簽名要發(fā)送的以太幣的數(shù)量可選的數(shù)據(jù)(合約的參數(shù))STARTGAS:用來限制合約最多執(zhí)行多少次運算GASPRICE:每次計算需要支付的費用每5個Byte需要1個Gas防止死循環(huán)交易費用=STARTGAS*GASPRICE對計算資源、存儲資源、帶寬的消耗都用Gas支付外部賬戶發(fā)送交易2021/6/277消息消息包含五個部分:消息的發(fā)送者消息的接受者要發(fā)送的以太幣的數(shù)量可選的數(shù)據(jù)(合約的參數(shù))STARTGAS:用來限制合約最多執(zhí)行多少次運算調用合約的CALL方法時隱式生成2021/6/278以太坊狀態(tài)轉移2021/6/279以太坊的狀態(tài)轉換函數(shù):APPLY(S,TX)->S’,可以定義如下:1.檢查交易的格式是否正確(即有正確數(shù)值)、簽名是否有效和隨機數(shù)是否與發(fā)送者賬戶的隨機數(shù)匹配。如否,返回錯誤。2.計算交易費用:fee=STARTGAS*GASPRICE,并從簽名中確定發(fā)送者的地址。從發(fā)送者的賬戶中減去交易費用和增加發(fā)送者的隨機數(shù)。如果賬戶余額不足,返回錯誤。3.設定初值GAS=STARTGAS,并根據(jù)交易中的字節(jié)數(shù)減去一定量的燃料值。4.從發(fā)送者的賬戶轉移價值到接收者賬戶。如果接收賬戶還不存在,創(chuàng)建此賬戶。如果接收賬戶是一個合約,運行合約的代碼,直到代碼運行結束或者燃料用完。5.如果因為發(fā)送者賬戶足夠的錢或者代碼執(zhí)行耗盡燃料導致價值轉移失敗,生成out-of-gas異常,恢復原來的狀態(tài),但是還需要支沒有付交易費用,交易費用加至礦工賬戶。6.否則,將所有剩余的燃料歸還給發(fā)送者,消耗掉的燃料作為交易費用發(fā)送給礦工。以太坊狀態(tài)轉移函數(shù)2021/6/2710以太坊有Go語言、C++語言、Python語言的版本。以太坊實現(xiàn)版本2021/6/2711Etherscan以太坊區(qū)塊在線瀏覽https://etherscan.io/2021/6/2712以太坊的問題挖礦機制高耗能每秒10~20筆交易并發(fā)處理能力差完全公開
隱私性交易費用小額交易成本高以太坊在不斷的改進中,很多機制可能會改變。2021/6/2713Part2智能合約2021/6/2714智能合約的定義Smartcontractsarepiecesofcodethatliveontheblockchainandexecutecommandsexactlyhowtheweretoldto.智能合約就是存儲在區(qū)塊鏈上的代碼,用以實現(xiàn)執(zhí)行特定的功能?!爸悄芎霞s”-根據(jù)事先任意制訂的規(guī)則來自動轉移數(shù)字資產(chǎn)的系統(tǒng)。業(yè)務人員開發(fā)人員2021/6/2715智能合約使用步驟編譯合約部署合約調用合約監(jiān)聽合約銷毀合約創(chuàng)建合約2021/6/2716編譯合約備注:本節(jié)中的所有例子以在Go語言的客戶端geth中的操作為例vargreeterSource='contractgreeterismortal{stringgreeting;…..returngreeting;}}'
vargreeterCompiled=pile.solidity(greeterSource)
contractgreeterismortal{//繼承mortal
stringgreeting;
functiongreeter(string_greeting)public{greeting=_greeting;}
functiongreet()constantreturns(string){returngreeting;}}
智能合約helloword2021/6/2717創(chuàng)建合約備注:本節(jié)中的所有例子以在Go語言的客戶端geth中的操作為例vargreeterContract=web3.eth.contract(greeterCompiled["<stdin>:greeter"].info.abiDefinition);
abiDefinition是合約的接口說明老版本中是greeterC.abiDefinition新版本(geth-1.5.9)中是greeterCompiled["<stdin>:greeter"].info.abiDefinition2021/6/2718部署合約vargreeter=greeterContract.new(_greeting,{from:eth.accounts[0],data:greeterCompiled["<stdin>:greeter"].code,gas:1000000},function(e,contract){if(!e){if(!contract.address){console.log("Contracttransactionsend:TransactionHash:"+contract.transactionHash+"waitingtobemined...");}else{console.log("Contractmined!Address:"+contract.address);console.log(contract);}}})部署合約的時候,需要支付費用,需要用戶輸入密碼,先執(zhí)行personal.unlockAccount(eth.accounts[0]);日志2021/6/2719調用合約合約部署的Transaction被礦工挖礦之后,可以調用該合約。greeter.greet()
合約部署的Transaction被礦工挖礦之后,可以查看該合約的地址。eth.getCode(greeter.address))2021/6/2720其它的機器調用合約其它的機器上沒有greeter對象,需要根據(jù)合約的地址和abiDefinition來創(chuàng)建,然后調用。vargreeter2=eth.contract([{constant:false,inputs:[],name:‘kill’,outputs:[],type:‘function’},{constant:true,inputs:[],name:‘greet’,outputs:[{name:‘’,type:‘string’}],type:‘function’},{inputs:[{name:‘_greeting’,type:‘string’}],type:'constructor'}]).at(‘0xcde7cfdf234dfa63ba4d7c273a’);greeter2.greet();2021/6/2721監(jiān)聽合約合約部署后,可設置監(jiān)聽另一種調用方式2021/6/2722銷毀合約只有擁有者才能銷毀合約msg存在于上下文中,不是參數(shù)中2021/6/2723合約使用場景對沖合約、儲蓄錢包、遺囑等金融類場景在線投票、去中心化治理、域名注冊非金融類場景2021/6/2724DAPPS(去中心化的應用)/上面已經(jīng)有300300多個DAPPS2021/6/2725DAPPS2021/6/2726構建去中心化WEB3.02021/6/2727Solidity語言Part32021/6/2728數(shù)據(jù)類型DatalocationArraysStructs引用類型Mappingsmapping(_KeyType
=>
_ValueType)不能遍歷keys和valuesboolean,int/uint,byte,string,enumInt8~int256bytes1,bytes2,…bytes32function,fixedpointnumbers基本類型20個字節(jié),主要方法:balance、transfer、send、call、delegatecall、callcodeaddress2021/6/2729流程控制和函數(shù)支持大部分javascript的邏輯控制,包括if,
else,
while,
do,
for,
break,
continue,
return,
?
:
但是不支持switch和gotofunction
函數(shù)名(參數(shù))
權限控制符returns(返回值,可以有多個)functionRegister(uintinitialPrice){price=initialPrice;}functionutterance()returns(bytes32){return
"miaow";}functiongetData()public
returns(uint){returndata;}
2021/6/2730合約的結構合約與面向對象編程中的類非常相似。合約由變量、函數(shù)、函數(shù)修飾符、事件、struct結構體、枚舉類型構成。合約也可以繼承。2021/6/2731函數(shù)的修飾符可見性:public,private,internal,external。其中public和private用于決定是否可以通過對象直接調用。internal和external用于決定是否其它的合約可以調用。另外constant關鍵詞,可以用于修飾常量和常函數(shù)。2021/6/2732事件Event——非常重要的功能以太坊通過Logs實現(xiàn)Events(事件)功能。日志內容是交易收據(jù)(TransactionReceipts)的一部分,整個日志內容,包括Receipts的其它內容會生成一個ReceiptsRoot存儲在區(qū)塊的頭部。日志永遠存在。通過設置一些過濾條件,來獲取某些特定的事件??梢杂糜谧匪莺霞s的歷史狀態(tài),設置檢查點等。event
Deposit(address
indexed_from,bytes32
indexed_id,uint_value);
2021/6/2733繼承抽象合約接口contractFinalisBase2,Base1{}繼承的關鍵字是is,支持多重繼承。2021/6/2734常用對象和操作2021/6/2735編譯器和開發(fā)環(huán)境IDE1、IntelliJIDEAplugin2、VisualStudioExtension等其他/#version=soljson-v0.4.10+commit.f0d539ae.jsOnlie編譯器是solc2021/6/2736Part4Demo演示2021/6/2737本地區(qū)塊鏈網(wǎng)絡的部署區(qū)塊鏈初始化,為賬戶分配以太幣{“nonce”:“0x0000000000000042”,"mixhash":"0x00000000000000000000000000000000000000000000000000000000","difficulty":"0x4000",//難度值,決定塊生成的速度"alloc":{"0x09c7b615a1c5b3016ff6b521723364aa9382ec6e":
{“balance”:“10000000000000000000”}},//10個以太幣"c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公路ppp合同范本
- 分紅比例合同范本
- 公路規(guī)劃合同范本
- 協(xié)議合同范本寫法
- 兼職還款合同范本
- pos機推廣合同范本
- 入股店鋪協(xié)議合同范本
- 義齒加工合同范本模板
- 京東入職合同范本
- 醫(yī)院整體轉讓合同范本
- 2024年保育員(初級)考試題及答案
- 新型智慧水利項目數(shù)字孿生工程解決方案
- 甘肅省白銀市2024年中考英語真題
- 2024年全國職業(yè)院校技能大賽(智能制造設備技術應用賽項)考試題庫(含答案)
- 趙家溝金礦改擴建項目建設工程可行性建議書
- 胰腺囊性腫瘤
- 聯(lián)盟山東省菏澤一中2025屆高考全國統(tǒng)考預測密卷歷史試卷含解析
- 《財務會計基礎》課件-認知原始憑證
- 新學期開學第一課主題班會
- 2023八年級道德與法治下冊 第七課 尊重自由平等第1框 自由平等的真諦教案 新人教版
- 春天古詩包含內容模板
評論
0/150
提交評論