区块链智能合约是什么(从业者必读:区块链的核心-智能合约)

  区块链智能合约是什么(从业者必读:区块链的核心-智能合约)

作者/Ultrain联合创始人&;CTO 李宁

  

随着移动互联网技术的成熟,后移动互联网时代的代表——区块链技术则是这个时代的又一重大创新,尽管这项技术目前还处在非常初期且神秘晦涩的阶段,但充满想象力。继前两篇区块链基础价值的文章之后,本篇将从未来区块链的核心——智能合约入手,做进一步阐释。

  

什么是智能合约?

  

1995年Nick Szabo首次提出智能合约的概念,即:合约参与方同意的(经常是相互的)权利和义务。以销售合约为例,卖家承诺发送货物,买家承诺支付合理的货款。当一个预先编好的条件被触发时,智能合约则执行相应的合同条款。

  

随着区块链技术的发展和核心价值的进一步被挖掘,智能合约将不仅仅只是传统合约的数据化。在区块链世界,智能合约将扮演更多核心的工作,本文接下来将通过剖析区块链3。0中的智能合约技术细节,来展示区块链世界未来的智能合约形态。

  

从技术方面剖析智能合约——以Ultrain智能合约为例

  

在Ultrain的合约体系中,我们无法在自己的合约中嵌入其他合约的代码,那当我们不得不在自己的合约中使用其他合约的时候该怎么办呢?这里Ultrain提供了三个方法,允许你从自己的合约中调用其他合约的代码。在这里,将主要介绍有关交易的三个方法以及它们的特性。

  

1。 Action。requireRecepient

  

首先介绍Require-recepient方法。从名字中我们可以得知,这是一个通知。当这个方法被调用时,To合约上部署的同名方法将被调用。举个例子,现在我们编写了含有以下方法的两个合约,将一个合约部署在账号jack上(如图1),另一个部署在合约rose上(如图2)。

  

图1

  

图2

  

通过发起一笔交易来进行测试,如果一切正常,将会看到在打印的log中jack和rose的recepient同名方法都被调用(如图3)。

  

图3

  

从结果中我们可以得知:

  

(1)jack的同名方法recepient也被调用了;

  

(2)传递的参数和交易发起时的参数messi是一致的,不需要明确地传递这个参数;

  

(3)rose和jack的recepient方法都在同一个transaction调用;

  

(4)rose和jack的recepient方法都有rose的权限。

  

2。 Action。sendInline

  

从Action。requireRecepient的测试结果中,可得知requireRecepient方法只能用相同的参数调用同名方法,但这个方法在很多时候是受限的。因此,需要另一种方式来解决这个问题,即能够调用任意参数的方法。这个方法就是Action。sendInline,同样的,我们用例子来说明。

  

图4!rose的合约

  

图5!jack的合约

  

在rose的合约中调用jack合约中的任意方法,并且传递了任意的参数,账号部署完成后,执行rose的合约,比特币汇率执行成功后,会看到rose的执行log中确实存在jack合约方法的执行(如图6),这就意味着sendInline这个方法确实可以调用其他合约的任意方法,参数任意,而且双方具有相同的权限,同recepient一样,交易是在同个transaction中执行。

  

图6

  

3。 Transaction。send

  

前文分别介绍了requireRecepient和sendInline的使用方法及它们的特点,其中一条就是它们都在同一个transaction中被执行,这也就意味着,整个执行链条上如果有一个action失败了,那么整个transaction也就失败了。有些情况下,我们并不想所有的action作为一个事务来进行处理,这时候Transaction。send的好处就体现出来了。接下来来演示这个方法是如何使用的。

  

图7!rose的合约

  

图8!jack的合约

  

部署完成后我们可以执行rose的deferred方法,注意要将rose的active权限代理给utrio。code,否则这个方法执行时会失败。方法执行成功之后,会发现结果中只有rose的log信息(如图9),那么jack合约中打印的log信息在哪里呢?可以看看节点的log信息,会发现jack的log信息存在节点之中(如图10)。

  

图9

  

图10

  

这也说明这个方法确实可以不在同一个transaction中执行,并且具有以下的特性:

  

1)Transaction。send可以调用jack任意的方法。

  

2)调用方法时,可以传递任意参数。

  

3)jack中的方法被调用时,具有发起时一样的权限(rose)。

  

通过以上三种方法的阐释,再次总结这三个方法各自的风格和特性,在不同场景中则可运用不同的方法(如图11)

  

图11

  

综上,通过对区块链3。0中的智能合约技术的剖析,不难看出智能合约在区块链技术中起到的重要作用,以下为我个人对于智能合约的展望。

  

对智能合约的展望

  

以Ultrain为代表的区块链3。0,在智能合约技术基础上进行了不少改进和突破,从而让智能合约能够实现更加复杂逻辑的业务,这就意味着智能合约不再是为传统合约做相关的数据化这么简单,它可以实现技术上的逻辑互通,为各个行业搭建了桥梁。也正因如此,区块链技术才可真正实现承载高性能、低成本、高服务质量并支持大规模数据资产化商业帝国的构建。

  

(作者:Ultrain超脑链,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)

  
","content_hash"!"b90f61c7

  

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论