比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > Ethereum > Info

一文了解Uniswap V2的新功能與工作原理_UNI

Author:

Time:1900/1/1 0:00:00

編者按:本文來自以太坊愛好者,作者:RossBulat,翻譯&校對:閔敏&阿劍,Odaily星球日報經授權轉載。

UniswapV2是該鏈上交易所的新一版迭代

Uniswap是一個運行在以太坊區塊鏈上的流動性協議,支持免信任的代幣互換,也即是說,該交易所上的所有交易都是由智能合約自動執行的,用戶無需依靠某個中介也無需信任某個第三方。這種去中心化的代幣互換方案已經證實在ERC20代幣的持有者群體中很吃香,他們愿意使用Uniswap來交易代幣并為不同的交易對提供流動性。Uniswap在2020年3月19日在以太坊主網上推出了一個新版本,還配合著公開了核心合約的1.0.1版;在發行之前,該版本已經在Rinkeby測試網上測試過一段時間了。截至撰文之時,這個新版本在以太坊主網上已經使用超過了兩個月時間,而且迄今為止,沒有出現任何損壞智能合約完整性的問題。不論你是持有還是在交易密碼學貨幣,是在搞以太坊開發還是做寬泛的金融科技業務,都有必要了解一下Uniswap,它在2020年的第三季度隨著DeFi概念的崛起迎來了快速的增長。所謂一項獨立的服務,Uniswap也可以集成到第三方的數字錢包和dApp中。此外,其它智能合約也可以拿Uniswap作為基礎來開展服務。本文旨在向讀者介紹UniswapV2帶來的增強功能,并詳細介紹其主要特性。UniswapV1定下的基調

UniswapV1為鏈上代幣互換和去中心化流動性池定下了基調,就是向交易代幣的用戶收取少量手續費、以此給提供流動性用戶以獎勵。UniswapV1使用的不是鏈上訂單簿,正相反,代幣的交換比率是用一個叫做“恒定乘積公式”的算法來確定的,相當于提供了一種機制來保持一種代幣的體量在所在交易對中的平衡。這個我們后面會進一步介紹。底層的代幣交易對各有各的流動性池,用戶可以通過同時存入兩種相應的代幣來提供流動性。流動性提供者可以得到所在流動性池中代幣交易的手續費作為獎勵,手續費率為0.3%,流動性提供者之間按份額分配——份額的大小,端看你注入流動性池的代幣數量占整個流動性池數量的比重。要是讀者不太了解Uniswap,我曾寫過的一篇基于UniswapV1的解釋性文章肯定有所幫助——在那篇文章中我解釋了協議的整個機制、交易比例是如何計算出來的、流動性提供者如何能賺到傭金、使用Uniswap的好處和缺點,等等。見此處。UniswapV2有什么新東西

SNGLR Capital 宣布獲得 Ayre Ventures 的戰略投資:金色財經報道,風險投資基金SNGLR XTF Fund宣布獲得Ayre Ventures的戰略投資,Ayre Ventures是領先的區塊鏈投資者之一,特別關注實用程序和無限擴展區塊鏈。[2023/6/5 21:17:05]

