DeFi 項目《Uniswap》完整解析(一)Uniswap 是什麼?

一個去中心化、設計簡潔、還能幫你賺被動收入的交易所

吳冠融 Roger Wu
Jul 11 · 11 min read

系列文目錄

本文目錄

前言

這篇文章的目的是讓讀者對 Uniswap 有整體、初步的認識,
所以不會涉及 Uniswap 中較複雜的設計,
想更深入了解的讀者請閱讀系列文章《(三)Uniswap 的智能合約如何運作?》(等我們寫完之後XD)。

Uniswap 是什麼?(白皮書的回答)

首先來看看 Uniswap 白皮書中是怎麽介紹 Uniswap 的:

Uniswap is a protocol for automated token exchange on Ethereum. It is designed around ease-of-use, gas efficiency, censorship resistance, and zero rent extraction.

翻成中文:

Uniswap是一個用於以太坊上自動代幣交換的協議。它圍繞易用性、gas 使用效率、抗審查性和零抽租而設計。

這個介紹非常簡明扼要,
只是使用者們可能想聽到更具體的答案。

Uniswap 是什麼?(我們的回答)

Uniswap 是一個在以太坊區塊鏈上運行的交易所,
它支援 ETH(以太幣)與 Token 之間、Token 與 Token 之間的快速兌換。
(本文的「Token」皆指「ERC20 Token」)

要說 Uniswap 有什麼特色,
我覺得最大的特色就是它非常的去中心化
開發團隊沒做 ICO、不抽手續費、也不收上幣費,
更直接地說,
Uniswap 開發團隊在 Uniswap 交易所中沒有任何特權。

之所以做得這麼極端,
可以從 Uniswap 有趣的發展史談起。

Uniswap 的設計最早可以追溯到 Vitalik 在 2016 年 10 月在 Reddit 發的
Let’s run on-chain decentralized exchanges the way we run prediction markets」這篇文章,
這篇文章描述了一個在區塊鏈上運作的去中心化交易所的雛形,
這個交易所的特色是:
這個交易所不需要 order book (掛單簿)系統,
每當人們向這個交易所投入 ETH 來買某種 Token,
Token 的價格就會上漲,
每當人們賣出 Token 來換取 ETH,
Token 的價格就會下跌,
價格完全由演算法自動決定。

Uniswap 的創辦人 Hayden Adams
在 2017 年 7 月剛從上一份工作離職,
他的朋友說服了他讓他學習開發智能合約,
在 Hayden 花了兩個月了解 ERC20 Token 和 ICO,
他決定一邊學習一邊開發一個更大的企劃,
而這個企劃就是 Uniswap。

Uniswap 在 2018 年 8 月獲得以太坊基金會資助 $100k
在 2018 年 11 月被佈署上鏈
由於 Uniswap 在許多方面都有良好的設計,
在上線之後交易量便一路攀升,
在 2019 年 7 月的現在,
已經穩居以太坊上交易所交易量的前三名。

在 Uniswap 上可以交易哪些幣種?

目前在 Uniswap 可交易 ETH 和 581 種 ERC20 Token
CoinGecko 上可以按交易量排序看到這些 Token:

交易量靠前的都是非常有代表性的項目,
我們簡介一下其中比較特殊的幾個:

  1. DAI: 由 MakerDAO 發行的去中心化穩定幣,與美元掛鉤。
  2. MKR: MakerDAO 的治理代幣。目前 MKR 最大的交易市場就是 Uniswap。
  3. USDC: Coinbase 發行的美元穩定幣,可在 Coinbase 上與美元 1:1 互換。
  4. WBTC: ERC20 Token 版本的比特幣,由以太坊社群中許多知名團隊共同維護,可與比特幣 1:1 互換。
  5. WETH: ERC20 Token 版本的以太幣,由智能合約保證可與以太幣 1:1 互換。
  6. cDAI: 在 Compound 放貸 DAI 後會獲得的 token,其價值會因為放貸利息而逐漸上升,可在 Compound 上隨時贖回為 DAI。

Uniswap 有什麼特色?

如白皮書所述,
Uniswap 在以下方面有著良好的設計:

1. ease-of-use(易用性)

Uniswap 交易所上買賣幣時,
你只要決定好賣出的幣種、買入什麼幣、買或賣的數量是多少,
按下 Swap 送出交易,
在交易上鏈後就能立即取得你應得的幣。

而且就算是 Token A 換 Token B,
在 Uniswap 也只要發出一筆交易就能完成兌換,
在其它交易所中可能需要發兩筆交易(第一筆交易將 Token A 換成某種中介貨幣(如 ETH, DAI)再發第二筆交易換成 Token B)才能完成。

註:實際上在 Uniswap 也是將 Token A 換成 ETH 再換成 Token B,
只是它讓這兩個動作發生在同一筆交易裡。

2. gas efficiency(gas 使用效率)

根據白皮書中的資料,
Uniswap 交易消耗的 gas 量是以太坊上的幾家主流交易所之中最低的,
也就代表在 Uniswap 交易要付的礦工費最少。

這主要得益於他相對簡單的做市機制:
Uniswap 不是採用掛單搓合機制來完成交易,
而是根據合約中儲備的資金量算出當下的交易價格,
並在交易發生時立刻從合約的儲備金中取出使用者應得的量傳給使用者。

3. censorship resistance(抗審查性)

