




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、PPT模板: PPT素材: PPT圖表: PPT下載: PPT教程: 資料下載: 范文下載: 試卷下載: 教案下載: PPT論壇: PPT課件: 語文課件: 數(shù)學(xué)課件: 英語課件: 美術(shù)課件: 科學(xué)課件: 物理課件: 化學(xué)課件: 生物課件: 地理課件: 歷史課件: Part 1Part 2Part 3Part 4內(nèi)容以太坊Demo演示智能合約SolidityPart 1以太坊比特幣的腳本的缺點(diǎn)不支持循環(huán)語句缺少圖靈完備UTXO不可分割價(jià)值盲 UTXO智能是已花費(fèi) 或未花費(fèi)缺少狀態(tài)比特幣的腳本局限性內(nèi)置有圖靈完備編程語言以太坊以太坊介紹以太坊通過建立終極的抽象的基礎(chǔ)層-內(nèi)置有圖靈完備編程語言的區(qū)
2、塊鏈-使得任何人都能夠創(chuàng)建合約和去中心化應(yīng)用,并在其中設(shè)立他們自由定義的所有權(quán)規(guī)則、交易方式和狀態(tài)轉(zhuǎn)換函數(shù)。以太坊虛擬機(jī)(EVM)是以太坊中智能合約的運(yùn)行環(huán)境。它不僅被沙箱封裝起來,事實(shí)上它被完全隔離,也就是說運(yùn)行在EVM內(nèi)部的代碼不能接觸到網(wǎng)絡(luò)、文件系統(tǒng)或者其它進(jìn)程。甚至智能合約與其它智能合約只有有限的接觸。以太坊賬戶用戶用公鑰、私鑰控制由合約編譯后的code控制合約賬戶外部賬戶相同的地址空間相同的數(shù)據(jù)結(jié)構(gòu)不同的功能包含四個(gè)部分:隨機(jī)數(shù),用于確定每筆交易只能被處理一次的計(jì)數(shù)器,參與生成交易的id賬戶目前的以太幣余額,以太幣(Ether)是以太坊內(nèi)部的主要加密燃料,用于支付交易費(fèi)用。 以太幣的
3、最小單位為Wei, 最大單位為以太,1 Ether=1018Wei賬戶的合約代碼,如果有的話賬戶的存儲(chǔ)(默認(rèn)為空)交易交易包含以下內(nèi)容:消息的接收者地址用于確認(rèn)發(fā)送者的簽名要發(fā)送的以太幣的數(shù)量可選的數(shù)據(jù)(合約的參數(shù))STARTGAS: 用來限制合約最多執(zhí)行多少次運(yùn)算GASPRICE: 每次計(jì)算需要支付的費(fèi)用每5個(gè)Byte需要1個(gè)Gas防止死循環(huán)交易費(fèi)用=STARTGAS* GASPRICE對(duì)計(jì)算資源、存儲(chǔ)資源、帶寬的消耗都用Gas支付外部賬戶發(fā)送交易消息消息包含五個(gè)部分:消息的發(fā)送者消息的接受者要發(fā)送的以太幣的數(shù)量可選的數(shù)據(jù)(合約的參數(shù))STARTGAS: 用來限制合約最多執(zhí)行多少次運(yùn)算調(diào)用合
4、約的CALL方法時(shí)隱式生成以太坊狀態(tài)轉(zhuǎn)移以太坊的狀態(tài)轉(zhuǎn)換函數(shù):APPLY(S,TX) - S,可以定義如下:1. 檢查交易的格式是否正確(即有正確數(shù)值)、簽名是否有效和隨機(jī)數(shù)是否與發(fā)送者賬戶的隨機(jī)數(shù)匹配。如否,返回錯(cuò)誤。2. 計(jì)算交易費(fèi)用:fee=STARTGAS * GASPRICE,并從簽名中確定發(fā)送者的地址。從發(fā)送者的賬戶中減去交易費(fèi)用和增加發(fā)送者的隨機(jī)數(shù)。如果賬戶余額不足,返回錯(cuò)誤。3. 設(shè)定初值GAS = STARTGAS,并根據(jù)交易中的字節(jié)數(shù)減去一定量的燃料值。4. 從發(fā)送者的賬戶轉(zhuǎn)移價(jià)值到接收者賬戶。如果接收賬戶還不存在,創(chuàng)建此賬戶。如果接收賬戶是一個(gè)合約,運(yùn)行合約的代碼,直到代
5、碼運(yùn)行結(jié)束或者燃料用完。5. 如果因?yàn)榘l(fā)送者賬戶足夠的錢或者代碼執(zhí)行耗盡燃料導(dǎo)致價(jià)值轉(zhuǎn)移失敗,生成out-of-gas異常,恢復(fù)原來的狀態(tài),但是還需要支沒有付交易費(fèi)用,交易費(fèi)用加至礦工賬戶。6. 否則,將所有剩余的燃料歸還給發(fā)送者,消耗掉的燃料作為交易費(fèi)用發(fā)送給礦工。以太坊狀態(tài)轉(zhuǎn)移函數(shù)以太坊有Go語言、C+語言、Python語言的版本。以太坊實(shí)現(xiàn)版本Etherscan以太坊區(qū)塊在線瀏覽https:/etherscan.io/以太坊的問題挖礦機(jī)制高耗能每秒1020筆交易并發(fā)處理能力差完全公開 隱私性交易費(fèi)用小額交易成本高以太坊在不斷的改進(jìn)中,很多機(jī)制可能會(huì)改變。Part 2智能合約智能合約的定義
6、Smart contracts are pieces of code that live on the blockchain and execute commands exactly how the were told to.智能合約就是存儲(chǔ)在區(qū)塊鏈上的代碼,用以實(shí)現(xiàn)執(zhí)行特定的功能?!爸悄芎霞s”- 根據(jù)事先任意制訂的規(guī)則來自動(dòng)轉(zhuǎn)移數(shù)字資產(chǎn)的系統(tǒng)。業(yè)務(wù)人員開發(fā)人員智能合約使用步驟編譯合約部署合約調(diào)用合約監(jiān)聽合約銷毀合約創(chuàng)建合約編譯合約備注:本節(jié)中的所有例子以在Go語言的客戶端geth中的操作為例var greeterSource = contract greeter is mortal stri
7、ng greeting; .return greeting; var greeterCompiled = pile.solidity(greeterSource) contract greeter is mortal /繼承mortal string greeting; function greeter(string _greeting) public greeting = _greeting; function greet() constant returns (string) return greeting; 智能合約hello word創(chuàng)建合約備注:本節(jié)中的所有例子以在Go語言的客戶端g
8、eth中的操作為例var greeterContract = web3.eth.contract(greeterCompiled:.abiDefinition); abiDefinition是合約的接口說明老版本中是greeterC.abiDefinition新版本(geth-1.5.9)中是greeterCompiled:.abiDefinition部署合約var greeter = greeterContract.new(_greeting, from: eth.accounts0, data: gre
9、eterCompiled:greeter.code, gas: 1000000, function(e, contract) if(!e) if(!contract.address) console.log(Contract transaction send: TransactionHash: + contract.transactionHash + waiting to be mined.); else console.log(Contract mined! Address: + contract.address); console.log(contract); )部署合約的時(shí)候,需要支付費(fèi)
10、用,需要用戶輸入密碼,先執(zhí)行personal.unlockAccount(eth.accounts0);日志調(diào)用合約合約部署的Transaction被礦工挖礦之后,可以調(diào)用該合約。greeter.greet() 合約部署的Transaction被礦工挖礦之后,可以查看該合約的地址。eth.getCode(greeter.address) )其它的機(jī)器調(diào)用合約其它的機(jī)器上沒有g(shù)reeter對(duì)象,需要根據(jù)合約的地址和abiDefinition來創(chuàng)建,然后調(diào)用。var greeter2 = eth.contract(constant:false,inputs:,name:kill,outputs:,
11、type:function,constant:true,inputs:,name:greet,outputs:name:,type:string,type:function,inputs:name:_greeting,type:string,type:constructor).at(0 xcde7cfdf234dfa63ba4d7c273a);greeter2.greet();監(jiān)聽合約合約部署后,可設(shè)置監(jiān)聽另一種調(diào)用方式銷毀合約只有擁有者才能銷毀合約msg存在于上下文中,不是參數(shù)中合約使用場景對(duì)沖合約、儲(chǔ)蓄錢包、遺囑等金融類場景在線投票、去中心化治理、域名注冊非金融類場景APPS(去中心化的應(yīng)
12、用)http:/ 3數(shù)據(jù)類型Data locationArraysStructs引用類型Mappingsmapping(_KeyType = _ValueType)不能遍歷keys和valuesboolean, int/uint,byte, string, enumInt8int256bytes1,bytes2,bytes32function, fixed point numbers基本類型20個(gè)字節(jié),主要方法:balance、transfer、send、 call、delegatecall、callcodeaddress流程控制 和 函數(shù)支持大部分javascript的邏輯控制,包括if,
13、else, while, do, for, break, continue, return, ? : 但是不支持switch 和 goto function 函數(shù)名(參數(shù)) 權(quán)限控制符 returns (返回值,可以有多個(gè))function Register(uint initialPrice) price=initialPrice; function utterance() returns (bytes32) return miaow; function getData() public returns(uint) return data; 合約的結(jié)構(gòu)合約與面向?qū)ο缶幊讨械念惙浅O嗨?。合約由
14、變量、函數(shù)、函數(shù)修飾符、變量、函數(shù)、函數(shù)修飾符、事件事件、struct結(jié)構(gòu)體、枚結(jié)構(gòu)體、枚舉類型舉類型構(gòu)成。合約也可以繼承。函數(shù)的修飾符可見性: public, private, internal, external。其中public和private用于決定是否可以通過對(duì)象直接調(diào)用。internal和external用于決定是否其它的合約可以調(diào)用。另外constant關(guān)鍵詞,可以用于修飾常量和常函數(shù)。事件Event非常重要的功能以太坊通過Logs實(shí)現(xiàn)Events(事件)功能。日志內(nèi)容是交易收據(jù)交易收據(jù)(Transaction Receipts)的一部分,整個(gè)日志內(nèi)容,包括Receipts的其它
15、內(nèi)容會(huì)生成一個(gè)ReceiptsRoot存儲(chǔ)在區(qū)塊的頭部。日志永遠(yuǎn)存在。通過設(shè)置一些過濾條件,來獲取某些特定的事件。可以用于追溯合約的歷史追溯合約的歷史狀態(tài),設(shè)置檢查點(diǎn)等。event Deposit( address indexed _from, bytes32 indexed _id, uint _value ); 繼承抽象合約接口contract Final is Base2, Base1 繼承的關(guān)鍵字是is,支持多重繼承。常用對(duì)象和操作編譯器和開發(fā)環(huán)境IDE1、 IntelliJ IDEA plugin 2、 Visual Studio Extension等其他https:/remix.e
16、/#version=soljson-v0.4.10+commit.f0d539ae.jsOnlie編譯器是solcPart 4Demo演示本地區(qū)塊鏈網(wǎng)絡(luò)的部署區(qū)塊鏈初始化,為賬戶分配以太幣 “nonce”: “0 x0000000000000042”, mixhash: 0 x00000000000000000000000000000000000000000000000000000000, difficulty: 0 x4000, /難度值,決定塊生成的速度alloc: 0 x09c7b615a1c5b3016ff6b521723364aa9382ec6e: “balan
17、ce”: “10000000000000000000” , /10個(gè)以太幣 coinbase: 0 x0000000000000000000000000000000000000000, timestamp: 0 x00, parentHash: 0 x00000000000000000000000000000000000000000000000000000000, extraData: Custem Ethereum Genesis Block, gasLimit: 0 xffffffff genesis.jsongenesis.json 編輯genesis.json geth -datadir eth-data -networkid 123 -nodiscover console init genesis.jsonkeystore存儲(chǔ)賬戶,c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年護(hù)理線上知識(shí)競賽試題
- 2025年醫(yī)療器械考核培訓(xùn)試題
- 旅游景點(diǎn)門票銷售與代理服務(wù)合同
- 2025年聚碳酸酯(PC)及合金項(xiàng)目申請報(bào)告
- 四川省廣元市蒼溪縣2022-2023學(xué)年七年級(jí)下學(xué)期期末地理試題(含答案)
- 地理地貌與氣候試題集
- 2025年光電電視測斜儀項(xiàng)目規(guī)劃申請報(bào)告模范
- 2025年房地產(chǎn)企業(yè)數(shù)字化營銷與房地產(chǎn)企業(yè)可持續(xù)發(fā)展戰(zhàn)略報(bào)告
- 質(zhì)量售貨服務(wù)管理制度
- 貧困評(píng)審小組管理制度
- 職工子女暑期工會(huì)愛心托管班的方案通知
- “文化引導(dǎo)型”城市更新思想思考與實(shí)踐課件
- 卷心菜中過氧化物酶熱穩(wěn)定性的初步研究
- 渦輪增壓器系統(tǒng)及常見故障案例
- 宋大叔教音樂第三單元進(jìn)階版講義2
- 26個(gè)科室建設(shè)指南
- 童聲合唱訓(xùn)練講座
- (防火閥)檢驗(yàn)報(bào)告
- 機(jī)械識(shí)圖題庫(共155頁)
- Invoice商業(yè)發(fā)票模板
- 質(zhì)量管理科學(xué)方法和工具介紹R1
評(píng)論
0/150
提交評(píng)論