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

Yuren Ju
Taipei Ethereum Meetup
5 min readFeb 11, 2018

買過加密貨幣的人大多都用過加密貨幣的交易所,相信大家對此也不陌生。目前熱門的交易所大多都是採用中心化技術的交易所,而也因為儲存了大量的加密貨幣而成為駭客的覬覦目標。

在此同時也有許多專案開始研發運行在區塊鏈的去中心化交易所。比起中心化的技術,運行在區塊鏈上的去中心化交易所是利用區塊鏈的三個特性:分散式、透明、不可篡改的特性來加強交易所的安全性與透明度,而許多解決方案也逐漸地浮出檯面。

這陣子跟幾個朋友解釋過在區塊鏈上運行的交易所的基礎原理,這篇文章整理了我對交易所的理解,並且簡介三間去中心化交易所 EtherDeltaKyber Network 以及 JOYSO 的技術。

這篇文章會分成上下兩部分,上半部分(也就是本文)講解基礎概念與中心化交易所,下半部分講解去中心化交易所以及結論。

另外這邊討論的去中心化交易所僅討論以太坊 (Ethereum) 上與所有相容於 ERC20 的加密貨幣如 EOS, OMG, BNB 等的交換,並沒有討論到跨區塊鏈如 BTC, XRP 等的貨幣交換。

資訊揭露:我認識幾位開發 JOYSO 交易所的朋友,畢竟對他們的技術了解比較多,所以也不能保證本文觀點是完全客觀,閱讀文章時請務必考慮這個因素。

基礎概念

在開始前我們先講解一些區塊鏈上的基礎概念,接下來解釋交易所時會比較容易進入狀況。

錢包 (Wallet)

當使用加密貨幣時,都需要建立一個錢包 (Wallet),錢包是一個私鑰搭配上對應軟體/硬體的組合,透過錢包可以讓使用者發送與接收加密貨幣。而私鑰就是一把可以動用錢包裡面的加密貨幣的鑰匙,任何人只要擁有了某個錢包裡面的私鑰,他就可以動用錢包裡面的加密貨幣。

簽章 (Signature)

上面有提到錢包裡面內含了一組私鑰,這組私鑰會由使用者自己保存,但是這個錢包的公鑰則會提供給區塊鏈上的任何使用者與智能合約。公鑰有個很大的用處就是任何文件都可以利用私鑰簽帳後得到一個簽名,而這個文件加上簽名可以用公鑰來驗證這份文件是不是由特定私鑰的擁有者所發出。如果這份文件或是公鑰被變更過了,其他使用者(或智能合約)就可以驗證出這個竄改。

智能合約 (Smart Contract)

智能合約 (Smart Contract),是一種存在於區塊鏈上的程式。就如同區塊鏈上的分散式帳本一樣,智能合約也擁有去中心化、透明、不可篡改的特性,另外智能合約也跟一般錢包一樣,可以接受/發送虛擬貨幣,而執行的細節則可以在合約裡面定義。

比如說我今天發佈了一個智能合約到區塊鏈上,裡面放了 1 ETH,並且撰寫程式碼指定如果有人呼叫了 trade() 函式並且帶入 10 BAT (這是另外一種加密貨幣),我就把 1 ETH 跟他交換,這樣我就可以用 1 ETH 換得 10 BAT。

重要的智能合約通常會公開其源碼讓所有人都可以檢視這份合約,確認其運作是否安全與合理。

當然智能合約還可以做很多其他的應用不限於交換貨幣。而上述的交換加密貨幣是一個簡化過的例子。

講解完這兩個基礎概念,讓我們來談談一般大眾平常使用的加密貨幣交易所,也就是中心化交易所。

中心化交易所 (Centralized Exchange)

中心化交易所其實就是大家主流使用的交易所,無論是 Bitfinex, Poloniex, coincheck 等都是中心化交易所。大家使用這些交易所的方式,通常就是到網站上註冊,根據不同國家的法規經過一連串的認證程序後,就可以開始把加密貨幣轉入他們指定的錢包地址後,就可以開始在上面交易加密貨幣。

拿剛剛的例子來說,如果 使用者 A 要拿 1 ETH 交換 10 BAT,中心化交易所會在他們的系統的資料庫當中,建立一筆賣單,內容是 1 ETH 交換 10 BAT。如果有另外一位 使用者 B 也建立了一筆買單,願意用 10 BAT 買 1 ETH,系統就會自動搓合這筆交易,在 使用者 A 的資產清單中扣掉 1 ETH,增加 10 BAT,使用者 B 反之亦然。

這樣的交易不見得會發生在區塊鏈上真正的貨幣交換,取而代之的可能僅是修改交易所資料庫內的資產數字,使用者看到的只是帳面上數字的變化,交易所只要在使用者提款時準備了充足的加密貨幣匯出即可。

當使用者把加密貨幣轉到他們提供的錢包地址後,交易所就擁有了操作這些加密貨幣的權利,使用者必須要「信任」這個網站會保證貨幣安全,才能把加密貨幣轉給交易所操作。

正因為中心化交易所擁有了存放大量加密貨幣的私鑰,中心化交易非常容易吸引駭客 (Cracker) 的攻擊,而他們的目標絕大部分就是這些存放大量加密貨幣的私鑰,偷走了這些私鑰就代表駭客盜走這些加密貨幣。

根據撰文時的統計,在 Bitfinex 的統計資訊過去 24 小時內光 BTC/USD 的交易量就有 43,837.31 BTC,依照今天的匯率大概是 120 億台幣的交易量,自然也很容易受到駭客覬覦。近日 coincheck 因為 NEM 加密貨幣盜領事件總共損失了約 150 億台幣,可見交易所的安全有多麽的重要,而保存鉅額加密貨幣的私鑰有多麽需要好好的保管。

以上就是基礎概念以及中心化交易所簡介,下半部分則會講解去中心化交易所以及結論。

--

--