Uniswap 是以太坊 DeFi 生態的頭部去中心化交易所(DEX),本月初鏈聞曾報道 Uniswap 新版升級,可交易 Uniswap.exchange 默認列表中未顯示的代幣。本文教你如何在 Uniswap 交易甚至上架 ERC20 代幣。

作者:開放金融基金會(DeFi.org),專注於去中心化金融生態的非營利組織

幾句話介紹 uniswap

  • uniswap 是基於一個叫做 數量乘積爲常數 的點子設計出來的交易所
  • 你可以通過 uniswap 進行交易(也就是,用一種加密貨幣,換另一種加密貨幣,只能是 ETH 和 ERC20 Token
  • 你還可以通過 uniswapsend 功能,進行跨幣種轉賬
  • 你還可以通過 pool 入股 uniswap,從交易中的手續費中分一杯羹
  • 最酷的是,你還可以把你的 ERC20 上架到 uniswap

我們將演示

  • 用 Dai 購買 ETH
  • 使用 ETH 向他人轉賬 Dai
  • 入股 uniswap (pool,或者叫做提供流動性)
  • 發行一款 ERC20 Token
  • 上架一種我們自己的 ERC20 Token

在 uniswap 上用 Dai 購買 ETH

我們先來在 uniswap 上用 Dai 買一點 ETH 吧。我們打開 uniswap.exchange,你會看到這樣的界面:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

當然,你也有可能看到是白色的配色,你可以點擊右下角的按鈕,修改配色:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

首次進入的時候(如果你的 MetaMask 開啓了隱私模式),你可能需要點擊右上角的 Connect 按鈕連接到你的錢包,點擊之後,MetaMask 會跳出來讓你確認連接到錢包。如果右上角顯示的是你的錢包地址,那麼說明已經連接,就可以跳過這一步。 連接成功後,右上角的 Connect 按鈕會變成你的錢包地址:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

然後,這裏我們注意到 uniswap 提供了 3 大類不同的業務

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

  • Swap: 交換加密貨幣,其實就是 交易 了,我們想要用 Dai 來換一點 ETH 就屬於這種業務
  • Send: 跨幣種轉賬業務,比如說你的錢包裏面只有 ETH,但是你想轉 Dai 到另一個賬戶,你可以首先通過 ETH 換來 Dai,然後再轉賬; 或者,你可以使用 Uniswap Send,將這這裏說到的兩件(對應兩筆交易)合併成一件事情來做(一筆交易)
  • Pool: 提供流動性,獲取交易手續費分紅。當我們用 ETH 換取 Dai 的時候,你有沒有想過, Uniswap 裏面的 Dai 是哪裏來的呢? 其實是用戶通過這個 Pool 操作存進來的。但是,這和 Compound 那種借貸平臺不同,用戶並不是只是存 Dai 進來, Pool 操作是同時按照當時的價格,同時存入等價值的 DaiETH 。然後,你就可以開始從交易手續費裏面分紅了。

最後,我們需說明一下,雖然我們一直在說 DaiETH,在 uniswap 上,只要是 ERC20 Token 都可以交易;我們最後還將演示,把我們隨便創造的一種 ERC20 上架到 uniswap 上。

好吧,我們先來用 ETH 換點 Dai 吧。 首先我們注意到,uniswapswap 頁面默認的就是用 ETH 來換其他 ERC20 TokenDai 也是一種 ERC20 token ),如果你是想用 ERC20 Token 來換 ETH,那麼你可以點擊中間這個箭頭,就行了,當然,我們這裏並不需要,這裏只是給你提一下這件事情:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

我們點擊 Select a token

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

在彈出的對話框中選擇 Dai

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

然後,我們可以填寫我們想要花多少 ETH 去買 Dai,會自動計算出我們能買到多少 Dai; 也可以填寫我們想要買多少 Dai,會自動計算出我們需要花多少 ETH。我這裏填寫我想要購買 5 Dai,自動算出了我需要花掉 0.03 ETH

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

如果你很好奇這筆交易的細節,你還可以點擊下面的 Advanced Details,瞭解這筆交易的細節:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

比如,我們在細節裏面看到,我們買這 5 個 Dai,最多會花 0.0303 ETH

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

那麼你可能會很好奇,如果這個時候市場波動很大,ETH 跌了,也就是說,我們用 0.0303 ETH 都買不到 5 Dai 的時候,會發生什麼呢? 答案是,我們的這筆交易會失敗,避免很大的滑點帶來損失,我們只會損失一些 Gas 費用。

當然,你應該也注意到了,下面是可以讓你選擇滑點的,你可以允許更大的滑點,讓你的交易成功的概率變大(如果你真的要這麼做,確保你自己完全明白這意味着什麼,避免帶來損失):

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

好吧,讓我們來執行這筆交易,點擊最下面的 Swap 按鈕:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

