主页 > imtoken国内下载 > 以太坊与智能合约.ppt 42页

以太坊与智能合约.ppt 42页

imtoken国内下载 2023-04-19 06:39:22

* * * * 合同的结构合同与面向对象编程中的类非常相似。 合约由变量、函数、函数修饰符、事件、struct 结构和枚举类型组成。 合同也可以继承。 第三十一页,周二编辑:22:10。 函数的修饰符可见性:公共、私有、内部、外部。 其中public和private用于判断是否可以通过对象直接调用。 internal 和 external 用于判断是否可以调用其他合约。 另外,constant关键字可以用来修饰常量和常量函数。 第三十二页,周二编辑:22:10。 Event 事件——一个非常重要的功能 Ethereum 通过 Logs 来实现 Events(事件)功能。 日志内容是交易收据(Transaction Receipts)的一部分,整个日志内容,包括Receipts的其他内容,都会生成一个ReceiptsRoot,存放在区块头部。 日志永远存在。 通过设置一些过滤条件获取一些特定的事件。 可用于追踪合约历史状态,设置检查点等。 event Deposit( address indexed _from, bytes32 indexed _id, uint _value ); 第 33 页,周二编辑:22:10。

继承抽象合约接口contract Final is Base2, Base1 { } 继承的关键字是is,支持多重继承。 第三十四页,周二编辑:22:10。 常用对象和操作第 35 页,周二编辑:22:10。 编译器及开发环境 IDE 1、IntelliJ IDEA 插件 2、Visual Studio Extension 等/#version=soljson-v0.4.10+commit.f0d539ae.js Onlie compiler is solc 第 36 页,编辑于周二:20 点 2 点。 Part 4 Demo演示第37页,周二编辑:22:10。 Deployment of the local blockchain network Blockchain initialization, assigning ether to the account { “nonce”: “0x0000000000000042”, “mixhash”: “0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000”, “difficulty”: 0, //40的速度"alloc": { "0x09c7b615a1c5b3016ff6b521723364aa9382ec6e" :{ “balance”: “10000000000000000000” } }, //10个以太币"coinbase": "0x0000000000000000000000000000000000000000", "timestamp": "0x00", "parentHash": "0x00000000000000000000000000000000000000000000000000000000 ", "extraData": "Custom Ethereum Genesis Block", "gasLimit": "0xffffffff" } genesis.json edit genesis.json geth --datadir eth-data --networkid 123 --nodiscover console init genesis.json keystore storage account,chaindata存储区块链数据页38,编辑于星期二:22:10。

sitejinse.com 以太坊智能合约开发_sitehqz.com 以太坊 智能合约_以太坊智能合约是什么

资产拍卖 简单的资产拍卖场景。 对于每次拍卖,维护当前拍卖的最高价和最高价的拥有者。 代码解释 资产所有者 拍卖牵头人 最终被收购人 资产名称 主导拍卖金额 第39页,周二编辑:22:10。 演示演示中的第四十页,周二编辑:22:10。 参考文档 Solidity文档:以太坊维基:/ethereum/wiki/wiki 以太坊区块浏览:Dapp社区:/ 实例:/141/proj/pEth3.htm 第41页,周二编辑:22十点。 问答第 42 页,周二编辑:22:10。 比特币有很多局限性,导致很多应用无法实现。 比如金融领域最简单的取款限额和对冲导致了以太坊的诞生。 UTXO 简单理解为不同面额的货币。 比特币在实现的时候,还有一些其他的问题,比如性能问题等等,这些问题并不是以太坊最初设计的主要原因。 * 区块链如何应用于货币以外的领域 * * * * 上次说了,比特币没有余额的概念。 类似于以太坊现有的应用,有一个平衡的概念。 所有账户的余额都保持不变。 所有机器上都保持相同的状态 * * * * * * “智能合约”——一种根据预先任意制定的规则自动转移数字资产的系统。

例如,一个人可能有一个存储合约,形式为“A每天最多可以提取X个币,B每天最多可以提取Y个币,A和B可以随意提取,A可以停止B的提取权》 * * * * * * * * * 以太坊与智能合约数据服务部 2017-04-10 第一页,周二编辑:22:10。 PPT模板:/moban/PPT素材:/sucai/ PPT背景:/beijing/PPT图表:/tubiao/PPT下载:/xiazai/PPT教程:/powerpoint/资料下载:/ziliao/模型文字下载:/fanwen/test论文下载:/shiti/ 教案下载:/jiaoan/PPT论坛: PPT课件:/kejian/ 语文课件:/kejian/yuwen/ 数学课件:/kejian/shuxue/ 英语课件:/kejian/yingyu/ 美术课件:/ kejian/meishu / 科学课件:/kejian/kexue/ 物理课件:/kejian/wuli/ 化学课件:/kejian/huaxue/ 生物课件:/kejian/shengwu/ 地理课件:/kejian/dili/ 历史课件:/kejian/ lishi/Part 1 Part 2 Part 3 Part 4 主要内容 Ethereum Demo 演示智能合约Solidity 第二页,周二编辑:22:10。

