GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - CovenantSQL/CovenantSQL: A decentralized, trusted, high performance, SQL database with blockchain features

BranchesTags
Open more actions menu

Latest commit

 

History

4,041 Commits
4,041 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
api
api
 
 
bin
bin
 
 
blockproducer
blockproducer
 
 
chainbus
chainbus
 
 
client
client
 
 
cmd
cmd
 
 
conf
conf
 
 
consistent
consistent
 
 
crypto
crypto
 
 
docker
docker
 
 
kayak
kayak
 
 
keys
keys
 
 
logo
logo
 
 
merkle
merkle
 
 
metric
metric
 
 
naconn
naconn
 
 
pow/cpuminer
pow/cpuminer
 
 
proto
proto
 
 
route
route
 
 
rpc
rpc
 
 
sqlchain
sqlchain
 
 
storage
storage
 
 
test
test
 
 
twopc
twopc
 
 
types
types
 
 
utils
utils
 
 
worker
worker
 
 
xenomint
xenomint
 
 
.dockerignore
.dockerignore
 
 
.gitignore
.gitignore
 
 
.gitmodules
.gitmodules
 
 
AGENTS.md
AGENTS.md
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CLAUDE.md
CLAUDE.md
 
 
LICENSE
LICENSE
 
 
Makefile
Makefile
 
 
README-zh.md
README-zh.md
 
 
README.md
README.md
 
 
alltest.sh
alltest.sh
 
 
cleanupDB.sh
cleanupDB.sh
 
 
docker-compose.yml
docker-compose.yml
 
 
fmtGoDoc.sed
fmtGoDoc.sed
 
 
fmtGoImports.sh
fmtGoImports.sh
 
 
go.mod
go.mod
 
 
go.sum
go.sum
 
 

Repository files navigation

Go Report Card Build Status License GoDoc homebrew

中文简介

CovenantSQL(CQL) is a Byzantine Fault Tolerant relational database built on SQLite:

  • ServerLess: Free, High Availabile, Auto Sync Database Service for Serverless App
  • SQL: Most SQL-92 support.
  • Decentralize: Running on Open Internet without Central Coordination.
  • Privacy: Access with Granted Permission and Encryption Pass.
  • Immutable: Query History in CQL is Immutable and Trackable.
  • Permission: Column Level ACL and SQL Pattern Whitelist.

What is CQL?

  • Open source alternative of Amazon QLDB
  • Low cost DBaaS
  • Just like filecoin + IPFS is the decentralized file system, CQL is the decentralized database

Quick Start

CQL client supports:

  • macOS X 10.9+
  • Linux 2.6.23+ (x86, x86_64, armeabi-v7a, arm64-v8a)
Developer Guide

MacOS

  • 🍺 Homebrew users can just run:

    brew install cql
  • non-Homebrew users can run:

    sudo bash -c 'curl -L "https://mac.gridb.io/cql" | tar xzv -C /usr/local/bin/ --strip-components=1'

Linux

  • Just run:

    sudo bash -c 'curl -L "https://linux.gridb.io/cql" | tar xzv -C /usr/local/bin/ --strip-components=1'

To continue: TestNet Quickstart

SDKs

CovenantSQL Testnet is already released, have a try.

  • Golang
  • Java
  • NodeJS
  • Python
  • Microsoft Excel (by community)

How CQL works

3 Layers Arch

CovenantSQL 3 Layer design

  • Layer 1: Global Consensus Layer (the main chain, the middle ring in the architecture diagram):
    • There will only be one main chain throughout the network.
    • Mainly responsible for database Miner and the user’s contract matching, transaction settlement, anti-cheating, shard chain lock hash and other global consensus matters.
  • Layer 2: SQL Consensus Layer (shard chain, rings on both sides):
    • Each database will have its own separate shard chain.
    • Mainly responsible for: the signature, delivery and consistency of the various Transactions of the database. The data history of the permanent traceability is mainly implemented here, and the hash lock is performed in the main chain.
  • Layer 3: Datastore Layer (database engine with SQL-92 support):
    • Each Database has its own independent distributed engine.
    • Mainly responsible for: database storage & encryption, query processing & signature, efficient indexing.
For more details

Consensus Algorithm

CQL supports 2 kinds of consensus algorithm:

  1. DPoS (Delegated Proof-of-Stake) is applied in Eventually consistency mode database and also Layer 1 (Global Consensus Layer) in BlockProducer. CQL miners pack all SQL queries and its signatures by the client into blocks thus form a blockchain. We named the algorithm Xenomint.
  2. BFT-Raft (Byzantine Fault-Toleranted Raft)bft-raft is applied in Strong consistency mode database. We named our implementation Kayak. The CQL miner leader does a Two-Phase Commit with Kayak to support Transaction.transaction

CQL database consistency mode and node count can be selected in database creation with command cql create '{"UseEventualConsistency": true, "Node": 3}'

Comparison

