Releases: ChainSQL/chainsqld
Releases · ChainSQL/chainsqld
Release for version 3.4.5
功能
- 实现以太坊布隆过滤器
- 新特性:BloomFilter(区块头中增加Bloom字段)
- 增加预编译合约:ToolsPrecompiled,包含以下接口
//验证签名
function verify(string memory payload,string memory signature,string memory publickey) returns (bool);
//公钥转base58地址
function publicToAddress(string) returns (address);
//字符串连接
function stringConcat(string[]) returns (string memory);
//eth::sha256
function eth_sha256(bytes) returns (bytes32);
//eth::ripemd160
function eth_ripemd160(bytes) returns (bytes20);
//返回当前交易哈希值
function txHash() returns (bytes32);
- 支持以太坊接口批量请求,批量应答,请求格式如下:
[
{
"id": 0, "jsonrpc": "2.0", "method": "eth_getTransactionReceipt", "params": ["0x637f1bc7b60ee60aba4316e82376d46323c7df74271ec230ef2a34a4f7e5ea5f"]
},
{
"id": 0, "jsonrpc": "2.0", "method": "eth_getTransactionReceipt", "params": ["0x637f1bc7b60ee60aba4316e82376d46323c7df74271ec230ef2a34a4f7e5ea5f"]
}
]
- Amendments生效时间由2周改为12小时
优化
- 共识优化:当出现2v2(最新共识过的区块号不同导致无法达成共识)的情况时,增加拉取最新区块投票的方式以达到共识
Bug修复
- chainID()在sol合约中值不正确的bug
- 修复eth_estimateGas有时无法正确预估gas的bug
- 以太坊原生交易,在call指令中转账时,转账金额需除以1e+12
- eth_getTransactionReceipt 返回的日志中,合约地址不应该一直是同一个,应显示正确合约地址
- eth_call 在模拟交易调用时,需要访问当前交易修改的缓存
- 表同步模块:只有配置auto_sync=1时,加载auto_sync=1的数据库表进行同步
- 交易共识时,设置账户Sequence:只有交易Sequence与账户Sequence相等时,才设置为交易Sequence+1
Release for version 3.3.1
新功能
- 增加实名认证功能,实名认证账户才可以将系统币转出
- 增加
GasPriceCompress
特性,特性启用时,最终消耗的手续费为之前的千分之一 - 新增多个Web3 JsonRpc接口实现
新增配置
- 增加配置[remote_sync],默认为0,为0时表同步只根据本地区块进行同步,不走远程同步表数据
#开启远程同步的配置:
[remote_sync]
1
- 增加配置[ledger_sync],用于设置区块同步参数:
[ledger_sync]
request_map_count=1 #区块同步时同时请求的合约存储数量
enable_state_hash_set=0 #区块同步时是否启用状态树叶子节点哈希缓存
- 增加配置[allow_remote],用于设置是否允许跨域请求,默认为0
[allow_remote]
1
- 增加配置[eth],用于配置以太坊本地签名账户私钥
[eth]
account_private=0x5e47123b1cfaff98506c716bad61a0d2c500a0dc6bf3c2064fe7880a90558068
功能优化及Bug修复
- fullbelow缓存优化:没有区块同步任务时,每一分钟请求一次最新区块,以保持fullbelow缓存不被全部释放
- 修复POP共识Bug:同步区块切换前要检查与前面共识过的区块是否是一条链的
- 修复以太坊交易哈希计算方式
- 修复区块同步Bug:会导致区块同步不完整,导致交易无法从交易池移除
- 已有chainID状态的链,
eth_chainId
返回现有chainID的后2个字节转成的整数 - 修复Web3应用调用过程中的bug
Release for version 3.2.0
接口
- 新增接口
- sync_info:获取节点本地表同步信息
- tx_in_pool:获取交易池信息
- monitor_statis:统计链上交易数、合约数、账户数(需开启Prometheus监控功能)
- 修改tx_history接口:
- 过滤掉内部交易类型(EnableAmendment、SetFee、UNLModify)
- 增加交易类型过滤功能
- 对单个交易增加时间、交易执行结果字段
配置项
- Prometheus监控端口
[prometheus]
7007
- 超级管理员配置
[govenance]
admin=xxx
default_authority_enabled=0
- 节点准入控制
- 配置信任的根证书,用于在建立p2p连接的过程中验证对等节点的子证书
- 配置节点自身的子证书文件
[peer_x509_root_path]
./ca.cert
[peer_x509_cred_path]
./peer1.cert
- https,wss接口支持证书双向认证
https及wss协议的接口增加证书密钥及证书的文件路径配置,以及是否开启双向认证的配置。
[port_wss_admin_local]
port = 6006
ip = 0.0.0.0
admin = 127.0.0.1
protocol = wss
ssl_key = /Users/lascion/lcworkspace/cafile/server/server.key
ssl_cert = /Users/lascion/lcworkspace/cafile/server/server.crt
ssl_verify = 1
#如果开启双向认证,增加用于配置验证客户端证书的根证书文件路径
[trusted_ca_list]
/Users/lascion/lcworkspace/cafile/root/root.crt
说明:
- ssl_key: 节点wss服务证书密钥文件路径
- ssl_cert: 节点wss服务证书文件路径
- ssl_verify: 是否开启双向认证,配置为1开启,0为不开启,默认为0
- 表同步是否只支持本地同步
[remote_sync]
0
特性
ContractStorage
修改合约存储实现为二级存储树TableGrant
表授权一个授权对应一个SLEPromethSLEHideInMeta
在交易详情的Meta字段中隐藏Prometheus监控相关的SLE修改
功能
- 支持wasm合约虚拟机
- 支持 Prometheus 对节点的监控
- 增加peer连接证书准入机制
- 支持与sdk之间的ssl连接,支持国密与非国密证书
- 支持用户证书吊销功能
- 超级管理员治理
- 可授权转账、建表、建合约、发行数字资产
- 可冻结、解冻、销毁合约
- 增加删除子链功能
- 增加对子链单独执行stop与start操作的功能
优化
- 缓存优化
- 调节fullbelow缓存大小与过期时间
- malloc_trim做到chainsql定时任务中,一分钟调用一次
- 共识优化
- 优化节点启动初始化机制:init_announce
- 对transaction.db的处理实现读写分离
- 交易池增加定时任务移除LastLedgerSequence过期的交易
Bug修复
- 修复远程同步表失败导致表无法同步的bug
- 解决断块问题:close但未共识过的区块不从缓存中移除
- 其它
Release for version 3.1.0
新增接口
- 新增加获取交易证明的接口
tx_merkle_proof
与验证接口tx_merkle_verify
,用来验证交易在链上存在 - 增加tx_result接口,只获取交易在链上的共识结果
配置项
- 增加ledger_tx_tables配置项,可配置节点是否写Transactions表
[ledger_tx_tables]
use_tx_tables = 1 #是否向transaction.db中存储交易内容,默认为1
save_tx_binary = 0 #Transactions表中是否存储交易详情,默认为0
use_trace_table = 1 #是否使用TraceTransactions表,默认为1
- 支持同步某账户下所有表
[sync_tables]
#表的发行帐户地址(只同步非加密表)
z9VF7yQPLcKgUoHwMbzmQBjvPsyMy19ubs
#表的发行帐户地址 解密的私钥(加密表与非加密表都同步)
z9VF7yQPLcKgUoHwMbzmQBjvPsyMy19ubs xxWFBu6veVgMnAqNf6YFRV2UENRd3
- 一张表一个SLE的特性,新特性下一个账户下不再有只能建100张表的限制
[features]
TableSLEChange
共识优化
修改pop共识
- 在
init_time
阶段只收集最高区块,init_time
过后去要最高区块 init_time
阶段要的区块,后面5次超时后不回滚到validated_ledger
- 调整
viewChange
机制,修改达不成共识后一直abnormal
的问题
性能优化
- 解决数据量大时查询交易详情性能差的问题
- 解决上链完后再进行表同步,内存增涨过快的问题
- 解决上链完后再进行表同步,一张表同步不完其它表完全不同步的问题
功能优化
- 智能合约交易,合约执行过程中的异常可以在交易结果中返回
- 原来只能返回tefCONTRACT_REVERT_INSTRUCTION错误码,错误信息是这个错误码对应的信息
- 现返回tefCONTRACT_REVERT_INSTRUCTION错误码,错误信息是合约中require语句中自定义的错误
- 建表时对多个字段创建索引,之前是创建联合索引,现改为为每个加'index'关键字的字段单独创建一个索引
- 新增预编译合约功能,以及表的预编译合约接口
- 增加对交易时间、交易所在区块号自填充字段的支持
Release for version 3.0.0
Release for shard consensus version 2.0.0-shard
Release for new consensus version 1.1.4-pop
1. 主要修改
- 国密算法支持
- 预编译合约
- 单条交易最大支持500KB
- 表交易中新增 LONGTEXT 类型字段
- 内存泄露等Bug修复
2. 使用方式
- 新增配置项: [crypto_alg]
- 命令行接口修改: [validation_create] , [wallet_propose]
- SDK相关
- Node.js SDK 更新到版本 0.70.1
- JAVA SDK 更新到版本 1.5.7
Release for new consensus version 1.0.2-pop
主要修改
- 替换智能合约虚拟机执行器,由原先的evmjit替换为Interpreter,兼容新智能合约字节码
- 防止SQL注入
- raw字段查询条件支持null
- 增加字段sfTxsHashFillField,实现表交易的历史哈希信息记录
- Bug修复
- 提高内存的释放速度
Release for new consensus version 1.0.1-pop
1. 主要修改
- 共识算法由RPCA改为自研共识算法POP(Proof of Peers),详见POP 原理介绍
- 优化同步入库性能
2. 新共识版本特点
- Tps提升
- 发送tps 700-1000 提升到 4000-6000
- 共识tps 700-1000 提升到 4000-6000
- 入库tps 500 提升到 2000以上
- 出块时间可配, 最小出块时间为1秒,交易能更快达成共识
- 可配置是否生成空区块,默认不生成空区块,解决空区块带来的储存空间浪费问题
- ChainSQL原有功能及调用方法基本保持不变
3. 使用方式
- 配置文件中增加配置项[pconsensus]
- 区块中包含共识出错的交易,增加查询区块中交易的接口 [ledger_txs]
4. 注意点
- 兼容旧共识版本数据
- 每个共识节点都维护自己的交易池,从不同节点获取到的账户Sequence可能不同,所以同一账户只能连接同一节点发送交易
New Release for version v0.30.6
1.文档修改
- 首页添加中文说明文档
2.功能修改
-
调整区块缓存时间以及数量的默认值
-
新增加命令行接口
- [ledger_objects] ,统计账本中各类别账户的个数
- [node_size] ,查询和设置节点的缓存级别
- [malloc_trim] ,释放由glibc维护的,未还给系统的内存
-
配置文件中新增配置选项
- [ledger_acquire] ,同步区块相关的配置。
- skip_blocks ,表示同步区块时要跳过的区块。
- [missing_hashes] ,手动配置节点获取不到区块哈希的区块,每一行配置一个对应的区块号和区块哈希,用冒号分隔区块号和区块哈希。
- [ledger_acquire] ,同步区块相关的配置。
-
API支持
- nodejs-api 更新到版本 0.6.65
- chainsql-java-api 更新到版本 1.5.4
3.Bug修改
- 修复windows release版本,部署合约,节点crash的问题。
- 修复配置sqlite3数据库,表同步相关的问题。
- 修复节点运行中,切换节点网络,造成节点crash的问题。
- 修复节点启动时,数据库表同步的问题。
- 修复多次循环创建以及删除同一表后,数据库表无法正常同步数据的问题。
- 修复windows unity 版本编译的问题
- 修复锁仓发行币能超过信任额度的问题