《波哥说九头蛇(1-3)》,相信各位老铁对 HydraDX 已经有了一定的了解。不免有人会问,HydraDX 核心产品 Omnipool 的工作原理,到底是什么?在本文中,波哥将回答这个问题。 要介绍 Omnipool 的工作原理,波哥先要先说传统的 XYK 池。 1、传统 XYK 池的原理 XYK 池,顾名思义是以 XYK 算法模型(也叫“恒定乘积做市商模型”)构建的流动池。X、Y 代表两种令牌,K 代表两种令牌数量的乘积系数。我们熟悉的 Uniswap、PancakeSwap 等 DEX 都是基于 XYK 算法构建。 下面,波哥用一个例子解释 XYK 的算法: 假设有一个新池,由 100 个 HDX 令牌和 100 个 DAI 令牌构成,那这个池的乘积系数 K 就是 10,000,即K = 100*100 = 10,000。 现在,鲍勃 想在池子里存入一定数量的 DAI 通过交易得到 1 个 HDX。为保持 K 不变,交易后池子里 DAI 的数量,应该变为: DAI_新 = (K/HDX_新) = 10,000/99 = 101.01 换句话说,鲍勃 只有存入足够的 DAI,即 1.01 个 DAI,才能得到 1 个 HDX。这意味着,鲍勃 支付的 DAI 数量,需要将旧(DAI=100)新(DAI=101.01)状态之间 DAI 成本差异(即 0.01 个 DAI)覆盖掉,才能达到交易目的。 在这里,这个差异的 0.01 个 DAI,就是我们常提到的“滑点”。滑点,一般是指真实成交价位与预设成交价之间出现的偏移。 说到这里,有朋友可能就会问了,系数 K 是“恒定不变”吗? 其实,所谓的“恒定不变”只是相对而言。交易过程中,因为交易费用的存在,K 往往会发生一定的变化。一般来说,每次交易后 K 会略微变大。这是因为,支付令牌的一部分,会作为手续费进入储备池,并未参与系数 K 的计算,导致 K 系数相对变大。只是这个变化微乎其微,几乎可以忽略不计。K 系数的变化,主要与流动性的添加或删除有关。添加的流动性令牌越多,K 就越大;反过来说,K 越大,池子的流动性也越好。K 系数的大小,实质上代表了池子的流动性大小。 XYK 池的算法原理,并不难理解,其中的数学推导过程,有兴趣的老铁,可阅读网上的一篇文章(https://learnblockchain.cn/article/1494)进一步了解。 说完 XYK 池的算法,接下来波哥开始正式介绍 Omnipool。 2、Omnipool 的原理 Omnipool 的概念,源于 HydraDX 办公会议的头脑风暴。2019 年的时候,Omnipool 的概念被 HydraDX 首次提出,其核心是在传统 XYK 池基础上,引入了对标资产 —— 中心令牌。 下面,波哥仍然通过一个例子说明 Omnipool 的原理: 假设 Omnipool 已经进入了四种令牌:DAI、wBTC、USDC、ETH(当然,万能池不可能只有这四种资产),这四种令牌的总价值,和 LRNA 的总价值,分别占池子总价值(假设 $1,000 万)的比例为: DAI - 10% wBTC - 15% USDC - 20% ETH - 5% LRNA - 50% 在 Omnipool,中心令牌 LRNA 的总价值始终等于池中其他令牌的总价值,1:1 的比例恒定不变。 有一天,用惯了传统 XYK 池的 鲍勃 想尝试一下 Omnipool,于是就在 Omnipool 用一定数量的 DAI 购入 ETH。当 鲍勃 填好参数点击 SWAP 的瞬间,Omnipool 就开始自行执行以下动作: 第1步:将鲍勃的一定数量 DAI,换成同价值的 LRNA; 第2步:再将换来的 LRNA,换成同价值的 ETH; 这两步交易遵循了 XYK 算法。 既然是 XYK 算法,Omnipool 的交易好像还多了一步,岂不是要产生更多滑点?别急,听波哥慢慢说。 在 Omnipool,LRNA 相对于其它资产,体量是巨大的,它可是占了池子整整一半的价值哦。在 Omnipool 交易,无论买卖任何资产、下多大的订单,都 相当于你在传统 XYK 池中交易时系统为你挑选了一个流动性非常好的池子,而这个池子就是由 LRNA 和其他资产以 1:1 的价值比构成的。在这个流动性很好的池子中交易,即使多了一次互换,滑点仍是非常低。这就是 Omnipool 为什么比传统 XYK 池滑点低的根本原因。 在上面的两步交易中,LRNA 起到了核心作用。没有 LRNA,交易就无法完成。LRNA 承担了类似货币贸易中人民币美元等法币的角色。说到这里,有老铁可能就要问了:LRNA 既然这么重要,它的数量和价格是如何确定的呢? LRNA 的数量和价格是由协议自动控制并确定的,且随时都在发生着变化。除了 Omnipool 最初建立时需要开发人员写入协议初设外,LRNA 的数量和价格变化,均由协议通过算法在链上决定,任何人都无法再控制了。 再进一步,LRNA 的数量和价格既然都不恒定,具体又是如何变化的呢?波哥接着举例: 假如 Omnipool 的 TVL 为 $1,000 万,LRNA 价格 $20/LRNA。此时,鲍勃 添加了价值 $1,000 的 wBTC,Omnipool 会自动铸造 50 个 LRNA,匹配新增 $1,000 比特币的价值。 想象一下,如果 Omnipool 不再添加或删除任何资产,但因行情变化 Omnipool 的 TVL 从原来的 $1,000 万涨到了 $2,000 万,LRNA 会怎么变化呢?答案是:数量不变,单价涨至 $40/LRNA,确保总价值等于 Omnipool 其他令牌的总价值。 结论: 当 Omnipool 中的其他资产数量不变时,LRNA 的数量是恒定的; 当其他资产添加到 Omnipool 或从 Omnipool 删除时,LRNA 会被同步铸造或销毁。 因行情变化,其他资产总价值如果增加/减少了,LRNA 的单价会随之增加/减少,始终保持 LRNA 和其他资产的总价值相等。 总之,LRNA 的数量与其他资产数量的变化有关,LRNA 的单价与其他资产总价值的变化有关,LRNA 的总价值始终与 Omnipool 其它令牌总价值相等。 事实上,Omnipool 中 LRNA 的实际数量和价格变化,经历了一个漫长的过程。2023 年 1 月 6 日晚上10:38(GMT+8)Omnipool 上线 时,HydraDX 将总价值 $125,000 的 HDX/DOT/DAI(HDX 的价格 $0.026/HDX,其它为市价)和初始铸造的 5,650 个 LRNA(~$22.12/LRNA),作为首笔自有流动性(POL)注入了 Omnipool。随着 HydraDX 多次将 LBP 募得的 DAI 多样化为其他令牌不断添至 Omnipool,加上多个平行链项目将其国库的部分资金添加到 Omnipool 的流动性,Omnipool 的 TVL 已达 $1,700多万,LRNA 的数量也增加到 470,467个(2023 年 12 月 19 日上午 9:00 的数据),单价也变成了 $37.28/LRNA。可以说,LRNA 数量和单价变化,见证了 Omnipool 的成长过程。 关于 Omnipool 的设计,有兴趣的老铁们,可以进一步阅读 HydraDX 的官方文档:https://docs.hDAIdradx.io/cn/omnipool_design,继续研究。 3、成长更快效率更高 人们常说,Omnipool 的流动性增加会比传统的 XYK 池更快,效率更高。为什么?波哥想通过下面的图来回答这个问题。 在传统 XYK 池环境里,假设市场上有价值 $500 万的 HDX 和 $300 万的 DAI,添加在了 5 个不同的池子里: 池 1:HDX-ETH 池($250 万 HDX + $250 万 ETH) 池 2:HDX-ETH 池($150 万 HDX + $150 万 USDC) 池 3:HDX-ETH 池($50 万 HDX + $50 万 wBTC) 池 4:HDX-ETH 池($50 万 HDX + $50 万 DAI) 池 5:ETH-DAI 池($250 万 ETH + $250 万 DAI) 很明显,五个池子的流动性水平,差别很大。 但如果同样的 $500 万 HDX 和 $300 万 DAI,添加到只有 1 个池子的 Omnipool 中呢? Omnipool:HDX-DAI- …($500 万 HDX + $300 万 DAI + …) 可以看出,同样的资产添加在传统 XYK 池和 Omnipool 提供流动性,获得的结果完全不同:添加在传统XYK池,如同手指展开,流动性(力量)被分散了;而添加在Omnipool,如同手握紧了拳头,池子的流动性(力道)大增。这就是 同等条件下 Omnipool 流动性增加速度比传统 XYK 池更快的原因。 Omnipool 的这种流动性集中,会带来什么好处? 鲍勃 有这样的交易体验:在传统 XYK 池里,如果用少量 DAI 购买 HDX 时,滑点比较低。但如果想一次性花费 $10 万 DAI 来购买 HDX,交易路由经常会变长,滑点几乎都很高。使用 Omnipool 后,他发现 无论是小订单还是大订单,滑点都很低,完全可以按照他预想的价格成交。 为什么会这样?仍以上图为例说明: 当 鲍勃 在传统 XYK 交易 小订单 时,系统会选择 $100 万流动性的 HDX-DAI 池 直接来执行交易,所以滑点较低。当加到到 $10 万 DAI 时,协议判断该订单 无法 通过 HDX-DAI 池 独立完成,就延长交易路由,先经 流动性更好的 DAI-ETH 池,然后 再到 HDX-ETH 池,来完成整个订单。池间跳跃转账发生的矿工费和交易费,都会反映到的滑点上,结果就是滑点很高。而在 Omnipool 这样一个拥有 无限流动性可能 的大池子里,无论是小订单还是大订单,都可以一次性交易完成,没有 了 池间跳跃,更 不会发生额外的矿工费和交易费,滑点 自然就 低 了。而且,Omnipool 基于 Polkadot 跨链平台构建,其它链的资产也会越来越多的汇集在 Omnipool,日后 鲍勃 在这里进行任何交易,都可以继续随心所欲地享受由这笔资金参与构成的 整体流动性。 也就是说,在传统 XYK 池 鲍勃 下大订单时(比如 $10 万),若碰到了流动性好的池子,滑点可能也会低,但若不幸进了流动性差的池子,就会出现奇高的滑点。尤其是为了完成交易协议被迫进行池间跳跃,虽然交易最终还是完成了,但 鲍勃 将因此要承担更高的交易成本。而 Omnipool 这种将分散的流动性集中起来的设计,从根子上就 消除了池间跳跃以及高滑点产生的条件,为交易者带来了 极高的交易效率。 (以上提到的 Omnipool 的交易环境,均假定其流动性已成长到了一定的规模) 至此,关于 Omnipool 的原理基本就说完了!不知道波哥说没说清楚,也不知道老铁们看没看明白?由于水平有限,尽管波哥很努力,但肯定还有地方说的不到位甚至是错误,望老铁们留言批评指正。 作者:波哥 HydraDX 国际社区:https://t.me/hydradx HydraDX 中文社区:https://t.me/HydraDX_China 更多资讯,请关注微信公众号:蛇粉家园 来源:金色财经lg...