智能合约是区块链能够被称为颠覆性技术的主要原因之一,没有智能合约的区块链系统无法在商用领域中灵活开展业务。本文选自《商用区块链技术与实践》带你快速了解这一项关键技术。 智能合约 让事先制定的规则被公开、公正、安全的执行,不会被恶意篡改。 智能合约的概念早在1994年便提出,但由于当时缺少可信任的执行环境和系统,智能合约并没有被应用到实际产业中。 在2009年比特币诞生之时,比特币的交易中带有简单、可执行的脚本,并可以执行简单的逻辑。人们逐渐意识到区块链的底层技术天生可以为智能合约提供可信的执行环境,但是比特币对于智能合约的支持仅仅停留在简易脚本的层面上,不具备图灵完备性,无法实现更复杂的逻辑,所以比特币的脚本只是拉开了基于智能合约的开发应用程序的序幕。 以太坊的出现,让智能合约从简单实验到落地应用,对于成熟的区块链技术体系而言,智能合约是一个非常重要的技术特性,也是区块链能够被称为颠覆性技术的主要原因之一。 什么是智能合约 智能合约已经成为区块链系统中的基本功能组件,没有智能合约的区块链系统将无法在商用领域中灵活地开展业务。 在区块链系统里,智能合约是存储在区块链上的一段代码,被写在合约的账户里,并且实现特定业务操作,可以被触发执行。智能合约的代码不能被修改,否则将会造成被滥用修改的风险。 智能合约使用交易触发执行,并且在每个全节点上都会被执行,如果单个节点作恶,那么该节点的数据失效,不会影响其他节点,这让智能合约的执行具有一致性,且无法作恶,可以利用去中心化的特性保证业务规则的正确性。 智能合约的执行条件是,当其他账户给这个合约账户转账(BU原生资产或者asset资产)的时候触发执行。智能合约的代码被加载到ChainVM中,ChainVM执行代码,最终将执行的结果写入区块链里,而这个过程将会在所有的节点中执行和存储。 合约执行过程 ChainVM基于Chrome V8引擎和WebAssembly技术实现并进行改进和优化,可以更好地满足区块链系统生态友好性的需求。 Chrome V8是由Google开发的开源JavaScript引擎,可将JavaScript代码直接翻译成二进制机器码在物理机上执行,执行效率高;WebAssembly是一种可移植、加载高效、与平台无关的字节码格式,能在平台上以接近原生的速度执行程序,是一种全新的Web标准,由Google、苹果、微软、Mozilla等几大公司同时支持和制定。 这两项技术可以为ChainVM提供良好的基础功能支撑,但是无法直接应用到区块链系统场景,主要应用在合约执行安全、接口权限、合约间交互、异常处理、语法检查等方面。为了便于描述,本节将围绕一个支持JavaScript语言的Chrome V8引擎来阐述ChainVM的实现原理。 如上图,智能合约的执行过程如下: (1)用户A发起签名交易,目标账户为B,B为一个智能合约账户,里面存储着智能合约代码。假定此时交易被广播且被打包,节点需要将该交易存储在区块链上,需要对该交易进行回放和演算。 (2)客户端(定义其使用C++代码实现)调用Chrome V8引擎,并把合约代码加载到引擎里执行,在执行的过程中如果遇到内置的接口,就会产生回调函数,调用客户端代码,此时实现了双向交互功能。 (3)合约在执行过程中,有可能产生新的交易,如合约账户B在合约内部通过接口对账户C进行转账操作,如果账户C仅是普通账户,那么只需进行普通转账操作即可;如果账户C是一个合约账户,那么将会再次触发新的合约形成一次递归调用。合约调用合约的递归深度为3层,超过3层将会出错并回退整个交易,这是出于合约实现的复杂度和区块链底层的安全性来考虑与设计的。 —- 编译者/作者:链领域 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
一分钟秒懂——MDF智能合约
2021-03-01 链领域 来源:区块链网络
LOADING...
相关阅读:
- Filecoin+DAO=数据DAO的未来2021-03-01
- ALOKEX世界级交易所2021年带你实现财富自由2021-03-01
- 3月1日行情走势评论-比特币反弹缺少力度,行情恐延续下行2021-03-01
- TIMEDEFI究竟是不是波场链?投资有风险吗?2021-03-01
- 席幕枫:3.1比特币重回5万牛回头?高位再无接盘侠2021-03-01