Skip to content

Latest commit

 

History

History
441 lines (308 loc) · 17.7 KB

Changelog.md

File metadata and controls

441 lines (308 loc) · 17.7 KB

2.6.0

(2020-08-10)

新增

  • 新增对Solidity 0.6的支持
  • 新增对国产麒麟操作系统V10(Kunpeng-920/arm aarch64)的支持
  • 新增节点间时间对齐机制
  • 新增对IPv6的支持
  • 新增群组SDK白名单机制,默认关闭
  • 新增获取区块头的接口getBlockheaderByNumber/getBlockHeaderByHash
  • 新增支持配置区块执行超时时间

更改

  • rPBFT共识算法引入vrf随机数算法,进一步保证共识算法的安全性
  • evm引擎由aleth-interpreter替换为evmone
  • 升级EVMC接口版本为7.3.0
  • 源码编译要求GCC版本不小于5.4.0
  • 支持AMOP消息路由到节点自身
  • MySQL存储模式下区块等数据使用二进制存储并启动压缩

修复

  • 修复因为交易广播标记缓存没有清理干净导致的轻微内存泄露问题
  • 修复raft共识下,非leader节点交易池中的交易不能被打包的问题
  • 在MySQL存储模式下,Solidity合约写接口中调用Table的select接口时,偶现的Gas计算不一致问题
  • 用户自己生成的错误证书导致coredump问题
  • 在Solidity中使用汇编调用以太坊预编译合约0x1-0x9,对错误输入没有返回0的问题

兼容性

向前兼容,旧版本可以直接替换程序升级

推荐版本 最低版本 说明
控制台 1.1.0 1.0.4
SDK 2.6.0 2.0.4
generator 1.6.0 1.1.0 搭建新链需要使用该版本
浏览器 2.0.2 2.0.0-rc2
Solidity 最高支持 solidity 0.6.10 0.4.11
amdb-proxy 2.3.0 2.0.2

更多,请参考版本与兼容性描述

v2.5.0

(2020-06-05)

新增

  • 新增预编译合约,地址0x5,实现模指数运算
  • 新增预编译合约,地址0x6,实现椭圆曲线alt_bn128的加法
  • 新增预编译合约,地址0x7,实现椭圆曲线alt_bn128的乘法
  • 新增预编译合约,地址0x8,实现椭圆曲线配对操作用于zkSNARK验证
  • 新增预编译合约,地址0x9,实现blake2哈希函数
  • 新增流控功能,实现可配置节点出带宽、最大QPS
  • 新增ChainGovernance预编译合约,地址0x1008,实现基于角色的权限管理
  • 新增SDK连接节点支持国密SSL,可配置是否启用

更改

  • MySQL存储模式下,合约表的字段类型修改为mediumblob
  • 国密模式由编译选项修改为配置项
  • 优化存储模块openTable的锁实现
  • 优化区块数据编码为并行
  • 优化大对象析构耗时为异步
  • 优化日志输出机制,降低日志输出对性能的影响
  • PBFTBackup的存储由LevelDB修改为RocksDB
  • 默认开启Paillier同态加密和群签名功能
  • 重构libdevcrypto模块,优化代码结构,使用TASSL实现国密和非国密TLS连接
  • 优化MHD和交易池模块的线程数,减少内存占用
  • 优化MySQL存储适配器实现,优化ZdbStorage的代码实现
  • build_chain脚本使用私钥为secp256k1的根证书和机构证书
  • 更改节点只接受同一机构的SDK连接,可配置是否启用

修复

  • 修复同一个区块内修改Entry,后续交易查询该Entry结果出错的问题
  • 修复raft共识下,非leader节点交易池中的交易不能被打包的问题
  • 修复CachedStorage的一个死锁问题
  • 修复开启Binlog情况下,极端情况下,从Binlog恢复出错的问题
  • 修复特定情况下节点重启后Viewchange被拒,无法快速恢复视图的问题

v2.4.1

(2020-06-01)

修复

  • 修复重启或新增群组时,群组区块推送失效的问题

v2.4.0

(2020-04-17)

新特性

  • 支持动态群组生命周期管理
  • 支持网络流量和Gas统计
  • Precompiled合约支持Gas
  • 支持EVM Gas衡量标准插件化配置
  • 添加新接口sendRawTransactionAndGetProof推送交易回执、交易Merkle证明和交易回执Merkle证明

更新

  • CMake最低要求修改为3.7,支持依赖库多源下载

修复

  • 修复国密模式下ecRecover接口不可用问题
  • 修复国密模式、非国密模式下sha256接口返回值不一致的问题

兼容性

向前兼容,旧版本可以直接替换程序升级,替换后的节点修复v2.3.x中的bug,并新增了2.4.0的动态群组生命周期管理功能、网络流量和Gas统计功能,若要启用v2.4.0版本所有新特性,需重新搭链。

推荐版本 最低版本 说明
控制台 1.0.9 1.0.4
SDK 2.4.0 2.0.4
generator 1.4.0 1.1.0 搭建新链需要使用该版本
浏览器 2.0.2 2.0.0-rc2
Solidity 最高支持 solidity 0.5.2 0.4.11
amdb-proxy 2.3.0 2.0.2