抗審查性體現在 Uniswap 上架新幣的門檻:
就是沒有門檻,
任何使用者都能在 Uniswap 上架任何 Token

這點即使在眾多去中心化交易所之中也是少見的,
大多數的去中心化交易所雖然不會像中心化交易所那樣向你收取上幣費 ,
但還是要申請上幣、通過審查後,
運營團隊才會讓你的 Token 可以在他們的交易所上交易。
(可參考上幣規則 of IDEX, KyberSwap, Bancor, EtherDelta

但在 Uniswap,
任何使用者只要發起一個 createExchange 的交易,
就能讓一個 Token 上架到 Uniswap 的交易對中,
上架後也沒有人能迫使它下架。

4. zero rent extraction(零抽租)

在 Uniswap 的合約設計中,
沒有人有任何特權,
開發團隊也不從交易中抽取費用。

但這不代表在 Uniswap 上交易是沒有手續費的。

第一,
要讓交易被打包進以太坊區塊鏈就要付 gas fee,
這筆錢跟交易的金額大小無關,
以近期的幣價和網路擁擠程度估計,
大約付 $0.05 ~ $0.5 的費用就能讓交易在一分鐘內上鏈,

第二,
Uniswap 會對每一筆 ETH ⇄ Token 的交易抽取 0.3% 的費用,
(Token ⇄ Token 的交易則會抽兩次,共 0.5991%)
這筆費用稱為 liquidity provider fee(流動性提供者費用),
會付給流動性提供者們。

什麼是流動性提供者(liquidity provider)?

「流動性提供者」是一個金融術語,
指的是幫助一個金融市場提高流動性的個體。

一個擁有越高流動性(市場深度越大)的交易所,
其使用者就越能在短時間內以穩定的價格完成大額資產的交換
使用者的交易體驗當然就越好。

反之,
在一個流動性不足的交易所,
就有可能因為一筆大額的交易導致幣價劇烈波動。

在大部分的交易所中都有流動性提供者或做市商(market maker)這樣的角色存在,
做市商會在買、賣兩個方向上掛單,
讓想要交易的使用者只需要跟做市商的訂單搓合就能完成交易,
而不需要等待擁有相反需求的交易對手出現,
市場流動性就能提高。

在 Uniswap,
流動性提供者要做的事情是:
替一個 ETH - Token 交易對增加 ETH 與 Token 的儲備資金

儲備金越多,
ETH ⇄ Token 的交易價格就越穩定,
該 Token 的流動性就越高。

但如果「替一個交易對增加流動性」這件事不能帶來利益,
應該很少人會自願這麼做,
所以 Uniswap 的做法是從每一筆 ETH ⇄ Token 交易中抽取「流動性提供者費用」0.3% 分給流動性提供者們,
逐利的人們就會自願為 Uniswap 增加流動性以賺取被動收入,
交易者們也能享受到更好的交易體驗,
達成雙贏。

Uniswap 有什麼缺點?

前面說了這麼多 Uniswap 的好話,
這裡說說它的缺點:

1. 不能自行決定買賣價格

你只能被動接受 Uniswap 給你的價格,
不能掛單在你想要的價格。

2. 交易費用不低

0.3% 的費用跟其它中心化、去中心化交易所比起來都算是偏高,
如果你的目標是盡量以漂亮的價格完成交易,
不建議使用 Uniswap。

3. Front Running(超前交易)

Front Running 在許多去中心化交易所、應用中都是一個問題。

簡單地說,
從你發出交易到交易上鏈之前,
其他人有機會趕在你的交易完成之前執行另一筆交易,
使得你的成交價格偏離預期,
你因此吃虧,
對方因此得益。

什麼情況下適合使用 Uniswap?

1. 你需要支付某種你沒持有的 Token 給其他人

比如你持有 ETH 而不持有 DAI,
但突然需要付一筆 DAI 給別人,
那你就非常適合用 Uniswap 的 Send 功能
讓兌幣、轉帳一次完成。

2. 你同時持有 ETH 和一種 Token

如果你本來就 HODL ETH 和一種 Token,
而且相信這兩者的相對價格短時間內不會有太大的變化,
那你可以考慮將部分的 ETH 和 Token 放進 Uniswap 賺取被動收入,
放進去的幣隨時都可以領回。

但是如果你覺得這個 Token 相對於 ETH 的價格可能在近期上漲或下跌很多,
你放入 Uniswap 一段時間後再領回,
領回的幣的總價值可能比 HODL 的結果還低,
原因我們在後續的文章會講解。

3. 你發行了一種 Token,想增加他的流動性

那就幫你的 Token 創建一個 Uniswap 交易對,
然後幫它 Add Liquidity。

4. 你是智能合約開發者,想要在合約裡取得幣價或轉換一種幣為其它幣

例如你想要根據 ETH 當下的價格決定收發多少 ETH,
或直接把 ETH 換成穩定幣,
那你可以去接鏈上的 Uniswap exchange contract,
合約介面在此

相關連結


如果你喜歡這篇文章,
歡迎幫我拍手、Follow、並分享這篇文章給你的朋友!
有任何意見都歡迎留言讓我知道!

Taipei Ethereum Meetup

台北以太坊社群專欄

吳冠融 Roger Wu

Written by

現任 Turing Chain 首席 DApp 工程師 | 專精區塊鏈、智能合約、加密貨幣、網頁前端 | 台大電機系畢業

Taipei Ethereum Meetup

台北以太坊社群專欄