版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能合约与去中心化计算什么是智能合约智能合约是一种使计算机自动执行合约条款的交易协议将通用程序代码取代固定交易脚本部署于区块链,就得到了基于区块链的智能合约系统
boolregister(intid,stringname){ …}intsearch_user(stringname){ …}register(123,“张三”);register(124,“李四”);智能合约的特点图灵完备的执行逻辑具备分支、跳转能力,并能支持如数组这样的数据结构,可用于实现通用逻辑全局一致的执行结果智能合约的最终执行也是由分布式系统的参与者共同完成的,智能合约的执行结果应该保证全局的一致性交易驱动的状态转移接受外部的数据输入,通过输入交易数据驱动智能合约的执行也就是状态转移基于激励机制的资源分配智能合约的拥有者应该采用某种付费方式向执行者支付计算资源的费用,否则区块链上的智能合约将不能有效执行
智能合约工作原理合约代码经过共识后部署与区块链上,共识节点通过虚拟机加载并执行代码以太坊账户地址与合约地址在以太坊中所有的数据都是基于账户系统存储与管理的,智能合约账户对应于一个智能合约的地址,因此用户账户和合约账户的地址在形式上是一致的。
以太坊合约账户智能合约地址使用部署合约的用户地址以及合约部署的交易编号作为输入,通过哈希算法得到哈希值并使用低位的160个比特作为合约地址。每个账户都由以下字段构成nonce字段用于记录该账户发出的交易数量balance用于记录账户的余额,货币的最小单位是10-18
个以太币codeHash是用哈希值表示的智能合约执行代码的地址,用户账户没有执行代码,因此账户账户的codeHash字段是空storageRoot:这个字段用于保存账户所需存储空间的地址
以太坊交易结构在比特币系统中交易是指在不同账户之间的转账行为,以太坊引入了智能合约技术,账户之间传递的内容不再仅仅是数字货币,也包括智能合约相关的所有数据交易包括如下字段from:发出本交易的账户地址。这个交易要使用这个地址对应的私钥签名,因为合约地址不能签发交易,因此这个账户地址一定用户地址。recipient:接收本交易的账户地址。如果这个地址是用户账户地址,则本交易用于向其转账,转账数值在下面的value字段中。如果这个地址是合约账户地址,则本交易用于执行这个合约的代码。如果这个地址为空,则这是一个合约部署交易。
以太坊交易结构交易包括如下字段(续)signature:合约发送者用私钥生成的针对本合约的数字签名。nonce:合约发送者账户发出的交易计数数值,与用户账户中的nonce数值相同。value:从发送者向接收者转移的货币数量,是以Wei为单位的数值。data:可以包含任意数据的可选字段。gasLimit:这个交易可以消耗的最大燃料数量。maxPriorityFeePerGas:为共识节点提供的小费部分的燃料价格。maxFeePerGas:发送者支付的最高燃料价格(包括小费部分的燃料价格以及基础燃料价格)以太坊合约部署在部署智能合约时,合约的部署者将发起一个合约创建交易。在该交易中,recipient字段为0,表示该交易是一个合约创建交易。合约创建交易的data字段将是一段字节码。当这个交易发布在分布式环境中,会有矿工捕获这个交易,然后将其
记录在某一个区块中。当某一个矿工挖矿成功,将包含该交易的区块打包发布,并且在分布式环境中共识成功。共识节点的智能合约虚拟机会执行这个交易data中的字节码,这个过程称为智能合约的部署。
以太坊虚拟机EVMEVM是一种图灵完备的虚拟计算机,其基本结构如下图
EVM核心组件只读存储器用于存储智能合约代码,一旦完成部署不能修改,执行智能合约时EVM将智能合约代码从只读存储器中加载到计算组件中存储组件用于持久化存储智能合约执行结果,可以将其理解为EVM的磁盘,存储组件中的数据是以键值对的形式组织的,存储组件中的数据是按照智能合约账户隔离的计算组件EVM的计算组件是一种栈式计算机,由程序计数器和栈构成,程序计数器用于定位当前所需要执行的指令,栈用于保存指令所需要使用的操作数。燃料管理单元用于计算合约执行过程中的燃料消耗
EVM组件执行合约的流程EVM的程序计数器指向当前需要执行的指令,在栈的辅助下完成指令。根据指令栈顶的数据可以转存到内存或者持久存储器中,反之也可以从内存或者持久存储器中加载相应的数据。执行器执行所有的指
令都需要燃料单元的参与,以确定有足够的燃料完成执行,同时修改剩余燃料的数值。
以太坊智能合约计费方法合约用户需要为智能合约的执行支付费用。用户不仅需要在合约部署阶段支付费用,也需要在后续合约的执行过程中为每一条指令的执行支付费用。每个指令均有一个固定消耗的燃料值(Gas),燃料价格(gasPrice)是执行时系统所决定的基础价格以及用户自愿支付的小费价格之和。某次交易引发的智能合约调用消耗的燃料记为Tg,单位燃料的价格记为Tp,调用合约的交易同时发起转账金额为Tv,则调用所需总费用为:
以太坊智能合约计费策略燃料单价是当前系统决定的基础费用及交易中maxPriorityFeePerGas字段所指定的小费之和,也可通过maxFeePerGas字段直接指定单价执行对应的合约创建或者合约调用流程,将对执行过程进行燃料统计,交易所包含的gasLimit字段限定了这次交易所消耗的燃料数量的上限如果当前执行过程还未完毕已经达到gasLimit,执行过程将被停止,合约的状态回滚到执行之前,不返还这个交易所消耗的手续费合约调用正常执行完毕,多余的gas将退回给调用者
智能合约安全面向区块链与共识协议的攻击典型的攻击手段是拒绝服务攻击,由于以太坊等区块链系统仅能提供十几笔每秒的吞吐率,如果发送高手续费的垃圾交易能够消耗区块链的全部吞吐率,从而造成正常交易的拥塞,通过阻塞特定时段的交易可能获得高额利益面向智能合约虚拟机的攻击面向智能合约虚拟机的攻击主要分为两类,其中一类是利用智能合约虚拟机设计中缺陷发起攻击,另一类是利用虚拟机不同的软件实现中的漏洞发起攻击。第一类攻击可能会造成虚拟机加载执行不符合预期的代码从而产生攻击效果,第二类攻击则可能造成不同的共识节点产生了不一致的执行结果,破坏区块链的全局一致性导致共识失败。
智能合约安全面向智能合约编程语言的攻击智能合约是由高级语言写成的逻辑代码,因此在其他编程语言存在的漏洞以及攻击方法在智能合约中也可能存在。例如数据存储区溢出是程序设计中经常遇到的一种异常,智能合约中持不同长度的整数的使用,整数的加法或者乘法都可能造成数据存储的溢出。面向区块链应用的攻击区块链是上承载的应用大多与数字货币以及激励机制相关,攻击者可以针对这类特殊的应用构造攻击方法。例如针对去中心化
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 客车司机诚信品质知识考核试卷含答案
- 衡器总装调试工操作评估强化考核试卷含答案
- 刨花板工岗前安全操作考核试卷含答案
- 客服部门满意度调查绩效评定表
- 拍卖业务员岗位体系运行考核试卷含答案
- 道路货运汽车驾驶员工作标准化评优考核试卷含答案
- 客户服务管理员安全管理测试考核试卷含答案
- 头套髯口工安全规程模拟考核试卷含答案
- 地震勘探工岗中管理综合考核试卷含答案
- 制帽工岗前环保及安全考核试卷含答案
- 亚急性甲状腺炎诊疗专家共识(2025版)
- 2026年超重和肥胖管理指南课件
- 2026轨道交通装备国产化替代进程与市场机会报告
- 2026年国防科大博士考试试题及答案
- 2026年合肥水务集团有限公司招聘152名笔试模拟试题及答案详解
- 《物业设备设施管理(第2版)》-第六章
- 教育研究方法(第2版)课件 邵光华 导言及第1-4章 教育研究基本理论 -教育调查研究
- 2025年天津市公职人员时事政治考试试题(附含答案)
- 辽宁省名校联盟2025-2026年高三10月联考物理试卷+答案
- 2025北京定向选调生笔试题(含解析)
- FQc部门管理制度
评论
0/150
提交评论