AMM 的具体原理?卡通画版 AMM 说明书
2023-04-22分类:DeFi 阅读()
自动做市商(AMM)是一种 DEX 常用的定价和流动性决定机制。简单地说,想提供流动性的人将两种资产按一定比例放到一个资产池(其实就是一套智能合约)中,让其他交易者直接和池中资产进行交易,资产池使用一种根据资产供需比例的算法自动确定资产价格,这就是 AMM。
“做市商”是起源于传统金融(TradFi)的一种常见实践。做市商积极响应买方委托并发起卖单,从而为市场提供流动性。
很多 DEX(如 Uniswap)都采用自动做市商(AMM)来创造所谓“unlimited 无限制流动性”(即随时随地交易)。池中的资产相对定价,根据恒定积函数(Constant Product Function)算法进行。这意味着买卖任何一个币种,必须同时改变另一币种的储备量,使得池中两币储备量的乘积保持不变(即等于一个常数)。简言之,从池中拿走一个币,必须放置一定数目的另一个币。
AMM 的具体原理?卡通画版 AMM 说明书
为了更好地说明 AMM 是如何工作的,不妨让我们回到“以物易物”的时代。
假设你是一个苹果农民,生活在没有货币的时代。你想和你的朋友约翰 John 交换一些西瓜,他正好有西瓜,但他想要做一些苹果汁。
但有时候约翰可能很忙,你没法找到他来交换水果。此外,你还想要其他水果,但不知道该找谁。有很多人都面临着同样的问题。位了响应这个需求,有一天一个名叫 Unifruit 的组织提出了一个去中心化的水果店想法。基本上,他们创建了一个有很多果篮子的仓库。每个篮子里面都装有两种不同的水果。
目标很简单:想买水果的人总是能找到自己想要交换的两种水果的篮子,直接兑换,不需要找特定果农。举例而言,想要用香蕉换橙子的人,找到这个篮子,把他的香蕉放进去,取出一些橙子就完事儿,而无需寻找培育橙子的果农去交易。
现在你可能会有如下这些问题: 假设我去苹果/西瓜的篮子里想要 2 个西瓜。我应该放多少苹果?反过来呢? 现在,让我们假设这个世界上的每个人都是有诚信的,愿意遵守 Unifruit 设定的所有规则。被苹果砸中后,Unifruit 的一名成员提出了一种自动计算水果相对价格的算法,最终得到通过并被称为恒定乘积算法 constant product algorithm。
假设最初篮子里有 4 个苹果和 6 个西瓜,那么水果数量的乘积就是 4 * 6 = 24
现在你想拿走两个西瓜,让篮子里只剩下 4 个西瓜和 4 个苹果。但是,这时候恒定积的规则就被打破了!
为了让乘积再次等于 24,你需要在交易后篮子里的苹果数量为 24 / 4 = 6。现在篮子里只有 4 个苹果,因此你需要再放 2 个苹果进篮子。
因此,这笔交易的实际价格为 1 个苹果 / 1 个西瓜。
然后假设你想再买 2 个西瓜,让篮子里只剩下 2 个西瓜。你应该放多少苹果进篮子呢?
为了达到平衡,篮子里最终应该有 24 / (4 - 2) = 12 个苹果。
这意味着你需要再放 6 个苹果进篮子。
现在西瓜的价格为:6 个苹果 / 2 个西瓜,或 3 个苹果 / 1 个西瓜。
从上面的小测验中可以看出,随着篮子里西瓜的数量减少,收取的苹果数量越多,这符合供需规律。
你可能会问,第一次交易时所有的水果都从哪里来的?如果不是 Unifruit,为什么提供者愿意放弃他们的水果?
令人惊讶的是,这些水果来自于像你和 John 一样的其他农民!为了创建一个可持续的供应系统,Unifruit 鼓励农民参与进来,创建他们自己的篮子,里面装有两种不同种类的水果,从而成为“篮子提供者”。每当篮子里发生一次交易时,Unifruit 要求买方留下一些水果籽作为对篮子提供者的补偿。通过这种方式,农民有动力成为篮子提供者。
订单簿 vs AMM
AMM 与订单簿模式的一个关键区别在于价格决定机制和交易机制。
在订单簿的模式中,用户和用户之间进行交易(订单簿中的买单需要与卖单配对),而 AMM 的用户则是和某对资产的流动性池进行交易。如果你想用 USDC 购买一些 ETH,在两种不同类型的模式采取的步骤如下:
订单簿:
- 以某一价格某一数目提交一个买单(如 1,500 USDC/1 ETH,买10个 ETH)
- 等候相同或者更低价格的卖单在被挂出
- 当上述卖单出现后,撮合引擎帮助成交该笔交易
AMM:
- 在 DEX 中找到 USDC 和 ETH 的流动性池
- 从该池子中,将期望数目的 ETH 拿走(如拿走10个 ETH),根据其算法,在池中放入相应数目的 USDC(如放入 15,000 枚 USDC)
在订单簿中,如果所有的卖单要价都高于你的买单(而你不想妥协),那么你的订单将被搁置,直到有卖家满足你的要求。但是对于 AMM 而言,你可以随时且直接地与流动性池进行交易。
Tags: AMM