全維度深入解析:Uniswap的正面與背面

買賣虛擬貨幣

任何投資回報都以風險控制為前提,尤其是在目前智慧合約仍處於試驗階段時。

今天的內容主要是針對DEX裡的AMM(全自動化做市商)型別,從多個維度深入解析Uniswap的優勢與風險。

本文結構:

  • 代幣流通性問題與AMM

  • Uniswap的正面

    • Uniswap是什麼?

    • 版本的升級

  • Uniswap的背面

    • 外部風險

    • 技術風險

    • 經濟模型風險

  • 總結

代幣流通性問題與AMM

去中心化交易所一直存在一個問題——代幣流通性問題,流通性差使用者體驗自然也就不會好。

以前的Dex使用者交易的方式是以訂單薄式交易,DEX的訂單薄交易資訊在鏈上記錄,使用者建立交易訂單完成訂單,然後付一些鏈上的gas費用,以完成交易記賬。AMM(Automated Market Maker,自動化做市商)的出現很好地解決了流通性的問題,AMM型別的交易所不需要提供買賣盤口資料來展示價格,這類Dex將流動性彙集到一起形成一個流通性池,根據演算法實現全自動化做市。目前市面上最熱門的幾個Dex都是使用AMM的方式來進行的,比如Uniswap,Balancer、Curve等等。

當一個市場(幣種)不那麼活躍或流動性不那麼強時,買賣盤的價格將需要由做市商提供。做市商是流通量提供者,可以確保價格變化是流動順暢的。Uniswap作為一個去中心化做市商為ERC20代幣提供流通性,使用者同時可以再向交易所提供流通性獲取收益。

Uniswap的正面

目前Uniswap在使用者人數,交易量,成交額上面一直排在Dex板塊榜首的位置。

     某區塊鏈導航網站DEX排名

Uniswap官網資料,總流通量2.5億美金,每天交易次數超10萬次

  • Uniswap是什麼?

  1. Uniswap是一個基於以太坊網路的去中心化交易所(DEX),可以用來交易ERC20代幣。
  2. 一般的中心化交易所,交易代理由買賣雙方創造流通性,Uniswap則可以自動建立交易市場。
  3. Uniswap可以解決dex的流通性問題。
  • 版本的升級

  • V1版本 只能透過ETH為橋 bridge currency。如兩種ERC20   ABC/XYZ的轉換,需要ABC/ETH 再轉換為 ETH/XYZ

  • V2版本 可直接建立兩種ERC20的pair 來直接提供流通性

    V2版本的優點:

    省手續費,因為只有一次轉賬。省去一次滑點,因為只有一次交易

滑點是什麼?滑點是指下單的點位和最後成交的點位有差距,比如一個幣種的資金池體量不夠時,就會出現滑點,但當資金池中的ERC20代幣和ETH的數量充足時,滑點的數額就會減少,而且資金越多,滑點越小。

Uniswap的背面

我總結Uniswap的風險可以分為三個方面:

  • 外部風險

外部風險指的不是Uniswap本身存在的風險,而是在Uniswap上線的專案其中存在的風險。例如:專案的虛假宣傳、專案方大量拋售代幣導致幣價崩盤等等。

  • 技術風險

智慧合約無法按照開發人員預期執行的風險。要知道編寫無任何錯誤的程式碼是非常困難的,尤其是在區塊鏈行業編寫智慧合約,因此Uniswap存在一定程度的技術風險。審計,測試,以及購買智慧合約保險都可以降低技術風險。如前兩天幣價暴跌99%的Defi專案YAM,就是因為程式碼編寫人員的疏忽以及未經過測試的程式碼匆忙上線導致專案的失敗。

  • 經濟模型風險

