CQL Q&A:CovenantSQL 测试网如何计费
原文发布在: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/…
相关文章