浅谈中移链中插件的功能及使用

news2024/11/22 21:12:33

中移链是在满足我国信息化监管需求、合规可控的前提下,打造的中国移动区块链服务平台。它允许使用插件来扩展其功能,以适应各种不同的使用场景。

什么是中移链插件呢?如果把中移链比作一个操作系统,那么插件就类比于操作系统上的软件,软件通过安装、重启等方式来扩展操作系统的功能,类似的,中移链插件也是通过配置、加载来启用,扩展中移链功能。

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-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/652782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python编写选择题程序

Python编写选择题程序 Python是一种高级编程语言,由于其简洁、易读、易懂和易学的特性,使得Python成为了目前最流行的编程语言之一。Python的强大功能也使得它可以轻松地编写各种类型的程序,包括选择题程序。本文将介绍如何使用Python编写选…

SpringBoot全局异常页面处理学习

首先我们先在控制器中写一个异常,默认情况下我们的SpringBoot异常页面是这个样子的。 示例代码如下: import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;/*** author qinxun* date 202…

mov、mvn、cmp等ARM汇编指令集数据处理类指令(三星2440A)

文章目录 前言一、为什么要学习汇编?二、2440下常用汇编指令1. 汇编指令集合2. 2440编译(汇编)工程框架 三、汇编指令详解1. mov指令2. mvn3. add、sub、mul、rsb(算术运算)4. and、orr、eor、bic5. cmp、teq、tst5.1 …

视频会议需要什么设备?视频会议软硬件介绍

视频会议系统简介 视频会议系统是一种通过网络技术实现远程音视频通信的系统。它可以让不同地点的人们在同一时间进行实时的视音频交流,从而实现远程会议、远程教育、远程医疗以及最近比较新兴的直播等应用场景。 视频会议系统组成 视频会议系统通常包括摄像头、…

chatgpt赋能python:Python中如何精确到小数点

Python中如何精确到小数点 Python作为一种高级编程语言,被广泛应用于数据科学、网站开发、人工智能等领域。在处理数字时,精度一直是一个非常重要的问题。本文将介绍如何在Python中精确到小数点,并给出实例演示。 为什么需要精确到小数点 …

C++11学习笔记(4)——通用工具(下)

太长了,分两篇写吧 书接上回 4.数值极值 std::numeric_limits 是 C 标准库中定义的一个模板类,位于 头文件中。它提供了关于各种数值类型的属性和极值的信息。这些信息可以帮助我们在程序中进行数值处理时,了解特定类型的数值范围、精度以及…

Flutter如何获取屏幕的分辨率和实际画布的分辨率

Flutter如何获取分辨率 在Flutter中,你可以使用MediaQuery来获取屏幕的分辨率和实际画布的分辨率。 要获取屏幕的分辨率,你可以使用MediaQuery.of(context).size属性,它返回一个Size对象,其中包含屏幕的宽度和高度。下面是一个获…

Redis中常见的一些问题

缓存穿透问题 什么是缓存穿透? 例如当我们根据id查询一个数据的时候,但是这个数据本身不存在或者已经被删除之后,缓存中不存在,就会去查询数据库,但是不存在的数据不会缓存到数据库中,那么一旦大量的这个请…

层序遍历的应用——判断二叉树是否为完全二叉树

思维导图: 一,完全二叉树的特点 假如我们现在有一颗完全二叉树,那它应该长什么样呢? 它应该长这样: 这样: 这样: 如果不是一…

6 种方式读取 Springboot 的配置,老鸟都这么玩(原理+实战)

大家好,我是小富~ 从配置文件中获取属性应该是SpringBoot开发中最为常用的功能之一,但就是这么常用的功能,仍然有很多开发者在这个方面踩坑。 我整理了几种获取配置属性的方式,目的不仅是要让大家学会如何使用&#…

Exiv2 —— exiv2介绍及下载搭建环境(Vs2017)

Exiv2介绍 Exiv2 是一个跨平台C库和一个命令行实用程序,用于管理图像元数据。它提供对Exif,IPTC和XMP元数据以及ICC配置文件的快速简便的读写访问。 嵌入到各种格式的数字图像中。 Exiv2 作为免费软件提供,用于许多项目 包括KDE和Gnome Deskt…

chatgpt赋能python:Python自动化脚本编写——让工作更高效

Python自动化脚本编写——让工作更高效 在当今的工作中,自动化脚本已经成为了一个不可或缺的工具。而Python作为一门脚本语言,它的开源、易用以及强大的库使得它成为了很多人使用自动化脚本的首选语言。 在本文中,我们将会探讨如何使用Pyth…

ChatGPT 指南:角色扮演让回答问题更专业

让 ChatGPT 进行角色扮演 Act as ...,比如,律师、内科医生、心理医生、运动教练、哲学家、翻译、平面设计师、IT 工程师等等,从而才能让 ChatGPT 从这个角色角度来分析我们的问题,不然,它的回答可能会过于广泛。 下面以…

Vue中如何进行自动化测试与端到端测试(E2E测试)

Vue中如何进行自动化测试与端到端测试(E2E测试) Vue.js是一种流行的前端JavaScript框架,用于构建现代的单页应用程序。在Vue.js中,测试是一个非常重要的主题。测试可以确保代码的正确性,使代码更加可靠和可维护。在这…

p-tuing和Lora的区别

一、前言 自从chatgpt的爆火,也同时引发了国内大模型的热潮,像百度出了文心一言、阿里出了通义千问等,但是这些大模型并未开源,国内外开源的中等规模的模型有meta的LLaMA,斯坦福基于LLaMA微调的Alpaca,国内…

小程序开发的前沿趋势和技术

在过去的一年里,小程序已成为移动互联网行业最热门的话题之一。小程序已经改变了许多行业。那么,下一个小程序开发趋势是什么?下面我们就来分析一下。 随着微信小程序的开放和推广,小程序开发企业正在大力发展并逐渐从技术方面进…

【2023最新版】黑客零基础入门(全网最全)从零基础到进阶,学完这一篇就够了

学前感言 1.这是一条需要坚持的道路,如果你只有三分钟的热情那么可以放弃往下看了。2.多练多想,不要离开了教程什么都不会,最好看完教程自己独立完成技术方面的开发。3.有问题多google,baidu…我们往往都遇不到好心的大神,谁会无…

【Qt】使用libmodbus实现ModBusTcp

这里写目录标题 下载编译使用DemoQModbusTcpClient Demo:参照:Qt自带QModbusTcpClient,换个电脑就不好使了,换libmodbus 下载 可以去github下载 链接: https://pan.baidu.com/s/13lgEZ59Dt5M7zmTJNpfKvg?pwd=yzfm 提取码: yzfm 下载libmodbus 并解压 编译 进入该目录下…

智造零距离:工程师走访华秋深圳 PCB 工厂,观摩高可靠板制造流程

6月11日,来自硬十、是德、灵明光子、兆易创新、汇顶科技、中诺通讯等公司的近20位工程师走访了华秋深圳PCB工厂。华秋工艺经理余宁带领考察团参观了工厂的生产线,近距离观摩了PCB的制造流程。 参观环节正式开始前,工厂安排专家介绍PCB制造的详…

SpringBatch从入门到实战(四):执行上下文和单步骤重启

一:执行上下文 1.1 JobContext 作业上下文 JobContext 绑定 JobExecution 执行对象,为Job作业执行提供执行环境(上下文)。 1.2 StepContext 步骤上下文 StepContext 绑定 StepExecution 执行对象,为Step步骤执行提供执行环境(上下文)。 1…