更多,请参考版本与兼容性描述

v2.3.0

(2020-03-24)

新特性

  • 支持同态加密
  • 支持群签名和环签名
  • 实现一种新型的共识算法RPBFT,尽量减少节点规模对共识算法的影响
  • 提供键值型数据读写的KVTable接口
  • 支持合约生命周期管理

更新

  • rpc.listen_ip拆分成channel_listen_ip和jsonrpc_listen_ip
  • 提供合约写权限控制接口,包括合约写权限授权、撤回和查询
  • 简化并行交易配置
  • 推荐使用MySQL直连的存储模式替代External存储模式

修复

  • 修复特定兼容场景下的内存问题

兼容性

向前兼容,旧版本可以直接替换程序升级,但无法启动此版本的新特性。若需要用此版本的新特性,需重新搭链。

推荐版本 最低版本 说明
控制台 1.0.9 1.0.4
SDK 2.3.0 2.0.4
generator 1.3.0 1.1.0 搭建新链需要使用该版本
浏览器 2.0.2 2.0.0-rc2
Solidity 最高支持 solidity 0.5.2 0.4.11
amdb-proxy 2.3.0 2.0.2

更多,请参考版本与兼容性描述

v2.2.0

(2019-12-24)

新特性

  • 构建交易和回执的默克尔树,提供一种基于SPV的证明方式
  • 插件化缓存机制并提供缓存开关

更新

从流程、存储、协议三方面进行优化,提升性能。

1. 流程

  • 异步提交RPC交易到交易池
  • 并行化对交易池中交易的处理操作
  • 优化特定数据的缓存策略
  • 优化交易并行执行过程中锁粒度
  • 优化部分对象的访问方式,减少拷贝花销

2. 存储

  • 限制表名最大长度,从64调整为50
  • 以二进制方式对区块数据和nonce数据进行编码存储
  • 移除数据落盘阶段对部分表的排序和hash计算序和hash计算

3. 协议

  • 优化区块同步策略
  • 优化PBFT消息转发策略
  • 优化Prepare包结构
  • 优化交易广播策略
  • 优化交易转发策略

修复

  • 修复特定兼容场景下的缓存bug

兼容性

向前兼容,旧版本可以直接替换程序升级,但无法启动此版本的新特性。若需要用此版本的新特性,需重新搭链。

推荐版本 最低版本 说明
控制台 1.0.7 1.0.4
SDK 2.2.0 2.0.4
generator 1.2.0 1.2.0 搭建新链需要使用该版本
浏览器 2.0.2 2.0.0-rc2
Solidity 最高支持 solidity 0.5.2 0.4.11
amdb-proxy 2.2.0 2.0.2

更多,请参考版本与兼容性描述

v2.1.0

(2019-09-18)

新特性

  • CA白名单功能
  • AMOP认证功能
  • 合约事件通知
  • 运行时启动新群组

更新

  • 支持channel Message v2协议
  • 节点连接支持域名配置
  • 部署合约的二进制长度放宽至256K
  • 交易出错打印更全面的日志
  • build_chain.sh生成的SDK证书名更名为sdk.crt和sdk.key
  • 为提升性能进行了代码实现细节的调整
  • 降低了节点内存的占用

修复

  • 修复了在某种场景下channel连接抛异常的错误

兼容性

向前兼容,旧版本可以直接替换程序升级,但无法启动此版本的新特性。若需要用此版本的新特性,需重新搭链。

推荐版本 最低版本 说明
控制台 1.0.5 1.0.4
SDK 2.1.0 2.0.4
generator 1.1.0 1.1.0 搭建新链需要使用该版本
浏览器 2.0.0-rc2 2.0.0-rc2
Solidity 最高支持 solidity 0.5.2 0.4.11
amdb-proxy 2.1.0 2.0.2

更多,请参考版本与兼容性描述

v2.0.1

(2019-09-02)

修复

  • 修复getConsensusStatus和getPbtView RPC接口访问线程不安全的函数导致的节点死机
  • 修复rocksdb选项设置导致的内存问题

兼容性

同v2.0.0

v2.0.0

(2019-07-05)

新特性

  • AMOP协议支持多播
  • AMOP协议支持二进制传输
  • JSON-RPC getTotalTransactionCount接口新增历史失败交易数统计

更新

  • RocksDB模式支持落盘加密
  • 使用TCMalloc优化内存使用

修复

  • 修复P2P模块偶现不处理消息的问题
  • 修复MySQL或External模式下未赋值字段,查询失败
  • 修复某些极端场景下同步错误的问题

兼容性

向前兼容,旧版本可以直接替换程序升级,但无法启动此版本的新特性。若需要用此版本的新特性,需重新搭链。

最低对应版本 说明
控制台 1.0.4以上
SDK 2.0.4以上
generator 1.0.0 搭建新链需要使用该版本
浏览器 2.0.0-rc2
Solidity 最高支持 solidity 0.5.2
amdb-proxy 2.0.2以上

