美文网首页
从业者必读:区块链的核心—智能合约

从业者必读:区块链的核心—智能合约

作者: Ultrain超脑信任计算 | 来源:发表于2019-01-16 17:22 被阅读0次

作者: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联合创始人&CTO 李宁 随着移动互联网技术的成熟,后移动互联网时代的代表——区块链技术则是这...

  • 4.4 Hyperledger Fabric - 应用程序开发

    应用程序开发 - 智能合约处理 区块链网络的核心是智能合约。在 PaperNet 中,商业票据智能合约中的代码定义...

  • 区块链分享-预言机是什么?依托什么技术?证明机制有哪些?预言机类

    预言机是什么呢? 简单说,区块链的业务逻辑核心在智能合约,智能合约的参数输入来源在预言机。预言机就是区块链世界链接...

  • 一文读懂智能合约漏洞

    智能合约是区块链的核心技术之一,是多方参与场景中的共识规则,更是智能合约是价值传递的中枢。之所以区块链出现以后安全...

  • OpenLaw介绍

    在智能合约的区块链时代,Code is Law。区块链应用的公平性、透明性通过智能合约代码实现,一旦通过智能合约去...

  • 区块链2.0时代--以太坊

    区块链2.0: 以太坊 区块链2.0是以“以太坊”为根本的区块链,也称为智能合约开发和应用的时代。 智能合约是以太...

  • 智能合约是什么?它真的安全吗?

    今天来说下因为区块链技术而火起来的智能合约。 1、为什么说智能合约是因为区块链技术火起来的呢? 因为智能合约概念的...

  • 区块链人才培养体系

    区块链人才培养可以围绕5大核心岗位:区块链运维工程师、智能合约开发工程师、联盟链开发工程师、区块链售前工程师、区块...

  • 以太坊智能合约编写(一)

    什么是智能合约? 在区块链上运行的程序,通常称为智能合约。所以通常会把写区块链程序称做写智能合约。虽然比特币上也能...

  • 智能合约的局限

    区块链的应用离不开智能合约,换句话说,智能合约就是区块链实现各种应用的基础。智能合约是否强大,也就决定了应用是否强...

网友评论

      本文标题:从业者必读:区块链的核心—智能合约

      本文链接:https://www.haomeiwen.com/subject/rzomdqtx.html