(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 |
更多,请参考版本与兼容性描述。
(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被拒,无法快速恢复视图的问题
(2020-06-01)
修复
- 修复重启或新增群组时,群组区块推送失效的问题
(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 |
更多,请参考版本与兼容性描述。
(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 |
更多,请参考版本与兼容性描述。
(2019-12-24)
新特性
- 构建交易和回执的默克尔树,提供一种基于SPV的证明方式
- 插件化缓存机制并提供缓存开关
更新
从流程、存储、协议三方面进行优化,提升性能。
- 异步提交RPC交易到交易池
- 并行化对交易池中交易的处理操作
- 优化特定数据的缓存策略
- 优化交易并行执行过程中锁粒度
- 优化部分对象的访问方式,减少拷贝花销
- 限制表名最大长度,从64调整为50
- 以二进制方式对区块数据和nonce数据进行编码存储
- 移除数据落盘阶段对部分表的排序和hash计算序和hash计算
- 优化区块同步策略
- 优化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 |
更多,请参考版本与兼容性描述。
(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 |
更多,请参考版本与兼容性描述。
(2019-09-02)
修复
- 修复getConsensusStatus和getPbtView RPC接口访问线程不安全的函数导致的节点死机
- 修复rocksdb选项设置导致的内存问题
兼容性
同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以上 |
更多,请参考版本与兼容性描述。
(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以上 |
更多,请参考版本与兼容性描述。
(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+ |
更多,请参考版本与兼容性描述。
(2019-03-18)
架构
- Add
- 新增群组架构,各群组独立共识和存储,在较低运维成本基础上实现系统吞吐能力横向扩展
- 新增分布式数据存储,支持节点将数据存储在远端分布式系统中,实现计算与数据隔离、高速扩容、数据安全等级提升等目标
- 新增对预编译合约的支持,底层基于C++实现预编译合约框架,兼容solidity调用方式,提升智能合约执行性能
- 引入evmc扩展框架,支持扩展不同虚拟机引擎
- Update
- 升级重塑P2P、共识、同步、交易执行、交易池、区块管理模块
协议
- Add
- 实现一套CRUD基本数据访问接口规范合约,基于CRUD接口编写业务合约,实现传统面向SQL方式的业务开发流程
- 支持交易上链异步通知、区块上链异步通知以及自定义的AMOP消息通知等机制
- Update
- 升级以太坊虚拟机版本,支持Solidity 0.5.0版本
- 升级RPC模块
安全
- Update
- 升级落盘加密,提供密钥管理服务。开启落盘加密功能时,依赖KeyManager服务进行密钥管理
- 升级准入机制,通过引入网络准入机制和群组准入机制,在不同维度对链和数据访问进行安全控制
- 升级权限控制体系,基于表进行访问权限的设计
工具
- Add
- 提供入门级的搭链工具
- 提供模块化的单元测试和端对端集成测试,支持自动化持续集成和持续部署
兼容性说明
2.0版本与1.0版本数据和协议不兼容,合约兼容。如果要从1.3版本升级到2.0版本,需要做数据迁移。