编者按:本文来自区块律动BlockBeats,作者:律动研究院,Odaily星球日报经授权转载。随着AMM被越来越多交易者所接受,其所隐含的问题也被无限放大。B-Harvest作为纯技术贡献者以及节点运营商,为CosmosSDK增添了DeFi模块。在此DeFi模块中B-Harvest对现存固定乘积模型的AMM进行了改进,并解决了其存在的问题。此模块中提出的通用解决方案可应用在不同环境下,对于去中心化交易所开发者来说极具参考价值。律动研究院将白皮书进行了翻译,供读者们进行参考:《CosmosHub的流动性模块》
引言
1.数字资产市场的两大创新区块链:去中心化运算数据库-为自动化效能提供去信任基建-透明的运行环境-可扩容的区块链技术AMM:自动化做市商-让做市商能够更自由的参与到其中-打造无中间人的数字资产市场-无订单簿的极简交易所2.万链互联使用IBC协议将万链互联-IBC已经就绪-许多转接桥正在开发中-异构链将可互联AMM所存在的问题:
1.非公平交易执行矿工对交易排序的绝对控制权-矿工对于区块内的所有交易拥有100%的排序控制权-交易的排序对于执行价格有着极大的影响无谓的Gas大战以及延迟大战-交易者争夺交易的优先排序-Gas价格高昂,矿工垄断化-无谓的低延时大战-可能存在的「抢跑」攻击的风险2.「兑换价」与「池中价」不一致「固定乘积」的问题:兑换价=/Y代币储备量池中价=/Y代币储备量兑换价与池中价的不对等将放大兑换后价格的滑点。价格不一致的副作用:重复的价格波动将带来不必要的套利机会。套利者从池中套利,而流动性提供者将遭受损失。3.被局限的订单模式成交或失败:-订单只能在一个区块内生效,否则交易失败-订单只能被实时成交否则交易则失败-无法挂单,不提供高级挂单模式-订单无法部分成交这些因素将阻碍做市商参与到其中:-不同的挂单模式将创造更多流动性。解决方案:
1.批量执行-在每个分批期中,交易订单会在流动性池中持续累加-在每一分批期结束后,所有池中累加的交易将一并处理-分批期时长可为一区块时长或多区块时长批量执行可有效减少无谓竞争-不存在订单排序问题:所有被执行订单在被分批后处理-不存在延时大战:为普通交易者提供一个更好的交易环境-不存在矿工操纵交易排序问题:预防了抢跑-不存在Gas大战的问题-不存在矿工垄断化问题动态分批期-在价格波动剧烈时捆绑期可被延长-更长的分批期为交易者们提供了更多价格发现的机会-价格发现的过程将更加平衡且平稳2.兑换价格对等模型兑换价格对等模型将重新定义固定乘积模型,从而兑换价格与兑换后池中价格对等:池中价=/=兑换价格通过上述公式可得:兑换价格=/Y代币储备量备注:固定乘积公式在此模型中失效预防兑换后的价格波动放大-在完成兑换后,池中价保持与兑换价格一致-此模型不存在固定乘积所导致的价格波动放大
从上图我们可以看出固定乘积模型会将价格波动放大,而兑换价格对等模型能够有效杜绝波动的放大。3.混合型交易所注:图一为订单簿模型,图二为流动性池模型,图三为混合模型AMM+订单簿-允许限价挂单-每一次批量执行时,订单簿将使用传统撮合机制-在此过程中,流动性池将使用兑换价格对等模型计算出的限价单数量参与到订单匹配中批量处理中的匹配机制-每个流动性池中的限价单将在订单簿中累加-在每一次对批量交易进行处理时,订单簿通过传统匹配机制进行订单匹配-在此过程中,流动性池将参与到订单匹配中,并通过兑换价格对等模型计算出的订单量提供限价单混合型交易所的优势-AMM模式为交易者提供了非常稳定的流动性支持-然而池中流动性对于实时交易量有延时-限价单可为即时流动性需求提供足够的流动性支持流动性模块的解析:
传统的批量交易+流动性池的加入
批量交易-与中心化交易所以及普通AMM不同的是,批量交易的交易兑换是非连续性的-订单在订单簿中积累,然后各批次进行匹配-每一批中未被匹配的交易将被保留在订单簿中,日后会与其他批次中交易进行匹配各批次统一兑换价-每一批次都存在统一兑换价-在一批次中的交易将按照统一兑换价执行,无视订单状况部分执行-与其他AMM模式不同的是,混合交易所模型会根据订单簿和流动性池的状况允许部分执行-部分执行只会发生在当订单价格与兑换价格相同时流动性池的加入-与传统算法不同的是,流动性池会影响订单匹配结果-流动性池在遵循兑换价格对等模型的情况下进行订单匹配已知订单簿以及兑换价格时订单匹配规则X兑换Y-若订单价格>兑换价格时,所有订单必须全部被匹配执行-若订单价格==兑换价格时,订单将会被全部/部分执行-若订单价格<兑换价格时,订单将不会被执行Y兑换X-若订单价格<兑换价格时,所有订单必须全部被匹配执行-若订单价格==兑换价格时,订单将会被全部/部分执行-若订单价格>兑换价格时,订单将不会被执行兑换价格对等模型此模型决定了在某兑换价格下流动性池将提供的订单总量-情况1)当兑换价格==现池中价此情况下流动性池将不提供订单-情况2)当兑换价格>现池中价,流动性池提供Y代币池中Y代币订单总量=/-情况3)当兑换价格<现池中价,流动性池提供X代币池中X代币订单总量=/2流程图:
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。