其他区块链支持

以太坊兼容(EVM Compatible)区块链

Delta目前的智能合约使用Solidity编写,在Chain Connector中实现了以太坊API的调用,理论上可以在所有兼容以太坊的区块链上运行。但是由于Chain Connector目前使用了以太坊的pub/sub接口来订阅以太坊事件,因此需要目标区块链系统支持pub/sub事件订阅。下表中列出了经社区测试的Delta在各个以太坊兼容区块链上的适用情况:

区块链是否兼容情况说明测试者

缺少pub/sub事件订阅支持

Jupiter(s2068649@ed.ac.uk)

未知

未测试

如果是Delta兼容的区块链系统,可以直接使用现有的Chain Connector进行连接。只需要在配置文件中指定implethereum,并且按照区块链系统的要求设置具体的配置项即可。具体可以从快速搭建指南中的[区块链网络搭建-方法1-手动搭建]的第2步开始操作。或者按照系统搭建和部署章节的文档,在搭建好区块链节点后,从部署智能合约开始操作。

如果需要在不兼容的以太坊区块链上运行,需要开发者自己在Chain Connector中实现对应的支持,比如使用json-rpc替代掉pub/sub方法,即可运行在没有pub/sub接口的区块链上。

其他区块链

其他区块链系统的支持,需要开发者自己进行开发。Delta在架构设计时做了区块链系统的分层,所以理论上可以很容易的使用在其他区块链系统上,比如Fabric等。

具体来说,实现一个新的区块链系统的连接需要做两部分工作:

  1. 实现Delta的链上智能合约

  2. delta-chain-connector中实现调用区块链的方法

实现Delta的链上智能合约

目前Delta已经实现了Solidity的智能合约,如果目标区块链系统使用了EVM做为智能合约层,可以直接使用写好的Solidity合约。如果是Fabric等需要自己写的智能合约,就需要参照Delta的智能合约,实现一套功能和接口完全一样的。Delta的Solidity智能合约放置在下面的Github仓库中:

Delta的Solidity合约使用了Truffle的开发框架,目录结构也是一个标准的Truffle项目结构。合约代码放置于/contracts目录下,使用方法可参考Truffle的官方教程。如果要自己实现的话,需要把/contracts目录下的合约都实现一遍。

实现调用区块链的方法

Delta系统中针对区块链的调用进行了封装和解耦。对区块链的调用全部封装在Chain Connector中。Delta Node使用同一套API调用Chain Connector,在Chain Connector中再根据区块链的不同,使用不同的调用方法。

Chain Connector中,调用区块链的方法也是统一的抽象方法。只要针对目标区块链系统,实现具体的调用逻辑就可以了。在Chain Connector的架构中也考虑了对更多区块链的兼容,可以很方便的加入其他区块链的实现。

Chain Connector的代码放置在下面的仓库中:

/src/impl目录中放置的就是对不同区块链的实现。目前有两个实现,coordinatorethereumcoordinator是无区块链模式的实现,Chain Connector自己做为中心节点,模拟区块链的行为。ethereum是以太坊的实现。如果需要增加新的区块链系统,只要在/src/impl中新建一个文件夹,比如/src/impl/fabric,然后参考以太坊/src/impl/ethereum的实现方式,实现对应的调用方法就可以了。

调用方法的抽象Impl放置在service.ts文件中。需要实现其中的全部方法。

然后使用修改过的Chain Connector启动整个系统,在Chain Connetor的配置文件中指定使用自己新增加的区块链就可以了。

最后更新于