UniswapV2給協議帶來了一系列的升級和增強功能。主要的更新包括:ERC20對ERC20代幣的交易對。即,不再需要ETH作為中介代幣來協助兩種ERC2O代幣的互換過程。移除這個硬性要求可以減少一半的交易數量,也能節約交易的Gas費。也因此,dApp可以在缺乏直接的代幣互換池子的時候,更高效地發現從一種代幣到另一種代幣的“路由”。這一部分我們后文還會詳細講。價格信息傳輸功能,每個區塊都能基于按時間加權平均的定價方式為交易對刷新價格。這一部分我們后文也會詳細講解。閃電互換,或者說你可以從Uniswap流動性池中“借出”代幣、用于與任意的外部服務交互、然后還清你的初始貸款,所有操作都要放在一筆交易內。這樣的交易是原子化的,意思是說,交易中的任何一個操作失敗,都是導致整筆交易失敗、被改動的狀態完全回復。這種功能的一個顯而易見的用途就是利用流動性來做套利交易,但也有別的用途,比如為特定的DeFi操作節約Gas費,例如關閉Maker金庫。支持不標準的ERC20代幣。辦法是將返回void類型的transfer()和transferFrom()的函數調用也視作成功的transfer操作。這個功能看起來毫不起眼,但其實,許多主流代幣比如USDT和BNB的transfer方法都會產生這樣的返回值。支持這些廣泛接受、但不完全遵守ERC20標準的代幣,增強了Uniswap在鏈上交易所中的優勢。額外的功能性方法,用于防止用戶所轉移的代幣數量超過Solidity編程語言所能支持的最大數量時出現溢出錯誤注意:不標準的ERC20代幣即支持正式的EIP詳述所指定的方法,但返回值的類型迥異于詳述的代幣。這種缺陷會讓一種代幣變成不標準的代幣。類似的,重命名或者移除了詳述所指定的方法也會讓代幣變成不標準的,但這種情況在實踐中很少見,如果像Uniswap這樣的協議希望支持這樣的變種,還需要大量的開發工作才能解決。UniswapV2還引入了一個可啟用的0.05%的協議層收費,就是從流動性提供者的0.3%的手續費中分一杯羹。不過,現在這個機制是關閉的——而且只能夠通過一個去中心化的治理機制來觸發。我們后文還會再說。UniswapV2經過充分的測試和審計之后方才推出

Uniswap基金會:針對BSL明日到期,已提出在L1和L2上“官方”Uniswap部署的治理:3月31日,據官方消息,由于Uniswap v3的商業源代碼許可證(BSL)將于2023年4月1日到期,Uniswap基金會提議Uniswap治理方法,以確定BSL在4月1日到期后L1和L2上的“官方”Uniswap部署,并且目前正在收集社區的反饋,以推動這一進程。

其中,一個實體或個人可以同時充當多個利益相關者,例如,提議者也可以是部署者,部署者可以是橋提供者,Uniswap基金會還建議創建一個新的ENS子域v3-deployments.uniswap.eth以跟蹤Uniswap V3在L1和L2上的官方部署。[2023/3/31 13:37:27]

智能合約一經部署就不可改變的特性所帶來的風險,已經是老生常談了。如果一個合約包含了會導致資產鎖定的錯誤,那是沒有辦法讓這些發送資產的交易都撤銷的。Uniswap團隊遵照了行業的標準實踐以盡可能地消除bug風險和邏輯錯誤。值得稱贊!從V1轉成V2,團隊也用Solidity語言重寫了他們的智能合約。Uniswap的開發者因此得以跨越Vyper語言的局限性、利用最新版本的Solidity語言中的更新的操作碼,進一步優化了合約執行的CPU消耗。UniswapV2由多個智能合約組成,包括Factory、RouterV2、Pair和PariERC20,還有一個負責功能的Library。驅動Uniswap工作的幾個主要的合約如下圖所示:

Router2是Router1優化之后的版本,不過它們的功能是一樣的。Uniswap建議所有的開發者都切換去用Router2合約。重寫后的所有合約都得到了行內值得尊敬的開發團隊的審核,也在模擬現實運行場景的測試網上做了廣泛的測試。ConsensysDiligence聯合多方撰寫了對UniswapV2源代碼的完整報告。完整的審核報告可見此處。顯然的是,UniswapV2在上線主網之前經過了充分的測試和審核。貫徹對源代碼的盡職審核很有可能保證了未來不會發現任何重大的問題,雖然Uniswap還是發布了一個Bug懸賞,任何人發現了重大漏洞都可以獲得獎金。安全是區塊鏈生態永不可能繞開的一個話題,而且這種擔心也是可以理解的,畢竟有這么大的資金體量在這里交易。對底層區塊鏈的攻擊已經出現了大量的學術研究,但智能合約的完整性似乎僅僅在以太坊生態中才被人重視,因為被鎖在合約中的資產仰賴于智能合約的邏輯來保證其安全性和可觸達性。好的,接下來我們就深入了解下UniswapV2的機制,感受一下這個協議的潛力。UniswapV2的工作原理

