運行在區塊鏈上的交易所(下)

Yuren Ju
Taipei Ethereum Meetup
11 min readFeb 11, 2018

--

接續上半部分講解基礎概念以及中心化交易所,本篇將會解釋去中心化交易所以及結論。如果你還沒看上半部,連結在這:

去中心化交易所 (Decentralized Exchange)

去中心化交易所跟一般中心化交易所最不一樣的地方,就是交易行為發生在區塊鏈上,就比如說 1 ETH 交換 10 BAT 來說,兩者不一樣的地方在於:

  • 中心化交易所:在交易所本身的資料庫中增減使用者資產欄位。
  • 去中心化交易所:在區塊鏈上直接交換,加密貨幣會直接發回使用者的錢包,或是保存在區塊鏈上的智能合約。

這樣直接在區塊鏈上交換的好處在於交易所並不持有使用者大量的加密貨幣,所有的加密貨幣會儲存在區塊鏈上使用者的錢包或智能合約控管。本來需要信任中心化的交易所,現在僅需要信任區塊鏈以及智能合約即可。而用於交易所的智能合約大多會公開源碼讓所有人可以確認這份合約的細節。

而中心化交易所通常不會公開交易細節的源碼,實際上如何運作也只有其內部人員可得知。公開智能合約維持了交易過程的透明與安全性,就算其中有利潤的拆分也會公開在區塊鏈上。

目前採用去中心化的交易所使用的技術都有不同之處,以下的文章將會逐一介紹三間交易所。

EtherDelta

EtherDelta 是一個同時使用去中心化與中心化的技術的交易所。在 EtherDelta 當中,不管是存款、提款或是交易加密貨幣等行為都直接在區塊鏈的智能合約上面完成,使用中心化技術的地方是建立了一個交易清單資料庫並且在網站上面呈現,讓有需要交易的雙方可以在網站上面看到所有的交易訂單並且進行交易。

理論上交易清單不見得要記錄在中心化的資料庫,其實也可以記錄在區塊鏈上,但是目前因為交易費太高的這個技術限制關係,記錄交易清單在區塊鏈上是不可行的。而 Ethereum 改善交易速度的工作正在積極展開中,但在此之前這樣的方法還是會需要如 EtherDelta 這樣代替的解決方案。

一樣以 1 ETH 交換 10 BAT 為例,參照下圖流程為:

  1. User A 先在 EtherDelta 提供的智能合約存入交易用的加密貨幣
  2. 建立一個 1 ETH 交換 10 BAT 的賣單在智能合約當中
  3. 在此同時,EtherDelta 會在資料庫建立這筆訂單的資訊,讓所有人可以在網站上看到這筆賣單
  4. User B 在 EtherDelta 的網站上看到這筆賣單,決定用 10 BAT 去交換 1 ETH
  5. User B 將 10 BAT 送入智能合約當中,當智能合約搓合成功後,會在區塊鏈上的智能合約記錄雙方目前持有的加密貨幣餘額

當 User A 或 User B 想要取回加密貨幣時,可以在 EtherDelta 的網站上用提款的功能,當然也可以直接呼叫智能合約內的取款功能。

EtherDelta 最大的好處是交易全部都在區塊鏈上完成,而且跟中心化交易所不同的是 EtherDelta 沒有持有任何私鑰,當使用者將加密貨幣存入時,其實是儲存到智能合約中,而 EtherDelta 所用的智能合約源碼都可以在 etherscan 網站上找到 。

這雖然不能保證 EtherDelta 完全安全,但是比起中心化交易所有相對較多的途徑可以存取到這些私鑰,EtherDelta 這樣的方式只要確保智能合約的安全性,基本上被盜的風險就相對低了(注意不是沒有風險,只是風險降低)。

最近一次 EtherDelta 的安全性事件是在 2017 年底駭客透過劫持了 EtherDelta 的 DNS 域名,並且假造了一個完全仿造的 EtherDelta 網站來欺騙使用者,但這樣的盜用方法可以用在任何的交易所,無論是中心化或是去中心化。

