中移链是在满足我国信息化监管需求、合规可控的前提下,打造的中国移动区块链服务平台。它允许使用插件来扩展其功能,以适应各种不同的使用场景。
什么是中移链插件呢?如果把中移链比作一个操作系统,那么插件就类比于操作系统上的软件,软件通过安装、重启等方式来扩展操作系统的功能,类似的,中移链插件也是通过配置、加载来启用,扩展中移链功能。
01
功能介绍
中移链有哪些常用插件呢?我们以中移链一个版本为例,介绍一些插件及其具体功能:
1.chain插件:这个是链处理插件,它承载了链节点程序与区块链交互的基本功能,包括读取本地不可逆区块链基本信息、设置本地链检查点、设置本地链参数、设置可逆区块数据库参数、设置账户黑/白名单、设置智能合约黑/白名单、重载区块链初始状态文件,以及删除、重写、替换本地区块链数据 (包括开始、停止等动作) 。
2.chain_api插件:依赖于chain插件,它提供与外部调用链相关操作的接口服务。
3.net插件:这个是P2P网络插件,它承载了链系统的P2P网络中TCP/IP层相关功能,包括建立节点之间握手并互联;监听、发送、接收新交易请求;监听、发送、接收新区块请求;验证接收数据合法性。
4.net_api插件:依赖于net插件,它提供与外部调用及网络相关操作的接口服务。
5.http插件:这个是网络HTTP插件,它承载了链系统的P2P网络中HTTP层相关功能,包括监听、发送、接收新交易请求;验证接收数据合法性。
6.producer插件:这个是区块生产节点的功能插件,其中功能包括生产、打包新区块 数据;对新区块签名;对接收的区块进行验证,包括区块头合法性、签名合法性和交易合法性。
7.producer_api插件:依赖于producer插件,它提供与外部调用及区块生产节点相关功能的接口服务。
8.blockvault_client插件:该插件为当前版本新增,即从当前版本开始加入了blockvault功能,它主要使区块链能够实施行业标准的灾难恢复,以最大限度地延长生产者的正常运行时间。该插件允许块生产者将部署为单个逻辑生产者的两个或多个节点集群。如果其中一个节点出现故障,集群中的其他节点将继续运行,从而满足生产者在最小服务中断的情况下继续运行的某些保证。
9.http_client插件:定义了中移链网络HTTP层响应请求,并做相应的安全验证的客户端插件。
10.resource_monitor插件:用于监控节点的资源使用情况,并通过API接口提供资源使用情况的统计信息,方便开发者进行分析和调优。
11.history插件:定义了查询指定账户中指定公钥的所有历史交易记录的插件。
12.history_api插件:将history的功能暴露给由http插件管理的RPC API接口,提供对区块链数据的只读访问;因为该插件对服务器资源消耗较大,在当前版本已弃用,开发者可以采用state_history插件或者trace_api插件替代。
13.state_history插件:这个插件捕捉区块链状态的历史数据,又称为“状态历史插件”。
14.login插件:依赖于http插件,这个插件使用HTTP Basic Authentication (HTTP 基 本认证) 来进行用户身份验证。
15.db_size_api插件:这个插件提供与外部调用及数据有关的接口服务。
16.trace_api插件:依赖于chain插件和http插件,这个插件提供了一些可以用来获取和分析节点操作的接口,比如获取区块链中的所有操作、获取交易的执行跟踪结果等等。
通过上面介绍,可以了解到中移链部分插件及其功能,开发者可以根据需要来选择插件,下面通过两个示例说明一下插件的开启和关闭。
02
使用说明
中移链插件开启很方便,在配置文件中以“cmeos.load(“插件名称”,{“相关参数”});”格式 配置插件,节点在启动时会读取配置文件进行初始化,在初始化过程中会加载已配置的插件,当初始化完成后,插件功能也正常开启。以下是一则开启插件的示例。
示例一,假设我们需要启动一个生产节点,开启http、net、chain、chain_api、producer和producer_api等6个插件,这些插件包含了网络、链处理及其接口服务、生产节点及其接口服务等功能,在配置文件中添加这些插件并配置相应的参数,然后启动节点。配置如下图:
如上图所示,在配置文件中,通过“cmeos.load(“插件名称”,{“相关参数”});”格式来启用http、net、chain、chain_api、producer、producer_api等插件,并设置插件相应的参数。
中移链插件关闭也方便,是在配置文件中移除插件的相关配置,并重启节点,因为重启会再次读取配置文件进行初始化,这样未配置的插件就不再被启用了。以下是一则关闭插件的示例。
示例二,假设eosio不再作为生产者进行出块,此时我们可以将eosio生产节点改造为 同步节点(即仅从其它生产节点同步区块,本身不生产区块) ,即在配置文件中移除producer和producer_api插件,然后重启节点即可,如下图所示:
如上图所示,此配置文件中,移除了producer和producer_api插件及其相关参数,重启节点后,节点不再具有生产区块的功能。
03
结尾
本文介绍了一些常见的插件功能,并提供了两个示例配置演示如何开启和关闭插件。
可见,中移链插件机制的灵活性为开发者提供了非常高的自由度,开发者可以选择和组合不同的插件,来适用不同的场景。
04
参考资料
[1]BSN开放联盟链:
https://opb.bsnbase.com/main/index
[2]EOSIO的GitHub源代码仓库:
https://github.com/EOSIO/eos/tree/v2.1.0/plugins
-END-