薩爾瓦多政府提交《數字資產發行法》法案,將建立加密貨幣發行框架:金色財經報道,據Revista GatoEncerrado發推稱,薩爾瓦多政府已向立法會提交《數字資產發行法》法案,將建立加密貨幣發行法律框架,為公開發行的任何數字資產所有權的轉讓操作提供法律確定性,以及規范發行人、數字資產服務提供商和其他參與公開發行過程的參與者的要求和義務,以促進數字資產市場的高效發展和保護購買者的利益。[2022/11/23 8:00:02]

每個代幣交易對都要通過工廠合約建立自己的流動性池。建立流動性池時,需在其中存入初始資金,以提供流動性。流動性池中代幣對的匯率是基于供需量計算得出的,即所謂的恒定乘積公式。配合恒定乘積公式,一個交易對中的一種代幣的價格,根據池中的供給量和交易者的需求量得出。因此,價格會在根據該公式畫出的一條曲線上變動:

-UniswapV2上的匯率取決于恒定乘積公式-匯率是基于一個簡單的公式x*y=k自動計算的。對應的曲線代表所有可能的匯率。每個交易對都有自己的曲線,用來調節當前匯率。如果代幣B的需求量很大,以至于流動性干涸,其價格將成倍增長,導致k點向曲線左側上移。如果代幣B的供應量很大,需求比代幣A少得多,k點就會向曲線右側下移。要注意的是,這種供需平衡僅限于代幣A與代幣B的流動性池。如果是代幣B與代幣C的流動性池,會形成自己的供需平衡,匯率也會不同。受到這些機制的影響,Uniswap依賴套利交易來讓流動性池中的代幣價格與市場價格保持一致。從本質上來說,這些協議依然需要通過外部交易系統來調控流動性池中代幣的價格。每個代幣對的匯率將根據市場價格不斷波動,為交易者帶來巨大的套利機會。當用戶在Uniswap.exchange的代幣對流動性池中進行交易時,使用的是實時匯率。JavaScriptSDK會為其它應用提供API,再由這些應用提供自己的界面來訪問不同的代幣對及其匯率。這些匯率應用于ETH和ERC20代幣:

-UniswapV2用戶界面上ETH/DAI交易對的匯率-現在,讓我們深入探究可在UniswapV2上執行的交易類型。UniswapV2提供了更多交易選擇,因為它不再像UniswapV1那樣使用ETH作為中介代幣來實現“ETH搭橋”。UniswapV2上的交易選擇

今日恐慌與貪婪指數為26,等級由極度恐慌轉為恐慌:金色財經報道,今日恐慌與貪婪指數為26(昨日為25),恐慌程度較昨日下降,等級由極度恐慌轉為恐慌。

注:恐慌指數閾值為0-100,包含指標:波動性(25%)+市場交易量(25%)+社交媒體熱度(15%)+市場調查(15%)+比特幣在整個市場中的比例(10%)+谷歌熱詞分析(10%)。[2022/10/6 18:41:01]

如上文所述,UniswapV1上的每個交易對中都有ETH。如果要將代幣A兌換成代幣B,必須先用代幣A買入ETH,然后再用ETH買入代幣B。因此,交易者需要支付兩筆交易費和gas費。Uniswap的文檔將V1稱為去中心化自動交易所的“原型”。這有可能是因為開發人員發現了V2提供的更高效的交易執行方法。不再將ETH作為中介代幣就是優化之一。如下圖所示,ETH不再作為中介代幣之后,交易對之間可以進行直接交易:

-兩種ERC20代幣直接互換-這種方式似乎既合理又直觀,或許V1就應該采取這種運作方式。只需調用路由合約上的swapExactTokensForTokens和swapTokensForExactTokens方法即可交易。上述方法名稱中的Exact表示你希望為交換中的哪一種代幣設置限額。如果你想用DAI買入一定數量的ETH,就要使用swapTokensForExactTokens;另一方面,如果你想用一定數量的DAI買入ETH,就要使用swapExactTokensForTokens。UniswapV2的智能合約就采用了這兩種方法。除了直接交易外,用戶依然可以選擇使用ETH作為中介代幣來實現兩種代幣之間的交易。用戶無需直接在輸入代幣和輸出代幣之間創建流動性池,只要這兩種代幣與ETH之間存在流動性池即可。例如,以ETH作為中介代幣來實現DAI和LINK之間的交易,其流程如下圖所示:

-以ETH作為中介代幣實現間接互換-與之對應的Solidity方法是swapExactETHForTokens和swapETHForExactTokens,以及swapTokensForExactETH和swapExactTokensForETH。實現代幣交易的最后一種方法就是,在多個ERC20代幣之間進行交易,直至獲得你想要的輸出代幣為止,也就是白皮書中所說的“任意ERC20交易對”。當然了,所謂的任意代幣對中也可以包含ETH。下圖顯示了如何通過一系列代幣將DAI的價值轉移到理想的輸出代幣Link中:

數據:美國抵押貸款利率升至5.9%,為2008年以來的最高水平:金色財經報道,據Watcher.Guru發推稱,美國抵押貸款利率升至5.9%,為2008年以來的最高水平。[2022/9/9 13:18:21]

-對于沒有直接交易對的代幣,可以通過一系列中介代幣交易來獲得輸出代幣-如果你的輸入代幣和你想獲得的輸出代幣之間沒有流動性池,就可以采取這種方法,而且不一定需要上文所述的ETH作為中介代幣。雖然這種交易方法是可行的,但是目前沒有智能合約能自動實現這么多筆代幣交易,只能手動將這個功能寫入前端應用的代碼中,并對Uniswap進行多個交易調用。這個辦法的使用頻率可能不高,因為在通過一至兩個中介代幣轉移價值后,額外的Gas費會讓迂回交易變得很不劃算。或許通過中心化交易所交易成本反而更低。盡管如此,一旦ETH2.0主網上線,采用更加高效的PoS機制,再加上可擴展性功能,讓迂回交易變得更加可行,這種方法將得到更廣泛的使用。價格信息傳輸機制

Uniswap的價格信息傳輸機制可以讓開發者基于某個代幣在幾個區塊內的價格波動性來計算該代幣的平均價格。這個時間區間可以是前1小時,前24小時乃至更久。雖然Uniswap會提供代幣價格,但是它不會在鏈上存儲任何歷史價格。需要dApp開發者自選基于一段時間的累積價格,來計算某個代幣在這段時間的平均價格。這些平均價格稱為時間加權平均價格。所謂的TWAP就是在鏈上選定一段區塊作為時間區間,將某個代幣在這段區塊內的累積價格除以時間戳區間,得出該代幣在這段區塊的平均價格。圖解如下:

-TWAP是基于一段區塊內的累積代幣價格計算得出的-TWAP是可靠的,反映了一段時間內的代幣價格。采取這種方式可以避免閃電崩盤和劇烈的價格波動,這些在加密貨幣市場上很常見。當市場出現價格波動時,TWAP可以更準確地反映代幣的情況。如果需要,開發者可以通過Uniswap的JavaScriptSDK免費獲取價格信息。詳情見下文。閃電交易

閃電交易指的是通過一個交易來完成從Uniswap的流動性池中借出代幣、使用這些代幣進行某項操作并償還這些代幣這一多階段流程。如果這個流程中的任意一階段失敗,所有狀態更改都會撤銷,相關代幣重新回到對應的Uniswap流動池中。下圖顯示了交易者如何能夠不持有代幣而執行閃電交易。這是因為從流動性池中借出的價值一定會歸還到池內,要么交易失敗,要么交易者歸還借出的代幣:

閃電交易的一大用例就是套利交易,而且交易者一定能在獲利的同時將之前借得的代幣價值歸還至Uniswap流動性池內。交易者每次都能通過套利交易輕松獲得收益。另一個用例是使用Uniswap流動性池結算Maker金庫,你可以償還債務,并取出Maker金庫中作為擔保品的ETH來償還Uniswap流動性池。相比直接使用自己持有的代幣來還款,這種方式消耗的gas較少。閃電交易是Uniswap上一項比較新的功能,不過我們很快就能看到更多dApp整合這一功能。在交易機器人這一用例中,閃電交易還可以用來自動執行套利交易。交易機器人不需要資金來執行交易,只需要識別套利機會并執行閃電交易即可。新的0.05%的協議收費和治理

UniswapV2還為協議引入了一種新的費用,叫做“協議費”,啟用這一機制后,Uniswap上發生的交易額的0.05%就會轉移到一個由Uniswap持有的地址上。這個0.05%是從Uniswap標準的0.3%手續費中抽出來的,所以啟動這一機制會導致流動性提供者的利益受損。當前這一機制還是關閉狀態,而且Uniswap項目方也沒有任何公開聲明表示有啟用這一機制的計劃。添加這個機制似乎有點可疑,但Uniswap開發者認為,這是為了支持Uniswap的增長和可持續性的必要功能。而且,還有一個事實可以為他們辯護:啟用這一機制需要一個治理機制,由社區來投票決定要不要啟動這一機制。雖然啟動這一功能需要先達成社區共識,這樣做會給予Uniswap項目方巨大的利益和競爭優勢。從好的一面來說,這筆費用可用于升級協議和整個生態系統、提高接受度,最終能夠讓流動性提供者獲得更大的利益;理論上來說,可以彌補他們在這一機制中的利益受損。整個過程如下圖所示:

-收取0.05%的協議費用的積極結果-現在還未有該治理機制的公開信息,但不妨假設會有利用ERC20代幣來收集投票,類似于Maker的治理和投票機制。為管理協議收費機制,UniswapFactory合約包含了feeTo和feeToSetter方法來設置接收資金的地址,以及有權更改feeTo地址的賬戶。JavaScriptSDK

本文有意避免過度技術化,但還是有必要提及Uniswap的JavaScriptSDK。這個開源庫給NodeJS、JavaScript框架及所有基于瀏覽器的應用提供了JavaScriptAPI來集成Uniswap。這已經足以讓第三方應用直接將Uniswap集成到自己的產品和服務中。AgentWallet、SwitcheoExchange和StreamrMarketplace是其中3個已經直接集成了Uniswap的產品。該JavaScriptSDK的文檔講解了用于提取代幣對數據和代幣對地址的API,還有啟動交易和獲取定價的API,應用可以借此使用上文所述的價格信息傳輸功能。注意,API不能自動執行交易,只能幫你準備一筆交易,把你愿意接受的市場價格中位數和交換所得的最低數量發起和簽名交易。關于Uniswap的代幣列表

如果你好奇Uniswap.exchange上的代幣列表是如何決定的,很簡單,這是人工操作的,Uniswap團隊會用視頻會議討論要加入哪些代幣。因此,即使某種ERC20代幣的交易池已經出現了,也并不代表這種代幣會出現在Uniswap官方網站的代幣列表上。如果你是某種代幣的發行者,你想要讓你的代幣出現在默認的代幣列表上,你需要在DefaultTokenListrepository上提交一個Githubissue。Uniswap.exchange上還有一個功能:你可以在一個搜索框內輸入某個ERC20代幣的地址來找出這種代幣,然后添加到你自定義的列表中。這樣一來你就能在dApp中交易這種代幣了,但這不代表別人也能看到這種代幣,因此也不會提高這種代幣的曝光度。開發者也可以在自己的Uniswap集成中創建定制化的代幣列表,只需遵循一個簡單的JSON結構即可。更多操作細節可見Uniswap的TokenListsrepository。總結

