原文發佈在: demo.covenantsql.io/forum/#/t/1…
IPFS其實只是去中心化的文件存儲,和區塊鏈無關。BigchainDB用的是MongoDB做爲數據的鏈下存儲,用Tendermint作數據在鏈上的錨定,鏈上存放的應該是proof。CovenantSQL說本身是區塊鏈數據庫讓人很迷惑,到底CovenantSQL把數據放在鏈上(Ledger)仍是鏈下?放在鏈上徹底沒有必要且代價巨大;若是數據放鏈下,那最多就是去中心化數據庫而已。
我在爲本身的一個項目選擇去中心化數據庫,因此想請教一下,使用CovenantSQL有沒有GAS費用?押金多少?假設用戶選擇了3個數據節點,那麼若是數據節點離線或者故障,CovenantSQL如何保證數據的availability?側鏈上數據庫實例之間是如何進行數據複製的?是對transaction logs的replay嗎?這樣,加入我在一個數據節點上執行了一個SQL insert指令,那麼,這個指令將在側鏈廣播並在其餘數據節點上進行replay?
CovenantSQL(CQL)本質上是用了不少加密算法的「邊緣數據庫」(去中心數據庫),數據自己是存儲在 Layer2 的 Miner 中,Miner 是用咱們修改過的 SQLite 做爲鏈下存儲的,數據能夠參考這張圖:
node
CQL 的寫操做是按 Transaction 來進行兩階段提交(2PC) 同步的,以此來保證數據庫 ACID。
CQL 運行是須要消耗 PTC(相似於GAS) 的,每條 SQL 消耗的 PTC 參考:git
CovenantSQL 數據庫採用與以太坊相似的
Gas
計費方式,Gas
與穩定代幣Particle
的換算單位(即Gas Price
)在建立時指定,對應的字段爲gas-price
。若是未指定,則默認設置爲 1。另外一個與計費相關的字段是預付款advance-payment
,用於進行押金抵扣及後續查詢計費,默認值爲 20,000,000。例如:githubcql create '{"node": 2, "gas-price": 5, "advance-payment": 500000000}' Copy複製代碼
則能夠建立
gas-price
爲 5,預付款爲 500,000,000 的數據庫。在礦機資源緊缺時,設置更高的gas-price
有助於建立請求被更快地被響應,可是也會消耗更多的代幣。算法目前暫時還只支持使用 CovenantSQL 的穩定代幣 Particle 來進行計費,將來將會陸續支持其餘幣種。sql
進行數據庫查詢時具體扣費邏輯以下:數據庫
- 對於讀查詢,消耗的
Gas
爲返回的行數rows_count
- 對於寫查詢,消耗的
Gas
爲結果中的affected_rows
- SQLChain 根據配置進行週期性結算上報總
Gas
消耗到主鏈,主鏈驗證成功後從預付款中扣除Gas
*Gas Price
的代幣
能夠參考這裏領取 PTC。
領取 PTC 以後建立數據庫並指定足夠的押金便可。bash
CQL 網絡目前還處於測試網狀態,計費形式還比較簡單。咱們保證的是:測試網期間使用 CQL 存儲的數據會永久保留並由咱們提供充足的 PTC 保證數據庫永久在線可用,主網上線後咱們也會進行平滑遷移。測試網的 PTC 除了不能進行交易,功能上會和正式網一致。網絡
更多原理方面的介紹能夠參考文檔站:
區塊鏈