MetaMask 會彈出讓我們確認交易,我們點擊 Confirm 確認交易:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

我們點擊右上角我們的地址:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

會彈出一個對話框,在對話框中,我們能夠看到剛剛的我們確認的這筆交易:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

我們點擊這個鏈接,會跳轉到 etherscan 查看具體的交易細節:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

  • 我們轉賬了 0.030345639115341726 ETHuniswap 的合約
  • 我們收到了 5 Dai
  • uniwap 最後退還了 0.000287422181744212 ETH 給我們

在 uniswap 上用 ETH 來捐 Dai

在繼續接下來的教學之前,我們先來聊聊公益。UNICEF France ,也就是 聯合國兒童基金會法國分部 之前開通了 Dai 捐款 的通道:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

我們接下來,就來給 聯合國兒童基金會法國分部1 Dai

先來看下我的這個錢包裏面有多少 Dai

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

注意到我的錢包裏面有 0.2021 ETH5.997 Dai。雖然我要給 聯合國兒童基金會法國分部1 Dai,但我要通過 uniswapsend 功能去捐贈,我不會動用我錢包裏面的 Dai

我們回到 uniswap 的頁面,點擊 Swap 旁邊的 Send,會看到下面的界面:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

我們同樣點擊 select token ,選擇 Dai

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

Dai 的數額處,輸入 1,然後會自動計算出需要支付 0.006 ETH

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

然後,我們在 Recipient Address 處,填入收款人的地址,這裏當然就是 聯合國兒童基金會法國分部 的地址啦:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

然後,同樣的,我們點擊 Send, 在 MetaMask 中確認這筆交易:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

等待交易在網絡上被確認之後,我們點擊交易的鏈接,去 etherscan 上詳細看下這筆交易:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

我們可以看到交易的一些細節:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

  • 我們轉了 0.00607384501450303 ETHuniswap
  • 0x0e3293BFcc55365CF0C67B2e1808be33D2905e3C(也就是 聯合國兒童基金會法國分部 的地址 ) 收到了 1 Dai
  • uniswap 退回了我們 0.000060137079351515 ETH

這個時候,我們再回過來看看我的錢包:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

  • 注意到,我的錢包裏面的 Dai 的數量沒有減少哦
  • 當然, ETH 的數量減少了

「入股」 uniswap

這裏說的 入股 就是 pool 功能。我們通過提供流動性,來獲取交易手續費的提成。

在說 pool 功能之前,我們先來回顧下上面的 swap 功能。上面我們說到 uniswapswap 功能的時候,我們是用 ETH 換了 Dai。 其實在 uniswap 上我們可以用任意一種商家的 ERC20 來換另一種 ERC20。我們可以在 swap 頁面上,我們點擊 ETH 處:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

在彈出的對話框裏面,我們可以選擇其他 ERC20 token,這樣我們就可以實現 tokentoken 的交易的。

但是需要注意的是,因爲 uniswap 是以 ETH 爲核心設計的。雖然我們可以在一筆交易中完成 tokentoken 的交易,但在 uniswap 內部,實際上是經歷了 tokenETHETH 再到 token 兩個過程。

好吧,我們爲什麼要提到這一點呢? 因爲當我們打開 pool 對應的頁面的時候,你會發現這裏上面的 ETH 是點不動的:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

也就是說,我們在 pool 的時候,不能 pool 放入兩種 token,而是一定要放入 ETH 和 另一種 token

我打算 pool 5 個 Dai 和 價值 5 DaiETH。首先,我們點擊 pool 頁面,我們選擇想要 pooltoken,點擊這裏的 Select a token 按鈕:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

在彈出的頁面裏面,我們選擇 Dai

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

然後我們輸入 5Dai,會自動計算出需要多少 ETH (你可能會注意到,這個時候的 ETH 比上面的價格貴,因爲這個部分和上面的部分不是同一天寫的,ETH 又漲起來了) :

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

注意,這裏有一個 Advanced Details,能夠看到更多的細節,點擊之後,我們看到:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

這裏的 liquidity token 就是用來表示你的 股份 的。

下一步,就是點擊最下方的 Add Liquidity 按鈕了,但你可能發現它是灰色的,無法點擊:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

原來,我們漏掉了 approve Dai( 如果你很好奇 approve 是什麼,參考 ERC20 APPROVE),我們點擊 Dai 旁邊的 Unlock 按鈕, 在彈出的 MetaMask 窗口裏面,確認這筆 Approve 交易 :

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

等交易在網絡上被確認之後,Add Liquidity 按鈕就可以點擊了:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

我們點擊這個按鈕,在 MetaMask 裏面確認 Add Liquidity 這筆交易:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

等待交易確認之後,我們回到 pool 頁面,這個時候,我們點擊 Add Liquidity

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

在彈出的菜單中,我們切換到 Remove Liquidity 功能頁面:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

