当前位置:主页 > 解决方案 > 系统开发方案 >
区块链智能合约系统开发技术解决方案!云之梦区块链开发
发布日期:2021-08-27 阅读次数: 字体大小:

随着移动互联网技术的成熟,后移动互联网时代的代表——区块链技术则是这个时代的又一重大创新,尽管这项技术目前还处在非常初期且神秘晦涩的阶段,但充满想象力。
    什么是智能合约?
 
    1995年NickSzabo首次提出智能合约的概念,即:合约参与方同意的(经常是相互的)权利和义务。以销售合约为例,卖家承诺发送货物,买家承诺支付合理的货款。当一个预先编好的条件被触发时,智能合约则执行相应的合同条款。
 
    随着区块链技术的发展和核心价值的进一步被挖掘,智能合约将不仅仅只是传统合约的数据化。在区块链世界,智能合约将扮演更多核心的工作,本文接下来将通过剖析区块链3.0中的智能合约技术细节,来展示区块链世界未来的智能合约形态。
 
    从技术方面剖析智能合约——以Ultrain智能合约为例
 
    在Ultrain的合约体系中,我们无法在自己的合约中嵌入其他合约的代码,那当我们不得不在自己的合约中使用其他合约的时候该怎么办呢?这里Ultrain提供了三个方法,允许你从自己的合约中调用其他合约的代码。在这里,将主要介绍有关交易的三个方法以及它们的特性。
    1.Action.requireRecepient
 
    首先介绍Require-recepient()方法。从名字中我们可以得知,这是一个通知。当这个方法被调用时,To合约上部署的同名方法将被调用。举个例子,现在我们编写了含有以下方法的两个合约,将一个合约部署在账号jack上(如图1),另一个部署在合约rose上(如图2)。
 
    通过发起一笔交易来进行测试,如果一切正常,将会看到在打印的log中jack和rose的recepient同名方法都被调用。
 
    从结果中我们可以得知:
 
    (1)jack的同名方法recepient也被调用了;
 
    (2)传递的参数和交易发起时的参数messi是一致的,不需要明确地传递这个参数;
 
    (3)rose和jack的recepient方法都在同一个transacTIon调用;
 
    (4)rose和jack的recepient方法都有rose的权限。
 
    2.AcTIon.sendInline
 
    从AcTIon.requireRecepient()的测试结果中,可得知requireRecepient()方法只能用相同的参数调用同名方法,但这个方法在很多时候是受限的。因此,需要另一种方式来解决这个问题,即能够调用任意参数的方法。这个方法就是AcTIon.sendInline(),同样的,我们用例子来说明。
    在rose的合约中调用jack合约中的任意方法,并且传递了任意的参数,账号部署完成后,执行rose的合约,执行成功后,会看到rose的执行log中确实存在jack合约方法的执行(如图6),这就意味着sendInline这个方法确实可以调用其他合约的任意方法,参数任意,而且双方具有相同的权限,同recepient一样,交易是在同个transaction中执行。
 
    3.Transaction.send
 
    前文分别介绍了requireRecepient和sendInline的使用方法及它们的特点,其中一条就是它们都在同一个transaction中被执行,这也就意味着,整个执行链条上如果有一个action失败了,那么整个transaction也就失败了。有些情况下,我们并不想所有的action作为一个事务来进行处理,这时候Transaction.send的好处就体现出来了。接下来来演示这个方法是如何使用的。
 
    部署完成后我们可以执行rose的deferred方法,注意要将rose的active权限代理给utrio.code,否则这个方法执行时会失败。方法执行成功之后,会发现结果中只有rose的log信息(如图9),那么jack合约中打印的log信息在哪里呢?可以看看节点的log信息,会发现jack的log信息存在节点之中(如图10)。
 
    这也说明这个方法确实可以不在同一个transaction中执行,并且具有以下的特性:
 
    1)Transaction.send()可以调用jack任意的方法。
 
    2)调用方法时,可以传递任意参数。
 
    3)jack中的方法被调用时,具有发起时一样的权限(rose)。
 
    通过以上三种方法的阐释,再次总结这三个方法各自的风格和特性,在不同场景中则可运用不同的方法(如图11)
    综上,通过对区块链3.0中的智能合约技术的剖析,不难看出智能合约在区块链技术中起到的重要作用,以下为我个人对于智能合约的展望。
 
    对智能合约的展望
 
    以Ultrain为代表的区块链3.0,在智能合约技术基础上进行了不少改进和突破,从而让智能合约能够实现更加复杂逻辑的业务,这就意味着智能合约不再是为传统合约做相关的数据化这么简单,它可以实现技术上的逻辑互通,为各个行业搭建了桥梁。也正因如此,区块链技术才可真正实现承载高性能、低成本、高服务质量并支持大规模数据资产化商业帝国的构建。

本文原地址:https://www.4dchinese.cn

郑重声明内容版权声明:除非注明,否则皆为本站原创文章。如有侵权联系进行删除!

标签: