小白快速理解智能合约

时间:2024-07-08  分类:电子

三、智能合约的创建和执行


一个智能合约的生命周期包含合约创建、合约部署、合约执行等过程。我们以以太坊为例,来说明区块链上的智能合约是如何创建和执行的。


案例:我们新建一个发工资的智能合约,树哥是老板,是需要给两个员工A和B发工资。先简单构建一下发工资的逻辑,如下:


1、合约创立


从上图可以看出,在以太坊上是分为外部账户和合约账户的。树哥的外部账户存着钱,合约账户存着相应的代码。代码执行的操作就是30号的时候,先检查A和B的工作量,满足要求后给A账户和B账户转账工资。那么,合约的创立就是要给三个用户建立账户,通过要编写合约账户内的代码。


1)创建账户


需要先了解以太坊的账户体系


2)编译,打包,数据上区块链


根据要求创建完账户、编写完代码(以太坊的官方智能合约开发语言为:solidity),开始对编写的代码进行编译。


一旦完成了智能合约打包上链的过程,就意味着:全网的验证节点都会接受到树哥和员工A与B之间的智能合约,并进行了保存。


需要注意的,在以太坊上部署和执行智能合约都是要有花费的,这样的花费是用GAS来表示的(挺像我们的汽车烧的燃气),这个GAS是可以是用以太坊来购买。设置GAS而没有直接用以太坊的原因是,以太坊价格波动太大,不能今天执行一段代码要50块明天就变成5块钱吧?所以用GAS代表以太坊上执行操作的代价相对不会波动太大。


2、合约的执行


智能合约会定期检查相关事件和触发条件,满足条件的事件会推送到待验证的队列之中。例如每月30日,会触发条件把树哥账户里的钱转给员工A和员工B的账户中。


区块链的验证节点会对这个事件进行签名验证,等大多数的验证节点对此事件达成共识后,智能合约将被成功执行,并通知用户。


需要说明的是,智能合约是存储在区块链网络的代码,但区块链本身是不执行代码的。真正执行代码的是以太坊虚拟机(EVM),准确一点来说是每一台本地的以太坊虚拟机来执行代码,再来相互验证,然后再将结果写入到区块链当中。示意图如下:


以太坊智能合约执行示意


小结:通过树哥给员工发工资的智能合约的创建、部署和执行的过程,就可以了解到:资金是保存在外部账户中,代码是保存在合约账户中;部署智能合约就是在把智能合约打包进区块中,然后分发到全网中;执行智能合约就是在触发条件达到后本地的以太坊虚拟机执行智能合约,然后再将结果保存在区块链中这样的一个过程。


四、智能合约的安全性讨论


最近出了很多起智能合约被黑客攻破而导致资产大量损失的事件,但发生的这些事件都不是因为以太坊网络系统的问题,而是属于开发者开发的智能合约存在漏洞的原因。那么,智能合约开发需要注意哪些问题呢?一般就是两个问题,一是确保智能合约的确定性,二是确定智能合约的可以关闭性。


1、确定性:就是确保智能合约在不同的计算机上执行的效果都是相同的。


在区块链网络上,是不同的计算机节点参与运行智能合约,如果执行的结果有差异那么无疑会导致不同节点达不成共识,相应的区块也会认为是非法的。那么如何保证智能合约的确定性呢?


1)不进行调用不确定性的函数,


2)不使用不确定性的数据源。


2、可以关闭性:就是确保智能合约在一定的情况下可以关闭。


如果一段有问题的智能合约在不断地运行,它会不断的消耗区块链的网络资源,也有可能会攻击者利用来攻击整个网络。是可以通过一些手段限制资源的使用来执行智能合约关闭。


1)限制最大使用的资源。在以太坊上执行智能合约或存储都是需要有消耗(gas),智能合约有gaslimit(最大消耗的gas值)来限制智能合约。当智能合约消耗到规定的最大值时,会自动关闭。


2)限制执行代码行数或执行时间。当智能合约执行代码行数达到规定最大行或执行时间,则认为智能合约有可能进入死循环或出现问题,强行关闭。


3)采用虚拟机方式,隔离资源。以太坊就是采用虚拟机EVM的方式,把执行环境虚拟化,将资源进行隔离,避免由于一个智能合约问题感染整个系统,也可以通过关闭智能合约的执行虚拟机关闭智能合约。


小结:部署在区块链上的智能合约,由于其具备的区块链的复杂特性而会凸显出安全性的重要性。如果要真正理解如何提升智能合约的安全性,那需要对区块链底层逻辑和智能合约有一定了解。


总结:智能合约本质是应用,不局限于电子合约本身。在区块链上的智能合约具备着区块的规则透明、不可篡改、分布存储等特征,它的创建、部署和执行也是有一定的复杂度,在安全防护上也有了较高一些的要求。也正因为如此,区块链上的智能合约可以完成传统互联网程序没有办法完成的任务,不仅可以在金融、拍卖、借贷、遗嘱、注册、众筹、股权、投票、保险等领域发挥巨大作用,而且随着技术的不断发展,在其他方面也将展现出巨大的作用。


以上,为树哥区块链从小白到精通


作者介绍:树哥,树哥区块链创始人、《区块链从入门到精通》作者,U赞签约作者,对话区块链合伙人。立志用最通俗的语言让小白透彻了解区块链技术。公众号头条号新浪博客百度百家:树哥区块链,星球:区块链从小白到精通。



-->> 2/2 文章结束,返回第一页

以上就是小白快速理解智能合约的全部内容,望能这篇小白快速理解智能合约可以帮助您解决问题,能够解决大家的实际问题是非常好学习网一直努力的方向和目标。