<img src="https://github.com/CovenantSQL/CovenantSQL/raw/v0.8.1/logo/covenantsql_horizontal.png"
width="760">
<a href="https://goreportcard.com/report/github.com/CovenantSQL/CovenantSQL">
<img src="https://goreportcard.com/badge/github.com/CovenantSQL/CovenantSQL?style=flat-square"
alt="Go Report Card"></a>
<a href="https://codecov.io/gh/CovenantSQL/CovenantSQL">
<img src="https://codecov.io/gh/CovenantSQL/CovenantSQL/branch/develop/graph/badge.svg"
alt="Coverage"></a>
<a href="https://travis-ci.org/CovenantSQL/CovenantSQL">
<img src="https://travis-ci.org/CovenantSQL/CovenantSQL.png?branch=develop"
alt="Build Status"/></a>
<a href="https://opensource.org/licenses/Apache-2.0">
<img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"
alt="License"></a>
<a href="https://godoc.org/github.com/CovenantSQL/CovenantSQL">
<img src="https://img.shields.io/badge/godoc-reference-blue.svg"
alt="GoDoc"></a>
<a href="https://formulae.brew.sh/formula/cql">
<img src="https://img.shields.io/homebrew/v/cql.svg?color=blue&label=brew%20install%20cql"
alt="homebrew"></a>
CovenantSQL(CQL) 是一个运行在公网上的 SQL 数据库,并具有 GDPR 合规与去中心化等特点。
🍺 Homebrew 用户可以直接在命令行:
bash
brew install cql
非 Homebrew,可以执行:
bash
sudo bash -c 'curl -L "https://mac.gridb.io/cql" | tar xzv -C /usr/local/bin/ --strip-components=1'
在命令行中执行:
bash
sudo bash -c 'curl -L "https://linux.gridb.io/cql" | tar xzv -C /usr/local/bin/ --strip-components=1'
CQL 支持两种共识算法:
最终一致性 和 Block Producer 所在的 第一层 (全局共识层) ,CQL 的矿工在客户端将所有SQL查询及其签名打包成块,从而形成整个区块链,我们把这个算法命名为 Xenomint强一致性。我们把这个实现命名为 Kayak. 矿工 leader 会基于 Kayak 做 两阶段提交 来支持 Transaction.transaction可以用命令行 cql create '{"UseEventualConsistency": true, "Node": 3}' 来创建 最终一致性 CQL 数据库
| 以太坊 | Hyperledger Fabric | AWS QLDB | CovenantSQL | |
|---|---|---|---|---|
| 开发语言 | Solidity, ewasm | Chaincode (Go, NodeJS) | ? | Python, Golang, Java, PHP, NodeJS, MatLab |
| 开发模式 | Smart Contract | Chaincode | SQL | SQL |
| 是否开源 | Y | Y | N | Y |
| 高可用节点 | 3 | 15 | ? | 3 |
| 列级别 ACL | N | Y | ? | Y |
| 数据格式 | File | Key-value | Document | Filefuse, Key-value, Structured |
| 存储加密 | N | API | Y | Y |
| 数据脱敏 | N | N | N | Y |
| 多租户 | DIY | DIY | N | Y |
| 吞吐量(1秒延迟) | 15~10 tx/s | 3500 tx/s | ? | 11065 tx/s (Eventually Consistency) |
1866 tx/s (Strong Consistency) | | 一致性延迟 | 2~6 min | < 1 s | ? | < 10 ms | | 开放网络上的安全性 | Y | N | Only in AWS | Y | | 共识机制 | PoW + PoS(Casper) | CFT | ? | DPoS (Eventually Consistency)
BFT-Raft (Strong Consistency) |
强一致性,2个miner,aws c5.2xlarge 8核心cpu下的性能测试图:

如图所见,前5个小时对数据库的并发压力逐渐增大,写入 TPS 也随之提升,当 TPS 不再增长时,维持并发压力持续测试100小时。
BFT-Raft: 在一个 CQL leader 离线的情况下,有两种可能的选择:等待 leader 上线,以保证数据的完整性,或者提拔 follwers 以保证服务可用性;目前是需要一定的人工介入来进行策略选择,这部分仍在迭代中,欢迎任何建议。
事务 (Transaction): 说到 ACID,CQL 具有完整的 "一致性,隔离性,持久化" 和特定的 Atomicity 支持。即使在强一致性的模式下,CQL 事务只支持在 leader 节点上执行。如果你想要并发执行事务:"读取 v, v++, 写回 v ", 仅有的办法是:"从 leader 读取 v , v++, 从 leader 写回 v"
FUSE: CQL 有一个从 CockroachDB 移植过来的 FUSE 客户端,目前性能不是很理想,仍然存在一些小问题。但它可以通过如下的 fio 测试:
bash
fio --debug=io --loops=1 --size=8m --filename=../mnt/fiotest.tmp --stonewall --direct=1 --name=Seqread --bs=128k --rw=read --name=Seqwrite --bs=128k --rw=write --name=4krandread --bs=4k --rw=randread --name=4krandwrite --bs=4k --rw=randwrite
如果你是一个使用密码管理工具的开发者,比如 1Password or LastPass. 你可以使用 CQL 作为数据库并有以下优点:
CQL 矿工全球化部署,IoT 节点可以写入最近的矿工。
例如,你是一个非常在意细节的比特币 OHLC 数据维护者,你可以直接放一个 SQL 接口给你的用户以满足各种查询需求。
Slave 节点,以满足低延迟查询的需求,同时实现几乎实时的数据更新。由于 CQL 数据历史是不可篡改的,CQL 可以用来存储敏感的操作日志,以防止黑客攻击和删除访问日志。
在比特币或以太坊这种传统公链上存储数据非常昂贵(2018-05-15 以太坊上为 $4305 / MB),而且由于缺乏结构化数据的支持,代码实现非常复杂。但 CQL 可以给你一个结构化且低成本的 SQL 数据库,并为 ĐApp 提供了与真实世界交换数据的空间。
团队成员发表过的论文
这些启发了我们:
DH-RPC := TLS - Cert + DHT
| 层 | 应用 |
|---|---|
| 远程调用协议 | net/rpc |
| 寻址 | Consistent Secure DHT |
| 会话池 | Session Pool |
| 多路复用 | smux |
| 传输安全 | Enhanced TLS |
| 网络 | TCP or KCP for optional later |
CovenantSQL仍在建设中,测试网已经发布,尝试一下.
$ claude mcp add CovenantSQL \
-- python -m otcore.mcp_server <graph>