運行在區塊鏈上的交易所

熱門的交易所大多都是採用中心化技術,也因此儲存了大量加密貨幣成為了駭客的目標;但如果交易所本身就去中心化,運行在區塊鏈上呢?會不會安全、透明得多?這裡介紹三個給大家認識。
評論
評論

原文 篇刊載於 Medium,依照 CC BY-SA 4.0 轉載並合併。作者 Yuren Ju 為 Taipei Ethereum Meetup 社群成員,除了咖啡與旅遊外,也喜歡動手寫程式解決自己或別人在生活中遇到的疑難雜症,最新的興趣是探索區塊鏈的可能性。

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

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

這陣子跟幾個朋友解釋過在區塊鏈上運行的交易所的基礎原理,這篇文章整理了我對交易所的理解,並且簡介三間去中心化交易所 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 億台幣,可見交易所的安全有多麽的重要,而保存鉅額加密貨幣的私鑰有多麽需要好好的保管。

去中心化交易所 (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:從存款、建立買賣單、提款至少就要三個交易(這邊指的是區塊鏈上的交易,每次對區塊鏈的改動就需要發出一筆交易),其他的方案通常都會改進這個缺點。

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

【區塊鏈的教育不能等,兩小時教你在校就懂幣圈投資】
本年度最後一場幣圈活動,特地優惠學生族群,INSIDE 財經主編李柏鋒擁有多年教學經驗,教你從學生時代就開始培養虛擬貨幣的理財觀念!
立即前往活動通報名:「硬塞虛擬貨幣投資入門課,兩小時帶你進幣圈!」:


助攻金融科技!訊連科技推出 FaceMe® Fintech 解決遠距投保、視訊會議、人臉辨識三大難題

因應疫情時代的視訊投保需求,以及各種遠端金融服務場景,訊連科技推出 FaceMe® Fintech 一站式解決方案,解決遠距投保、視訊會議、人臉辨識三大難題。
評論
Photo Credit:訊連科技
評論

受疫情影響,金管會於今年 6 月宣佈視訊投保暫行方案,確保壽險業者各項服務及業務不因疫情影響中斷;截至7月底止,已有不少知名金融保險業者獲准試辦遠距投保業務項目。

目前小規模試辦的結果,卻因為市面上欠缺可整合視訊會議及 eKYC(Electronic Know Your Customer)的解決方案,業者大多得透過整合多套不同服務,例如:採用 Teams、Webex 或  LINE 等工具進行視訊會議,或保險簽單需事先提供予客戶列印、簽名,又或者是透過第三方的方式錄影(如透過手機或攝影機翻拍)等,導致使用者體驗不佳。此外,這樣的做法還是仰賴保險業務員以肉眼比對投保人及身分證,仍有冒用風險。

對於未來大幅度開放遠距投保,勢必需要更成熟、高度整合的解決方案。

訊連科技推出 FaceMe® Fintech 解決方案,解決遠距投保的身份認證難題

以保險、金融應用來說,目前主流的生物辨識 eKYC 技術主要包含:人臉辨識、指紋辨識、虹膜辨識等。其中,人臉辨識在過去數年來,因為深度學習技術導入,辨識度大幅提高,加上辨識速度快、無須專用硬體(可使用裝置上的相機)即可進行遠端辨識,大大降低接觸風險,因此也在這幾年成為生物辨識技術的主流。

只不過,目前全球的人臉辨識技術大多為中國廠商,在台灣要落地應用,恐怕會有資安疑慮,無法安心採用。

Photo Credit:訊連科技/訊連科技推出人臉辨識產品 FaceMe® 並可作為一系列金融科技解決方案。

值得注意的是,過去以威力導演、PowerDVD 等軟體知名的「訊連科技」,近年來也跨足 eKYC、AI 領域,擴充人臉辨識產品,推出「FaceMe® AI 人臉辨識引擎」,提供高達 99.7% 準確度的人臉辨識服務,並於全球知名的 NIST(美國國家標準暨技術研究院)之 FRVT 人臉辨識基準測試中,於 1:1(人證比對)及 1:N(身份認證)項目排行全球第六,除了是台灣排名最佳的廠商之外,也是該項測試排除中、俄廠商的全球第一。這樣的技術,也是訊連科技針對金融保險業者的 FaceMe® Fintech 解決方案中,重要的核心之一。

辨明真偽!FaceMe® Fintech 提供整合性的金融科技解決方案

談到金融科技,除了資安、金流系統之外,在講求無遠弗屆的遠端服務時,辨明真偽更是信任基礎的第一步。因此,訊連科技的 FaceMe® Fintech 以精準辨識的技術為核心,為金融、保險應用提供一系列解決方案,包含:

  1. eKYC SDK 提供人臉辨識、身分證真偽辨識、活體辨識、人證比對等功能。
  2. 視訊會議 SDK 提供金融保險業者於公有雲或私有雲架設視訊會議、進行錄音錄影、畫面分享,業務員能透過畫面分享進行保單說明。以公有雲來說,FaceMe® Fintech 的視訊會議採用位於台灣機房的 GCP (Google Cloud Platform),即可符合資料落地的需求。

其中,視訊會議 SDK 功能完整,有諸多優勢。除了可於視訊會議過程中進行錄音錄影(符合金管會要求)、業務員能透過畫面分享進行保單說明之外,還有許多身分驗證服務,可導入包含:

  1. 身分證真偽辨識:透過 AI 辨識身分證是否為真,避免業務員肉眼誤判。此外,若有二階段認證需求,也提供聲紋比對功能。
  2. 活體辨識:避免透過相片或影片假冒身分。FaceMe® 的活體辨識可提供透過一般行動裝置之 2D 鏡頭、或是透過 3D 鏡頭(如 iPad Pro、iPhone X 等)進行活體辨識。
  3. 人證比對及核身:透過人臉辨識,比對證件照及鏡頭前的投保人是否為同一人,減少業務員肉眼誤判。
  4. OCR 光學字元辨識: 身分確認後,將證件資訊帶入保單,如姓名、身分證號、換發日期等,省去打字麻煩,加快投保速度。
Photo Credit:訊連科技/FaceMe® 可跨平台建置於 Windows、Linux、Android 與 iOS 等作業系統,亦可提供 HTTP API ,進行網銀服務串接。開發者可在各種終端設備或雲端服務中快速導入人臉辨識功能,進行身份辨識、身分驗證等多種應用。

不限智慧金融!FaceMe® 的其他廣泛應用:智慧安控、智慧健康量測

於前一陣子 IEEE 舉辦的 ICCV 電腦視覺大會中,訊連 FaceMe® 活體辨識成績為全球第三,且是排除中、俄廠商的全球第一。 FaceMe® 除了核心的跨平台軟體開發套件外,也針對安控、金融保險等應用,提供垂直整合方案。

除了上述保險應用之外, FaceMe® 也可廣泛使用於遠距開戶、 ATM 無卡交易、行動網銀身分辨識、遠距客服等服務,或是於分行內建立迎賓系統、黑名單偵測、機房金庫的門禁管理等;在疫情時代下,也提供非接觸性的健康量測功能,例如偵測是否配戴口罩,或偵測訪客額溫等。如果終究都要推行遠端,何不現在就了解 FaceMe® 各種強大的應用之處?