当前位置:首页 > 物联网 > 区块链
[导读] 随着移动互联网技术的成熟,后移动互联网时代的代表——区块链技术则是这个时代的又一重大创新,尽管这项技术目前还处在非常初期且神秘晦涩的阶段,但充满想象力。 什么是智能合约?

随着移动互联网技术的成熟,后移动互联网时代的代表——区块链技术则是这个时代的又一重大创新,尽管这项技术目前还处在非常初期且神秘晦涩的阶段,但充满想象力。

什么是智能合约?

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

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

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

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

1. Action.requireRecepient

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

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

从结果中我们可以得知:

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