撰稿人: 卡酷少 kakushao
在區塊鏈所面臨的諸多問題中,區塊交易的處理速度,和區塊鏈之間的互通性都極大程度的限制了區塊鏈的應用空間。要實現更快的交易確認速度,拓寬區塊鏈向外鏈接的橋樑,測鏈和分片都將是實現其做爲價值網絡體系的關鍵方案。數據庫
本文將依託結合現有區塊鏈,來介紹和對比幾種測鏈跨鏈方案。安全
根據V神的設想,以太坊的分片技術,就是在網絡分區的基礎上,並行地架構一條或多條分片鏈,並將交易在所屬分片鏈上,也就是主鏈外進行確認,並在固定間隔時間將分片區塊頭與主鏈同步。這樣能夠有效地分散主鏈請求的壓力。網絡
在此咱們就不在作過多解釋,本公衆號以前有一篇關於以太坊分片技術的介紹,詳情請點擊跳轉連接。架構
在阿希鏈系統上,每一個DApp都是運行在一條測鏈上的。其與主鏈的關係,一如進程之於操做系統。而且每條進程都跑在一個沙箱隔離機制下的JavaScript虛擬機上。阿希主鏈提供至關於底層的基礎設施。提供了好比數據庫的讀寫,網絡通訊的API,以及加密的API等等支持。這種設計的好處,是測鏈的代碼和數據的獨立。這實際上也是一種自然的分片機制。相似於以太分片鏈,阿希的每條測鏈也擁有獨立的見證人和獨立的網絡節點。分佈式
阿希鏈在測鏈的實現以外,還設計了跨鏈的互操做。這主要依賴於跨鏈網關的實現。在比特幣的跨鏈網關經過提案系統的投票並上線之後,用戶就能夠利用這個網關進行比特幣對阿希鏈的充值和提現。用戶首先須要在阿希鏈上完成一個開戶的動做,這個帳戶由跨鏈網關來維護。用戶在完成對這個帳戶充值之後,跨鏈網關就會調用相關的合約,在阿希鏈上對這個用戶發行一筆等值的比特幣資產。這個比特幣資產就能夠像其餘阿希鏈上的資產同樣,能夠在阿希鏈的生態裏流通,也能夠導入到DApp中使用。性能
其餘主鏈的資產在導入阿希鏈的過程當中,須要通過一個跨鏈網關。跨鏈網關是一個有多個節點共同維護的多簽名地址。這些節點由提案系統選舉出來,各自同時維護着其餘主鏈的全節點和阿希鏈的全節點。跨鏈資產到阿希鏈的充值、提現等工做都是由這些節點來完成。資產從原來的主鏈進入網關之後,會在原來的主鏈上鎖定,同時阿希鏈會解鎖一筆對應的資產,用於阿希鏈內部使用。用戶能夠隨時從阿希鏈提現到原來的主鏈,這個過程和充值的過程徹底相反。這是一種經過多簽名聯盟來實現的雙向資產錨定的方案。區塊鏈
舉例說明,假如Alice想要用BTC向阿希鏈的Bob發起一筆價值1BTC的交易。那麼,Alcie首先須要註冊一個阿希鏈帳戶,並對這個帳戶進行充值。在發起轉帳時,跨鏈網關調用相關合約,在阿希鏈上對Bob進行一筆等值的比特幣資產轉帳。(注意,這筆資產,既不一樣於BTC也不一樣於XAS,而是一種相似於XAS-BTC的代幣。)以後這筆比特幣資產就能夠在阿希鏈的生態裏自由流通。測試
總結而言,跨鏈網關具備必定的中轉和管理功能,可以在儘可能實現分佈式的狀況下,以見證節點多籤的方式來保證交易的可靠性。在應對交易撤銷方面,在不主張主鏈回滾的前提下,給出一天時間延時寫入區塊。是相對比較可行且完善的方案。加密
Zilliqa是一個高吞吐量的公鏈平臺。也是截至目前,在其測試網絡(testnet)上實現分片技術的僅有的兩個中的一個區塊鏈項目。
Zilliqa清楚區分了狀態(state)和交易歷史(transaction history)。狀態是指當前的狀況,比起存儲交易歷史,狀態存儲空間佔用較小,但使用頻率較高。Zilliqa採用的方式是:每一個節點擁有當前狀態的拷貝,但交易歷史將被分片。由於交易歷史使用頻率比起當前狀態要低,因此這將很大程度上減小分片引發的頻繁通訊問題。
提起Zilliqua就不得不提QuarkChain。QuarkChain也是基於分片技術實現了高性能點對點交易系統。在系統結構上分爲兩層:分片層(sharding layer)和用於驗證前者的底層(root layer)
其在分片實現上與Zilliqa最大的區別:
Zilliqa只支持交易歷史的分片,但QuarkChain聲稱支持狀態和交易歷史分片
片間交易(cross-sharding)能力比起Zilliqa更強。
相比而言,首先,以太坊上實現分片,首先須要實現Casper。Casper和分片的實現將很大程度上改善以太坊的短板。其次Zilliqa和Quarkchain已在測試網絡上成功運行了分片技術,但二者的實現是有區別的。
與傳統的數據庫不一樣,Covenant SQL是一個分佈式數據庫,也是一個區塊鏈數據庫,一個哈希上鍊的數據庫。爲了更便於用戶使用,Covenant SQL支持SQL-92,兼容各類現有SQL語言框架。Covenant SQL不涉及太多的共識機制,主要關注點是在數據上鍊存儲(hash值存儲)。
Covenant SQL的底層架構以下圖:
在DPOS的共識下,Covenant SQL由mainer輪流出塊。其出塊邏輯大體以下:
須要注意的是,CovenantSQL並無直接將SQL鏈的接口暴露給客戶端。而是中間隔了一層數據庫實例。因此底層的數據相對更加安全一些。