至於 EtherDelta 的缺點則有:

  1. 沒有自動搓合機制:使用者要自己找到自己需要的交易單手動撮合,而所有的中心化交易所都有自動撮合機制。
  2. 交易速度限制:因為 Ethereum 目前的交易速度關係,每次要完成一筆加密貨幣交易時,會需要等一段時間才會知道是否有成功。如果有多個使用者同時搓合同一張買單時,需要等到下個區塊產生時,才會知道自己有沒有成功搓合該張訂單。
  3. 較多的 blockchain tansactions:從存款、建立買賣單、提款至少就要三個交易(這邊指的是區塊鏈上的交易,每次對區塊鏈的改動就需要發出一筆交易),其他的方案通常都會改進這個缺點。
2018/2/22更新 1:有媒體報導 EtherDelta 停止交易中,目前還不確定是什麼狀況。
更新 2:根據媒體報導,EtherDelta 目前出現營運問題。

Kyber Network

Kyber Network 是一個完全去中心化的交易所解決方案,跟 EtherDelta 還有一小部分必要元件採用中心化技術不同,Kyber Network 的交易所中所有必要元件都在區塊鏈上面。

對使用者來說,如果需要將 1 ETH 轉換成 BAT,僅需要呼叫 Kyber Network 的智能合約中的 Transfer() 函式,當交易成功時 BAT 就會直接發送到指定的錢包地址,因為只有一個 transaction 而且是直接從錢包發出,不需要掛單與等候,所以在交易費或交易時間上都很不錯。比起 EtherDelta 從存款、提款、掛單至少要三個 blockchain transactions 比較起來 Kyber Network 僅需一個 transaction 真的佔盡優勢。

僅需要一個 Transaction 就可以達成交換加密貨幣就是 Kyber Network 的設計關鍵。

Kyber Network 上面沒有掛單的功能,取而代之的是由 Reserve Manager 這個角色直接對智能合約設定匯率,使用者交易前就可以透過網站或 API call 取得匯率,由於在交易前就可以取得匯率,使用者就可以依照此匯率決定要不要在 Kyber Network 交易貨幣。

至於各式各樣的加密貨幣則由 Reserve Contributor 這個角色提供,他們可以在交易所中將自己的加密貨幣提供給 Kyber Network 並且分得利潤。

這邊只提到 Kyber Network 的概觀,更多細節可以參考他們的白皮書(中文英文)了解詳情。

我個人認為 Kyber Network 比較像是如 MaiCoin 或 BitoEX 這樣的買賣幣中心,但是加入了讓其他使用者也可以加入加密貨幣提供者的功能,如果我擁有很多 BAT 加密貨幣,就可以申請成為 BAT 加密貨幣提供者利用閒置的 BAT 加密貨幣放在 Kyber Network 上透過匯率獲得利潤。

但由於 Kyber Network 沒有掛單的功能,就沒辦法在指定價格換得自己想要的貨幣,或許可以透過自己監控匯率來完成這個功能,但目前在 Kyber Network 的白皮書裡面沒有包含這樣的功能在智能合約當中。

JOYSO

JOYSO 是一個由台灣團隊所開發的交易所,預計今年上線。根據白皮書(中文英文)所述 JOYSO 是同時採用了中心化以及去中心化技術的交易所,在保存加密貨幣、執行交易更新餘額等操作將會在區塊鏈上完成,而建立買單/賣單、搓合交易則是在 JOYSO 的中心化伺服器上完成。由於目前服務還沒上線,以下的資訊大多都從白皮書裡面整理。

瞭解 JOYSO 以前,先來看一下 EtherDelta 目前的問題是什麼。

EtherDelta 目前比較大的問題主要還是出在交易速度,以上紅字的部分會需要數十秒到數分鐘的時間完成。在一般中心化交易所很難想像開單以及成交需要這麼久的時間,更何況在交易時很有可能有許多使用者同時都想搓合同一張單,此時只有被區塊鏈納入下個區塊的交易會成功,而其他會失敗。

另外一個大問題是 EtherDelta 並沒有自動搓合機制,使用者必須在網站上選擇要搓合哪張訂單。雖然 EtherDelta 已經是相當多人使用的交易所了,但是這些缺點還是讓他很難被大眾接受。

接下來看一下 JOYSO 的架構。

