值得注意的是,針對一個區塊的投票資訊儲存在下一個區塊中。Tendermint共識協議中的投票本質上是驗證者用自己的私鑰對一個區塊的簽名值,當前採用的是基於Ed25519曲線的EdDSA簽名演算法。隨著驗證者集合的增多,這些投票/簽名資訊也會佔據鏈上可觀的儲存空間而且驗證簽名也需要耗費可觀的計算資源。針對計算資源消耗問題,可以透過EdDSA簽名機制本身支援的批次驗證進行改進。要同時減少簽名值佔用的儲存空間和計算資源消耗的問題!則可以藉助聚合簽名機制。基於MuSig的聚合簽名機制,在簽名時各個簽名參與方之間需要多輪互動,考慮到驗證者可能遍佈全球各地,我們傾向於避免在共識協議必需 的互動之外引入更多的互動需求,也因此基於MuSig的聚合簽名機制不宜作為共識過程中的聚合簽名機制。與交易的聚合簽名不同的是,投票的簽名聚合功能上更為獨立,不受錢包的分層金鑰等其他業務邏輯的牽連,也因此可以考慮全新的簽名機制。這種情況下,更適合採用中提出的聚合BLS簽名機制來改進Tendermint Core專案的投票機制。
為了能夠更好地支援跨鏈和輕客戶端,每個區塊中還包含了上層應用內部狀態的Merkle樹根。Merkle樹屬於 可驗證資料結構(Authenticated Data Structure, ADS) ,為了支援輕客戶端的快速驗證,需要能夠支援存在性證明與不存在證明。而狀態需要逐塊更新的特性也要求ADS資料結構支援增量增加和修改,CoinEx Chain目前採用的是Tendermint Core專案自帶的基於資料結構IAVL+的ADS。
基於IAVL+的ADS與Ethereum的Merkle Patricia Tree (MPT) 相比並沒有顯著優勢。基於Ethereum的經驗可知,. 上層業務的狀態讀寫會被MPT資料結構放大多倍(從根節點出發逐步遍歷到葉子節點的過程需要多次訪問底層的鍵值對資料庫),從而成為潛在的效能瓶頸。ADS資料結構引入的讀寫放大的問題,可以透過更好的工程手段進行緩解,也可以透過設計全新的ADS結構來應對。可能的解決方案是開發-種全新的ADS, 它獨特的樹結構允許中間節點被儲存在KV資料庫之外,同時可以在程式異常重啟後方便地從KV資料庫恢復出中間節點,而不必擔心資料一致性的問題。透過把常用的中間節點快取在記憶體中,不常見的中間節點保持在磁碟上,確保大多數鍵值對訪問只需要訪問記憶體中的中間節點,從而大幅度減輕底層KV資料庫的壓力。
私鑰安全
數字貨幣領域的資產的所有權是透過私鑰進行簽名來界定的,建立一筆交易通常需要訪問私鑰,而私鑰的保護-直是個困難問題。數字錢包中私鑰通常是透過keystore檔案進行加密存放,加密該私鑰的金鑰通常由使用者口令等透過金鑰派生演算法生成。雖然keystore檔案僅儲存私鑰的密文,但是建立交易的時候仍然需要將其解密,也即完整的私鑰資訊總會暴露在系統中,同時也就有了洩露的風險。也可以採用冷錢包的策略,透過在需要時引入人工協助的方式將系統隔離開,從而降低私鑰洩露的風險。透過離線儲存,冷錢包降低了私鑰被惡意軟體竊取的可能性,是- 種透過管理手段提升安全性的方法。
安全性要求更強的場景通常使用硬體安全模組(Hardware Security Module)進行金鑰的防護,透過HSM模組生成私鑰、計算簽名可以保證明文私鑰資訊不會存在於HSM模組之外,從而保證私鑰的安全性。冷錢包方案和HSM方案能夠提升私鑰的安全性,但也帶來了使用的不便。而當涉及到多籤交易或者需要將私鑰的訪問許可權分散到多個成員時,要求每一方都使用冷錢包或者HSM提高了使用門檻,也進一步增加了使用的複雜性。另外Ledger的研究人員將在Black Hat 2019 上展示的對HSM的攻擊,也說明HSM自身也存在安全隱患。
多籤交易透過要求多個簽名來保證授權一筆交易,就需要多個私鑰共同配合的方式,攻擊者同時需要多個金鑰資訊才能夠轉移資產,作惡的難度加大。另外透過調整m和n的引數,多重簽名機制也提供了一定程度的安全冗餘,只要被竊取或者丟失的的金鑰個數小於n-m依然可以構造交易。然而多籤交易的交易費會更高,變更安全策略也不夠靈活,另外所有的簽名值和公鑰會公開在鏈上,導致簽名策略的洩露。
Shamir秘密分享方案可以解決多籤交易的問題。在SSS方案中,資產的管理權僅由一個私鑰控制。資產的轉移與標準交易一樣只需要一個簽名值。然而這個私鑰是由多個參與方控制的,這是透過把私鑰分割成多份並且在多個參與方之間分發這些金鑰分片來做到的。獲得足夠多的金鑰分片後,可以重構出原始的私鑰。與多籤交易類似,也可以選擇m-of-n的SSS方案。m-of-n的SS方 案中需要至少m個金鑰分片才能重構出原始金鑰,而透過m-1或者更少的金鑰分片無法獲得原始金鑰的任何資訊。m-of n的SSS方案與m-of-n的多籤方案一樣增強了金鑰安全性並能容忍金鑰(分片)遺失。SSS方案中重構原始金鑰的操作需要由某一方來完成。被選中的一方在完成原始金鑰重構之後會獲得原始金鑰的所有資訊。如果採用SSS方案,則必須相信被選中的一方在使用金鑰之後會擦除並且遺忘該金鑰的資訊。很不幸,在嘗試將金鑰控制分散化的過程中,再次引入了可信第三方和單點失敗的問題。
來自安全多方計算領域的研究進展帶來的多方閾值ECDSA簽名機制({m,n} thresholdECDSA) 同時具備Shamir秘密分享方案與多籤交易兩種方法的優勢:
1)支援與Shamir秘密分享方案類似的金鑰分割,但是在簽名時無需重構原始金鑰資訊,這也就避免了Shamir秘密分享方案中單點失敗的問題;
2)與多籤交易相比,最終體現在鏈上的相關資訊與傳統P2PKH交易相同,只需要一個簽名值,沒有增加交易的體積也無需暴露訪問控制策略,由於此時的交易與普通的交易無法根據鏈上資訊來區分,所以也提供了更好的隱私屬性。
CoinEx Chain會在錢包中支援ECDSA的閾值多方簽名機制,作為私鑰保護的增強方案。
DEX
CoinEx DEX公 鏈是基於Tendermint共識協議打造的專門用於去中心化交易的公鏈,在DEX公鏈上,使用者可以收發CET代幣,發行新的代幣並進行增發,燃燒,鎖定,解鎖等操作,以及建立交易對,交易下單,查詢交易歷史,競選成為驗證者節點等。
透過將資產的控制權返還使用者,使用者掌管自己的私鑰,可以避免中心化交易所帶來的單點失敗風險,而CoinEx Chain提供的多 方閾值ECDSA簽名機制能夠進一步增強使用者側的私鑰保護。藉助Tendermint共識協議以及精簡的鏈上功能實現秒級出塊速度與瞬時交易確認。透過資產上鍊、鏈上交易、鏈上撮合的策略,實現公平透明的交易體驗。區別於傳統的智慧合約發幣,DEX公鏈內建發幣模組,使發幣更加高效和安全。使用者無需許可即可釋出Token (包括但不限於穩定幣),同時可建立該Token相關交易對,省去中心化交易所冗長的稽覈流程和高昂上幣費用。DEX公鏈上每一步操作都是標準化的,每一步操作消耗的資源都是可預見的,因此DEX公鏈可做到高達每秒數千筆的交易處理速度。
CET透過主網對映的方式發行,CET除了可以作為鏈上交易的手續費之外,還可以作為抵押代幣,CET持有者可參與CoinEx Chain中的staking經濟。另外CET持有者也可進行提案的發起和投票,參與社羣治理。
CET主網對映
CoinEx基金會和CoinEx商業生態將協作完成CET的主網對映,CET持有者需要把ERC20CET充值到CoinEx交易所,主網上相應的CET會分發給CoinEx交易所,隨後使用者可在CoinEx交易所提取主網代幣CET,具體流程如下:
1)在主網上線前,交易所只允許充值ERC20CET,不允許提現
2)所有非鎖倉的幣都是使用者存在CoinEx交易所的幣
3)主網在啟動時,會將CoinEx交 易所中的ERC20 CET以及鎖倉的ERC20 CET做主網對映
4)開通主網CET的提現和充值
5)使用者建立CoinEx Chain主網帳戶地址後,可從CoinEx交 易所提現主網CET
6)使用者也可以提現到第三方錢包或者獨立錢包,使用主網CET參與Staking
CET分發
CET主網對映後的分佈如下:
CET激勵
如前所述,CoinEx會信守不增發CET的承諾,因此不會採用通脹的方式鑄造新幣。然而區塊激勵對於提高社羣參與度至關重要,因此在主網上線後,CoinEx基金會將分配約3.15億個CET,用於激勵初期驗證節點及staking參與者。預留CET激勵發放的總體時長與出塊間隔時間有關,激勵計劃按出塊速度為3s進行估算,每個區塊的具體獎勵金額參見下面的表格:
區塊獎勵之外,每個區塊的收益還包括區塊中交易的手續費。交易手續費包含兩個部分:通常意義上的Gas費用以及功能費。Gas費用是為 了防止對系統資源的惡意濫用,功能費部分主要用來提升鏈上生態的質量,防止惡意使用相關功能,確保使用者體驗。主網啟動時會設定特殊操作的功能費,而後期可以根據主鏈演進情況,透過社羣提案的方式對各個特殊操作的功能費進行調整。特殊操作包括:新Token的發行,新交易對上線,鎖定轉賬,新賬戶啟用以及交易撮合。
Token發行與交易
在鏈上發行新Token是無需審查的,任何人都可以發行Token,也可以為發行的Token建立新的交易對,與發行新Token一樣 ,建立新交易對也無需審查。為了保證新Token的流通性,為新發行的Token建立的第-個交易對必須是該新Token與CET之間的交易對。為了避免對系統資源的濫用,保證鏈上生態的質量,發行Token和建立新交易對會收取- -定金額的CET作為功能費。Token的Symbol符 號由2-8位字元數字組成,不可以數字開頭。Token的精度為8位(十進位制),Token發行最大數量為900億。 Token發行 者即為Token所有者(Owner),所有權可轉移給他人。
發行Token時的可選項有燃燒、增發、凍結地址、凍結幣種,並且這些選項只能在發行Token時指定,發行之後不可更改。如果Token發行時沒有開啟凍結地址和凍結幣種的選項,則該Token的流轉和持有都是自由且不受限制的。
開啟凍結地址選項後, Token Owner可按需凍結部分地址,被凍結地址中的該Token無法轉帳,也不能進行Exchange交易,但不影響地址中的其它Token。開啟凍結幣種選項後,Token Owner可按需對該Token進行凍結,凍結期間該Token的轉賬和Exchange交易被全域性禁止。Token全域性凍結期間Token Owner可以建立地址白名單,白名單中的地址可發起轉賬交易但不能進行Exchange交易。Token全 局凍結期間,Token Owner對Token的操作不受影響。
鏈上治理
CoinEx Chain的驗證節點初始數量為42個,未達到驗證節點數量上限時,任何人都可以透過發出CreateValidator交易來建立驗證者。網路驗證節點數量達到上限後,驗證節點按質押的CET數量進行排序,選取質押量最高的42個驗證者。
社羣透過先提案、再投票的方式來達成社羣治理,驗證者可以替委託人投票,但是委託人也有權對驗證者的投票進行覆蓋重投。
投票時有四種選項:同意,棄權,反對,強烈反對:
· 如果有大於1/3的人投強烈反對票,則提案失敗;
· 如果參與投票的質押代幣沒有達到所有質押代幣的40%,則提案失敗;
· 如果非棄權票中有超過1/2同意票,則提案透過
投票統計相關的比例值,都由引數進行配置,後續會具備透過提案調整引數的能力。
發起提案後,社羣需要向相關提案質押10000個CET代幣以防止提案的濫用。提案透過後會退回給原充值帳戶地址。提案因以下情況不透過時,相關的質押金額會被沒收不再退回,沒收的質押金額由系統保留將來用於社羣激勵。
· 充值未達到10000個CET,說明社羣對此提案不感興趣或不支援
· 如果參與投票的質押代幣沒有達到所有質押代幣的40%,則提案失敗;
· 有大於1/3的人投強烈反對票
交易撮合
同主流的中心化交易所一樣,我們採用基於訂單簿的撮合方式,如下圖所示:
訂單簿包含賣單列表(AskList) 和買單列表(BidList) , 賣單被標記為綠色,買單被標記為紅色。賣單總是希望拉高價格,買單總是希望壓低價格。目前只支援限價單,不支援市價單。如果賣-和買一的價格沒有交叉的話,市場是沒有成交的。
AskList和BidList內部的組織方式是,先按照價格排序,價格更好的單排在最前面,有資格優先成交;而價格相同的訂單,更早被打包上鍊的,即年齡更大的,有資格優先成交。在圖中,價格越低的賣單在AskList中排列得最靠佇列頭(靠下),而價格越高的買單在BidList中排列得最靠佇列頭(靠上)。
當賣一和買一的價格有交 叉的時候,比賣一價格高的買單,以及比買一價格低的賣單,會先按價格後按年齡來排序,逐一成交。圖中紫色方塊所圈出的賣單和買單,都有資格參與排序,最終有可能成交。最終它們是否能全部成交, 還要看它們當中賣的總量和買的總量。
使用者可以透過NewOrder交易提交新的賣單或買單到訂單簿中,也可以隨時撤銷訂單簿中由自己發出的訂單。Good Till Expire (GTE)訂單和Immediate Or Cancel (10C) 訂單在過期後都會自動地從訂單簿中刪除。前者會在預設年齡達到之後的UTC時間午夜零點過期,預設年齡可以透過支付更多的功能費來延長。I0C訂單會在進入訂單簿之後的下一個區塊過期(即只有一次被撮合的機會)。
鏈下撮合,訂單總是逐一被伺服器接受的,可以對它們按先來後到排出全序。在鏈上撮合最重要的不同點是,訂單是批次被打包上鍊的,對同一個區塊內部的訂單,無法對它們進行先來後到的排序。為了保證對同一個區塊內部的訂單一視同仁,我們採用“集合競價”的方式:每輪撮合,針對可以成交的所有買單和賣單,計算出一個單一的執行價格。決定執行價格的原則是:
1.使成交量最大化。
2.使剩餘量最小化。如果有超過一個的價格都能實現相同的交易量,則選擇剩餘量最小化的價格。剩餘量是指可接受執行價格的訂單中,殘餘下來未成交的數額。
3.市場壓力。如果多個價格都能滿足上述第1步和第2步的要求,那麼先確認目前市場對潛在價格的壓力是哪個方向的。如果剩餘量是正數,則買方壓力大,選擇更高的價格;如果剩餘量是負數,則賣方壓力大,選擇更低的價格。
4.當正的剩餘量和負的剩餘量同時存在時,以上一次成交時的執行價格為參考價格,選擇距離參考價格最近的價格。
無論是中心化交易所還是去中心化交易所,都需要應對搶先交易的問題。搶先交易是指藉助技術優勢或者市場優勢而預先獲知關於交易的資訊,提前預測成交價的變動並據此執行對自己有利的交易,這往往會使得市場的其他參與方蒙受損失。例如在中心化交易所場景下,交易所能夠看到更為全域性的交易資訊,從而在撮合交易之前,根據當前市場情況為自己炮製最優交易策略並優先成交自身交易以牟利。
CoinEx的DEX公鏈在設計上,天然地具有防止搶先交易的特性。首先,基於Tendermint的秒級出塊速度,使得進行搶先交易的時間視窗很小;其次,在P2P網路中,很難完整了解到究竟哪些訂單會被包括到下一個區塊中;再次,集合競價的價格生成機制,讓搶先的交易和同一個區塊內的其它交易相比,不具有明顯優勢。因此,普通使用者希望透過搶先交易牟利是非常困難的。
作為Validator,有權決定下一個區塊當中新增哪些訂單,它可以透過“審查攻擊”的方式,在區塊中包含自己專門]設計的訂單,而不包含那些同自己的訂單有衝突的訂單,以此來侵佔其它交易者的利益。但是,DEX上的所有資料和執行邏輯都是公開的,如果Validator頻繁地對他人的交易進行審查攻擊,同時插入並未經過全網P2P廣播的交易,那麼它的行為會很容易地被觀察到。這會損害它的信用,最終導致委託人撤銷對它的支援。
一項可能的改善是,透過“Commit- Reveal”機制,允許使用者選擇性地讓訂單的內容延遲揭示(例如延後2~3個塊),這樣當驗證者打包下一個區塊的時候無法看到當前交易系統所有的狀態,也使得想要構造能夠獲利的搶先交易更為困難。CoinEx團隊 會持續深入研究搶先交易問題,並在後續提供更為完善的解決方案。
總結
CoinEx Chain致力於打造下一代區塊鏈金融基礎設施,是為支援可程式設計現金而打造的一系列公鏈專案,目前的規劃中包含三條特定應用方向的公鏈:
1)支援去中心化交易功能的DEX公鏈;
2)支援智慧合約功能的Smart公鏈;
3)支援鏈上隱私保護功能的Privacy公鏈。
三條公鏈之間透過IBC鏈間通訊協議進行互聯互通,各司其職又相互配合提供完備的功能。
DEX公鏈透過資產上鍊、鏈上交易和鏈上撮合等功能,解決目前中心化交易所被廣泛詬病的安全性差、不透明等問題。透過將資產控制權歸還使用者、基於訂單簿的公平的鏈上撮合演算法、無需許可的上幣以及建立交易對的功能,DEX公鏈旨在構建透明、安全、無許可的自由金融平臺。底層的Tendermint共識提供的高TPS以及秒級交易確認的特性,能夠在最大程度上還原中心化交易所的體驗。
為了最大限度地提高交易處理效能,DEX公鏈選擇僅實現必要的功能。然而,功能更為豐富的金融應用依賴功能完備的智慧合約,而鏈上隱私保護也日益成為安全焦點。因此,在DEX公鏈之外,CoinEx團隊還將打造-條支援智慧合約功能的Smart公鏈以及支援鏈上隱私保護功能的Privacy公鏈: Smart公鏈為CoinEx Chain生 態提供智慧合約支援,為構建複雜的金融應用提供平臺; Privacy公鏈 基於最新的密碼學進展,例如Zether協議在賬戶 模型下提供交易金額、發起方以及接收方的資訊隱藏。
DEX公鏈、Smart公鏈以及Privacy公鏈不是相互隔離的孤島,透過基於中繼的跨鏈通訊解決方案實現互聯互通,功能互補。需要參與複雜金融合約的CET代幣可以透過DEX公鏈轉移到Smart公鏈,並在結束之後再轉回DEX公鏈。而需要參與代幣混淆的CET代幣也可以透過Privacy公鏈的隱私交易進行,並可以最終再返回DEX公鏈。這樣三條公鏈各司其職,在保證各自的交易處理速度和功能屬性之外,也可以聯合提供更為豐富更為安全的功能。在將來,CoinEx團隊也會根據社羣需求繼續打造特定應用的公鏈以進一步豐富CET的生態體系。
CoinEx團隊同時會對現有的技術基礎設施進行最佳化,這包括嘗試利用增量VDF機制改進基於PoS機制的公鏈的安全性,利用MuSig方案來改進多籤交易,減少鏈上空間佔用並增強多籤及交易的隱私屬性。利用聚合BLS簽名方案改進Tendermint共識協議的投票過程,減少投票資訊所佔用的鏈上儲存空間。另外,CoinEx團隊會透過閾值多方ECDSA簽名機制為使用者的私鑰保護提供更理想的解決方案。
關於更多CoinEx資訊:https://www.coinex.org/
更多區塊鏈專案介紹:http://www.qukuaiwang.com.cn/news/xiangmu
風險提示:區塊鏈投資具有極大的風險,專案披露可能不完整或有欺騙。請在嘗試投資前確定自己承受以上風險的能力。區塊網只做專案介紹,專案真假和價值並未做任何稽覈。