浅谈中移链中插件的功能及使用
中移链是在满足我国信息化监管需求、合规可控的前提下,打造的中国移动区块链服务平台。它允许使用插件来扩展其功能,以适应各种不同的使用场景。
什么是中移链插件呢?如果把中移链比作一个操作系统,那么插件就类比于操作系统上的软件,软件通过安装、重启等方式来扩展操作系统的功能,类似的,中移链插件也是通过配置、加载来启用,扩展中移链功能。
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-
评论