基于Tendermint共識(shí)協(xié)議和Cosmos SDK打造的CoinEx Chain公鏈介紹
數(shù)字貨幣的中心化交易所全權(quán)掌控了用戶(hù)的資產(chǎn),而頻發(fā)的中心化交易所被盜事件一次次表明其安全問(wèn)題成為懸在整個(gè)數(shù)字貨幣行業(yè)之,上的達(dá)摩克利斯之劍。2011年和2014年Mt.Gox兩次被盜,2014年P(guān)oloniex被 盜,2015年Bitstamp被盜,2017年Bithumb被盜,2019年Binance被盜等事件一次次印證 了前述的擔(dān)憂。在資產(chǎn)安全的問(wèn)題之外,交易所關(guān)門(mén)跑路、交易規(guī)則不透明、由于主觀或客觀原因造成的暫時(shí)無(wú)法訪問(wèn)以及昂貴的上幣費(fèi)用等也是中心化交易所常被詬病的地方。
能否以去中心化的方式重構(gòu)數(shù)字貨幣的交易市場(chǎng)?不需要注冊(cè)要求或者審核流程,沒(méi)有單點(diǎn)故障問(wèn)題、控制或者監(jiān)管屬性,規(guī)則透明的去中心化交易所能夠同時(shí)解決中心化交易所面臨的諸多挑戰(zhàn)。近年來(lái)涌現(xiàn)出諸如Bitshares 、 Etherdelta 、 0x協(xié)議、OmiseGo、Loopring 、Kyber 、 Cosmos等去中心化交易所的技術(shù)方案?,F(xiàn)有的大部分方案,如Etherdelta、0x協(xié)議、OmiseGo、 Loopring、 Kyber都是基 于以太坊的支持ERC20標(biāo)準(zhǔn)的去中心化交易解決方案?;谀硞€(gè)公鏈的去中心化交易平臺(tái)的能力則受限于底層公鏈的能力。以以太坊為例,在當(dāng)下以太坊的交易處理能力遲遲無(wú)法提升的情況下,基于以太坊構(gòu)建的去中心化交易平臺(tái)在處理速度、用戶(hù)體驗(yàn)等方面無(wú)法與現(xiàn)有的中心化交易平臺(tái)匹敵。專(zhuān)門(mén)定制的ASIC芯片已經(jīng)在基于PoW的公鏈挖礦中展現(xiàn)出巨大的優(yōu)勢(shì),借鑒同樣的思路,構(gòu)建專(zhuān)門(mén)用于去中心化交易的公鏈能夠在規(guī)避中心化交易所諸多問(wèn)題的同時(shí),依然保持較高的交易處理速度和相似的用戶(hù)交互體驗(yàn)。
CoinEx Chain是基于Tendermint共識(shí)協(xié)議和Cosmos SDK打造的公鏈,旨在打造社區(qū)化運(yùn)營(yíng)、交易規(guī)則透明以及用戶(hù)資產(chǎn)由自己控制的去中心化交易平臺(tái)(DEX) ?;贑oinEx Chain的DEX.上的原生代幣為CoinEx Token (CET) ,現(xiàn)存的ERC20 Token形態(tài)的代幣會(huì)按照1:1的比例映射成CoinEx Chain上的原生代幣。
Tendermint共識(shí)協(xié)議在保證足夠去中心化的前提下能到達(dá)到上萬(wàn)的TPS以及秒級(jí)確認(rèn),能夠在去中心化交易平臺(tái)場(chǎng)景下提供近乎中心化交易平臺(tái)的用戶(hù)體驗(yàn)。通過(guò)鏈上交易、鏈上撮合的方式帶來(lái)最大程度的交易透明度。將數(shù)字資產(chǎn)的控制權(quán)還給用戶(hù)并且通過(guò)數(shù)字簽名進(jìn)行權(quán)限鑒定,避免了中心化交易平臺(tái)所帶來(lái)的單點(diǎn)失敗的安全風(fēng)險(xiǎn),保證了用戶(hù)資產(chǎn)的安全性。另外通過(guò)跨鏈機(jī)制,可以將當(dāng)前的CET Token連接至更為廣闊的數(shù)字貨幣世界。
CoinEx Chain不僅是一條專(zhuān)用于DEX的公鏈,而且是圍繞DEX公鏈構(gòu)建的更為豐富的生態(tài)系統(tǒng)。為最大程度 提升DEX公鏈的交易處理速度,DEX公鏈僅支持必要的功能而不支持智能合約。但是智能合約功能是構(gòu)建更為復(fù)雜的金融應(yīng)用的基礎(chǔ),因此在DEX公鏈之外CoinEx Chain將包含-條支持智能合約功能的Smart公鏈。通過(guò)跨鏈機(jī)制連通Smart公鏈與DEX公鏈,在保證DEX公鏈性能的同時(shí),也支持復(fù)雜的金融應(yīng)用。
當(dāng)前區(qū)塊鏈上的隱私問(wèn)題備受詬病,因?yàn)榈刂犯拍钐峁┑哪涿匦匀菀淄ㄟ^(guò)數(shù)據(jù)進(jìn)行逆向分析,最大程度地保護(hù)用戶(hù)隱私是CoinEx Chain的核心任務(wù)之-。與Smart公鏈類(lèi)似,通過(guò)構(gòu)建專(zhuān)門(mén)的支持交易隱私保護(hù)的Privacy公鏈并進(jìn)行跨鏈連通,能夠提升整個(gè)CoinExChain生態(tài)的隱私特性。
在三條各司其職的公鏈之外,CoinEx Chain將在多個(gè)技術(shù)方向進(jìn)行技術(shù)創(chuàng)新與改進(jìn):
1) 安全方面,還權(quán)于用戶(hù)之后如何保證用戶(hù)賬戶(hù)私鑰的安全性成為核心問(wèn)題。在錢(qián)包的私鑰保護(hù)方面提供閾值多方ECDSA簽名機(jī)制。與Shamir秘密分享方案(Shamir‘ s Secret Sharing, SSS) 相比,閾值多方ECDSA簽名機(jī)制在簽名時(shí),直接利用各個(gè)私鑰的分片進(jìn)行計(jì)算即可得到最終的簽名值,無(wú)需重構(gòu)原始私鑰信息,能夠規(guī)避SSS方案的單點(diǎn)失敗的隱患。
2) 共識(shí)協(xié)議方面,Tendermint協(xié)議需要驗(yàn)證者集合對(duì)每個(gè)提議的區(qū)塊進(jìn)行投票(簽名),每個(gè)區(qū)塊中的投票信息會(huì)隨著驗(yàn)證者集合的增大而線性增長(zhǎng),消耗可觀的鏈上存儲(chǔ)空間,聚合簽名可解決這一問(wèn)題。聚合簽名所面臨的Rogue Public-Key攻擊可以通過(guò)與共識(shí)場(chǎng)景結(jié)合進(jìn)行規(guī)避,或者采用在Plain Public Key模型下安全的聚合簽名機(jī)制,如Maxwell等人提出的MuSig 以及Boneh等人提出的BL S聚合簽名機(jī)制。
3)執(zhí)行效率方面,參考以太坊的經(jīng)驗(yàn),區(qū)塊鏈所采用的可認(rèn)證數(shù)據(jù)結(jié)構(gòu)(Authenticated Data Structure, ADS)的效率會(huì)顯著影響鏈上交易的處理速度,Cosmos項(xiàng)目基于IAVL+數(shù)據(jù)結(jié)構(gòu)構(gòu)造了自己的ADS方案,在效率方面較以太坊提出的MerklePatracia Tree (MPT) 沒(méi)有明顯改進(jìn)。通過(guò)工程手段可以部分緩解可能由ADS結(jié)構(gòu)帶來(lái)的讀寫(xiě)性能瓶頸問(wèn)題。CoinEx Chain也會(huì)關(guān)注ADS設(shè)計(jì)方面的最新進(jìn)展,嘗試從ADS結(jié)構(gòu)角度優(yōu)化公鏈性能。
公鏈組件
1. Tendermint Core與Cosmos SDK
CoinEx Chain是 基于Tendermint Core和Cosmos SDK構(gòu)建的。Tendermint Core項(xiàng)目封裝了P2P網(wǎng)絡(luò)通信以及Tendermint共識(shí)協(xié)議,Cosmos SDK通過(guò)模塊化方式提供了應(yīng)用層開(kāi)發(fā)所依賴(lài)的基礎(chǔ)功能,兩個(gè)組件之間通過(guò)區(qū)塊鏈應(yīng)用層接口(ApplicaTIon BlockchainInterface, ABCI)進(jìn)行交互。
Tendermint Core處理交 易時(shí),不關(guān)心交易的具體內(nèi)容,而是將交易看做字節(jié)數(shù)組。應(yīng)用層根據(jù)打包好的區(qū)塊,依次解釋執(zhí)行各個(gè)交易并更改狀態(tài)信息。
Tendermint共識(shí)協(xié)議是半同步的拜占庭共識(shí)協(xié)議,具有簡(jiǎn)潔、高效和可追責(zé)的特點(diǎn)。共識(shí)協(xié)議的達(dá)成是在已知的驗(yàn)證者集合內(nèi)完成的,每個(gè)驗(yàn)證者通過(guò)其公鑰進(jìn)行鑒別。具體的共識(shí)過(guò)程通過(guò)多輪的兩階段(Prevote和Precommit) 投票協(xié)議以及相應(yīng)的鎖定機(jī)制完成。每一輪開(kāi)始時(shí)通過(guò)Round-Robin的形式選取一個(gè)驗(yàn)證者為區(qū)塊提議者(Proposer) ,由該驗(yàn)證者打包并提議區(qū)塊,隨后驗(yàn)證者就該區(qū)塊的合法性進(jìn)行兩階段投票,如果每個(gè)階段都能獲得來(lái)自多于2/3的驗(yàn)證者的投票則該區(qū)塊會(huì)被提交到鏈上執(zhí)行。需要執(zhí)行多輪的可能原因有:被選中的驗(yàn)證者不在線,提議的區(qū)塊不合法,在某個(gè)投票階段沒(méi)有收集到超過(guò)2/3的投票信息等等。為了簡(jiǎn)化對(duì)不確定因素的處理, Tendermint中每 張投票有兩種用途:確認(rèn)合法信息和確認(rèn)無(wú)效信息。根據(jù)投票信息確認(rèn)當(dāng)前區(qū)塊或者進(jìn)入下一輪,避免了PBFT共識(shí)算法中復(fù)雜的視圖轉(zhuǎn)化協(xié)議??勺坟?zé)的特性則由公鑰可鑒別驗(yàn)證者這-約束提供。
由于CAP定理的客觀存在,Tendermint協(xié)議在安全性與可用性之間選擇了安全性。也因此Tendermint共識(shí)協(xié)議有可能會(huì)短暫停止直到超過(guò)2/3的驗(yàn)證者達(dá)成共識(shí)。當(dāng)系統(tǒng)中的惡意的驗(yàn)證者小于1/3時(shí),Tendermint提供了永不分叉的保證。安全性?xún)?yōu)先于可用性以及永不分叉的承諾對(duì)于金融應(yīng)用至關(guān)重要。CoinEx Chain在項(xiàng)目 啟動(dòng)時(shí)計(jì)劃支持42個(gè)節(jié)點(diǎn),根據(jù)Tendermint共識(shí)協(xié)議的實(shí)驗(yàn)數(shù)據(jù),在42個(gè)節(jié)點(diǎn)遍布五大洲的條件下Tendermint能夠達(dá)到4000TPS的處理速度,能滿足去中心化交易所的需求。伴隨高TPS的并不是交易確認(rèn)時(shí)間的延長(zhǎng),Tendermint共識(shí)機(jī)制提供逐區(qū)塊最終化的特性,能夠在秒級(jí)完成交易確認(rèn)。
2. Proof-of- Stake
Tendermint協(xié)議假設(shè)了驗(yàn)證者集合的存在,在每一輪的兩階段投票協(xié)議中以帶權(quán)重的Round-Robin的形式選取當(dāng)前輪的區(qū)塊提議者。CoinEx Chain采用Proof-of-Stake機(jī)制, 生態(tài)中任何實(shí)體都可以通過(guò)抵押CET代幣的形式參與驗(yàn)證者的競(jìng)選。驗(yàn)證者集合不是固定不變的,生態(tài)參與方可以發(fā)送交易來(lái)增減自己抵押的代幣數(shù)量。通過(guò)跟蹤這一變化并根據(jù)更新后的抵押代幣的數(shù)量狀態(tài)生成新的驗(yàn)證者集合。
抵押與懲罰機(jī)制的引入能夠規(guī)避PoS機(jī)制所面臨的Nothing At-Stake的問(wèn)題。 PoS機(jī)制面臨的另-個(gè)重要挑戰(zhàn)是長(zhǎng)程攻擊的問(wèn)題, 問(wèn)題的根源在于PoS鏈中創(chuàng)建新的區(qū)塊只需要足夠的投票而不是像PoW機(jī)制中那樣需要耗費(fèi)大量資源。當(dāng)攻擊者設(shè)法獲得的某-歷史時(shí)刻的驗(yàn)證者的私鑰數(shù)量超過(guò)2/3時(shí),就可以從那個(gè)歷史時(shí)刻進(jìn)行分叉,導(dǎo)致新設(shè)立的節(jié)點(diǎn)或者長(zhǎng)時(shí)間離線的節(jié)點(diǎn)無(wú)從判斷哪條鏈?zhǔn)钦嬲闹麈?。CoinEx Chain沿襲Cosmos Hub中的策略,通過(guò)三種措施抵御長(zhǎng)程攻擊:
1) 解綁周期(Unbounding Period) :驗(yàn)證者取回抵押的代幣時(shí),需要經(jīng)過(guò)一個(gè)解綁周期才能取回自己的代幣,當(dāng)前的解綁周期為3周時(shí)間;
2) 弱主觀性(Weak SubjecTIve) [21]: 新節(jié)點(diǎn)第- -次連接網(wǎng)絡(luò)時(shí)或者節(jié)點(diǎn)長(zhǎng)時(shí)間下線后再次上線時(shí)需要通過(guò)可信節(jié)點(diǎn)驗(yàn)證近期的區(qū)塊哈希值,CoinEx Chain基金會(huì)將提供可信節(jié)點(diǎn)服務(wù);
3) 按時(shí)上線同步驗(yàn)證者集合:在一個(gè)解綁周期的時(shí)長(zhǎng)內(nèi)節(jié)點(diǎn)需要同步驗(yàn)證者集合的更新。
這三種策略都在某種程度上緩解了長(zhǎng)程攻擊的問(wèn)題,但無(wú)法從根本上解決長(zhǎng)程攻擊。可驗(yàn)證延遲函數(shù)(Verifiable Delay FuncTIon, VDF) 的提出與研究進(jìn)展為從根本上解決長(zhǎng)程攻擊提供了另外-種思路。Increment VDF概念的提出與研究進(jìn)展為抵御長(zhǎng)程攻擊提供了新的工具。CoinEx Chain團(tuán)隊(duì)會(huì)持續(xù)關(guān)注VDF研究領(lǐng)域的進(jìn)展,并利用前沿進(jìn)展提升PoS機(jī)制安全性。
驗(yàn)證者是維護(hù)公鏈狀態(tài)一致性的關(guān)鍵角色,而運(yùn)行全節(jié)點(diǎn)也需要付出成本,因此CoinEx Chain會(huì)對(duì)驗(yàn)證者進(jìn)行獎(jiǎng)勵(lì),獎(jiǎng)勵(lì)包含兩部分: 新的區(qū)塊獎(jiǎng)勵(lì)以及區(qū)塊中包含的交易手續(xù)費(fèi)。區(qū)塊鏈項(xiàng)目中新的區(qū)塊獎(jiǎng)勵(lì)通常依靠鑄造新幣來(lái)完成:基于PoW機(jī)制的比特幣通過(guò)挖礦鑄幣而基FPoS機(jī)制的Cosmos Hub中則依靠 通脹鑄幣。通過(guò)鑄造新幣的方式會(huì)與此前承諾的CET永不通脹的理念相違背。CoinEx Chain的應(yīng)對(duì)策略是從預(yù)留的代幣中拿出-部分進(jìn)行區(qū)塊獎(jiǎng)勵(lì),此外承諾的關(guān)于CET的回收機(jī)制依然會(huì)如期進(jìn)行。驗(yàn)證者的惡意行為或者驗(yàn)證者沒(méi)有能力保證驗(yàn)證節(jié)點(diǎn)的穩(wěn)定性,都會(huì)影響公鏈狀態(tài)的穩(wěn)定性,此類(lèi)情形下CoinExChain會(huì)對(duì)相應(yīng)驗(yàn)證者進(jìn)行懲罰。對(duì)于驗(yàn)證者在同一個(gè)區(qū)塊高度對(duì)兩個(gè)不同區(qū)塊進(jìn)行投票等直接違反共識(shí)協(xié)議安全性的行為,會(huì)扣除驗(yàn)證者抵押的代幣中可觀的一部分比例作為懲罰,同時(shí)驗(yàn)證者將被永久性地剔除出驗(yàn)證者隊(duì)列;對(duì)于無(wú)法維持驗(yàn)證節(jié)點(diǎn)可靠性的行為,會(huì)扣除驗(yàn)證者抵押的代幣中的一小部分作為懲罰警示,并被禁止在-段時(shí)間內(nèi)參與驗(yàn)證。同時(shí)被扣除的代幣將會(huì)被系統(tǒng)統(tǒng)一回收用于將來(lái)的社區(qū)激勵(lì)等事項(xiàng)。
賬戶(hù)與交易
CoinEx Chain是基于賬戶(hù)模型的,每個(gè)賬戶(hù)原生支持多幣種,也因此CoinEx Chain原生支持多幣種的轉(zhuǎn)賬。為了防止鏈上出現(xiàn)大量的僵P賬戶(hù)消耗鏈上資源,CoinEx Chain要求每個(gè)賬戶(hù)被激活之后才可以使用,具體的激活方法是向新賬戶(hù)發(fā)起CET轉(zhuǎn)賬交易,并從新賬戶(hù)的應(yīng)收CET中扣除1個(gè)CET作為賬戶(hù)激活的功能費(fèi)。每個(gè)交易可以包含多個(gè)消息,每個(gè)消息可以完成不同的操作,比如轉(zhuǎn)賬、獎(jiǎng)勵(lì)提取等操作。對(duì)賬戶(hù)權(quán)限的鑒定通過(guò)交易的簽名驗(yàn)證來(lái)進(jìn)行。簽名算法是基于secp256k1曲線的ECDSA算法。CoinEx Chain支持多簽交易,目前的多簽交易采用了與Bitcoin中多簽類(lèi)似的方式,也即把多個(gè)簽名和公鑰信息包含在交易內(nèi)。這種方式容易實(shí)現(xiàn),但也有存儲(chǔ)計(jì)算等資源的占用和消耗問(wèn)題。CoinEx Chain會(huì)針對(duì)每筆交易收取交易手續(xù)費(fèi),并且只有CET可以作為交易手續(xù)費(fèi)。交易手續(xù)費(fèi)包含兩個(gè)部分:通常意義上的Gas費(fèi)用以及功能費(fèi)。Gas費(fèi)根據(jù)交易的字節(jié)數(shù)、所需驗(yàn)證的簽名個(gè)數(shù)以及對(duì)存儲(chǔ)的讀寫(xiě)次數(shù)和字節(jié)數(shù)等進(jìn)行計(jì)費(fèi),功能費(fèi)則是對(duì)某些特定的操作收取額外的費(fèi)用。需要繳納功能費(fèi)的操作有: DEX公鏈中創(chuàng)建新幣和創(chuàng)建新交易對(duì)的交易,激活新賬戶(hù)的交易以及帶鎖定功能的轉(zhuǎn)賬交易。另外會(huì)根據(jù)被撮合交易中的交易金額按比例收取傭金,這部分也歸入功能費(fèi)。
CoinEx Chain計(jì)劃改進(jìn)多簽交易的構(gòu)造方式,通過(guò)采用聚合簽名算法可以對(duì)多個(gè)簽名值/公鑰進(jìn)行壓縮。這種方式能夠節(jié)省鏈上存儲(chǔ)空間,減少需要驗(yàn)證的簽名的數(shù)量。對(duì)于n-of-n的多簽交易能夠提升多簽交易的隱私屬性,因?yàn)榫酆系墓€和簽名信息能夠隱藏多簽交易涉及到的實(shí)體。在支持腳本系統(tǒng)的區(qū)塊鏈上,借助Merkle證明對(duì)于m-of-n的多簽交易可以達(dá)到同樣的隱私保護(hù)效果。然而如何在沒(méi)有腳本系統(tǒng)的條件下,達(dá)到相同的效果仍需進(jìn)一步調(diào)研。聚合簽名算法所面臨的最大挑戰(zhàn)是在RoguePublicKey攻擊存在的前提下在Plain Public Key Model下保證安全性。Rogue Public Key利用了這一事實(shí),允許攻擊者在其他參與方不知情的情況下炮制出合法的聚合簽名。通常的應(yīng)對(duì)方案有兩種,要求參與方證明自己確實(shí)有相應(yīng)的私鑰(KOSK, Knowledge of Secret Key)或者要求在待簽名消息前面級(jí)聯(lián)參與方的公鑰。要求KOSK證明在實(shí)際中難以操作而級(jí)聯(lián)公鑰的做法會(huì)部分抵消聚合簽名機(jī)制的效率提升效果。Plain Public Key Model下參 與者無(wú)需證明自己持有所宣稱(chēng)的公鑰對(duì)應(yīng)的私鑰。Blockstream研究 人員設(shè)計(jì)的MuSig多簽機(jī)制與基于雙線性對(duì)的BLS簽名機(jī)制能夠滿足安全要求并且沒(méi)有前述兩種方法的弊端。
基于Schnorr簽名構(gòu)建的MuSig簽名方案可以在Plain Public Key Model下安全地壓縮公鑰和簽名值,并且驗(yàn)證簽名過(guò)程等同于普通的Schnorr簽名驗(yàn)證。Bitcoin Cash網(wǎng)絡(luò)已經(jīng)激活了Schnorr簽名機(jī)制,為后續(xù)部署MuSig方案鋪平了道路。Bitcoin網(wǎng)絡(luò)中則圍繞Schnorr簽名和MuSig簽名機(jī)制準(zhǔn)備了-攬子升級(jí)計(jì)劃。MuSig簽 名機(jī)制的優(yōu)點(diǎn)在于可以基于secp256k1進(jìn)行構(gòu)建,而目前的Cosmos SDK已經(jīng)支持secp256k1曲線。Boneh等人在2018年構(gòu)建了在Plain Public Key Model安全的BLS聚合簽名算法[15],同樣可以用于多簽交易的改進(jìn)。為了支持BLS聚合簽名算法,要求重構(gòu)錢(qián)包體系, 這是對(duì)現(xiàn)有系統(tǒng)的深層改動(dòng)。從secp256k1的私 鑰切換到某個(gè)雙線性對(duì)友好的橢圓曲線上的私鑰(例如Zcash團(tuán)隊(duì)構(gòu)建的BLS128-381曲線),需要同時(shí)修改分層確定性錢(qián)包的實(shí)現(xiàn)。因此,基于MuSig機(jī)制改進(jìn)多簽交易目前看來(lái)是更兼容當(dāng)前系統(tǒng)的方式。
Blockstream研究人員設(shè)計(jì)的MuSig多簽機(jī)制與基于雙線性對(duì)的BLS簽名機(jī)制理想的情況是可以對(duì)一個(gè)塊中所有交易的簽名進(jìn)行壓縮,壓縮之后區(qū)塊中僅有一個(gè)簽名值待驗(yàn)證。這需要聚合簽名算法能夠把不同私鑰對(duì)不同消息的簽名值聚合起來(lái)。這種情況下,礦工在打包區(qū)塊時(shí)可以聚合所有待包含交易的簽名。MuSig無(wú)法對(duì)不同的消息進(jìn)行聚合,雖然論文中提到可以通過(guò)修正的交互聚合簽名(Fixed InteracTIve Aggregate Signature)機(jī)制實(shí)現(xiàn)對(duì)不同消息的簽名聚合,但是尚沒(méi)有嚴(yán)謹(jǐn)?shù)陌踩宰C明。論文在更強(qiáng)的安全性假設(shè)基礎(chǔ)上構(gòu)建的聚合多簽機(jī)制(Aggregate Multisignature Scheme, AMSP)可以用來(lái)聚合不同交易的簽名以進(jìn)一步節(jié)省鏈上的存儲(chǔ)空間。在更強(qiáng)的安全性假設(shè)之外,如何在區(qū)塊鏈場(chǎng)景下安全地部署這-機(jī)制也需要進(jìn)一步探索。
區(qū)塊鏈
Tendermint共識(shí)協(xié)議不分叉和逐塊最終化的特性簡(jiǎn)化了區(qū)塊鏈結(jié)構(gòu)的設(shè)計(jì),只需要用哈希指針一次串聯(lián)起各個(gè)區(qū)塊,無(wú)需像比特幣--樣考慮區(qū)塊的回滾也不需要像Ethereum中考慮對(duì)叔塊的連接,每個(gè)區(qū)塊也由區(qū)塊頭和區(qū)塊體兩部分構(gòu)成。區(qū)塊頭中包含區(qū)塊高度,時(shí)間戳,區(qū)塊中交易個(gè)數(shù),累積的交易個(gè)數(shù),指向上一個(gè)區(qū)塊的哈希指針,本區(qū)塊的提案者,包含的證據(jù)列表的Merkle樹(shù)根,包含的交易列表的Merkle樹(shù)根,針對(duì)上一個(gè)區(qū)塊的投票列表的Merkle樹(shù)根,上一個(gè)區(qū) 塊的驗(yàn)證者集合的Merkle樹(shù)根,上一個(gè)區(qū)塊所產(chǎn)生的新的驗(yàn)證者集合的Merkle樹(shù)根,上一個(gè)區(qū)塊執(zhí)行完成后上層應(yīng)用內(nèi)部狀態(tài)的Merkle樹(shù)根,上一個(gè)區(qū)塊中交易執(zhí)行后的結(jié)果列表的Merkle樹(shù)根以及共識(shí)參數(shù)的Merkle樹(shù)根。區(qū)塊體中則包含了具體的交易信息,證據(jù)信息以及對(duì)上一個(gè)區(qū)塊的投票信息。
值得注意的是,針對(duì)一個(gè)區(qū)塊的投票信息存儲(chǔ)在下一個(gè)區(qū)塊中。Tendermint共識(shí)協(xié)議中的投票本質(zhì)上是驗(yàn)證者用自己的私鑰對(duì)一個(gè)區(qū)塊的簽名值,當(dāng)前采用的是基于Ed25519曲線的EdDSA簽名算法。隨著驗(yàn)證者集合的增多,這些投票/簽名信息也會(huì)占據(jù)鏈上可觀的存儲(chǔ)空間而且驗(yàn)證簽名也需要耗費(fèi)可觀的計(jì)算資源。針對(duì)計(jì)算資源消耗問(wèn)題,可以通過(guò)EdDSA簽名機(jī)制本身支持的批量驗(yàn)證進(jìn)行改進(jìn)。要同時(shí)減少簽名值占用的存儲(chǔ)空間和計(jì)算資源消耗的問(wèn)題!則可以借助聚合簽名機(jī)制。基于MuSig的聚合簽名機(jī)制,在簽名時(shí)各個(gè)簽名參與方之間需要多輪交互,考慮到驗(yàn)證者可能遍布全球各地,我們傾向于避免在共識(shí)協(xié)議必需 的交互之外引入更多的交互需求,也因此基于MuSig的聚合簽名機(jī)制不宜作為共識(shí)過(guò)程中的聚合簽名機(jī)制。與交易的聚合簽名不同的是,投票的簽名聚合功能上更為獨(dú)立,不受錢(qián)包的分層密鑰等其他業(yè)務(wù)邏輯的牽連,也因此可以考慮全新的簽名機(jī)制。這種情況下,更適合采用中提出的聚合BLS簽名機(jī)制來(lái)改進(jìn)Tendermint Core項(xiàng)目的投票機(jī)制。
為了能夠更好地支持跨鏈和輕客戶(hù)端,每個(gè)區(qū)塊中還包含了上層應(yīng)用內(nèi)部狀態(tài)的Merkle樹(shù)根。Merkle樹(shù)屬于 可驗(yàn)證數(shù)據(jù)結(jié)構(gòu)(Authenticated Data Structure, ADS) ,為了支持輕客戶(hù)端的快速驗(yàn)證,需要能夠支持存在性證明與不存在證明。而狀態(tài)需要逐塊更新的特性也要求ADS數(shù)據(jù)結(jié)構(gòu)支持增量增加和修改,CoinEx Chain目前采用的是Tendermint Core項(xiàng)目自帶的基于數(shù)據(jù)結(jié)構(gòu)IAVL+的ADS。
基于IAVL+的ADS與Ethereum的Merkle Patricia Tree (MPT) 相比并沒(méi)有顯著優(yōu)勢(shì)?;贓thereum的經(jīng)驗(yàn)可知,。 上層業(yè)務(wù)的狀態(tài)讀寫(xiě)會(huì)被MPT數(shù)據(jù)結(jié)構(gòu)放大多倍(從根節(jié)點(diǎn)出發(fā)逐步遍歷到葉子節(jié)點(diǎn)的過(guò)程需要多次訪問(wèn)底層的鍵值對(duì)數(shù)據(jù)庫(kù)),從而成為潛在的性能瓶頸。ADS數(shù)據(jù)結(jié)構(gòu)引入的讀寫(xiě)放大的問(wèn)題,可以通過(guò)更好的工程手段進(jìn)行緩解,也可以通過(guò)設(shè)計(jì)全新的ADS結(jié)構(gòu)來(lái)應(yīng)對(duì)??赡艿慕鉀Q方案是開(kāi)發(fā)-種全新的ADS, 它獨(dú)特的樹(shù)結(jié)構(gòu)允許中間節(jié)點(diǎn)被保存在KV數(shù)據(jù)庫(kù)之外,同時(shí)可以在程序異常重啟后方便地從KV數(shù)據(jù)庫(kù)恢復(fù)出中間節(jié)點(diǎn),而不必?fù)?dān)心數(shù)據(jù)一致性的問(wèn)題。通過(guò)把常用的中間節(jié)點(diǎn)緩存在內(nèi)存中,不常見(jiàn)的中間節(jié)點(diǎn)保持在磁盤(pán)上,確保大多數(shù)鍵值對(duì)訪問(wèn)只需要訪問(wèn)內(nèi)存中的中間節(jié)點(diǎn),從而大幅度減輕底層KV數(shù)據(jù)庫(kù)的壓力。
私鑰安全
數(shù)字貨幣領(lǐng)域的資產(chǎn)的所有權(quán)是通過(guò)私鑰進(jìn)行簽名來(lái)界定的,創(chuàng)建一筆交易通常需要訪問(wèn)私鑰,而私鑰的保護(hù)-直是個(gè)困難問(wèn)題。數(shù)字錢(qián)包中私鑰通常是通過(guò)keystore文件進(jìn)行加密存放,加密該私鑰的密鑰通常由用戶(hù)口令等通過(guò)密鑰派生算法生成。雖然keystore文件僅存儲(chǔ)私鑰的密文,但是創(chuàng)建交易的時(shí)候仍然需要將其解密,也即完整的私鑰信息總會(huì)暴露在系統(tǒng)中,同時(shí)也就有了泄露的風(fēng)險(xiǎn)。也可以采用冷錢(qián)包的策略,通過(guò)在需要時(shí)引入人工協(xié)助的方式將系統(tǒng)隔離開(kāi),從而降低私鑰泄露的風(fēng)險(xiǎn)。通過(guò)離線存儲(chǔ),冷錢(qián)包降低了私鑰被惡意軟件竊取的可能性,是- 種通過(guò)管理手段提升安全性的方法。
安全性要求更強(qiáng)的場(chǎng)景通常使用硬件安全模塊(Hardware Security Module)進(jìn)行密鑰的防護(hù),通過(guò)HSM模塊生成私鑰、計(jì)算簽名可以保證明文私鑰信息不會(huì)存在于HSM模塊之外,從而保證私鑰的安全性。冷錢(qián)包方案和HSM方案能夠提升私鑰的安全性,但也帶來(lái)了使用的不便。而當(dāng)涉及到多簽交易或者需要將私鑰的訪問(wèn)權(quán)限分散到多個(gè)成員時(shí),要求每一方都使用冷錢(qián)包或者HSM提高了使用門(mén)檻,也進(jìn)一步增加了使用的復(fù)雜性。另外Ledger的研究人員將在Black Hat 2019 上展示的對(duì)HSM的攻擊,也說(shuō)明HSM自身也存在安全隱患。
多簽交易通過(guò)要求多個(gè)簽名來(lái)保證授權(quán)一筆交易,就需要多個(gè)私鑰共同配合的方式,攻擊者同時(shí)需要多個(gè)密鑰信息才能夠轉(zhuǎn)移資產(chǎn),作惡的難度加大。另外通過(guò)調(diào)整m和n的參數(shù),多重簽名機(jī)制也提供了一定程度的安全冗余,只要被竊取或者丟失的的密鑰個(gè)數(shù)小于n-m依然可以構(gòu)造交易。然而多簽交易的交易費(fèi)會(huì)更高,變更安全策略也不夠靈活,另外所有的簽名值和公鑰會(huì)公開(kāi)在鏈上,導(dǎo)致簽名策略的泄露。
Shamir秘密分享方案可以解決多簽交易的問(wèn)題。在SSS方案中,資產(chǎn)的管理權(quán)僅由一個(gè)私鑰控制。資產(chǎn)的轉(zhuǎn)移與標(biāo)準(zhǔn)交易一樣只需要一個(gè)簽名值。然而這個(gè)私鑰是由多個(gè)參與方控制的,這是通過(guò)把私鑰分割成多份并且在多個(gè)參與方之間分發(fā)這些密鑰分片來(lái)做到的。獲得足夠多的密鑰分片后,可以重構(gòu)出原始的私鑰。與多簽交易類(lèi)似,也可以選擇m-of-n的SSS方案。m-of-n的SS方 案中需要至少m個(gè)密鑰分片才能重構(gòu)出原始密鑰,而通過(guò)m-1或者更少的密鑰分片無(wú)法獲得原始密鑰的任何信息。m-of n的SSS方案與m-of-n的多簽方案一樣增強(qiáng)了密鑰安全性并能容忍密鑰(分片)遺失。SSS方案中重構(gòu)原始密鑰的操作需要由某一方來(lái)完成。被選中的一方在完成原始密鑰重構(gòu)之后會(huì)獲得原始密鑰的所有信息。如果采用SSS方案,則必須相信被選中的一方在使用密鑰之后會(huì)擦除并且遺忘該密鑰的信息。很不幸,在嘗試將密鑰控制分散化的過(guò)程中,再次引入了可信第三方和單點(diǎn)失敗的問(wèn)題。
來(lái)自安全多方計(jì)算領(lǐng)域的研究進(jìn)展帶來(lái)的多方閾值ECDSA簽名機(jī)制({m,n} thresholdECDSA) 同時(shí)具備Shamir秘密分享方案與多簽交易兩種方法的優(yōu)勢(shì):
1)支持與Shamir秘密分享方案類(lèi)似的密鑰分割,但是在簽名時(shí)無(wú)需重構(gòu)原始密鑰信息,這也就避免了Shamir秘密分享方案中單點(diǎn)失敗的問(wèn)題;
2)與多簽交易相比,最終體現(xiàn)在鏈上的相關(guān)信息與傳統(tǒng)P2PKH交易相同,只需要一個(gè)簽名值,沒(méi)有增加交易的體積也無(wú)需暴露訪問(wèn)控制策略,由于此時(shí)的交易與普通的交易無(wú)法根據(jù)鏈上信息來(lái)區(qū)分,所以也提供了更好的隱私屬性。
CoinEx Chain會(huì)在錢(qián)包中支持ECDSA的閾值多方簽名機(jī)制,作為私鑰保護(hù)的增強(qiáng)方案。
DEX
CoinEx DEX公 鏈?zhǔn)腔赥endermint共識(shí)協(xié)議打造的專(zhuān)門(mén)用于去中心化交易的公鏈,在DEX公鏈上,用戶(hù)可以收發(fā)CET代幣,發(fā)行新的代幣并進(jìn)行增發(fā),燃燒,鎖定,解鎖等操作,以及創(chuàng)建交易對(duì),交易下單,查詢(xún)交易歷史,競(jìng)選成為驗(yàn)證者節(jié)點(diǎn)等。
通過(guò)將資產(chǎn)的控制權(quán)返還用戶(hù),用戶(hù)掌管自己的私鑰,可以避免中心化交易所帶來(lái)的單點(diǎn)失敗風(fēng)險(xiǎn),而CoinEx Chain提供的多 方閾值ECDSA簽名機(jī)制能夠進(jìn)一步增強(qiáng)用戶(hù)側(cè)的私鑰保護(hù)。借助Tendermint共識(shí)協(xié)議以及精簡(jiǎn)的鏈上功能實(shí)現(xiàn)秒級(jí)出塊速度與瞬時(shí)交易確認(rèn)。通過(guò)資產(chǎn)上鏈、鏈上交易、鏈上撮合的策略,實(shí)現(xiàn)公平透明的交易體驗(yàn)。區(qū)別于傳統(tǒng)的智能合約發(fā)幣,DEX公鏈內(nèi)置發(fā)幣模塊,使發(fā)幣更加高效和安全。用戶(hù)無(wú)需許可即可發(fā)布Token (包括但不限于穩(wěn)定幣),同時(shí)可創(chuàng)建該Token相關(guān)交易對(duì),省去中心化交易所冗長(zhǎng)的審核流程和高昂上幣費(fèi)用。DEX公鏈上每一步操作都是標(biāo)準(zhǔn)化的,每一步操作消耗的資源都是可預(yù)見(jiàn)的,因此DEX公鏈可做到高達(dá)每秒數(shù)千筆的交易處理速度。
CET通過(guò)主網(wǎng)映射的方式發(fā)行,CET除了可以作為鏈上交易的手續(xù)費(fèi)之外,還可以作為抵押代幣,CET持有者可參與CoinEx Chain中的staking經(jīng)濟(jì)。另外CET持有者也可進(jìn)行提案的發(fā)起和投票,參與社區(qū)治理。
CET主網(wǎng)映射
CoinEx基金會(huì)和CoinEx商業(yè)生態(tài)將協(xié)作完成CET的主網(wǎng)映射,CET持有者需要把ERC20CET充值到CoinEx交易所,主網(wǎng)上相應(yīng)的CET會(huì)分發(fā)給CoinEx交易所,隨后用戶(hù)可在CoinEx交易所提取主網(wǎng)代幣CET,具體流程如下:
1)在主網(wǎng)上線前,交易所只允許充值ERC20CET,不允許提現(xiàn)
2)所有非鎖倉(cāng)的幣都是用戶(hù)存在CoinEx交易所的幣
3)主網(wǎng)在啟動(dòng)時(shí),會(huì)將CoinEx交 易所中的ERC20 CET以及鎖倉(cāng)的ERC20 CET做主網(wǎng)映射
4)開(kāi)通主網(wǎng)CET的提現(xiàn)和充值
5)用戶(hù)創(chuàng)建CoinEx Chain主網(wǎng)帳戶(hù)地址后,可從CoinEx交 易所提現(xiàn)主網(wǎng)CET
6)用戶(hù)也可以提現(xiàn)到第三方錢(qián)包或者獨(dú)立錢(qián)包,使用主網(wǎng)CET參與Staking
CET分發(fā)
CET主網(wǎng)映射后的分布如下:
CET激勵(lì)
如前所述,CoinEx會(huì)信守不增發(fā)CET的承諾,因此不會(huì)采用通脹的方式鑄造新幣。然而區(qū)塊激勵(lì)對(duì)于提高社區(qū)參與度至關(guān)重要,因此在主網(wǎng)上線后,CoinEx基金會(huì)將分配約3.15億個(gè)CET,用于激勵(lì)初期驗(yàn)證節(jié)點(diǎn)及staking參與者。預(yù)留CET激勵(lì)發(fā)放的總體時(shí)長(zhǎng)與出塊間隔時(shí)間有關(guān),激勵(lì)計(jì)劃按出塊速度為3s進(jìn)行估算,每個(gè)區(qū)塊的具體獎(jiǎng)勵(lì)金額參見(jiàn)下面的表格:
區(qū)塊獎(jiǎng)勵(lì)之外,每個(gè)區(qū)塊的收益還包括區(qū)塊中交易的手續(xù)費(fèi)。交易手續(xù)費(fèi)包含兩個(gè)部分:通常意義上的Gas費(fèi)用以及功能費(fèi)。Gas費(fèi)用是為 了防止對(duì)系統(tǒng)資源的惡意濫用,功能費(fèi)部分主要用來(lái)提升鏈上生態(tài)的質(zhì)量,防止惡意使用相關(guān)功能,確保用戶(hù)體驗(yàn)。主網(wǎng)啟動(dòng)時(shí)會(huì)設(shè)置特殊操作的功能費(fèi),而后期可以根據(jù)主鏈演進(jìn)情況,通過(guò)社區(qū)提案的方式對(duì)各個(gè)特殊操作的功能費(fèi)進(jìn)行調(diào)整。特殊操作包括:新Token的發(fā)行,新交易對(duì)上線,鎖定轉(zhuǎn)賬,新賬戶(hù)激活以及交易撮合。
Token發(fā)行與交易
在鏈上發(fā)行新Token是無(wú)需審查的,任何人都可以發(fā)行Token,也可以為發(fā)行的Token創(chuàng)建新的交易對(duì),與發(fā)行新Token一樣 ,創(chuàng)建新交易對(duì)也無(wú)需審查。為了保證新Token的流通性,為新發(fā)行的Token創(chuàng)建的第-個(gè)交易對(duì)必須是該新Token與CET之間的交易對(duì)。為了避免對(duì)系統(tǒng)資源的濫用,保證鏈上生態(tài)的質(zhì)量,發(fā)行Token和創(chuàng)建新交易對(duì)會(huì)收取- -定金額的CET作為功能費(fèi)。Token的Symbol符 號(hào)由2-8位字符數(shù)字組成,不可以數(shù)字開(kāi)頭。Token的精度為8位(十進(jìn)制),Token發(fā)行最大數(shù)量為900億。 Token發(fā)行 者即為T(mén)oken所有者(Owner),所有權(quán)可轉(zhuǎn)移給他人。
發(fā)行Token時(shí)的可選項(xiàng)有燃燒、增發(fā)、凍結(jié)地址、凍結(jié)幣種,并且這些選項(xiàng)只能在發(fā)行Token時(shí)指定,發(fā)行之后不可更改。如果Token發(fā)行時(shí)沒(méi)有開(kāi)啟凍結(jié)地址和凍結(jié)幣種的選項(xiàng),則該Token的流轉(zhuǎn)和持有都是自由且不受限制的。
開(kāi)啟凍結(jié)地址選項(xiàng)后, Token Owner可按需凍結(jié)部分地址,被凍結(jié)地址中的該Token無(wú)法轉(zhuǎn)帳,也不能進(jìn)行Exchange交易,但不影響地址中的其它Token。開(kāi)啟凍結(jié)幣種選項(xiàng)后,Token Owner可按需對(duì)該Token進(jìn)行凍結(jié),凍結(jié)期間該Token的轉(zhuǎn)賬和Exchange交易被全局禁止。Token全局凍結(jié)期間Token Owner可以創(chuàng)建地址白名單,白名單中的地址可發(fā)起轉(zhuǎn)賬交易但不能進(jìn)行Exchange交易。Token全 局凍結(jié)期間,Token Owner對(duì)Token的操作不受影響。
鏈上治理
CoinEx Chain的驗(yàn)證節(jié)點(diǎn)初始數(shù)量為42個(gè),未達(dá)到驗(yàn)證節(jié)點(diǎn)數(shù)量上限時(shí),任何人都可以通過(guò)發(fā)出CreateValidator交易來(lái)創(chuàng)建驗(yàn)證者。網(wǎng)絡(luò)驗(yàn)證節(jié)點(diǎn)數(shù)量達(dá)到上限后,驗(yàn)證節(jié)點(diǎn)按質(zhì)押的CET數(shù)量進(jìn)行排序,選取質(zhì)押量最高的42個(gè)驗(yàn)證者。
社區(qū)通過(guò)先提案、再投票的方式來(lái)達(dá)成社區(qū)治理,驗(yàn)證者可以替委托人投票,但是委托人也有權(quán)對(duì)驗(yàn)證者的投票進(jìn)行覆蓋重投。
投票時(shí)有四種選項(xiàng):同意,棄權(quán),反對(duì),強(qiáng)烈反對(duì):
· 如果有大于1/3的人投強(qiáng)烈反對(duì)票,則提案失敗;
· 如果參與投票的質(zhì)押代幣沒(méi)有達(dá)到所有質(zhì)押代幣的40%,則提案失敗;
· 如果非棄權(quán)票中有超過(guò)1/2同意票,則提案通過(guò)
投票統(tǒng)計(jì)相關(guān)的比例值,都由參數(shù)進(jìn)行配置,后續(xù)會(huì)具備通過(guò)提案調(diào)整參數(shù)的能力。
發(fā)起提案后,社區(qū)需要向相關(guān)提案質(zhì)押10000個(gè)CET代幣以防止提案的濫用。提案通過(guò)后會(huì)退回給原充值帳戶(hù)地址。提案因以下情況不通過(guò)時(shí),相關(guān)的質(zhì)押金額會(huì)被沒(méi)收不再退回,沒(méi)收的質(zhì)押金額由系統(tǒng)保留將來(lái)用于社區(qū)激勵(lì)。
· 充值未達(dá)到10000個(gè)CET,說(shuō)明社區(qū)對(duì)此提案不感興趣或不支持
· 如果參與投票的質(zhì)押代幣沒(méi)有達(dá)到所有質(zhì)押代幣的40%,則提案失敗;
· 有大于1/3的人投強(qiáng)烈反對(duì)票
交易撮合
同主流的中心化交易所一樣,我們采用基于訂單簿的撮合方式,如下圖所示:
訂單簿包含賣(mài)單列表(AskList) 和買(mǎi)單列表(BidList) , 賣(mài)單被標(biāo)記為綠色,買(mǎi)單被標(biāo)記為紅色。賣(mài)單總是希望拉高價(jià)格,買(mǎi)單總是希望壓低價(jià)格。目前只支持限價(jià)單,不支持市價(jià)單。如果賣(mài)-和買(mǎi)一的價(jià)格沒(méi)有交叉的話,市場(chǎng)是沒(méi)有成交的。
AskList和BidList內(nèi)部的組織方式是,先按照價(jià)格排序,價(jià)格更好的單排在最前面,有資格優(yōu)先成交;而價(jià)格相同的訂單,更早被打包上鏈的,即年齡更大的,有資格優(yōu)先成交。在圖中,價(jià)格越低的賣(mài)單在AskList中排列得最靠隊(duì)列頭(靠下),而價(jià)格越高的買(mǎi)單在BidList中排列得最靠隊(duì)列頭(靠上)。
當(dāng)賣(mài)一和買(mǎi)一的價(jià)格有交 叉的時(shí)候,比賣(mài)一價(jià)格高的買(mǎi)單,以及比買(mǎi)一價(jià)格低的賣(mài)單,會(huì)先按價(jià)格后按年齡來(lái)排序,逐一成交。圖中紫色方塊所圈出的賣(mài)單和買(mǎi)單,都有資格參與排序,最終有可能成交。最終它們是否能全部成交, 還要看它們當(dāng)中賣(mài)的總量和買(mǎi)的總量。
用戶(hù)可以通過(guò)NewOrder交易提交新的賣(mài)單或買(mǎi)單到訂單簿中,也可以隨時(shí)撤銷(xiāo)訂單簿中由自己發(fā)出的訂單。Good Till Expire (GTE)訂單和Immediate Or Cancel (10C) 訂單在過(guò)期后都會(huì)自動(dòng)地從訂單簿中刪除。前者會(huì)在預(yù)設(shè)年齡達(dá)到之后的UTC時(shí)間午夜零點(diǎn)過(guò)期,預(yù)設(shè)年齡可以通過(guò)支付更多的功能費(fèi)來(lái)延長(zhǎng)。I0C訂單會(huì)在進(jìn)入訂單簿之后的下一個(gè)區(qū)塊過(guò)期(即只有一次被撮合的機(jī)會(huì))。
鏈下撮合,訂單總是逐一被服務(wù)器接受的,可以對(duì)它們按先來(lái)后到排出全序。在鏈上撮合最重要的不同點(diǎn)是,訂單是批量被打包上鏈的,對(duì)同一個(gè)區(qū)塊內(nèi)部的訂單,無(wú)法對(duì)它們進(jìn)行先來(lái)后到的排序。為了保證對(duì)同一個(gè)區(qū)塊內(nèi)部的訂單一視同仁,我們采用“集合競(jìng)價(jià)”的方式:每輪撮合,針對(duì)可以成交的所有買(mǎi)單和賣(mài)單,計(jì)算出一個(gè)單一的執(zhí)行價(jià)格。決定執(zhí)行價(jià)格的原則是:
1.使成交量最大化。
2.使剩余量最小化。如果有超過(guò)一個(gè)的價(jià)格都能實(shí)現(xiàn)相同的交易量,則選擇剩余量最小化的價(jià)格。剩余量是指可接受執(zhí)行價(jià)格的訂單中,殘余下來(lái)未成交的數(shù)額。
3.市場(chǎng)壓力。如果多個(gè)價(jià)格都能滿足上述第1步和第2步的要求,那么先確認(rèn)目前市場(chǎng)對(duì)潛在價(jià)格的壓力是哪個(gè)方向的。如果剩余量是正數(shù),則買(mǎi)方壓力大,選擇更高的價(jià)格;如果剩余量是負(fù)數(shù),則賣(mài)方壓力大,選擇更低的價(jià)格。
4.當(dāng)正的剩余量和負(fù)的剩余量同時(shí)存在時(shí),以上一次成交時(shí)的執(zhí)行價(jià)格為參考價(jià)格,選擇距離參考價(jià)格最近的價(jià)格。
無(wú)論是中心化交易所還是去中心化交易所,都需要應(yīng)對(duì)搶先交易的問(wèn)題。搶先交易是指借助技術(shù)優(yōu)勢(shì)或者市場(chǎng)優(yōu)勢(shì)而預(yù)先獲知關(guān)于交易的信息,提前預(yù)測(cè)成交價(jià)的變動(dòng)并據(jù)此執(zhí)行對(duì)自己有利的交易,這往往會(huì)使得市場(chǎng)的其他參與方蒙受損失。例如在中心化交易所場(chǎng)景下,交易所能夠看到更為全局的交易信息,從而在撮合交易之前,根據(jù)當(dāng)前市場(chǎng)情況為自己炮制最優(yōu)交易策略并優(yōu)先成交自身交易以牟利。
CoinEx的DEX公鏈在設(shè)計(jì)上,天然地具有防止搶先交易的特性。首先,基于Tendermint的秒級(jí)出塊速度,使得進(jìn)行搶先交易的時(shí)間窗口很小;其次,在P2P網(wǎng)絡(luò)中,很難完整了解到究竟哪些訂單會(huì)被包括到下一個(gè)區(qū)塊中;再次,集合競(jìng)價(jià)的價(jià)格生成機(jī)制,讓搶先的交易和同一個(gè)區(qū)塊內(nèi)的其它交易相比,不具有明顯優(yōu)勢(shì)。因此,普通用戶(hù)希望通過(guò)搶先交易牟利是非常困難的。
作為Validator,有權(quán)決定下一個(gè)區(qū)塊當(dāng)中新增哪些訂單,它可以通過(guò)“審查攻擊”的方式,在區(qū)塊中包含自己專(zhuān)門(mén)]設(shè)計(jì)的訂單,而不包含那些同自己的訂單有沖突的訂單,以此來(lái)侵占其它交易者的利益。但是,DEX上的所有數(shù)據(jù)和執(zhí)行邏輯都是公開(kāi)的,如果Validator頻繁地對(duì)他人的交易進(jìn)行審查攻擊,同時(shí)插入并未經(jīng)過(guò)全網(wǎng)P2P廣播的交易,那么它的行為會(huì)很容易地被觀察到。這會(huì)損害它的信用,最終導(dǎo)致委托人撤銷(xiāo)對(duì)它的支持。
一項(xiàng)可能的改善是,通過(guò)“Commit- Reveal”機(jī)制,允許用戶(hù)選擇性地讓訂單的內(nèi)容延遲揭示(例如延后2~3個(gè)塊),這樣當(dāng)驗(yàn)證者打包下一個(gè)區(qū)塊的時(shí)候無(wú)法看到當(dāng)前交易系統(tǒng)所有的狀態(tài),也使得想要構(gòu)造能夠獲利的搶先交易更為困難。CoinEx團(tuán)隊(duì) 會(huì)持續(xù)深入研究搶先交易問(wèn)題,并在后續(xù)提供更為完善的解決方案。
總結(jié)
CoinEx Chain致力于打造下一代區(qū)塊鏈金融基礎(chǔ)設(shè)施,是為支持可編程現(xiàn)金而打造的一系列公鏈項(xiàng)目,目前的規(guī)劃中包含三條特定應(yīng)用方向的公鏈:
1)支持去中心化交易功能的DEX公鏈;
2)支持智能合約功能的Smart公鏈;
3)支持鏈上隱私保護(hù)功能的Privacy公鏈。
三條公鏈之間通過(guò)IBC鏈間通信協(xié)議進(jìn)行互聯(lián)互通,各司其職又相互配合提供完備的功能。
DEX公鏈通過(guò)資產(chǎn)上鏈、鏈上交易和鏈上撮合等功能,解決目前中心化交易所被廣泛詬病的安全性差、不透明等問(wèn)題。通過(guò)將資產(chǎn)控制權(quán)歸還用戶(hù)、基于訂單簿的公平的鏈上撮合算法、無(wú)需許可的上幣以及創(chuàng)建交易對(duì)的功能,DEX公鏈旨在構(gòu)建透明、安全、無(wú)許可的自由金融平臺(tái)。底層的Tendermint共識(shí)提供的高TPS以及秒級(jí)交易確認(rèn)的特性,能夠在最大程度上還原中心化交易所的體驗(yàn)。
為了最大限度地提高交易處理性能,DEX公鏈選擇僅實(shí)現(xiàn)必要的功能。然而,功能更為豐富的金融應(yīng)用依賴(lài)功能完備的智能合約,而鏈上隱私保護(hù)也日益成為安全焦點(diǎn)。因此,在DEX公鏈之外,CoinEx團(tuán)隊(duì)還將打造-條支持智能合約功能的Smart公鏈以及支持鏈上隱私保護(hù)功能的Privacy公鏈: Smart公鏈為CoinEx Chain生 態(tài)提供智能合約支持,為構(gòu)建復(fù)雜的金融應(yīng)用提供平臺(tái); Privacy公鏈 基于最新的密碼學(xué)進(jìn)展,例如Zether協(xié)議在賬戶(hù) 模型下提供交易金額、發(fā)起方以及接收方的信息隱藏。
DEX公鏈、Smart公鏈以及Privacy公鏈不是相互隔離的孤島,通過(guò)基于中繼的跨鏈通信解決方案實(shí)現(xiàn)互聯(lián)互通,功能互補(bǔ)。需要參與復(fù)雜金融合約的CET代幣可以通過(guò)DEX公鏈轉(zhuǎn)移到Smart公鏈,并在結(jié)束之后再轉(zhuǎn)回DEX公鏈。而需要參與代幣混淆的CET代幣也可以通過(guò)Privacy公鏈的隱私交易進(jìn)行,并可以最終再返回DEX公鏈。這樣三條公鏈各司其職,在保證各自的交易處理速度和功能屬性之外,也可以聯(lián)合提供更為豐富更為安全的功能。在將來(lái),CoinEx團(tuán)隊(duì)也會(huì)根據(jù)社區(qū)需求繼續(xù)打造特定應(yīng)用的公鏈以進(jìn)一步豐富CET的生態(tài)體系。
CoinEx團(tuán)隊(duì)同時(shí)會(huì)對(duì)現(xiàn)有的技術(shù)基礎(chǔ)設(shè)施進(jìn)行優(yōu)化,這包括嘗試?yán)迷隽縑DF機(jī)制改進(jìn)基于PoS機(jī)制的公鏈的安全性,利用MuSig方案來(lái)改進(jìn)多簽交易,減少鏈上空間占用并增強(qiáng)多簽及交易的隱私屬性。利用聚合BLS簽名方案改進(jìn)Tendermint共識(shí)協(xié)議的投票過(guò)程,減少投票信息所占用的鏈上存儲(chǔ)空間。另外,CoinEx團(tuán)隊(duì)會(huì)通過(guò)閾值多方ECDSA簽名機(jī)制為用戶(hù)的私鑰保護(hù)提供更理想的解決方案。