当前位置: 首页 > news >正文

开源共建 | 长安链开发常见问题及规避

长安链开源社区鼓励社区成员参与社区共建,参与形式包括不限于代码贡献、文章撰写、社区答疑等。腾讯云区块链王燕飞在参与长安链测试工作过程中,深入细致地总结了长安链实际开发应用中的常见问题及其有效的规避方法,相关内容多次解答社区成员开发过程中遇到的问题,帮助开发者提升开发效率与质量。

长安链开发常见问题及规避

前言

此文是记录长安链开发过程中可能遇到的问题以及如何规避相关问题。

问题一:日志存储CFS引发的问题

引发风险:

日志存储在CFS盘后,引起的dag超时,tps下降,内存溢出等。

引发原因:

因为日志存储在cfs上,网络io的延时比较高,所以写日志就会变得很慢,导致整体变慢,最后导致内存溢出。

规避建议:

链上的日志存储,不建议在cfs盘(网络盘)存储,建议存储到ssd盘。

问题二:文件存储出现两个.END文件

引发风险:

出现两个.END文件以后,节点启动就会panic,相关报错:panic: kvdb height: 218142 should not bigger than logdb: 215131, chain data maybe missed。

引发原因:

暂时未知,这里遇到多次,多数是文件存储配置在cfs盘。

规避建议:

如果遇到上述报错,建议在文件存储中找到老的.END文件,进行删除,这样直接重启节点,可以恢复。

问题三:链升级过程中wasmer库引发的panic

引发风险:

由于在升级过程中(例如:224版本升级231版本),不需要重新构造链,只需要替换二进制,因此wasmer库在启动的时候,还用的旧版本,启动后,节点panic:./chainmaker: symbol lookup error: ./chainmaker: undefined symbol: wasm_extern_vec_destroy。

引发原因:

主要是因为wasmer库升级,老版本的libwasmer.so文件与新版本的不兼容,因此会报错如上。

规避建议:

如果遇到上述错误,需要去新的工程中重新build一条新的链,然后去任意1个节点下面的lib文件夹下面,找到libwasmer.so文件,然后直接替换到旧的链上的每个节点下面的lib文件下,如:

这里的libwasmer.so文件,就是用的231版本新编译出来的,直接替换在这里即可。

图片

问题四:日志太大磁盘不够存

引发风险:

在日常使用链的过程中,当开启debug或者数据量很大时,每个日志文件都会占用大量的磁盘空间,所以经常会导致磁盘写满使得整个链停止运行。

引发原因:

日志文件过大,且存储的日志文件过多,导致磁盘不够用。

规避建议:

如果遇到上述问题,可以修改log.yml文件,如图所示:

图片

max_age字段表示日志保存时长,上图表示日志可保留一年的日志,这里建议可以结合当前磁盘空间进行存储时长设置,比如:磁盘资源较少可以保存一个星期的日志。

问题五:docker容器kill不掉

引发风险:

执行stop脚本时,容器kill不掉,虽然执行结果提示成功,但是容器并没有kill掉;

图片

再次执行启动脚本时,提示先停掉容器;

图片

去查看容器状态时,发现容器没有停掉。

图片

引发原因:

docker状态管理异常。

规避建议:

如果遇到上述问题,直接手动kill掉docker容器,重启即可恢复正常。

问题六:[signal SIGBUS: bus error code=0x2 addr=0x7f6432119000 pc=0x1040a69]

引发风险:

当前出现这个panic时,节点则会宕机。

引发原因:

磁盘写满导致。

规避建议:

出现报错信息如下:

 

unexpected fault address 0x7f6432119000

fatal error: fault

[signal SIGBUS: bus error code=0x2 addr=0x7f6432119000 pc=0x1040a69]

goroutine 6139175623 [running]:

runtime.throw({0x317977a?, 0x1c23672?})

/usr/local/go/src/runtime/panic.go:992 +0x71 fp=0xc075a0d7c0 sp=0xc075a0d790 pc=0x100a811

