logo资料库

以太坊与智能合约.pdf

第1页 / 共47页
第2页 / 共47页
第3页 / 共47页
第4页 / 共47页
第5页 / 共47页
第6页 / 共47页
第7页 / 共47页
第8页 / 共47页
资料共47页,剩余部分请下载后查看
摘 要
ABSTRACT
第一章绪论
1.1研究背景和意义
1.1.1智能合约的学术与技术背景
1.1.2存在的主要问题
1.2本文研究内容及组织结构
第二章以太坊智能合约相关技术
2.1以太坊的概念
2.2区块链范式
2.3基本区块链数据结构与分布式数据管理
2.4Merkle Patricia Trie数据结构
第三章以太坊与智能合约
3.1以太坊数据结构与分布式数据管理
3.2智能合约的支撑开发环境
3.3智能合约安全机制及自动执行
3.3.1智能合约的编写
3.3.2智能合约执行费用
3.3.3智能合约的部署与自动执行
3.4智能合约挖矿与区块定稿
第四章智能合约的安全问题
4.1智能合约中的漏洞分类
4.2对智能合约的攻击
第五章智能合约的应用
5.1智能合约IOC
5.2排污权许可区块链交易平台
第六章总结与展望
参考文献
智能合约安全与应用分析研究 以太坊基础与智能合约安全与应用分析研究 摘 要 智能合约是部署在区块链上的可执行代码,可不依赖中心机构自动化地代表 各签署方执行合约。因其具有强制执行性、防篡改性和可验证性等特点,可以应 用到很多场景中。以太坊通过对比特币系统的改进,成为了目前智能合约的主流 平台。本文首先对智能合约的定义与发展进行阐述;然后重点分析以太坊智能合 约系统与安全问题;最后提出运用智能合约应用。 关键词:以太坊;区块链;智能合约; I
智能合约安全与应用分析研究 ABSTRACT Smart contracts are executable code that is deployed on the blockchain and can be executed on behalf of the signatories without relying on a central agency to execute the contract automatically. Because it has the characteristics of enforceability, tamper resistance and verifiability, it can be applied to many scenarios. Ethereum has become the mainstream platform for smart contracts through improvements to the Bitcoin system. This article first explains the definition and development of smart contracts; then it focuses on the analysis of Ethereum smart contract systems and security issues; finally, it proposes the application of smart contracts. KEY WORDS:Ethereum; Blockchain; Smart contracts II
智能合约安全与应用分析研究 目 录 摘 要............................................................................................. I ABSTRACT......................................................................................II 第一章 绪论.............................................................................. 1 1.1 研究背景和意义................................................................ 1 1.1.1 智能合约的学术与技术背景.............................................2 1.1.2 存在的主要问题.................................................................2 1.2 本文研究内容及组织结构................................................3 第二章 以太坊智能合约相关技术........................................10 2.1 以太坊的概念.................................................................. 10 2.2 区块链范式...................................................................... 11 2.3 基本区块链数据结构与分布式数据管理......................12 2.4 Merkle Patricia Trie 数据结构........................................... 13 第三章 以太坊与智能合约.................................................... 25 3.1 以太坊数据结构与分布式数据管理..............................26 3.2 智能合约的支撑开发环境..............................................29 3.3 智能合约安全机制及自动执行......................................29 3.3.1 智能合约的编写...............................................................30 3.3.2 智能合约执行费用...........................................................31 3.3.3 智能合约的部署与自动执行...........................................33 III
智能合约安全与应用分析研究 3.4 智能合约挖矿与区块定稿..............................................36 第四章 智能合约的安全问题................................................ 36 4.1 智能合约中的漏洞分类..................................................36 4.2 对智能合约的攻击.......................................................... 39 第五章 智能合约的应用........................................................ 46 5.1 智能合约 IOC.................................................................. 46 5.2 排污权许可区块链交易平台..........................................51 第六章 总结与展望................................................................ 70 6.1 论文工作总结..................................错误!未定义书签。 6.2 未来工作展望..................................错误!未定义书签。 参考文献.................................................................................... 71 IV
智能合约安全与应用分析研究 第一章 绪论 1.1 研究背景和意义 智能合约的概念最早于 1994 年由美国计算机科学家 Nick Szabo 提出,定义 为一套以数字形式指定的承诺,包括合约参与方可在上执行这些承诺的协议。智 能合约设计目标是在无需第三方可信权威的情况下,作为执行合约条款的计算机 交易协议,嵌入某些由数字形式控制具有价值的物理实体,担任合约各方共同信 任的代理,高效安全履行合约并创建多种智能资产。自动贩卖机、电子数据交换 系统都可看作是智能合约的雏形。计算场景的限制导致当时的智能合约无法广泛 的应用。 在 2008 年,化名为中本聪(Satoshi Nakamoto)的学者发表论文《比特币: 一 种点对点电子现金系统》,并提出了一种无需信任即可进行点对点交易的加密数 字货币系统-比特币。[2]底层技术区块链与智能合约天然契合:区块链可借助智能 合约的可编程性封装分布式节点的复杂行为,智能合约可借助区块链的去中心化 基础架构在去信任、可执行环境中有效实现。区块链逐渐成为智能合约最主要的 计算场景,智能合约也被赋予了新的含义。 目前狭义的智能合约可看作是运行在分布式账本上预置规则、具有状态、条 件响应的,可封装、验证、执行分布式节点复杂行为,完成信息交换、价值转移 和资产管理的计算机程序。广义的智能合约则是无需中介、自我验证、自动执行 合约条款的计算机交易协议。按照其设计目的可分为:旨在作为法律的替代和补 充的智能法律合约,旨在作为功能型软件的智能软件合约以及旨在引人新型合约 关系的智能替代合约。]运行在区块链上的智能合约具有区块链数据去中心化、 去信任、不可篡改、匿名可溯源等一般特性。 OP-RETURN 的 比 特 币 脚 本 是 最 早 应 用 于 区 块 链 的 智 能 合 约 。 但 OP-RETURN 的计算能力非常有限,图灵不完备,不支持循环语句,只能实现基 本的算术、逻辑运算及验证加密功能。因此对于很多商业应用,比特币平台无法 支持。 在 2013 年年末,Vitalik Buterin 针对比特币系统非图灵完备性、效率低等缺 点,首次提出了以太坊概念,并发布了《以太坊:下一代智能合约和去中心化应
智能合约安全与应用分析研究 用平台》白皮书,启动了以太坊项目。并在 2014 年 7 月,通过 ICO 众筹到了 31529 个比特币,用来支持以太坊项目的发展。2016 年年初,以太坊的技术得到市场 认可,价格开始暴涨,也吸引了大量开发者来到以太坊的世界。2018 年 5 月, 以太币成为市值第二高的加密货币,仅次于比特币,以太坊成为目前最热门的智 能合约应用平台。 1.1.1 智能合约的学术与技术背景 以太坊作为世界上首个内置了图灵完备编程语言并正式引人智能合约概念 的公有区块链,是目前最为流行的智能合约开发平台。以太坊的核心是可执行任 意复杂算法编码的以太坊虚拟机(Ethereum virtual machine,EVM),所有部署在以 太坊上的智能合约都将被编译成 EVM 字节码,在矿工本地隔离的 EVM 中执行。 用户可以按照自身意愿在以太坊平台上高效快速地开发出包括加密货币在内的 多 种 智 能 合 约 和 建 立 在 智 能 合 约 上 的 去 中 心 化 应 用 (Decentralized applications,DApps)。以太坊的出现改变了区块链及智能合约的应用格局,使其 不再局限于数字货币,开始有机会构建更宏观的金融系统并应用到其他社会领 域。 从核心算法、技术的角度将,以太坊的部分核心技术如工作量证明、区块验证机 制、MPT 数据结构等都是继承或改良了比特币的核心技术,另一部分技术如 gas 消耗机制、智能合约则是以太坊的创新技术。以太坊是一个开源平台,在以太坊 出现后,出现了众多如柚子币等照搬或稍作改动的“新”智能合约公链平台,也 有很多以以太坊作为原型进行二次开发的联盟链平台如维链、FISCO BCOS。总 而言之,以太坊可说是支持智能合约的区块链平台的开山鼻祖,智能合约的开发 者社区都密切关注着以太坊的发展。 1.1.2 存在的主要问题 尽管近年来智能合约发展迅猛,其仍面临着许多不可忽视的挑战。2016 年 6 月,攻击者就通过调用众筹项目“The DAO”中智能合约的可重人性函数窃取了 价值大约 6000 万美元的以太币,由于智能合约不可篡改的特性,以太坊最终被 迫执行硬分叉挽回损失,而又因其匿名性,攻击者目前仍逍遥法外。以太坊多次
智能合约安全与应用分析研究 爆发的安全漏洞打击了大型组织和公司使用以太坊的信心,可以说是以太坊面临 的主要问题。由于其他智能合约平台多少都参照了 EVM 源代码,因此这些安全 漏洞同样威胁到其他智能合约平台。除类似的安全漏洞外,智能合约还存在缺乏 可信数据源、隐私问题、性能问题和法律问题等其他挑战亟待解决。 1.2 本文研究内容及组织结构 由于智能合约与以太坊区块链密不可分,因此本文将围绕智能合约和以太坊 进行报告。本报告分为引言,基本概念和术语、以太坊与智能合约、智能合约的 安全问题与防护、智能合约应用案例五个章节。第二章基本概念和术语章节将介 绍区块链的基本概念和了解以太坊机制所必须了解的一些数据结构。第三章将展 开介绍以太坊整体架构、基本数据结构,通过这些来深入探讨智能合约的开发、 部署、执行机制。第四章将探讨智能合约当前面临的主要安全问题。第五章将介 绍两个智能合约的实际应用案例。
智能合约安全与应用分析研究 第二章 以太坊智能合约相关技术 2.1 以太坊的概念 以太坊虚拟机(EVM)。以太坊虚拟机(EVM,Ethereum Virtual Machine)是以 太坊中智能合约的运行环境。以太坊虚拟机是一个被沙箱封装起来、完全隔离的 运行环境。运行在 EVM 内部的代码不能接触到网络、文件系统或其他进程,即 使是智能合约与其他智能合约也只能进行有限的交互。然而,以太坊虚拟机本身 运行在以太坊节点上,当我们把合约部署到以太坊网络上之后,合约就可以在所 有以太坊网络节点的以太坊虚拟机上运行了。 以太坊钱包。以太坊钱包是以太坊账户的管理工具,如使用钱包可以生成账 户、账户转账等,不过这只是以太坊钱包最基本的一个功能。实际上在区块链上 进行的操作都被当成一笔交易,例如这笔交易可以是转账、挖矿、智能合约的部 署和合约函数调用等,全功能的钱包也会提供这些进行交易的功能。像 imToken 这类在移动平台上使用的以太坊钱包通常只具备最基本的功能。还有一类功能齐 全的以太坊钱包,比如 Geth、Mist、Parity 等,在使用这些钱包时会同步整个以 太坊区块链的数据,有时也将它们称为以太坊客户端。对于开发者来说,我们可 以把它们理解为开发者工具。 账户 account。这里的账户可以简单理解为银行给我们开设的账户,不过在 以太坊中账户不用申请,而是用户根据需要在钱包中生成的。转账行为是由一个 账户发起,把财产转移到另一个账户的过程(实际上这个财产也是一个数字〉。 以太坊也是类似的,同时在以太坊上赋予了账户更多的功能,实际上账户在以太 坊中有很重要的作用。以太坊中有两类账户: 外部拥有账户(EOA):该类账户和银行账户很相似,不过它由公钥/私钥 对控制,即由人控制,没有关联任何代码。 合约账户:该类账户由存储在账户中的代码控制。外部拥有账户(简称“外 部账户”)和合约账户由同样的地址空间来表示。外部账户的地址是由公钥决定 的,合约账户的地址是在创建该合约时确定的(这个地址由合约创建者的地址和 该地址发出过的交易数量 Nonce 计算得到)。合约账户存储代码,外部账户则没 有。除这点以外,这两类账户对于 EVM 来说是一样的。但是理解外部账户和合
分享到:
收藏