許多區塊鏈專案,特別是在DeFi領域,都需要依靠經濟激勵來激勵網路的參與者,如果激勵方法無法使參與者得到好的反饋,就很有可能導致其他的使用者受到影響。例如今年年初暴雷的Fcoin交易所,其崩盤的主要原因我認為是在於經濟激勵模型“交易挖礦”的失敗,一個沒有正向迴圈的經濟模型往往是一個專案或交易所倒閉崩盤最關鍵且最不易發覺的因素。

下面來具體分析這些風險。

  1. 外部風險

最近幣圈最火的單詞再也不是“1CO”或“1EO”了,而是“1UO”,全稱為initial Uniswap offering。

Uniswap上幣,是真正的三無產品。

只需要建立兩個資金池,“無上幣費”,“無審查”,“無成本” ,而其中的經濟模型機制設計又天然利於FOMO,滑鼠和鍵盤上甚至不需要超過100次的點選,就可以完成Uniswap裡的上幣的工作。

我花了46美元在Uniswap上發了一個幣 https://36kr.com/p/827803890523778

Uniswap的出現大大降低了專案方發幣割韭菜的難度和成本,Uniswap發幣三件套:電報、discord、微信群(有些良心專案方還會做一個網站),居然連ICO時代的發幣標配白皮書都沒有。

專案方以極低的成本就可以獲得交易所上幣,市值管理,流通盤維護等服務,要知道這些服務在中心化交易所要繳納數枚乃至數十枚BTC才可以享受的到。

Uniswap繼承了以太坊在2017年1co的衣缽,讓所有的專案都可以上交易所,相當於在2017年所有專案方都可以進行募資,讓新韭菜瞭解到幣圈的瘋狂,更是讓老韭菜對於幣圈做了一次再次審視。

光鮮的一面是新的技術的誕生為比特幣減半後死氣沉沉的幣圈吹來了一陣春風,另一方面,缺乏監管的去中心化交易所,出現了許多割韭菜專案和騙子專案。例如這段時間很火的分片專案near protocol(著名1co平臺coinlist被巨大流量擁擠宕機了兩次,公募時間推遲一次)就被Uniswap的某些居心不良的人“強上了交易所”,很多不明真相的群眾中招買到了假幣。

Near Protocol官方推特宣告

  1. 技術風險

和所有的智慧合約一樣,Uniswap也面臨著技術的風險,雖然Uniswap的智慧合約相對比較簡單,且透過了輕量級的智慧合約測試。

https://github.com/runtimeverification/verified-smart-contracts/tree/Uniswap/Uniswap

要注意,現在Uniswap是存在一個已知的可攻擊路徑的,風險源主要是ERC-777token的重入攻擊,該攻擊的大概原理: 透過二次呼叫tokenToEthSwapInput 函式來進入Uniswap代幣兌換。 在第二次token的購買中,ETH儲備較低,但token的儲備相同。這意味著第二批代幣將只交換 比應有的數量多一點的ETH 。這是控制交易所購買正在出售的代幣的價格公式:


正常操作下,在隨後的常規token售出之後,代幣的儲備將增加(分母增加),而以太坊的儲備將減少(分子減少)。因此,在每輪售出後,token支付的金額將減少。 相反,透過利用可重入性,此動作將有效地防止儲備的代幣數量增加,從而將等式的分母變成常數。請注意,儲備中的ETH數量仍將減少(即,每個可重入呼叫中的分子將較小)。從長遠來看(經過幾次重入之後),我們將能夠獲得一個可觀的利潤,重入迭代次數越多越好。我們將這種攻擊稱為“可重入式微交易”攻擊。 該漏洞在程式碼中的表示為下圖,攻擊者能夠將利潤提高27%以上。

https://github.com/Uniswap/Uniswap-v1/blob/c10c08d81d6114f694baa8bd32f555a40f6264da/contracts/Uniswap_exchange.vy#L202 我們將攻擊者利用漏洞的利潤隨token賣出數量的增長繪製為圖表如下圖:  