runtime.sigpanic()

/usr/local/go/src/runtime/signal_unix.go:815 +0x125 fp=0xc075a0d810 sp=0xc075a0d7c0 pc=0x1021345

runtime.memmove()

这个报错其实就是磁盘写满了,只需要保证磁盘有空间,节点重启就不会再出现此类问题。

问题七:单笔交易可以上链,并发交易无法上链

问题现象:

报错日志如下

 

2023-09-07 22:05:57.610 [WARN]  [Access] ^[[31;1m@chain1^[[0m   accesscontrol/cert_ac.go:929    verify principal signer in cache failed, [endorsement: signer:<org_id:"wx-org1.chainmaker.org" member_info:"-----BEGIN CERTIFICATE-----\nMIICeDCCAh6gAwIBAgIDAZHSMAoGCCqBHM9VAYN1MIGKMQswCQYDVQQGEwJDTjEQ\nMA4GA1UECBMHQmVpamluZzEQMA4GA1UEBxMHQmVpamluZzEfMB0GA1UEChMWd3gt\nb3JnMS5jaGFpbm1ha2VyLm9yZzESMBAGA1UECxMJcm9vdC1jZXJ0MSIwIAYDVQQD\nExlj

2023-09-07 22:05:57.611 [ERROR] [Rpc]   rpcserver/api_service.go:205    tx verify failed, verify tx authentation failed, authentication error: authentication failed, [refine endorsements failed, all endorsers have failed verification], txId:1782a2ef16a10b54ca4e4407bba9cda556c35e6021bc47beb678c56a5c49d346, sender:2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d49494365444343416836674177494241674944415a48534d416f47434371424

2023-09-07 22:05:57.611 [WARN]  [Access] ^[[31;1m@chain1^[[0m   accesscontrol/cert_ac.go:1067   information for invalid signature:

sdk调用报错提示

 

______invoke result_________

Error: tx verify failed, verify tx authentation failed, authentication error: authentication failed, [refine endorsements failed, all endorsers have failed verification], txId:17aa7a7d0caf8e18ca6d6de7dd4135016c91030ddd294486ae93f082e3621544, sender:2d2d2d2d2d424547494e205055424c4943204b45592d2d2d2d2d0a4d466b77457759484b6f5a497a6a3043415159494b6f5a497a6a3044415163445167414542745553663753445478656d5853484b674972626c727a514d3278780a336d716f414134764454596d3374785a356c666e414237444247794158355162617039514c63437263434e353657474f356947594e3753706c673d3d0a2d2d2d2d2d454e44205055424c4943204b45592d2d2d2d2d0a

引发风险:

权限校验失败,导致交易无法正常上链,报错信息常见关键日志如上

引发原因:

chainmaker-cryptogen工程丢失文件或者版本不正确、cryoto.hash配置不正确,如下图所示:

图片

规避建议:

出现上述问题,这里涉及到几个点,也是日常大家经常容易踩雷的地方,出现这个问题可以确定的是,证书肯定是存在问题了,我们要确认几个关键点:

  • 证书类型确认:检查当前使用的证书是否为国密或非国密类型;确保cmc命令或SDK参数与证书类型完全匹配。

  • 配置检查:在发送交易前,需检查使用的sdk_config.yml文件中crypto.hash字段配置是否与节点一致。

  • 命令与参数校验:如果cmc命令执行和SDK参数调用均无误,且单笔交易能成功上链,则需进一步检查以下内容。

  • chainmaker-cryptogen工程检查:确认所选分支是否正确;检查是否存在文件丢失的情况;若无法自行判断或确认,建议直接删除当前工程并重新拉取最新版本,然后创建软链接。

  • 证书更新操作:完成上述步骤后,重启链服务;将cmc目录下的新证书重新拷贝至相应位置(若通过SDK调用,同样需替换为新证书)。

 

#去chainmaker-go的tools目录下,安装证书,具体操作如下:

cd chainmaker-go/tools

git

#编译部署包:

cd chainmaker-go/tools/chainmaker-cryptogen

make

#编译部署失败,不通过,试试下面的:

git submodule update --init

# 进入工具目录

$ cd chainmaker-go/tools

# 软连接chainmaker-cryptogen到tools目录下

$ ln -s ../../chainmaker-cryptogen/ .

问题八:并发过程中出现panic,提示:cache add block fail,panic:time out goroutine xxxx

问题现象:

 

panic: time out [recovered]
panic: cache add block fail, panic: time out goroutine 86659 [running]:
runtime/debug.Stack(0xc0166f5590, 0xc02fc771d0, 0x7ff23c131170)
/usr/local/go/src/runtime/debug/stack.go:24 +0x9f
http://chainmaker.org/chainmaker-go/module/core/common.(*BlockCommitterImpl).AddBlock.func1(0xc013d5e7e0,
/chainmaker-go/module/core/common/block_helper.go:996 +0x56a
panic(0x30fb0e0, 0xc028b6b3a0)
/usr/local/go/src/runtime/panic.go:965 +0x1b9
http://chainmaker.org/chainmaker-go/module/core/common.(*CommitBlock).CommitBlock(0xc0007295e0,
/chainmaker-go/module/core/common/committer.go:59 +0xa3b
http://chainmaker.org/chainmaker-go/module/core/common.(*BlockCommitterImpl).AddBlock(0xc013d5e7e0,
/chainmaker-go/module/core/common/block_helper.go:1040 +0x890
http://chainmaker.org/chainmaker-go/module/core/syncmode.(*CoreEngine).OnMessage.func2(0xc02fdf6708,
/chainmaker-go/module/core/syncmode/core_syncmode_impl.go:177 +0x6d

引发风险:

出现上述panic问题,即便是重启了节点,也会出现这种问题。

引发原因:

磁盘io读写过高,导致程序在读取bfdb文件出现超时情况,程序自动给出panic。

规避建议:

出现上述问题,不要慌,我们从以下几个点去思考:

1.  你的节点是否存储在网络盘,如果存储在网络盘出现问题很正常,具体情况我们参看问题1;

2.  如果我们节点就是存储在本地盘,但是可能磁盘io较高导致我们读取存储文件超时,我们可以用以下方案解决:增加存储配置,read_bfdb_timeout: 10000,添加位置如下。

 

disable_block_file_db: false #是否禁用区块文件存储功能, 默认为true,也就是未启用,新节点建议此处设置为false。
logdb_segment_async: false #区块文件异步落盘与否, 默认为false,也就是默认同步落盘,异步落盘时存在断电后数据损坏风险。
logdb_segment_size: 128 #区块文件大小,单位MB,默认64MB。
read_bfdb_timeout: 10000 # 读取 bfdb 下区块文件的超时时间,单位ms, 默认: 1000,即1s。

问题九:拉取镜像报错:You have reached your pull rate limit

问题现象:

 

toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
make: *** [docker-build] Error 1

引发风险:

拉取镜像直接无法拉取。

引发原因:

这是因为使用Docker的时候没有登录,导致拉取代码有限制。

解决办法:

方案1(推荐方案),去长安链官网网站拉去镜像:

docker pull hub-dev.cnbn.org.cn/chainmakerofficial/chainmaker:v2.3.5

图片

方案2,去Docker官方网站注册账号:https://hub.docker.com/。

2.  Linux登录账号密码,命令为docker login:

3.  如图所示:

图片

相关文章:

开源共建 | 长安链开发常见问题及规避

长安链开源社区鼓励社区成员参与社区共建&#xff0c;参与形式包括不限于代码贡献、文章撰写、社区答疑等。腾讯云区块链王燕飞在参与长安链测试工作过程中&#xff0c;深入细致地总结了长安链实际开发应用中的常见问题及其有效的规避方法&#xff0c;相关内容多次解答社区成员…...

【网络】深入理解 HTTPS:确保数据传输安全的核心协议

目录 引言一、HTTPS的基本概念1.1 什么是 HTTPS&#xff1f;1.2 HTTPS 的工作原理1.3 图解&#xff1a;HTTPS 通信过程1.4 HTTPS 与 HTTP 的区别1.5 为什么 HTTPS 更加重要&#xff1f; 二、SSL/TLS协议的核心2.1 SSL/TLS 协议的作用2.2 SSL/TLS 的工作流程2.2.1 握手阶段2.2.2…...

C/C++中使用MYSQL

首先要保证下载好mysql的库和头文件&#xff0c;头文件在/usr/include/mysql/目录下&#xff0c;库在/usr/lib64/mysql/目录下&#xff1a; 一般情况下&#xff0c;在我们安装mysql的时候&#xff0c;这些都提前配置好了&#xff0c;如果没有就重装一下mysql。如果重装mysql还是…...

【GD32】(一) 开发方式简介及标准库开发入门

文章目录 0 前言1 开发方式选择2 标准库模板的创建3 遇到的问题和解决方法 0 前言 因为项目关系&#xff0c;需要使用GD32。之前对此早有耳闻&#xff0c;知道这个是一个STM32的替代品&#xff0c;据说甚至可以直接烧录STM32的程序&#xff08;一般是同型号&#xff09;&#x…...

轻松上手:使用Docker部署Java服务

文章目录 1. 什么是Docker&#xff1f;2. 为什么使用Docker部署Java服务&#xff1f;3. 如何使用Docker部署Java服务&#xff1f;步骤1&#xff1a;创建Dockerfile步骤2&#xff1a;构建Docker镜像步骤3&#xff1a;运行Docker容器 4. 注意事项5. 结语推荐阅读文章 在当今的云计…...

wormml_vgg19

创建环境 mamba install libopencv hdf5 -c conda-forge conda create -n st python3.6.2手动导入包 mamba install blas1.0mkl -c conda-forge mamba install hdf51.8.20hac2f561_1 -c conda-forge mamba install libopencv3.4.2h20b85fd_0 -c conda-forge mamba install l…...

Rust学习(二):rust基础语法Ⅰ

Rust学习&#xff08;二&#xff09;——rust基础语法Ⅰ&#xff1a; 1、关键字&#xff1a; 了解编程语言的同学都清楚&#xff0c;关键字在一门编程语言中的意义&#xff0c;所谓关键字就是语言的创造者及后续开发者们&#xff0c;以及定义好的具有特殊含义和作用的单词&am…...

【WebRTC】视频发送链路中类的简单分析(下)

目录 1.任务队列节流发送器&#xff08;TaskQueuePacedSender&#xff09;1.1 节流控制器添加RTP数据包&#xff08;PacingController::EnqueuePacket()&#xff09;1.2 监测是否要处理Packet&#xff08;PacingController::MaybeProcessPackets()&#xff09; 2.数据包路由&am…...

HTML(超文本标记语言)

HTML&#xff08;超文本标记语言 - HyperText Markup Language&#xff09;是一种用于创建网页的标准标记语言。 HTML 最初是由蒂姆・伯纳斯 - 李&#xff08;Tim Berners - Lee&#xff09;在 1990 年左右开发的。当时的目的是为了让世界各地的科学家能够方便地共享和交流信息…...

CatBoost中目标变量统计

CatBoost中的目标变量统计&#xff08;Target Statistics&#xff09;是其处理分类特征&#xff08;Categorical Features&#xff09;的核心技术之一。目标变量统计是一种特殊的编码方法&#xff0c;通过利用目标值信息生成数值特征&#xff0c;从而替代传统的独热编码或其他处…...

WSL与Ubuntu系统--使用Linux

WSL与Ubuntu系统--使用Linux 前言基础教学视频卸载链接网络配置方法1方法2 正式安装步骤步骤1 基本命令修改网络配置Ubuntu系统的导出与导入文件操作给Ubuntu创造界面--也就是在装一个有界面的UbuntuHyper-v与windows主机文件共享 前言 需要链接梯子&#xff0c;并且梯子十分稳…...

操作系统离散存储练习题

1. (简答题)分页存储管理系统具有快表&#xff0c;内存访问时间为2ns&#xff0c;检索快表时间为0.5ns&#xff0c;快表命中率为80%&#xff0c;求有效访问时间 -分析&#xff1a;首先访问缓存&#xff08;快表&#xff09;&#xff0c;如果没有找到访问内存&#xff08;页表&…...

性能高于Transformer模型1.7-2倍,彩云科技发布基于DCFormer架构通用大模型云锦天章

2017年&#xff0c;谷歌发布《Attention Is All You Need》论文&#xff0c;首次提出Transformer架构&#xff0c;掀开了人工智能自然语言处理&#xff08;NLP&#xff09;领域发展的全新篇章。Transformer架构作为神经网络学习中最重要的架构&#xff0c;成为后来席卷全球的一…...

PHP反序列化_3-漏洞利用

1. 信息收集与分析 确定目标应用程序&#xff1a;首先需要找到存在反序列化漏洞的 PHP 应用程序。这可能是一个网站、Web 服务、内部系统等。可以通过网络扫描、漏洞报告、安全评估等方式来发现潜在的目标。分析应用程序逻辑&#xff1a;了解目标应用程序的功能和业务逻辑&…...

2.初始sui move

vscode安装move插件 查看sui 客户端版本号 sui client --version 创建新项目 sui move new <项目名> sui move new hello_world 项目目录结构&#xff1a; hello_world ├── Move.toml ├── sources │ └── hello_world.move └── tests└── hello_world…...

数据结构--排序算法

目录 一.排序相关概念二.常见排序算法1.堆排序2.插入排序3.希尔排序4.选择排序5.冒泡排序6.快速排序1.快速排序--递归(未优化)2.快速排序--递归(优化)3.快速排序--非递归 7.归并排序1.归并排序--递归2.归并排序--非递归 一.排序相关概念 排序&#xff1a;使一串记录按照某个关…...

day60 图论章节刷题Part10(Floyd 算法、A * 算法)

Floyd 算法 思路&#xff1a;本题是多源最短路问题&#xff0c;使用Floyd算法求解。Floyd 算法对边的权值正负没有要求&#xff0c;核心思想是动态规划。 我们使用动规五部曲来理解和应用Floyd算法&#xff1a; 1、确定dp数组&#xff08;dp table&#xff09;以及下标的含义…...

UI架构解说

UI&#xff08;用户界面&#xff0c;User Interface&#xff09; 是指用户与软件或硬件系统进行交互的界面。 它是用户与系统之间的桥梁&#xff0c;允许用户通过视觉元素、交互组件和反馈机制来操作和控制应用程序或设备。 UI 设计的目标是提供直观、易用和愉悦的用户体验&a…...

车机安装第三方软件实现打开软件全屏教程

简介 越来越多的车友实现安装第三方软件了&#xff0c;但是有的车机的状态栏或者导航栏会遮挡安装的第三方软件。这样的话&#xff0c;第三方软件就会显示不全&#xff0c;体验感非常不好。所以&#xff0c;下面我教一下大家如何使用东君应用管家来实现打开第三方软件全屏。 全…...

八大技术架构与演进2

垂直分库架构 当数据量不断增大&#xff0c;大量的数据都存储在一个库中就已经不太够用了&#xff0c;这时候就可以讲不同的数据分类别存储Mycat也支持在大表拆分为小标的情况下进行访问 但是这种做法其实是增加了数据库的运维难度&#xff0c;这种其实也就叫做分布式数据库&…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...