0x protocol概述

0x protocol是當(dāng)前幣價(jià)比較高的一種token exchange協(xié)議。提供了一種以太坊網(wǎng)絡(luò)中token交換的去中心化解決方案。

協(xié)議概述

下圖為0x protocol的off-chain order轉(zhuǎn)發(fā)和on-chain settlement的邏輯圖。

圖1. 0x protocol 整體邏輯圖

上圖中灰色的矩形和圓形分別代表以太坊上的智能合約和賬戶。具體的邏輯:

  1. maker同意DEX(去中心化交易所合約)獲取他們關(guān)于Token A的信息。
  2. Maker創(chuàng)建一筆關(guān)于Token A兌換為Token B的訂單,并且聲明了期望的交易rate和過期時(shí)間。將以上訂單簽名。
  3. Maker 通過網(wǎng)絡(luò)傳輸層將此訂單廣播
  4. Taker接收到這筆訂單,并且決定來完成此項(xiàng)訂單。
  5. Taker同意DEX來獲取他的關(guān)于Token B的信息。
  6. Taker提交maker的那條以簽名的order到DEX合約。
  7. DEX合約認(rèn)證maker的簽名,驗(yàn)證通過后,然后將兩者的Token按照擬定的rate進(jìn)行交換。

其中,關(guān)于上述的操作3操作4off-chain的行為,0x protocol的網(wǎng)絡(luò)傳輸層和會(huì)話層以及應(yīng)用層來負(fù)責(zé)Order的relay,展示,以及推送。當(dāng)然,用戶也可以將簽好名的order通過email,twitter等方式廣播出去,Taker一旦獲取之后,將order發(fā)送至DEX合約即可完成交易。

消息格式

0x protocols的order的消息格式定義為:

Name Data Type Description
version address DEX 地址
maker address order的創(chuàng)建者
taker address 接單者地址
token A address ERC20 token 地址
token B address ERC20 token 地址
value A uint256 token A 的數(shù)量
value B uint256 token B 的數(shù)量
expiration uint256 過期時(shí)間
v uint8 ECDSA 簽名參數(shù)
r bytes32 ECDSA 簽名參數(shù)
s bytes32 ECDSA 簽名參數(shù)

Order廣播

0x protocols采用了off-chain的模式來傳送order,用戶可以自發(fā)的廣播自己的訂單。
同時(shí),0x protocol 設(shè)計(jì)了一個(gè)簡單的轉(zhuǎn)發(fā)order的機(jī)制,maker也可以通過尋找relayer來上傳自己的order。
其中relayer,maker,taker三者的關(guān)系如下:


relayer 轉(zhuǎn)發(fā)order邏輯圖

協(xié)議提供了feeRecipient來促進(jìn)order的轉(zhuǎn)發(fā),具體order廣播邏輯如下:

  1. Relayer公布一個(gè)fee的schedule和收款地址
  2. Maker創(chuàng)建order,配置relayer的fee和地址,然后簽名
  3. Relayer收到訂單之后,校驗(yàn)訂單,然后發(fā)布在自己的order book中
  4. Takers 通過order book,選中合適的order,然后簽名發(fā)送到以太坊的(DEX)智能合約地址上

上述order的數(shù)據(jù)格式如下:

Name Data Type Description
version address DEX 地址
maker address order的創(chuàng)建者
taker address 接單者地址
token A address ERC20 token 地址
token B address ERC20 token 地址
value A uint256 token A 的數(shù)量
value B uint256 token B 的數(shù)量
expiration uint256 過期時(shí)間
v uint8 ECDSA 簽名參數(shù)
r bytes32 ECDSA 簽名參數(shù)
s bytes32 ECDSA 簽名參數(shù)
feeRecipient address relayer的地址
feeA uint256 Maker需要的費(fèi)用
feeB uint256 Taker需要的費(fèi)用

智能合約

0x protocols的DEX智能合約其中的一個(gè)能力是驗(yàn)證訂單的合法性,通過使用ecrecover func 驗(yàn)證簽名,來判斷order的合法性。

address publicKey = ecrecover( hash, signature( hash ) );
                           if ( publicKey != maker ) throw;

除此之外,DEX合約存儲(chǔ)了已經(jīng)filled的訂單的reference,來阻止一個(gè)order被filled多次。協(xié)議將order通過Keccak SHA3算法映射到一個(gè)32byte的hash中,然后作為key存儲(chǔ)。
同時(shí),0x protocol協(xié)議也增加了一個(gè)valueFill字段,來完成訂完部分完成的功能。

總結(jié)

0x protocols 采用onchain的DEX協(xié)議完成token的交易,保證token交易的安全,將order book的相關(guān)業(yè)務(wù)邏輯轉(zhuǎn)交給各個(gè)要接入0x protocols的應(yīng)用層。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容