CQL Q&A:CovenantSQL 测试网如何计费

2022-04-11 00:00:00 数据 数据库 消耗 计费 代币
原文发布在:demo.covenantsql.io/forum/#/t/1…

Question by Triton: 

IPFS其实只是去中心化的文件存储,和区块链无关。BigchainDB用的是MongoDB作为数据的链下存储,用Tendermint做数据在链上的锚定,链上存放的应该是proof。CovenantSQL说自己是区块链数据库让人很迷惑,到底CovenantSQL把数据放在链上(Ledger)还是链下?放在链上完全没有必要且代价巨大;如果数据放链下,那多就是去中心化数据库而已。
我在为自己的一个项目选择去中心化数据库,所以想请教一下,使用CovenantSQL有没有GAS费用?押金多少?假设用户选择了3个数据节点,那么如果数据节点离线或者故障,CovenantSQL如何保证数据的availability?侧链上数据库实例之间是如何进行数据复制的?是对transaction logs的replay吗?这样,加入我在一个数据节点上执行了一个SQL insert指令,那么,这个指令将在侧链广播并在其他数据节点上进行replay?

Answer by auxten:

CovenantSQL(CQL)本质上是用了很多加密算法的“边缘数据库”(去中心数据库),数据本身是存储在 Layer2 的 Miner 中,Miner 是用我们修改过的 SQLite 作为链下存储的,数据可以参考这张图:

CQL 的写操作是按 Transaction 来进行两阶段提交(2PC) 同步的,以此来保证数据库 ACID。
CQL 运行是需要消耗 PTC(类似于GAS) 的,每条 SQL 消耗的 PTC 参考:

CovenantSQL 数据库采用与以太坊类似的 Gas 计费方式,Gas 与稳定代币 Particle 的换算单位(即 Gas Price)在创建时指定,对应的字段为 gas-price。如果未指定,则默认设置为 1。另一个与计费相关的字段是预付款 advance-payment,用于进行押金抵扣及后续查询计费,默认值为 20,000,000。例如:

cql create '{"node": 2, "gas-price": 5, "advance-payment": 500000000}'
Copy复制代码

则可以创建 gas-price 为 5,预付款为 500,000,000 的数据库。在矿机资源紧缺时,设置更高的 gas-price有助于创建请求被更快地被响应,但是也会消耗更多的代币。

目前暂时还只支持使用 CovenantSQL 的稳定代币 Particle 来进行计费,未来将会陆续支持其他币种。

进行数据库查询时具体扣费逻辑如下:

  • 对于读查询,消耗的 Gas 为返回的行数 rows_count
  • 对于写查询,消耗的 Gas 为结果中的 affected_rows
  • SQLChain 根据配置进行周期性结算上报总 Gas 消耗到主链,主链验证成功后从预付款中扣除 Gas * Gas Price 的代币

可以参考这里领取 PTC。
领取 PTC 之后创建数据库并指定足够的押金即可。

CQL 网络目前还处于测试网状态,计费形式还比较简单。我们保证的是:测试网期间使用 CQL 存储的数据会保留并由我们提供充足的 PTC 保证数据库在线可用,主网上线后我们也会进行平滑迁移。测试网的 PTC 除了不能进行交易,功能上会和正式网一致。

更多原理方面的介绍可以参考文档站:

developers.covenantsql.io/docs/zh-CN/… 

相关文章