Uniswap V2
Uniswap V2
Uniswap是一种流行的去中心化交易所 (DEX)协议,允许用户将任何 ERC20 代币交换为另一种代币,提供流动性以赚取费用,并访问以太坊区块链上的价格预言机。 而Uniswap V2具有更强大的功能,如下:
- 它允许任何的ERC20代币与其他的ERC20代币配对,无需ETH作为中介,这使得流动性池更加多样化和高效,并为交易者提供更好的价格。 就是一种代币可与其他的代币转化,方便很多
- Uniswap V2 实施了一种新颖的机制,可实现高度去中心化且抗操纵的链上价格供给。 这是通过在每个区块开始时测量两种资产的相对价格并随着时间的推移积累历史数据来实现的。 这允许外部智能合约查询任何时间间隔内任何货币对的时间加权平均价格(TWAP),同时将天然气成本和预言机风险降至最低。
- Uniswap V2 支持一种称为闪电互换的新型交易,用户可以从池中接收任意数量的任何资产,并在链上的其他地方使用它,只要他们在交易结束时偿还该金额并支付费用即可。 交易。 这为套利、保证金交易、抵押品互换等开辟了新的可能性。
每个Uniswap智能合约或一对智能合约都管理由两个ERC-20代币的储备组成的流动资金池。
同时它也有很多好处:
- 低费用:Uniswap V2 对每笔交易收取 0.3% 的固定费用,该费用由所有流动性提供者按其在池中的权益比例分配。 该费用低于大多数中心化交易所和其他 DEX 协议,这使得 Uniswap V2 成为中小额交易的有吸引力的选择。
- 高流动性:Uniswap V2 利用以太坊及其庞大的 ERC20 代币生态系统的网络效应,为任何代币对提供高流动性。 任何人都可以通过提供一定数量的两种代币来创建新的货币对或加入现有的货币对,从而增加池的深度和可用性。 此外,Uniswap V2 采用自动做市商(AMM)模型,根据供需情况调整价格,确保任何交易规模始终有足够的流动性。
- 无许可访问:Uniswap V2 是完全去中心化和非托管的,这意味着任何人都可以使用它,而无需注册帐户、验证身份或信任第三方使用其资金。 用户可以完全控制自己的资产,可以随时进行交易或提供流动性,而无需担心停机、审查或黑客攻击。
- 透明定价:Uniswap V2 采用简单透明的定价机制,由恒定乘积公式和矿池当前准备金余额决定。 用户可以轻松计算他们将收到或支付任何交易的确切代币数量,没有任何隐藏费用或滑点。 用户还可以根据池的历史数据访问任何货币对的可靠且无需信任的价格预言机。
要使用Uniswap V2可在官网上访问,可以自己创建一个Uniswap钱包,一定要记住私钥
流动性提供者的结构和合约之间的交互涉及多个概念和机制,以下是详细的解释:
流动性提供者的结构
流动性提供者(LP):
- 流动性提供者是向去中心化交易所(DEX)提供资产的用户,以便交易者可以在该平台上进行交易。
- LP 将两种代币(例如 USDC 和 SAFU)存入流动性池,作为回报,他们会获得流动性池代币(LP 代币),这些代币代表他们在池中的份额。
流动性池:
- 流动性池是智能合约,存储了两种代币,允许用户以自动化方式进行交易。
- 交易者在池中买入或卖出代币,池中的资产根据交易的供需情况进行调整。
流动性池代币(LP 代币):
- 当用户提供流动性时,会获得相应的 LP 代币,表示他们在流动性池中的份额。
- LP 代币可以用于其他操作,比如质押、获取奖励或进行再投资。
合约之间的交互
流动性添加:
- LP 通过调用路由合约(例如 Uniswap 的 Router 合约)进行流动性添加。
- 路由合约会将 LP 的代币存入流动性池合约,并铸造 LP 代币。
交易:
- 当交易者进行交易时,他们通过路由合约交换代币。路由合约会调用流动性池合约来更新池中的资产。
- 交易的执行会根据预设的算法(如自动做市商算法)调整池中代币的比例。
流动性移除:
- LP 可以选择移除他们的流动性,通过调用路由合约并指定 LP 代币数量。
- 路由合约会验证 LP 代币的有效性,并将相应的基础代币返回给 LP。
费用和奖励:
- 每笔交易都会产生一定的交易费用,这些费用会分配给流动性提供者,作为他们提供流动性的奖励。
- LP 代币也可以用于其他合约(例如收益农场或流动性挖矿合约),进一步增加收益。
示例流程
假设一个用户(LP)希望在 Uniswap 上提供流动性:
流动性添加:
- 用户决定存入 1000 USDC 和 1 SAFU 代币。
- 调用
addLiquidity
函数,将代币发送到 Uniswap 的 Router 合约。 - Router 合约会向流动性池合约转移代币,并返回相应的 LP 代币。
进行交易:
- 用户或其他人可以在 Uniswap 上进行代币交换。
- Router 合约会找到最佳路径并调用流动性池合约来执行交换。
流动性移除:
- 用户希望取回他们的流动性,通过调用
removeLiquidity
。 - Router 合约会验证 LP 代币,并返回用户存入的相应数量的代币。
- 用户希望取回他们的流动性,通过调用
获得交易费用:
- 交易过程中产生的手续费会根据用户在流动性池中的份额自动分配给他们。
攻击者如何利用这些结构
攻击者可以利用 LP 代币的流动性和合约之间的交互来执行攻击,例如:
- 通过高频交易:利用流动性池中的不平衡,进行高频交易来获利。
- 利用价格操控:通过添加或移除流动性来操控价格,进而影响市场。
- 奖励套利:转移 LP 代币到其他合约(例如收益农场)以获得额外奖励。
这种合约之间的交互和流动性提供者的结构使得去中心化交易所能够高效运行,但同时也为攻击者提供了潜在的攻击向量。
Uniswap V2的思考
Uniswap通过 x * y = k 这个恒定乘积的等式完成了链上自动做市。当然它也有一个特别大的缺点,就是随着池中B的减少,B的价格会越来越贵,和外部的价格越来越偏离了。为了解决这种偏离,套利者会通过其连续的套利活动将差异抹到可以忽略的地步。
那么是谁在支付这些收益。
Uniswap的项目方不可能支付这些利润。他们只是提供智能合约。
其他交易者如果发现池中价格比起外部价格存在差异,理性的行为是参与套利。
那么剩下来唯一支付这些利润的就是提供流动性的做市者了。他们的损失也正是套利者为了平衡内外价格而获得的利润。因此Uniswap通过交易手续费的方式,为流动性提供者进行了补偿。
Impermanent Loss
流动性提供者的损失是如何产生的?
来看一个简单的例子。
假如有池子ETH:USDT,假设流动性提供者按照当时的市场价格 1 ETH=500 DAI 提供了 20个ETH 和10000个DAI。此时LP持有的资产价值=10000 DAI +20ETH = 20000 DAI。
过了一段时间,外部交易所的ETH 价格变化为 1 ETH=550 DAI,而此时我们的池子还是维持 500 DAI 的价格。这就意味着出现一个套利机会。
套利者在池中支付DAI,获得ETH,并且在外部卖出,就可以获得无风险的差价。而套利本身将让池中的ETH/DAI价格从500上升到550,这样套利机会也就消失了。
套利者需要付出488个DAI,提取0.93个ETH 就可以让池内价格变成550。套利者的利润则是0.93*550–488=23.5 DAI。如果我们按照外部市场价计算LP手中的代币,那么总价值会是21000 DAI。但是池内经过套利平衡后,价格虽然和外部市场价一样,单价是两种代币的比例发生了变化,,因此总价值只有20976.59。
假设如果外部市场价格再一次回到了500,那么套利者可以通过支付0.93个ETH,获取488个DAI,让池内的价格ETH和DAI又回到了期初的状态。 LP此时又回到了最初的状态,没有亏损。
总结:
1只要流动性池的价格偏离外部价格,套利者总是可以无风险获得收益,LP则总是出现浮动亏损,最好的情况就是不亏损。
2只要LP不退出流动性池,那么当外部市场价格回到建立池的价格时,LP依然可以保留全部资产不亏损,所以LP的亏损是一个浮动的亏损,而非实际的亏损。
3 套利活动让价格趋于一致,代价就是LP付出了套利者的利润。