引介|JOYSO—混合式去中心化交易所

前言

JOYSO 是一個基於以太幣智能合約的混合式去中心化交易所。支持ERC20代幣與以太幣之間的交換。這篇文章是要介紹 JOYSO智能合約。更多消息可以到 joyso.io 查看。


JOYSO 為混合式去中心化交易所,用以太坊智能合約處理使用者賬號, 餘額, 以及撮合邏輯。中心化的撮和服務來撮合可以match 的單子。先簡略寫一下JOYSO 的特性,後續再一一說明。

  1. 中心化撮合,鏈上結算

  2. 實時確認

  3. 近中心化交易所的用戶體驗

  4. 防止 front-running attack


-Joyso 架構-

流程:

  1. 使用者根據當前的掛單簿下單,若有可以撮合的單子,會由 matching server撮合併送到區塊鏈上等待確認。而剩下的餘額會轉為相對應的買/賣單,回到掛單簿上

    Advertisements

  2. 如果沒有可以撮合的單子,這個掛單會停留在掛單簿上,等待有緣人掛單撮合。

細節:

  1. 由於 JOYSO 可以確定 matching server每筆撮合一定會上鏈。所以會實時更新掛單簿,可以讓使用者不用等待區塊確認直接做下一筆交易。

  2. 也因為由 matching server負責撮合,所以不會像其他去中心交易所一樣會有多筆撮合同時搶單的狀況,同時也確保礦池不會影響交易順序,因為只會有一筆合法的撮合。

  3. matching server 會跟據區塊鏈上智能合約以及當下 JOYSO已撮合卻未上鏈的信息,還有已經下單卻未被撮合的信息來分析用戶下單是否合法。若合法則會接受該筆掛單。

  4. 除了把鏈上鏈下當下信息整合算出來的合約狀態來接受掛單之外,我們還要確保在交易未確認前,智能合約的狀態沒有受到不可預期的更新。更細一點的說法,因為我們是交易所,我們要防止的是當智能合約在做交易時,其中一方使用者的餘額不足。所以我們要確保交易未確認前,智能合約的狀態沒有受到不可預期的餘額」減少」。所以我們在智能合約里多做一層許可權管控,只能由JOYSO 認定的地址對合約發起這些交易。

    Advertisements

  5. 即使只有 JOYSO 可以發起這些交易,智能合約仍會檢查 JOYSO送到合約上的內容是否含有該使用者的簽章,會由這個方法來確認使用者簽過章接受由 JOYSO 幫忙撮單的結果。

  6. 除了驗證使用者簽章之外,智能合約還會檢查該單的狀態,不會亂扣使用者的餘額。比如,當一筆掛單為」賣 JOY 10 個,每個為 1Ether」,那智能合約最多只會交易掉該用戶10個 JOY,並且每個 JOY 的金額不會「小於」 1 Ether。反之若掛單為「買JOY 10 個,每個為 1 Ether」,那智能合約最多只會交易掉該用戶 10 個 Ether,並且每個 JOY的收購金額不會「大於」 1 Ether。

  7. 使用者仍可直接對智能合約出金,智能合約若接收某使用者直接提領的要求,會給 JOYSO一定的時間完成在未確認列表裡與該用戶有關的交易。而 JOYSO 在接收到智能合約送出的 event之後也會下架該使用者的掛單,以免出金后影響交易正確性。

-Joyso 智能合約概觀-

其他

  1. 從架構圖來看,前半部是跟中心化伺服器一樣,會需要標準的伺服器服務以向使用者提供好的體驗。後半為去中心化的部分,用智能合約確保使用者權益。惟在送上區塊鏈的部分,以太坊因為每個區塊有gas 使用上限,且 15 秒才產生一個區塊。現在去中心化交易所已佔掉以太坊大部分的交易,若再更多的話,往後的吞吐量是不夠的。

  2. 相比於其他完全去中心化系統,JOYSO 伺服器已避免了錯勿的撮單會浪費 gas。除此之外,降低每筆撮合所需要的gas,以及降低需要上鏈撮合的交易數量,是我們嘗試要增加 JOYSO 合約吞吐量的兩個方式。

  3. 為了要降低每筆撮合所需要的 gas 量,JOYSO每筆撮合裡面會有多個掛單。只要符合使用者利益的可以同時撮合,相比於其他去中心化交易所每個撮合都是兩個掛單,當無法完全撮合會需要多餘的交易。另外,由於交易由JOYSO伺服器負責送出,我們可以自己計算event的通知以及內容,不用寫在區塊鏈上。最後是區塊鏈上空間的共享,我們儘可能壓縮智能合約結賬所需的數據。

安全性

Joyso 為中心化撮合,所以這邊要特別分析中心化撮合會對使用者的影響。

  1. 因為智能合約上的規則,JOYSO無法在沒有取得使用者同意下,隨意亂動使用者的餘額。即使有使用者的簽章,智能合約也會檢查簽章內容,不會發生用戶沒允許的交易。

  2. 就像一般交易所一樣,所有的掛單以及未確認交易都會公布讓所有使用者知道。當有兩筆掛單可以撮合,大家都會看到,所以不用擔心JOYSO 會不幫某些地址撮單。

  3. JOYSO 「可以」 屏蔽某些特定 address 的掛單,若是這個狀況,該 address 仍可以直接向智能合約出金。

  4. JOYSO 「可以」 做套利,但因為所有掛單布都會公開,且交易成功會實時回復,如同中心化交易所一樣。除此之外,即使 JOYSO成功套利,智能合約仍確保該使用者買賣單價不會劣於當初用戶所簽的價位。(註:套利是指當現在有一個掛賣單為1 Joy換1Ether,若此時有使用者掛買單用1 Ether換0.5 Joy,JOYSO 注意到這個狀況而產生兩個單子,一為買單用1Ether換1 Joy, 另一為賣單 0.5 Joy 換 1 Ether,如此 JOYSO 可以從中獲利 0.5 Joy)。

總結

JOYSO為混合式去中心化交易所,提供近乎中心化交易所的使用體驗。並由智能合約保障使用者資產,不會因為被駭或惡意倒閉而造成損失。

Advertisements

你可能會喜歡