sitejinse.com 以太坊智能合约开发_sitehqz.com 以太坊 智能合约_以太坊智能合约是什么

Part 1 以太坊第三页,周二编辑:22:10。 比特币脚本的缺点 不支持循环语句 缺乏图灵完备的 UTXOs 不可分割的价值盲 UTXOs Smart is spent or unspent Lack of state 星期二:22:10。 引入以太坊 通过构建最终的抽象基础层——一个内置图灵完整编程语言的区块链——以太坊使任何人都可以创建合约和去中心化应用程序以太坊智能合约是什么,他们可以在其中设置自己自由定义的所有权规则、交易方法和状态转换函数。 以太坊虚拟机 (EVM) 是以太坊中智能合约的运行时环境。 它不仅是沙盒化的,而且实际上是完全隔离的,这意味着在 EVM 内运行的代码无法接触网络、文件系统或其他进程。 即使是智能合约,与其他智能合约的联系也很有限。 第五页,周二编辑:22:10。 以太坊账户用户使用公钥和私钥控制合约编译的代码来控制合约的外部账户。 相同的地址空间和相同的数据结构。 不同的函数包括四个部分:随机数,用于确定每笔交易只能被A计数器处理一次,以及生成该笔交易所涉及的id账户中Ether的当前余额。 以太币是以太坊内部的主要加密燃料,用于支付交易费用。

以太坊的最小单位为Wei,最大单位为Ether,1 Ether=10^18Wei 账户合约代码,如有,账户存储(默认为空)第6页,编辑周二:22:10。 交易交易包含以下内容: 消息的收件人地址,用于确认发件人的签名。 发送的以太坊数量是可选数据(合约的参数) STARTGAS:用于限制合约执行的最大操作次数 GASPRICE:每次计算 支付的费用要求每5 Bytes 支付1 Gas,以防止无限loop Transaction fee = STARTGAS* GASPRICE 计算资源、存储资源、带宽的消耗都是用Gas支付的,用于从外部账户发送交易 第7页,周二编辑:22 十点。 消息消息包含五个部分: 消息的发送者 消息的接收者要发送的以太币数量 可选数据(合约的参数) STARTGAS:用于限制调用时合约可以执行的最大操作数合约的 CALL 方法。 生成第八页,周二编辑:22:10。 以太坊状态转换第九页,周二编辑:22:10。 以太坊的状态转换函数:APPLY(S,TX) -> S',可以定义如下: 1. 检查交易的格式是否正确(即有正确的值),签名是否有效,以及该随机数是否与发送方账户的随机数一致。 号码匹配。

sitejinse.com 以太坊智能合约开发_以太坊智能合约是什么_sitehqz.com 以太坊 智能合约

如果不是,则返回错误。 2. 计算交易手续费:fee=STARTGAS * GASPRICE,从签名中确定发送方地址。 从发送者的账户中减去交易费用并增加发送者的随机数。 如果账户余额不足,则返回错误。 3. 设置初始值GAS = STARTGAS,根据交易字节数减去一定量的gas值。 4. 将价值从发送者的账户转移到接收者的账户。 如果接收帐户尚不存在,请创建它。 如果收款账户是合约,则运行合约的代码,直到代码运行结束或者gas耗尽。 5. 如果由于发送方账户资金不足或代码执行gas耗尽导致价值转移失败,将产生out-of-gas异常并恢复原状,但仍需支付交易手续费,交易手续费将添加到矿工账户中。 6. 否则,剩余的gas全部返还给sender,消耗的gas作为交易费发送给矿工。 以太坊状态转换函数第十页,周二编辑:22:10。 以太坊有Go语言、C++语言和Python语言的版本。 以太坊实现版本第十一页,周二编辑:22:10。 Etherscan Ethereum Blocks Online Browse 第十二页,周二编辑:22:10。 以太坊存在的问题 挖矿机制 能耗高 每秒10~20笔交易 并发处理能力差 完全开放隐私 交易费用 小交易成本高 以太坊在不断完善,很多机制可能会发生变化。