更多,请参考版本与兼容性描述

v2.0.0-rc3

(2019-05-28)

新特性

  • 分布式存储:新增支持底层通过数据库连接池直连MySQL
  • 分布式存储:新增支持RocksDB引擎,搭建新链时存储默认采用RocksDB
  • 分布式存储:新增CRUD接口支持,控制台1.0.3以上版本提供类SQL语句读写区块链数据

更新

  • 完善ABI解码模块
  • 修改预编译合约和RPC接口错误码,统一为负数
  • 优化存储模块,增加缓存层,支持配置缓存大小
  • 优化存储模块,允许流水线提交区块。可配置[storage].max_capacity控制允许使用的内存空间大小
  • 移动分布式存储配置项[storage],从群组genesis文件移动到到群组ini配置文件中
  • 默认存储升级到RocksDB,仍支持旧版本LevelDB
  • 调整交易互斥变量的拼接逻辑,提高不同合约间交易的并行度

修复

  • 修复CRUD接口合约开启并行时可能出现的异常终止

兼容性

RC3向前兼容,旧版本可以直接替换程序升级,但无法启动此版本的新特性。若需要用此版本的新特性,需重新搭链。

最低对应版本 说明
控制台 1.0.3 1.0.3之前版本控制台可用,但无新特性
SDK 2.0.0-rc2以上
generator 1.0.0-rc3 搭建新链需要使用该版本
浏览器 2.0.0-rc2
Solidity 最高支持 solidity 0.5.2
amdb-proxy(原AMDB) 2.0.0以上

更多,请参考版本与兼容性描述

v2.0.0-rc2

(2019-04-25)

New Feature

  • 并行计算模型:可并行合约开发框架、交易并行执行引擎(PTE)
  • 分布式存储:AMDB、SQLStorage

Update

  • 优化了区块打包交易数的逻辑,根据执行时间动态的调整区块打包交易数
  • 优化了区块同步的流程,让区块同步更快
  • 并行优化了将交易的编解码、交易的验签和落盘的编码
  • 优化了交易执行返回码的逻辑,让返回码更准确
  • 升级了存储模块,支持并发读写

Add

  • 加入网络数据包压缩
  • 加入兼容性配置
  • 交易编码中加入chainID和groupID
  • 交易中加入二进制缓存
  • 创世块中加入timestamp信息
  • 增加了一些precompile的demo
  • 支持用Docker搭链

Fix

  • RPC中处理参数时asInt异常造成程序退出的bug
  • 交易执行Out of gas时交易一直在交易池中不被处理的bug
  • 不同组间可以用相同的交易二进制重放的bug
  • insert操作造成的性能衰减问题
  • 一些稳定性修复

Detele

  • 删除不必要的日志
  • 删除不必要的重复操作

Compatibility

兼容版本 说明
节点 向下兼容 FISCO BCOS 2.0.0 rc1,不兼容FISCO BCOS 1.x 此版本可直接跑在v2.0.0-rc1的配置和数据上,但不会有此版本的新特性,仅仅相当于稳定性提升。若需要用此版本的新特性,需重新搭链。
控制台 1.0.2+
SDK 2.0.0-rc2+
generator 1.0.0-rc2+
浏览器 2.0.0-rc2+
Solidity 最高支持 solidity 0.5.2
AMDB 2.0.0+

更多,请参考版本与兼容性描述

v2.0.0-rc1

(2019-03-18)

架构

  • Add
  1. 新增群组架构,各群组独立共识和存储,在较低运维成本基础上实现系统吞吐能力横向扩展
  2. 新增分布式数据存储,支持节点将数据存储在远端分布式系统中,实现计算与数据隔离、高速扩容、数据安全等级提升等目标
  3. 新增对预编译合约的支持,底层基于C++实现预编译合约框架,兼容solidity调用方式,提升智能合约执行性能
  4. 引入evmc扩展框架,支持扩展不同虚拟机引擎
  • Update
  1. 升级重塑P2P、共识、同步、交易执行、交易池、区块管理模块

协议

  • Add
  1. 实现一套CRUD基本数据访问接口规范合约,基于CRUD接口编写业务合约,实现传统面向SQL方式的业务开发流程
  2. 支持交易上链异步通知、区块上链异步通知以及自定义的AMOP消息通知等机制
  • Update
  1. 升级以太坊虚拟机版本,支持Solidity 0.5.0版本
  2. 升级RPC模块

安全

  • Update
  1. 升级落盘加密,提供密钥管理服务。开启落盘加密功能时,依赖KeyManager服务进行密钥管理
  2. 升级准入机制,通过引入网络准入机制和群组准入机制,在不同维度对链和数据访问进行安全控制
  3. 升级权限控制体系,基于表进行访问权限的设计

工具

  • Add
  1. 提供入门级的搭链工具
  2. 提供模块化的单元测试和端对端集成测试,支持自动化持续集成和持续部署

兼容性说明

2.0版本与1.0版本数据和协议不兼容,合约兼容。如果要从1.3版本升级到2.0版本,需要做数据迁移。