JOYSO 跟 EtherDelta 一樣的地方在於使用者的加密貨幣都保存在區塊鏈上面的智能合約,而不是由交易所持有私鑰保存。

而這個智能合約包含了交易加密貨幣的功能,跟 EtherDelta 不一樣的地方是它支援 持有使用者的簽章就可以執行交易 的功能。如果你忘了簽章是什麼,請到上半部瞭解簽章的功能。

當 User A 建立一張賣單時,JOYSO 網站會透過 MetaMask 或 Ledger Nano S 將此賣單用 User A 的私鑰簽章,並且將此賣單與簽名一起送到 JOYSO 的伺服器。

當 User B 建立買單(並且簽名),並且符合 User A 的賣單時,JOYSO 的系統就會自動搓合這兩張單。搓合之後則會由 JOYSO 的 Admin 帳號送出交易到智能合約,送出的內容包含搓合後的訂單與雙方的簽名。

由於有附上簽名的關係,智能合約可以在交易前檢查確認雙方的訂單是否都擁有各自的簽名,如果沒有正確的簽名就不執行該交易。

即時此時訂單在 JOYSO 中心化的系統中遭到入侵,也可以透過簽名的方式驗證,保證智能合約不會執行有問題的交易。也保證了就算 JOYSO 被攻破,駭客也不能很輕易的領走在智能合約內的加密貨幣。

這邊列舉一下比起 EtherDelta 來說 JOYSO 的優點。

  1. 如一般中心化交易所一般擁有自動搓合機制
  2. 交易速度較快,因為搓合系統由中心化的系統執行
  3. 因為搓合程序不在區塊鏈上而由中心化的系統確認後一一的送入區塊鏈。保證不會有多個使用者同時搶同一張單後還要等到下個區塊才能知道到底成功還失敗。
  4. 交換加密貨幣的 transaction 由 JOYSO 的 Admin 帳號執行,使用者不需要負擔這個部分的交易費(只要負擔存款/提款的交易費)

在這些優勢下,JOYSO 仍保持跟全中心化的交易所接近的使用體驗,這樣取去中心化的安全特性,再加上中心化交易所的使用體驗,就是 JOYSO 交易所想要達成的目標。

結論

中心化與去中心化交易所

關於中心化交易所與去中心化交易所來說,去中心化的交易所利用了區塊鏈與智能合約的三個特性:去中心化、透明性及不可篡改性來提高交易所的安全,同時也保持了交易所的透明性。

而中心化交易所目前的優勢還是已經經過了時間的驗證,雖然入侵事件頻傳,但相對來說中心化交易所的技術還是比較成熟。

三間去中心化交易所的比較

至於文章中所提到的三間不同的去中心化交易所來說:

  • EtherDelta 是比較早期開始發展的交易所,累積了較多使用者但也讓其他人慢慢瞭解到 EtherDelta 所使用的去中心化技術限制。
  • Kyber Network 透過不提供買賣單的方式,創造出另外一種完全去中心化的營運模式,同時單一 Transaction 就可以交換貨幣也大幅提升了其優勢。
  • JOYSO 則是提供了跟中心化交易所非常接近的功能與使用者體驗,但卻改善了 EtherDelta 目前的缺點,提升了交易速度同時支援自動搓合機制。

EtherDelta 比較像是初代去中心化交易所,而 Kyber Network 與 JOYSO 則透過不同的方法來解決這些問題,撰文的同時 Kyber Network 正好要在 Ethereum mainnet 上面部署,值得大眾期待來觀察一下這樣全去中心化的技術可以走到什麼樣的程度!

至於 JOYSO 則是希望透過混合中心化與去中心化的技術來達成接近中心化技術的使用體驗,但又保有去中心化的安全性,雖然目前交易所還沒上線,但是也值得接下來持續觀察這個交易所的表現。

最後感謝各位閱讀這篇長文,如果你覺得這篇文章對你有幫助,不妨考慮用 ETH 贊助作者,讓我有動力可以繼續創作。以下是我的 ETH 帳號地址:

ETH Address: 0x0a0cB51434e1DB4d2dffeB335C96f933d20bcaB4

--

--