ChainSQL logo

ChainSQL

ChainSQL是全球首个基于区块链的数据库应用平台,由 众享比特 公司开发维护。

设计目的

在不改原有项目整体结构的前提下,在逻辑层与数据层之间加入区块链,使得对数据库的操作记录不可更改、可追溯,并且与传统数据库相关项目对接比较方便。

功能

支持功能包括:

1. 基本功能

  • 网关配置数字资产

  • 数字资产的托管

  • 去中心化交易所

2. 数据库表操作

  • DDL:建表、表授权、删除表、表重命名

  • DML:插入、更新、删除、查询(支持复杂查询)

  • 数据库事务:可同时对多张表进行操作

3. 智能合约

  • 无缝兼容EVM智能合约(基于solidity版本:0.4.25-nightly.2018.8.1+commit.21888e24

  • solidity语法中增加了对表操作的指令

  • solidity语法中增加对数字资产的操作指令

  • 支持wasm智能合约虚拟机

系统架构

ChainSQL Framework

版本变化

详细版本变化请参考 github ,这里只列出自0.30.3版本开始的主要变化:

3.4.5

  • 实现以太坊布隆过滤器,及相关Web3接口

  • 增加新特性: BloomFilter ,特性生效时会在区块头中增加Bloom字段,用于存储布隆值

  • 增加预编译合约: ToolsPrecompiled

  • 新特性生效时间由2周改为12小时

  • 共识优化:当出现2v2(最新共识过的区块号不同导致无法达成共识)的情况时,增加拉取最新区块投票的方式以达到共识

  • Bug修复

3.3.1

  • 增加实名认证功能,实名认证账户才可以将系统币转出

  • 增加 GasPriceCompress 特性,特性启用时,最终消耗的手续费为之前的千分之一

  • 增加多个Web3接口实现,增加 [eth] 配置用于配置以太坊本地签名账户私钥

  • fullbelow缓存优化:没有区块同步任务时,每一分钟请求一次最新区块,以保持fullbelow缓存不被全部释放

  • 修复POP共识Bug:同步区块切换前要检查与前面共识过的区块是否是一条链的

  • 修复以太坊交易哈希计算方式

  • 修复区块同步Bug:会导致区块同步不完整,导致交易无法从交易池移除

  • 已有 chainID 状态的链, eth_chainId 返回现有 chainID 的后2个字节转成的整数

  • 修复Web3应用调用过程中的bug

3.2.0

  • 支持wasm合约虚拟机

  • 支持 Prometheus 对节点的监控,参考配置 [prometheus]

  • 增加peer连接证书准入机制,参考配置 [peer_x509_root_path][peer_x509_cred_path]

  • 支持与sdk之间的ssl连接,支持国密与非国密证书,参考配置 [server][trusted_ca_list]

  • 支持用户证书吊销功能

  • 超级管理员治理功能,参考配置 [govenance]

  • 增加删除子链功能

  • 增加对子链单独执行stop与start操作的功能

  • 增加新特性: ContractStorage,TableGrant,PromethSLEHideInMeta

3.1.0

  • 增加tx_result接口,只获取交易在链上的共识结果

  • 增加 ledger_tx_tables配置项,可配置节点是否写Transactions表

  • 修改 sync_tables配置项,支持同步某账户下所有表

  • 新增一张表一个SLE的特性 TableSLEChange ,新特性下一个账户下不再有只能建100张表的限制

  • 新增预编译合约功能,以及表的预编译合约接口

  • 增加对交易时间、交易所在区块号自填充字段的支持,详见 JavaSdkNodeSDKinsert/update 接口

  • 智能合约交易,合约执行过程中的异常可以在交易结果中返回

  • 建表时对多个字段创建索引,之前是创建联合索引,现改为为每个加 index 关键字的字段单独创建一个索引

  • 共识算法优化

3.0.0

2.0.0-shard

  • 支持分片共识

  • Java SDK版本更新,支持分片,但与2.0.0-shard之前的节点不兼容

1.1.4-pop

1.0.2-pop

  • 替换智能合约虚拟机执行器,由原先的evmjit替换为Interpreter,兼容新智能合约字节码

  • 防止SQL注入

  • raw字段查询条件支持null

  • 增加字段sfTxsHashFillField,实现表交易的历史哈希信息记录

  • 提高内存的释放速度

  • Bug修复

1.0.1-pop

  • 使用新共识算法,将tps提高到4000-6000,并且默认不生成空区块,减小空区块对存储的浪费

  • 新共识原理参考:POP共识算法原理

  • 新共识使用参考:POP共识版本使用

  • 兼容0.30.6版本上的所有功能


0.30.6

0.30.5

0.30.4

  • 智能合约添加数字资产接口,支持通过智能合约发数字资产

  • 表相关交易费用通过配置项可进行修改 drops_per_byte

  • 一次查询条数上限可配置 select_limit

  • 其它

0.30.3

  • 增加智能合约功能,并添加表操作指令

  • 增加接口:table_authr_get_sql_userr_get_sql_admin

  • r_get 查询接口请求中需要附加账户私钥的签名,以更准确地验证用户查询权限

  • 查询接口默认一次最多只能查询200条记录

  • 其它修改

运维相关