Bath Pair

特定对的做市和策略执行

BathPair 合约代表了 Rubicon Pools 的核心,它允许策略师、用户流动性和关键安全考虑因素能够为给定的交易对结合在一起。 该合约允许策略师部署用户流动性,以便在 Rubicon 市场上做市。 此外,该合约确保用户资金免受潜在恶意行为者的侵害,并保持在 Rubicon Pools 的闭环系统内。

主要功能

  • initializePair - 当 Bath House 初始化这个合约时调用这个函数。 如果给定的 Bath Pair 实例不存在新的 Bath 代币,则此函数创建新的 Bath 代币,如果已存在,则将 Pair 指向现有的报价 Bath 代币。

  • executeStrategy - 这是 BathPair.sol 的核心功能。 在 Rubicon Pools 的零版本中,它允许策略师使用由该货币对管理的基础 BathToken 流动性进行配对交易(买卖)。 该功能是策略师做市商和利用用户流动性的切入点。

  • 策略师在调用该函数时提供的参数为:

address targetStrategy,
uint256 askNumerator, // *Asset Amt* / Quote Amt
uint256 askDenominator, // Asset Amt / *Quote Amt*
uint256 bidNumerator, // *Quote Amt* / Asset Amt
uint256 bidDenominator // Quote Amt / *Asset Amt*
  • getMaxOrderSize - 此函数返回策略师可以用用户资金放置的投标或要价的最大订单大小。 此外,此功能可确保执行相对订单规模和动态库存管理。

  • strategistBootyClaim - 策略师调用此函数以自动将赚取的收益返还给他们,这些收益可能是通过成功的做市获得的。 要求收益率的关键计算是(该策略师的订单成交量)/(给定资产的订单成交总量)*(基础收益率)。

关键安全参数和执行流程

有许多安全参数可以确保恶意行为者或不良做市商无法在 Rubicon 市场上无效地部署用户资金。 所有这些函数和参数都在策略师进行的单个函数调用中发挥作用:executeStrategy。 请按照它们在函数调用执行过程中出现的顺序在下面查看它们。

  • onlyApprovedStrategy - 此函数调用的目标策略必须得到 Bath House 的批准。

  • enforceReserveRatio - 此修饰符确保在函数执行之前和之后观察每个基础流动性池(资产和报价浴代币)的 reserveRatio。

  • getMaxOrderSize - 此函数用于确保投标和要价的分子(从流动性池中使用的)遵守配对动态库存管理约束。

  • enforceSpread - 此功能确保 (a) 为配对交易提交的订单存在点差,以及 (b) 配对交易的卖价/卖价位于订单簿的正确一半(卖价/卖价为有效的询价/出价 >/< 订单簿的中间价)。价格预言将在未来版本中实施,以进一步确保订单簿的中点被视为有效的参考点。

  • IPairsTrade(targetStrategy).execute - 然后调用策略并进行配对交易。请参阅 PairsTrade.sol。

  • cancelPartialFills - 这个关键函数解析订单簿中该货币对的未完成订单,并 (a) 取消该货币对交易的对应方(买入到卖出)已被执行的任何订单。这代表了一个收益率事件,其中一对交易被部分填充。 (b) 取消该对的任何超过 timeDelay 的订单,以确保没有流动性锁定在旧订单中。

  • rebalancePair - 这个简单的函数将发送 ERC-20 资产到 Bath 代币的姊妹池(资产 <-> 报价)的任何已完成订单发送回正确的流动性池,以便实现收益。

Last updated