LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 火龙果财经:区块链智能合约可分别哪几个种类

火龙果财经:区块链智能合约可分别哪几个种类

2020-09-24 区块链大咖说 来源:区块链网络

以太坊智能合约

截至2018年1月,以太坊已经开发了200多个应用(简称DApp,简单地说,就是区块链上的一个智能合约)。任何人都能够在以太坊上创建智能合约和去中心化应用,并在其中设立他们所定义的所有规则、交易方式和状态转移函数。

以太坊智能合约的调用流程如下。

1)编写智能合约。以太坊智能合约语言Solidity是一种语法类似于JavaScript的高级语言,它被设计成以编译的方式生成以太坊虚拟机代码。

2)编译智能合约的原始码,成为在Ethereum Virtual Machine(EVM)上可执行的代码,EVM不是真正的虚拟机,只是一个代码解释器。以太坊虚拟机是一个完全独立的沙盒,合约代码可对外完全隔离,并在EVM内部运行。EVM分散存储在每个节点的计算机上,与主网的其余部分隔离,运行时不影响主区块链的操作。

3)部署智能合约。就是通过交易(Transaction)的方式把可执行的代码存储在链上,并生成合约。

4)调用合约。调用合约时,需要选择合适的函数和参数,合约的调用会涉及对智能合约数据状态的改变。

超级账本智能合约

Hyperledger Fabric中的链码(chaincode)通常处理由网络成员同意的业务逻辑,因此,它相当于“智能合约”。通过调用链码可以更新或查询提案交易中的分类账。考虑到一定的许可,一个链码能够被另一个链码调用。如果调用与被调用的链码属于不同的通道,则只允许读取查询。换而言之,不同渠道上被调用的链码只是一个查询,它在随后的提交阶段并不会参与状态的检查验证。

链码的开发一般使用GO、Java、node.js实现,每一个链码必须要实现链码接口,用于回应收到的交易。在链码shim包中有一个链码接口StubInterface,可以与区块链账本、交易上下文、调用方证书等进行交互。每个链码必须实现的方法为:Init、Invoke。其中,Init方法用来执行任何必要的初始化,包括应用程序的初始化。Invoke方法是用来响应各种Invoke事务的。

EOS智能合约

EOS智能合约通过messages及共享内存数据库(比如,只要一个合约被包含在具有异步事务的读取范围内,它就可以读取其他合约数据库的状态)相互通信。异步通信导致的spam问题将由资源限制算法来解决。

对于如何开发EOS智能合约这个问题,我们认为,需要完成该合约对应的程序,并将其上传到EOS平台上。计算机语言方面,目前智能合约只能用C++开发,并将其编译成WebAssembly兼容的可执行程序,因为Go语言将支持WebAssembly,所以未来也可以使用Go语言来编写智能合约。除此之外,也有开发者正在将EOS接入JavaScript虚拟机和Python虚拟机,所以在不久的将来,开发智能合约将不再受C++的限制。

—-

编译者/作者:区块链大咖说

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...