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