上圖為作者繪製 每個點代表固定銷售數量Uniswap支付的ETH。例如,在20個“重入攻擊”中每個售出350個token,使用重入微交易攻擊(紅色)產生大約22.192 ETH,而正常條件下透過外部呼叫tokenToEthSwapInput 函式 20次(每個呼叫中賣出350個token),一共出售7000個token,則利潤僅為17.44 ETH(藍色)。 隨著呼叫次數的增加,重入攻擊中顯示出的利潤有著明顯的差異。合法的正常交易(藍色)產生大約17.418 ETH的收益,而重入微交易攻擊(紅色)產生約22.324 ETH的收入。隨著時間的推移,藍色虛線並不是恆定的,有一個較小的斜率。
程式碼貢獻: OpenZeppelin,該漏洞由OpenZeppelin測試得出。 參考資料:https://github.com/openzeppelin/exploit-Uniswaphttps://smartcontractsecurity.github.io/SWC-registry/docs/SWC-107 

  1. 經濟模型風險

 Uniswap的代幣流通性提供的經濟模型為,選定一種交易對ETH/ERC20代幣注入資金池,按照需要新增相等價值的ETH和ERC20(相同價值1:1去注入資金),當池子裡面的ETH或者ERC20被兌換後,存幣的人能按照比例分得交易手續費(手續費為0.3%)。 這裡有兩個資金池子,一個池子放ETH,一個池子放ERC20代幣,並且兩者的總價值理論上是相等的。其中,ETH的市場價格比較明確,那麼這個ETH池子的市值就可以認為等於代幣的市值。 舉例:1(ETH)*2000(某ERC20)=2000(2000是常數)當購買人想兌換100枚的某erc20代幣相對應的ETH時,購買人往資金池裡充值存入100枚的某ERC20代幣,那麼為了保證計算結果還是2000,所以資金池裡面還需要留下的ETH的數量為2000/(2000+100)=0.952,則購買人可以得到的ETH為1-0.952=0.048(忽略手續費)。相當於我賣了100個ERC20的這個幣,然後我拿到0.048ETH的錢。這就是交易所的邏輯了。 這是最簡單的計算方法,恆定函式做市商的計算邏輯更復雜,這裡不再贅述。這裡大家應該發現問題了,本來我們可以得到的以太坊應該是0.05個(計算方法:100/2000=0.05ETH),但是兌換後只拿到了0.048個,這就是在資金池內的資金不夠多時,會存在較大的滑點。 Uniswap定價模型為x*y = k的定價模型(如忽略手續費),其中x和y是A和B兩種代幣的數量,A為以太坊,B為ERC20代幣,K是常數,常數不變,這個定價機制決定了買入哪一邊的數量多,與之相應的幣種價格就會上升。舉個例子,如果ERC20的幣這個池子,被買走很多比如說一下買走50%(y變成0.5y),那麼,x就要增加一倍,變成2x,那麼對應之前就相當於你的ETH資金池變大了,然後幣價就變高了。

Uniswap白皮書第5頁 Uniswap唯一的經濟引數是每筆交易0.30%的交易手續費。該手續費會激勵給投入流通性池代幣或eth的參與者,這是為了鼓勵人們將其資金投入流動性池中。如果這筆手續費的設計過高或過低,可能會改變每個資金池裡的資金水平,進而改變流動性提供者的回報,但是對流動性提供者的資金沒有直接影響。
因此,我認為這種情況下沒有經濟模型激勵失敗的風險。

總結


Uniswap是一種AMM型別的去中心化交易所,本文對其進行多個維度的全面解析,並著重分析了其外部風險、技術風險與經濟模型風險。 經過深入的研究發現,主要的風險是外部風險(也就是專案方的風險),平臺本身的風險並不大。這正如ICO,本身只是一種新型融資模式,只是有的專案方藉助這樣的模式去行騙,所以,對專案的稽覈與研究尤為重要,我們會在後續的文章中對專案本身進行研究分析。敬請關注。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;