截至2018年1月,以太坊已经开发了200多个应用(简称DApp,即区块链上的一个智能合约)。任何人都能够在以太坊上创建智能合约和去中心化应用,并在其中设立他们所定义的所有规则、交易方式和状态转移函数。
以太坊智能合约的调用流程如下: 1)编写智能合约:以太坊智能合约语言Solidity类似于JavaScript,通过编译生成以太坊虚拟机代码。 2)编译智能合约原始码:将其转换为可在以太坊虚拟机(EVM)上执行的代码。EVM是一个沙盒环境,合约代码在其中完成运行,并且与主区块链操作隔离。 3)部署智能合约:通过交易将可执行代码存储在区块链上,并生成合约。 4)调用合约:选择合适的函数和参数进行调用,合约调用将改变智能合约数据状态。
超级账本智能合约
Hyperledger Fabric中的链码(chaincode)通常处理由网络成员同意的业务逻辑,相当于智能合约。通过调用链码可以更新或查询提案交易中的分类账。链码可以被许可另一个链码调用。如果被调用链码属于不同的通道,只允许进行查询操作,而不会参与状态验证。
链码的开发多使用GO、Java、node.js等语言实现,每个链码必须实现链码接口,用于回应收到的交易。链码通过StubInterface与区块链账本、交易上下文和调用方证书进行交互。链码必须实现的方法为:Init用于初始化应用,Invoke用于响应各种Invoke事务。
EOS智能合约
EOS智能合约通过消息和共享内存数据库相互通信。异步通信的spam问题将通过资源限制算法解决。
开发EOS智能合约,需要完成合约对应的程序,并上传到EOS平台。智能合约目前只能使用C++开发,并编译成WebAssembly兼容的可执行程序。未来,随着Go语言对WebAssembly的支持,也可以使用Go语言编写智能合约。此外,还有开发者正在将EOS接入JavaScript虚拟机和Python虚拟机,因此在不久的将来,开发智能合约将不再受C++的限制。