智能合约学习笔记一 、——{Solidity语言详解——(2)智能合约运行原理}

目录

2.1 智能合约的运行机制

2.2 智能合约的模型

2.3 智能合约的部署原理

2.4 智能合约的运行原理


2.1 智能合约的运行机制

        智能合约是一段程序(即代码和数据的集合),可以部署在支持智能合约的区块链网 络(比如以太坊)上运行。智能合约希望实现“code is law”(代码即法则)准则。 特别是在公有链上智能合约被部署后,即使是系统的运营方也无法轻易改动它。 如图所示,智能合约就是一段运行在区块链上的程序,部署在支持智能合约的区块链 网络上:

 

        智能合约一般具有值和状态两个属性, 代 码中用 If-Then 和 What-If 等类似语句预 置了合约条款的相应触发场景和响应规则。 智能合约经多方共同协定、各自签署后随 用户发起的交易 (Transaction, Txn) 提交, 经 P2P 网络传播、矿工验证后存储在区块 链特定区块中, 用户得到返回的合约地址 及合约接口等信息后即可通过发起交易来 调用合约。

 

         矿工受系统预设的激励机制激励, 将贡献自 身算力来验证交易, 矿工收到合约创建或调 用交易后在本地沙箱执行环境 (如以太坊虚 拟机) 中创建合约或执行合约代码, 合约代码 根据可信外部数据源 (也称为预言机, Oracles) 和世界状态的检查信息自动判断当 前所处场景是否满足合约触发条件以严格执 行响应规则并更新世界状态。 交易验证有效后被打包进新的数据区块, 新 区块经共识算法认证后链接到区块链主链, 所有更新生效。

2.2 智能合约的模型

        下图描绘了在状态机模型下的区块链智能合约抽象模型。从计算模型的观点来看, 公共记账本能够作为一种状态转换系统,它能够记录任何账户的“状态”以及预先 定义好的“状态转换函数” 。

 

        当该系统接收到一个(可以由交易或可信外部事件引发)含有状态改变的事务时,它 将依据“状态转换函数”输出一个新的状态,并将该输出状态(以一种所有人都信 任的方式)写入到公共记账本;这一过程可以往复进行。

2.3 智能合约的部署原理

        智能合约一旦部署到公有链等智能合约平台,其内容就会保存在链上,并严格执行。 智能合约可以看作是一种用于记录和修改区块链“状态”的应用程序。合约编译后会 产生接口文件和字节码,合约部署成功后会产生一个合约地址。

 

        接口文件(ABI接口,是Application Binary Interface) 是 从区块链外部与合约进行交互以及合约与合约间进行交互 的一种标准方式,案例如右图。 ABI在编译后即获得,如下图。

 

 

         字节码(Bytecode)是一系列可以在EVM上执行 的指令;ABI在编译后获得,如下图所示。

 

 

2.4 智能合约的运行原理

        智能合约的运行和一笔交易类似,只是“程序化”触发的。智能合约可以通过一笔交易 来部署,也可以通过一笔交易来触发,也可以通过智能合约调用来触发(前提是合约已 经被调用),而这笔交易会被全网共同识别,所以这就保证了智能合约可以得到验证且 整个网络中的节点将统一得到唯一的合约代码。

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇

)">
下一篇>>