什么是智能合约?
In 1995,Nick Szabo first put forward the concept of smart contract,that is,the rights and obligations(often mutual)agreed by contract participants.Take the sales contract as an example.The seller promises to deliver the goods,and the buyer promises to pay a reasonable price for the goods.When a pre prepared condition is triggered,the smart contract executes the corresponding contract terms.
随着区块链技术的发展和核心价值的进一步被挖掘,智能合约将不仅仅只是传统合约的数据化。在区块链世界,智能合约将扮演更多核心的工作,本文接下来将通过剖析区块链3.0中的智能合约技术细节,来展示区块链世界未来的智能合约形态。
从技术方面剖析智能合约——以Ultrain智能合约为例
In the Ultrain contract system,we cannot embed the code of other contracts in our own contracts.What should we do when we have to use other contracts in our own contracts?Here,Ultrain provides three methods that allow you to call the code of other contracts from your own contract.Here,we will mainly introduce three methods of transaction and their characteristics.
1.AcTIon.requireRecepient
首先介绍Require-recepient方法。从名字中我们可以得知,这是一个通知。当这个方法被调用时,To合约上部署的同名方法将被调用。举个例子,现在我们编写了含有以下方法的两个合约,将一个合约部署在账号jack上,
区块链智能合约技术特点全面分析
通过发起一笔交易来进行测试,如果一切正常,将会看到在打印的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合约方法的执行,这就意味着sendInline这个方法确实可以调用其他合约的任意方法,参数任意,而且双方具有相同的权限,同recepient一样,交易是在同个transaction中执行。
区块链智能合约技术特点全面分析
3.Transaction.send
前文分别介绍了requireRecepient和sendInline的使用方法及它们的特点,其中一条就是它们都在同一个transaction中被执行,这也就意味着,整个执行链条上如果有一个action失败了,那么整个transaction也就失败了。有些情况下,我们并不想所有的action作为一个事务来进行处理,这时候Transaction.send的好处就体现出来了。接下来来演示这个方法是如何使用的。
区块链智能合约技术特点全面分析
部署完成后我们可以执行rose的deferred方法,注意要将rose的active权限代理给utrio.code,否则这个方法执行时会失败。方法执行成功之后,会发现结果中只有rose的log信息,那么jack合约中打印的log信息在哪里呢?可以看看节点的log信息,会发现jack的log信息存在节点之中。
区块链智能合约技术特点全面分析
这也说明这个方法确实可以不在同一个transaction中执行,并且具有以下的特性:
1)Transaction.send可以调用jack任意的方法。
2)调用方法时,可以传递任意参数。
3)jack中的方法被调用时,具有发起时一样的权限(rose)。
通过以上三种方法的阐释,再次总结这三个方法各自的风格和特性,在不同场景中则可运用不同的方法
区块链智能合约技术特点全面分析
综上,通过对区块链3.0中的智能合约技术的剖析,不难看出智能合约在区块链技术中起到的重要作用,以下为我个人对于智能合约的展望。
对智能合约的展望
Blockchain 3.0,represented by Ultrain,has made many improvements and breakthroughs on the basis of smart contract technology,so that smart contracts can achieve more complex logic businesses,which means that smart contracts are no longer as simple as doing data related to traditional contracts.It can achieve logic interoperability in technology and build a bridge for various industries.Because of this,blockchain technology can truly carry high performance,low cost,high quality of service and support the construction of large-scale data capitalization business empire.