# 版本迭代-长安链·ChainMaker ChangeLog ## v2.3.6 ```sh 1. 优化事件订阅处理逻辑,无事件产生时也会返回区块高度,便于客户端本地记录; 2. 优化事件订阅内容,一次性返回一个区块中所有的事件; 3. 修复客户端订阅令牌桶不生效的BUG; 4. 新增以sender为key的令牌桶处理机制; 5. 优化订阅client端中断时,底链端仍需要监听多次退出信号后才真正退出的逻辑; 6. 优化监控指标的数量,并去掉raft/tikv等非chainmaker的相关监控指标; 7. 优化存储获取LastBlock及LastBlockHeight处理逻辑; 8. 新增go-sdk支持pk模式下国密tls双证书能力; 9. 新增java-sdk支持pk模式下国密tls双证书能力; 10. 修复在网络模块,多链情况下,并发写map问题导致panic的问题; 11. 修复pk模式下支持国密tls双证书对应脚本及模版问题; ``` ## v2.3.5 ```sh 1. 修复与VM断连导致节点OOM的BUG; 2. 修复vm-engine使用时GetStateWithExists存在性判断错误的BUG; 3. 修复合约版本升级为已有版本号,二进制不生效的BUG; 4. 修复commitRSetAndRollbackWSet逻辑缺陷; 5. 优化从节点simulate退出信号优化,避免由于dag错误导致需要等待simulate超时才能退出的问题; 6. 优化public模式下,链配置的SELF规则报ERROR日志; 7. 优化订阅的日志打印; 8. 新增底链同步模块状态查询接口,返回该节点获取到的最新的所有的节点及其区块高度; 9. 新增特性迁移密码机适配逻辑(从300迁移); 10. 新增节点P2P兼容SSL网关; 11. 新增节点P2P兼容正向代理(Proxy); 12. 修复Java SDK 高危漏洞修复; 13. 优化Go-SDK,支持Proxy配置; 14. 修复调用不存在的合约无gas计费问题; 15. 修复交易ID使用00, 00000等格式时会panic打印的BUG; 16. 优化Go-SDK客户端,增加创建时支持自定义双证书; 17. 修复事件订阅延时的BUG; 18. 修复归档restore操作时会偶发panic的BUG; ``` ## v2.3.4 ```sh 1. PK模式下支持sdk与底链使用grpcs连接; 2. 订阅更多自定义规则支持; 3. 日志增加自动压缩能力; 4. TBFT共识支持数据上报及SDK支持; 5. VM不同子链上的不同合约打印的日志可以独立输出; 6. net-liquid模块connLevel修复; 7. net-liquid模块simpleProtocolMgr避免无线循环; 8. net-libp2p解决certidnotmap问题; 9. net-libp2p转发不直连节点的交易; 10. 跨合约调用权限校验; 11. docker-go中增加部分INFO级别日志,用于判断偶发的docker执行比较慢的情况; 12. rpcserver当客户端订阅开始的区块高度大于当前节点最高区块时,从最高区块开始订阅(原先是报错),不再报错,而是打印一个Warn信息; 13. rpcServer在执行查询交易时,增加一个监控埋点,描述是一个查询某个合约、方法的调用; 14. 交易落盘(提交去数据库后),增加一个监控埋点,描述是一个执行某个合约、方法的调用; 15. 添加异常监控的埋点信息; 16. wasmer崩溃修复; 17. store修复SelectObject报错问题; 18. 国密enc证书在证书数组的顺序; 19. cmc和go-sdk archive_center_query_first配置失效; 20. solidity国密验签不通过时panic,修改错误处理流程吗,调整为返回err; 21. store修复tikv迭代器1条数据返回空问题; 22. store修复当配置disableHistorydb时,使用history迭代器 panic问题; 23. solidity国密验签支持base64等内容(自动识别); ``` ## v2.3.3 ```sh 1. AC模块重构,详细梳理权限配置体系及完善; 2. 支持Gas代扣使用系统合约进行指定Payer; 3. 跨合约调用流程优化,去掉验签等重复性操作; 4. 增加交易池满时是否广播交易的开关控制; 5. 增加共识节点校验区块时间戳范围,以控制节点间时间一致性; 6. RpcServer增加同步接口,可同步返回交易执行结果(非异步查询); 7. cmc链配置命令优化,支持同时配置多个配置项; 8. RpcServer支持空合约名匹配所有合约; 9. DockerGo合约SDK新增获取合约地址接口; 10. 存储增加BloomFilter能力,降低不存在value的查询消耗; 11. 同步模块支持指定节点同步,提高同步效率; 12. 修复MySQL模式下,合约名带"-"报错的问题; 13. 修复磁盘性能较差导致读取共识WAL超时的问题; 14. 优化lws磁盘不足时的错误提示; 15. 修复多链环境下停止某条链时,网络不能正常stop的问题; 16. 修复grpc服务器重启后,sdk-go连接不上服务器的问题; 17. 优化DockerGo时间统计; 18. 修复DockerGo配置解析错误的问题; 19. 优化DockerGo默认grpc buffer size值; 20. 优化solidity合约执行效率,串行调整为并行; 21. 修复solidity合约地址以"0"开头导致无法被跨合约调用的问题; 22. 修复solidity合约整型转换问题; 23. 修复solidity创建只有构造方法的合约时越界访问的问题; 24. 删除从节点重建DAG并进行比较的逻辑; 25. 优化调度算法,对锁粒度进行优化; 26. 优化存储写入配置项,调整write_buffer_size默认大小; 27. 修复Commit时AdditionalData并发panic的问题; 28. 修复Store打开文件句柄泄露问题; 29. 优化网络模块打印,防止磁盘打满; 30. 修复tikv迭代器操作关闭后导致整个连接不可用的问题; 31. 修复MaxBFT长时间高压运行导致OOM的问题; 32. 修复MaxBFT世代终止视图计算错误的问题; 33. 修复Raft共识落后数据较大时重启,小概率不能重新加入共识的问题; ``` ## v2.3.2 ```sh 新增底链支持归档中心功能 新增Gas代扣功能 #(交易新增payer字段,扣除payer的gas) 新增Gas费用可配置功能 #(可通过bc.yml配置文件或发生交易修改) 新增EVM新指令支持 新增vm-engine GRPC消息大小可调整功能 #(从固定4M调整成可配置,包括链和合约SDKv2.3.4分支) 新增EVM国密验签功能 新增查询多签状态返回值截断功能 #(安装合约多签可不返回合约源码,减少查询结果大小) 新增TBFT一致性引擎广播时间间隔可配置功能 新增网络断开后重试机制调整,最多间隔10分钟,最长90days功能 新增升级合约的权限支持只有合约创建者可升级功能 #(可通过bc.yml配置文件或发生交易修改) 新增恶意交易黑名单功能 #(加入黑名单的交易,被查询时,某些字段将被屏蔽。可通过bc.yml配置文件或发生交易修改) 修复双花问题 # (多节点中重复交易检查失败) 修复EVM跨合约调用失败问题 #(跨合约调用时读写集没有传递,跨合约调用失败结果没有压栈的bug) 修复多链高并发情况下vm-native生并发问题 修复同步模块时间配置,时间单位错误问题 修复节点投票达到quorum进入到新的共识阶段,仍然广播本节点生成的投票 修复Raft换主后不发交易,再换回原来主节点后,有一定几率不出块的问题 修复PK和PWK下批量交易池对批次签名只验签不校验principal的问题 # (未识别同步节点) 修复提交block时并发修改导致存储marshal报错的问题 修复存储区块时断电并发写原子性的问题 修复断电/崩溃后,恢复最新状态时recover跨bf读的问题 修复高并发时订阅协程泄漏导致OOM问题 优化docker-go跨合约调用性能 #(取消跨合约调用时加载被调用合约) 优化读Wal超时控制,读区块超时控制 #(磁盘性能较差时) 优化Net模块在节点启动时同步速度 优化Net模块goroutine数量管理 优化快速同步交易校验速度 优化存储写时交易防重检查 ``` ## v2.3.1 ``` 新增TBFT共识并行签名加速功能 新增共识模块启动条件增加区块高度校验功能 新增共识选举跳过落后节点功能 新增多签成功后可手动触发功能 新增已冻结合约可以升级功能 修复合约接口返回值错误:其他虚拟机跨合约调用docker合约时,sender接口未能正常返回发起调用的合约地址 修复快速同步节点query go合约,出现bad contract问题 修复vm-engine在合约安装过多lru错误问题 修复vm-engine手动重启问题 修复通过多签进行合约安装,未扣gas费的问题 修复安装合约失败不可再次安装问题 修复系统合约中含有随机性问题 修复PK模式下相关权限问题 修复go19版本兼容问题 修复高并发时pb反序列化问题 修复TBFT节点退出时未Unregister导致msgbus消息堆积问题 修复TBFT对某节点反复添加、移除共识节点导致共识列表查不到该节点信息问题 优化增量DB响应速度 优化批量交易池过期时间检查 优化高性能模式下网络连接 优化网络发送效率 优化添加某些模块的慢日志功能 优化日志输出级别及数量 完善EVM预编译合约 ``` ## v2.3.0 ``` 新增流水线共识算法:MaxBFT正式版 新增SDF接口硬件加密机支持 新增liquid中继功能 新增liquid NAT穿透(NAT traversal)功能 新增SDK-Go提供Gas预估功能 新增交易池模式:normal、batch 新增交易池新特性(Dump、Recover、Query、Retry机制、Clean机制) 新增native合约添加地址功能,可通过地址可查询系统合约 新增合约批量getState接口 新增同步模块提供主动关闭/重启请求服务的功能 新增查询接口:查询当前权限列表 新增整个区块在一笔交易中统一扣费 新增各模块日志可独立配置 新增国密TLS双证书体系 新增跨不同语言的合约调用 新增docker go合约SDK支持StoreMap 新增创建合约时除使用name进行存储合约外,同时生成合约地址并按地址存储 新增各合约语言的示例合约 新增CMC工具执行结果可选择显示为utf-8格式字符串(默认是base64编码字符串) 重构TBFT,独立TBFT共识仓库,优化TBFT消息机制 重构docker-go虚拟机引擎 重构内部模块回调机制 重构项目结构调整,所有个人Fork的第三方包迁移到工蜂上 优化同步模块性能,默认快速同步并且不需要进行交易查重 优化共识verify阶段增加多交易时间戳的超时校验 优化默认地址格式兼容以太坊 优化solidity合约revert时可携带合约预定义的错误message 优化取消solidtiy合约的method检查 优化TBFT可去除含随机函数合约交易 优化SDK和cmc查询区块和交易时支持截断长度太长的Value 优化docker-vm-go初始化函数扣费计算改为固定值 优化docker go合约内日志输出接口增加级别功能 优化docker go容器支持重启 优化vm-engine合约虚拟机引擎性能 优化跨合约调用进程复用 优化sdk-go、sdk-java同步获取交易结果方式,从轮询改为订阅 优化存储模块增加Slow Log 优化getstate时间的统计 优化flower节点验证DAG一致性逻辑 修复交易失败不扣除gas费问题 修复ac模块自定义权限删除不生效问题 修复wasmer不支持windows问题 修复跨合约调用循环调用时,导致阻塞的问题 修复创建合约报合约名非十六进制字符串问题 修复TBFT重启,导致共识状态不对,共识卡住的问题 修复TBFT删除节点可能导致panic的问题 修复查询不到带读写集区块的问题 修复windows启用文件系统存储失败问题 修复部署合约与跨合约调用的事件丢失问题 修复CA模式下gas充值问题 修复rust合约重复升级一个合约1000次以上,会有一定概率出现panic异常的问题 修复tbft在round为1时,若重启节点可能会导致卡住,无法出块 调整3种模式,默认配置文件中安装合约改为any,任何组织的任何角色均可安装。可根据业务需求自行修改 ```