本文完整地考察了UniswapV2,揭開了它的改進項目及其工作原理。更高效的代幣互換、按時間來加權的價格信息標識機制、閃電兌換功能,都是重大改進,在這些改進的背后,是遷移到基于Solidity來編寫合約的技術工作,這些技術工作讓UniswapV2得以利用最新的操作碼來實現更高效率的執行。UniswapV2保持了免信任、去中心化的本色,它存在于以太坊區塊鏈上,除非爆破底層協議,不然就無從破壞它。到目前為止,沒有這樣的事情發生,而且,看現在的礦工群體規模,以后也不太可能發生。以太坊2.0的測試網Medalla啟動時有2萬名驗證者——我估計這個數字在主網啟動時還會更高,因為到時候的驗證者可以得到經濟回報。另一方面,UniswapV2作為一個代幣交易所,也還不能說是完美的。在撰文之時,以太坊網絡的Gas費正處于歷史上最高的時期,這使得使用Uniswap的Gas費異常昂貴。Uniswap沒有實時訂單簿功能,因此交易員要使用交易策略還是只能找上中心化交易所。如前所述,Uniswap需要用戶套利來保持交易所內代幣價格與市場價格的一致,中心化交易所仍舊在平衡Uniswap的匯率上發揮著不可替代的作用。UniswapV2是朝著正確的方向邁出的積極一步,但若想讓去中心化交易所能夠完全取代中心化交易所,還是長路漫漫。雖說如此,密碼學貨幣社區的意見還是非常樂觀的——我們可以有把握地說,DeFi的進展,不論從技術能力還是接受度來看,在短期內都不會放緩。

Tags:SWAPUniswapUNIETHHolderSwapuniswap幣Metahero UniverseETHP

Ethereum
HashKey:說透安全多方計算MPC技術方案、挑戰與未來_HASH

編者按:本文來自鏈聞ChainNews,星球日報經授權發布。撰文:錢柏均,就職于HashKeyCapitalResearch審校:鄒傳偉,萬向區塊鏈、PlatON首席經濟學家本文對安全多方計算做.

1900/1/1 0:00:00
DeFi項目免費挖礦的4種方式_DEFI

這兩天大盤開始了一波比較有力度的調整。從昨晚開始到今天早上,無論是主流幣還是DeFi類代幣,都進行了一次較深的調整.

1900/1/1 0:00:00
星球前線 | 報告:今年已有超過5億美元的比特幣流向以太坊_比特幣

Odaily星球日報譯者|念銀思唐 摘要: -很多比特幣已經轉移至以太坊。-就在今年,超過5億美元的比特幣在以太坊上被代幣化。-這些比特幣被置換為基于以太坊的比特幣,并用于各種DeFi應用.

1900/1/1 0:00:00
2020新區勢峰會精彩回顧,預見“金融科技+區塊鏈”的下一站_區塊鏈

與幾年前“研究和展望區塊鏈”的階段不同,今年以來,我們見證了區塊鏈在產業各處更多的落地應用。在“新基建”的浪潮下,區塊鏈迎來更為廣闊的歷史發展機遇.

1900/1/1 0:00:00
超話社區057期|如何解決可擴展性和隱私保護問題?——公鏈Oasis專場_PEPE

Hi大家好,本期AMA主題是:區塊鏈兩大問題——可擴展性和隱私保護,看公鏈Oasis如何解決。與以太坊相比有哪些異同優劣?在DeFi方面是怎樣的布局和規劃?代幣分配機制如何?周三上午11點,星球.

1900/1/1 0:00:00
警惕:頭寸管理、mark交易所是大坑,千萬不能跳_Uniswap

如果有人告訴你只需要一臺手機+5000元本金每4天工作一次每次10分鐘就能輕輕松松月入幾千低成本、零風險、高收益如果被這些說辭打動了.

1900/1/1 0:00:00
ads