select a token 這裏,我們選擇 Dai

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

注意到,這裏顯示了一個 balance,但這並不是 ETH 或者 Dai 的餘額,而是我擁有的 股份,我們點擊這個 balance,你會看到我們這點 股份 的價值:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

如果我們這個時候點擊 Remove Liquidity,我們的 股份 將會被銷燬,同時我們可以拿回 0.028ETH + 4.9987Dai

發行一款 ERC20

因爲我們要演示怎樣在 uniswap 上架我們自己的 ERC20 Token,所以,首先呢,我們來隨便發行一種 ERC20 Token,我們這裏使用 ERC20-Generator 這個在線工具,這樣的話,我們只需要 MetaMask 錢包,就能完成 ERC20 Token 的發行。

打開網頁之後,我們會看到下面的界面,我們需要填寫一些基本信息:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

  • TokenName 是這個 ERC20 Token 的名字
  • Token Symbol 是這個 ERC20 的符號
  • Token Decimal 是小數點的個數。通過這個參數,可以確定我們這個 Token 的最小單位。你可能經常看到 18, 這是因爲 ETH 的 最小單位 wei 和 常用單位 Ether(當我們說 我們有一個以太的時候,我們實際上說的是我們擁有 1Ether 個以太 ) 之間的關係是: 1000000000000000000 wei = 1ETH
  • Token Cap 是總的發行量,我們這裏寫的是 1000000,注意這裏的單位是 Ether
  • Token Initial Balance: 這個是我的賬戶裏面的 Token 的數量,好吧,所以全都在我的錢包裏面了

填寫好了這些參數之後,我們點擊 Create TokenMetaMask 會彈出窗口,讓我們確認這筆 部署智能合約(我們發行一個 ERC20 Token,其實就是部署了一個智能合約) 的交易:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

這裏要提醒的是,如果網絡比較擁擠,而你的 gas price 設置得很低(比如如上圖),那麼,這筆交易將會很久才能確認,所以你可能需要 加速你的交易,或者在一開始就設置合適的 Gas Price

接着,我們需要耐心地等待交易確認,在這個過程中,我們可以點擊 Transaction id 的鏈接,跳轉到 etherscan 上看一下:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

當交易確認之後,在 etherscan 上面,(比如我們這筆交易的 etherscan 地址 )我們就可以看到我們的 ERC20 Token 的合約地址了:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

可以看到,我們的 ERC20 Token 對應的智能合約地址爲 0x1Ba4dd5306528A92906193b070980cCB2322A2E4,按照之前我們說的,我的錢包裏面應該有了一些這個 Token 了,我們在瀏覽器上點擊 MetaMask 圖標,在彈出的窗口中,我們點擊右上角,然後點擊 Expand View

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

然後,我們就會看到打一點的 MetaMask 窗口,在下方我們看到一個叫做 Add Token 的文字,點擊它:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

在彈出的界面裏面,我們選擇 Custom token,並在下面的 Address 處填入我們的 Token Address,也就是上面的 0x1Ba4dd5306528A92906193b070980cCB2322A2E4

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

點擊 Next 之後,我們會看到下面的頁面:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

我們再點擊 Add Tokens,然後你就會在左邊看到我們多了一種 Token,也就是我們的 DEFI Token,我很富有地擁有 1000000 個。

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

把我們發行的 ERC20 上架到 uniswap

現在讓我們回到 uniswap 裏面,我們選擇 pool 功能,在 Add Liquidiy 這裏,我們點擊一下:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

在彈出的菜單裏面,你會看到 Create Exchange,這個功能就是上架我們的 ERC20 Token 了:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

我們填入我們的合約地址:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

然後點擊 Create Exchange 按鈕,在彈出的 MetaMask 窗口中確認交易:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

這裏要提醒的是,如果網絡比較擁擠,而你的 gas price 設置得很低(比如如上圖),那麼,這筆交易將會很久才能確認,所以你可能需要 加速你的交易,或者在一開始就設置合適的 Gas Price

我們等待交易確認,交易確認之後,好像什麼都沒有發生一樣:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

但是,我們現在回到 Add Liquidity(可能需要等待一小會),點擊這裏的 Select Token

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

我們輸入我們的合約地址,然後選擇 DEFI-ORG-TUTORIAL ,也就是我們創建的這種 Token 的名字:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

接着,你會看到一句提示,哈哈哈,我們現在要通過 pool 來定價了:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

那麼我們來定價吧, 10 個 Token 賣 0.01 Ether 吧

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣

接下來的操作就和上面的 pool 相同:

  • 首先 unlock DEFI token
  • 然後點擊 Add Liquidity

做完這些之後,我們回到 swap,你會發現我們的 Token 就可以購買了:

零基礎入門 DeFi:手把手教你在 Uniswap 交易甚至上幣