智能合约执行过程
作者:技术研发

智能合约执行阶段

智能合约是运行在区块链公链上的一种代码,该代码由Solidity编写,并通过区块链的智能合约虚拟机来执行,以达到对区块链编程的目标。可以将区块链公联理解为操作系统,Solidity是编写该操作系统应用程序的编程语言,智能合约虚拟机则是编程语言编译之后的代码运行环境。

智能合约的执行条件是,当其他账户给这个合约账户转账(BU原生资产或者asset资产)的时候触发执行。上链处理完成后,业务数据已经记录在链上了,对于单纯存证的业务来说,将业务信息写入区块已经完成了这笔业务处理,只需记录存证业务的交易哈希并在取的时候通过交易哈希查询即可。但是大部分业务场景都需要进行一定的逻辑处理,因此通过智能合约处理是必须的。智能合约处理包括合约逻辑处理以及修改状态梅克尔树等流程。

智能合约执行过程

1)用户A发起签名交易,目标账户为B,B为一个智能合约账户,里面存储着智能合约代码。假定此时交易被广播且被打包,节点需要将该交易存储在区块链上,需要对该交易进行回放和演算。

2)客户端调用交易记录,并把合约代码加载到交易里执行,在执行的过程中如果遇到内置的接口,就会产生回调函数,调用客户端代码,此时实现了双向交互功能。

3)合约在执行过程中,有可能产生新的交易,如合约账户B在合约内部通过接口对账户C进行转账操作,如果账户C仅是普通账户,那么只需进行普通转账操作即可;如果账户C是一个合约账户,那么将会再次触发新的合约形成一次递归调用。

合约调用合约的递归深度为3层,超过3层将会出错并回退整个交易,这是出于合约实现的复杂度和区块链底层的安全性来考虑与设计的。

智能合约的安全

智能合约的执行需要考虑更多的安全性,要注意以下几个原则:

智能合约在执行过程中可能出现安全问题,比如CPU、内存、堆栈等资源过度消耗和节点执行结果不一致等。为了便于描述,定义如下变量:合约执行步数为Step,合约栈使用量为Stack,合约堆使用量为Heap,合约执行时间为Time,合约字节数为Byte,合约间调用深度为Deep。

(1)如果合约字节数超过Max(Byte),那么校验参数失败,无法交易。

(2)如果合约执行步数超过Max(Step),那么抛出异常。

(3)如果合约栈使用量超过Max(Stack),那么抛出异常。

(4)如果合约堆使用量超过Max(Heap),那么抛出异常。

(5)如果合约执行时间超过Max(Time),那么抛出异常。

(6)如果合约间调用深度超过Max(Deep),那么执行失败。

(7)如果合约抛出异常,那么整个交易失败。

(8)当虚拟机加载智能合约执行环境时,删除不确定因素函数,如随机函数、时间函数。

总而言之,区块链作为21世纪最前言的高科技领域,随着区块链技术的不断革新,越来越多的传统企业开始利用这一技术来解决各种各样的问题。而数据上链是利用区块链技术跨入区块链行业,再深度探索行业的发展。

热门标签: #数字藏品 #NFT上链技术对接 #数字藏品资讯 #数藏平台开发 #数字藏品开发 #数字藏品交易平台开发 #全影技术研发中心
上一篇:区块链处理的流程
下一篇:没有了
相关资讯