第十三页,周二编辑:22:10。 第 2 部分智能合约第 14 页,周二编辑:22:10。 智能合约的定义智能合约是存在于区块链上的代码片段,并按照被告知的方式执行命令。 智能合约是存储在区块链上以实现特定功能的代码。 “智能合约”——一种根据预先任意建立的规则自动转移数字资产的系统。 业务人员开发人员第十五页,周二编辑:22:10。 智能合约使用步骤 编译合约 部署合约 调用合约 监控合约 销毁合约 创建合约 第16页,周二编辑:22:10。 合约编译说明: 本节所有示例均以Go语言客户端geth中的操作为例 var greeterSource = ' contract greeter is mortal {string greeting; …..return greeting;}}' var greeterCompiled = pile.solidity (greeterSource) contract greeter is mortal { //Inherit mortal string greeting; 函数 greeter(string _greeting) public { greeting = _greeting; } function greet() constant returns (string) { return greeting; } } 智能合约 hello word 第十七页,周二编辑:22:10。

以太坊智能合约是什么_sitejinse.com 以太坊智能合约开发_sitehqz.com 以太坊 智能合约

合约创建备注:本节所有示例均以Go语言客户端geth中的操作为例 var greeterContract = web3.eth.contract(greeterCompiled[":greeter"].info.abiDefinition); abiDefinition是合约的接口说明,老版本是greeterC。 abiDefinition 和新版本 (geth-1.5.9) 是 greeterCompiled[":greeter"]。 info.abiDefinition 第 18 页,周二编辑:22:10。 部署合约 var greeter = greeterContract.new(_greeting, {from: eth.accounts[0], data: greeterCompiled[":greeter"].code, gas: 1000000}, function(e, contract){ if(!e) {if(!contract.address) {console.log("合约交易发送:TransactionHash: " +contract.transactionHash + " waiting to be mined...");} else {console.log("合约已挖!地址: " + contract.address);console.log(contract);} } }) 部署合约时需要支付费用,并要求用户输入密码。 首先执行personal.unlockAccount(eth.accounts[0]); 日志第十九页,周二编辑:22:10。

合约部署的Transaction被矿工挖到后,就可以调用合约了。 greeter.greet()合约部署的交易被矿工挖出后,可以查看合约地址。 eth.getCode(greeter.address) ) 第 20 页,周二编辑:22:10。 其他机器调用合约其他机器上没有greeter对象,需要根据合约的address和abiDefinition创建,然后调用。 var greeter2 = 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(); 第 21 页,周二编辑:22:10。

sitehqz.com 以太坊 智能合约_以太坊智能合约是什么_sitejinse.com 以太坊智能合约开发

监控合约部署好合约后,可以设置另外一个调用方式来监控。 第 22 页,周二编辑:22:10。 销毁合同 只有所有者才能销毁合同 msg 存在于上下文中,而不存在于参数中 第 23 页,编辑于星期二:22:10。 合约使用场景 对冲合约、储蓄钱包、遗嘱等金融场景 网络投票、去中心化治理、域名注册 非金融场景 第24页,周二编辑:22:10。 DAPPS (Decentralized Application) / 上面已经有超过 300,300 个 DAPPS 第 25 页,周二编辑:22:10。 DAPPS 第 26 页,周二编辑:22:10。 构建去中心化的 WEB3.0 第 27 页,周二编辑:22:10。 Solidity Language 第 3 部分第 28 页以太坊智能合约是什么,周二编辑:22:10。 数据类型 数据位置 Arrays Structs 引用类型 Mappings mapping(_KeyType?=>?_ValueType) 不能遍历键和值 boolean, int/uint, byte, string, enum Int8~int256 bytes1,bytes2,…bytes32函数,定点数基本类型20字节,主要方法:balance,transfer,send,call,delegatecall,callcode地址 第29页,周二编辑:22:10。

流程控制和函数支持javascript的大部分逻辑控制,包括if,?else,?while,?do,?for,?break,?continue,?return,???: 但不支持switch和goto函数功能name( Parameter) 权限控制字符 returns (返回值,可以有多个) function Register(uint initialPrice) { price=initialPrice; } function utterance() returns (bytes32) { return "miaow"; } function getData() public returns(uint) { 返回数据; } 第 30 页,周二编辑:22:10。 比特币有很多局限性,导致很多应用无法实现。 比如金融领域最简单的取款限额和对冲导致了以太坊的诞生。 UTXO 简单理解为不同面额的货币。 比特币在实现的时候,还有一些其他的问题,比如性能问题等等,这些问题并不是以太坊最初设计的主要原因。 * 区块链如何应用于货币以外的领域 * * * * 上次说了,比特币没有余额的概念。

类似于以太坊现有的应用,有一个平衡的概念。 所有账户的余额都保持不变。 所有机器上都保持相同的状态 * * * * * * “智能合约”——一种根据预先任意制定的规则自动转移数字资产的系统。 例如,一个人可能有一个存储合约,形式为“A每天最多可以提取X个币,B每天最多可以提取Y个币,A和B可以随意提取,A可以停止B的提取权" * * * * * * * * * * * * * * * * * 有很多例外,应付,事件等 * * * * * *