Ethereum Hyperledger Fabric Amazon QLDB CovenantSQL
Dev language Solidity, ewasm Chaincode (Go, NodeJS) ? Python, Golang, Java, PHP, NodeJS, MatLab
Dev Pattern Smart Contract Chaincode SQL SQL
Open Source Y Y N Y
Nodes for HA 3 15 ? 3
Column Level ACL N Y ? Y
Data Format File Key-value Document Key-value, Structured
Storage Encryption N API Y Y
Data Desensitization N N N Y
Multi-tenant DIY DIY N Y
Throughput (1s delay) 15~10 tx/s 3500 tx/s ? 11065 tx/s (Eventually Consistency)
1866 tx/s (Strong Consistency)
Consistency Delay 2~6 min < 1 s ? < 10 ms
Secure for Open Internet Y N Only in AWS Y
Consensus PoW + PoS(Casper) CFT ? DPoS (Eventually Consistency)
BFT-Raft (Strong Consistency)

FootNotes

  • BFT-Raft: A CQL leader offline needs CQL Block Producer to decide whether to wait for leader online for data integrity or promote a follower node for availability. This part is still under construction and any advice is welcome.

  • Transaction: Talking about ACID, CQL has full "Consistency, Isolation, Durability" and a limited Atomicity support. That is even under strong consistency mode, CQL transaction is only supported on the leader node. If you want to do "read v, v++, write v back" parallelly and atomically, then the only way is "read v from the leader, v++, write v back to leader"

Network Stack

DH-RPC := TLS - Cert + DHT

Layer Implementation
RPC net/rpc
Naming Consistent Secure DHT
Pooling Session Pool
Multiplex smux
Transport Security Enhanced TLS
Network TCP or KCP for optional later

Test Tools we use

  • Global Network Topology Emulator is used for network emulating.
  • Liner Consistency Test

Papers

Our team members published:

  • Thunder crystal: a novel crowdsourcing-based content distribution platform
  • Analyzing streaming performance in crowdsourcing-based video service systems
  • Performance Analysis of Thunder Crystal: A Crowdsourcing-Based Video Distribution Platform

that inspired us:

  • Bitcoin: A Peer-to-Peer Electronic Cash System
  • S/Kademlia
    • S/Kademlia: A practicable approach towards secure key-based routing
  • vSQL: Verifying arbitrary SQL queries over dynamic outsourced databases

Performance

Strong consistency bench result (2 miners, 8 core aws c5.2xlarge): CovenantSQL bench

As seen above, the concurrency pressure on the database increased gradually in the first 5 hours, and the write TPS also increased. When the TPS no longer grows, the concurrent pressure is maintained for 100 hours.

Demos

  • CovenantForum
  • Weibo Bot @BlockPin
  • Markdown Editor with CovenantSQL sync
  • Web Admin for CovenantSQL
  • How CovenantSQL works(video)

Use cases

Traditional App & ĐApp use cases

Traditional App

Privacy data

If you are a developper of password management tools just like 1Password or LastPass. You can use CQL as the database to take benefits:

  1. Serverless: no need to deploy a server to store your user's password for sync which is the hot potato.
  2. Security: CQL handles all the encryption work. Decentralized data storage gives more confidence to your users.
  3. Regulation: CQL naturally comply with GDPR.

IoT storage

CQL miners are deployed globally, IoT node can write to nearest CQL miner directly.

  1. Cheaper: Without passing all the traffic through a gateway, you can save a large bandwidth fee. And, CQL is a shared economic database which makes storage cheaper.
  2. Faster: CQL consensus protocol is designed for Internet where network latency is unavoidable.

Open data service

For example, you are the most detailed Bitcoin OHLC data maintainer. You can directly expose an online SQL interface to your customers to meet a wide range of query needs.

  1. CQL can limit specific SQL query statements to meet the needs while also balancing data security;
  2. CQL can record SQL query records on the blockchain, which is very convenient for customers to check their bills for long-tail customers and billing, like this
  3. For customers with high performance requirements, Slave nodes can be deployed at the customer to meet the needs of customers with low latency queries while enabling almost real-time data updates.

Secure storage

Thanks to the CQL data history is immutable, CQL can be used as a storage for sensitive operational logs to prevent hacking and erasure access logs.

ĐApp

Storing data on Bitcoin or Ethereum is quite expensive ($4305 / MB on Ethereum 2018-05-15). Programming is very complicated due to the lack of support for structured data storage. CQL gives you a low-cost structured SQL database and also provides more room for ĐApp to exchange data with real-world.

TestNet

  • Quick Start
  • MainChain Explorer
  • SQLChain Explorer
  • Demo & Forum

Contact

  • Blog
  • YouTube
  • Mail
  • Forum
  • follow on Twitter
  • Join the chat at https://gitter.im/CovenantSQL/CovenantSQL
  • Add CovenantSQL to join WeChat group

About

A decentralized, trusted, high performance, SQL database with blockchain features

developers.covenantsql.io

Topics

bftblockchaincovenantsqlcqlcryptodatabasedbaasdecentralizedp2pqldbsqlsql-database

Resources

Readme
Apache-2.0 license
Activity
Custom properties

Stars

1.5k stars

Watchers

69 watching

Forks

146 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.