[v2.3.8][PermissionedWithCert] CHAIN_CONFIG-CORE_UPDATE 疑似未严格校验历史请求序列,旧治理请求可覆盖新链配置
【问题分类】
- bug
- P2P网络相关(包含libp2p,liquid)
- 链账户身份与权限相关(证书问题、public、多签投票问题)
- 核心交易引擎相关(交易池、DAG)
- 共识相关
- 智能合约相关
- 存储相关
- SDK相关
- 长安链CMC工具
- 长安链管理台
- 长安链浏览器
- 长安链合约IDE
- 长安链web签名插件
- 跨链相关
- 轻节点相关
- 隐私计算相关
- 密码学相关
- 环境依赖
- 其他补充:链配置系统遵守CHAIN_CONFIG,治理请求序列之间的加密
【问题描述】(请对问题进行描述,方便定位问题)
在 ChainMaker v2.3.8、PermissionedWithCert 模式下测试 CHAIN_CONFIG-CORE_UPDATE 时,发现一个疑似与链配置序列错误校验有关的问题。实验中预先构造完成并背书的治理请求 A,在另一个成功执行并推进链配置序列后,仍然提交原始请求 A。请求 A 的 Payload、签名和完整 TxRequest 字节在 B 执行前已经固定,B修改后执行后没有重新构造、或重新签名A。 实际结果是:1. 请求B成功执行,链配置序列从9推进到10;2. B 将 tx_scheduler_timeout 从 10 更新为 11;3. 此时提交对方保存的历史请求A;4. 请求A 返回SUCCESS;5. 链配置序列从10继续变为11;6. tx_scheduler_timeout 被历史请求 A 从 11 改回 10。因此,历史请求 A 在其严格检测的链配置状态已经发生变化后,仍然能够被接受并覆盖较新的链配置。可能存在问题:已完成背书的旧治理请求可能在较新的链配置后生效继续使用;旧请求可能覆盖或回滚较新的链配置;链配置序列可能无法完全历史阻止治理请求重放;
【相关日志文件】(如果有报错日志请贴图,或者上传附件)
【系统信息】(请填写系统信息,方便定位问题)
- chainmaker-go version * : [v2.3.8]
- OS & version * : Ubuntu Server 24.04 ARM64
- docker镜像 version:
-
管理台 version:
- 如果是管理台的相关问题,请附带管理台版本,如果不是可忽略。
-
区块浏览器 version:
- 如果是浏览器的相关问题,请附带浏览器版本,如果不是可忽略。
-
合约IDE version:
- 如果是合约IDE的相关问题,请附带合约IDE版本,如果不是可忽略。
-
web签名插件 version:
- 如果是web签名插件的相关问题,请附带web签名插件版本,如果不是可忽略。
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information



