跳到正文

    按 / 搜索,按 [ 和 ] 前往上一页和下一页。

    深入原理

    偿付能力与队列

    LP 可能暂时资不抵债。先进先出的赔付队列和一个暂存资金的专用桶,确保盈利方按顺序得到支付,同时从不阻碍新的交易。

    模型

    Exchange 把 LP 的账目分成几个分区:

    • 池中现金:Exchange 持有的 USDC 中不欠任何其他人的部分。从它持有的全部 USDC 中减去每个账户的可用余额、未平仓仓位中锁定的保证金和已计提的手续费,剩下的就是池中现金。它不会为负。尚未领取的构建者费作为 LP 的负债留在池中现金里:记账资金池已经把它们算作已支付,构建者领取时从池中现金支付,无法支付时进入队列。
    • 专用桶:有待付款排队期间流入的亏损资金,在池中现金内单独划出,专门留给队列。结算时最先从这里支出。
    • 赔付队列:未付盈利的先进先出列表,每一项是一个账户和一笔金额。
    • 持仓中的债务:以排队待付款作为保证金的未平仓仓位的保证金。

    协议不依靠预先注资、随时按需支付盈利的 LP,而是在现金不足时让盈利方排队,等之后的亏损补充 LP 时再支付。代币铸造速率所跟随的数值,即记账资金池,通过一个恒等式与这些分区联系起来,每一项操作都保持它成立:

    tracked LP = LP cash − queued claims − debt in positions
    

    它可以为负,这正是队列要应对的「暂时资不抵债」状态。

    进入队列的只有 LP 在平仓时欠下、但当时付不出的部分:对于保证金来自余额的仓位,是扣除盈利手续费后的收益;对于保证金来自队列的仓位,是剩余的待付款。以下三项不进入队列:

    • 你的保证金:对于保证金来自余额的仓位,保证金会立即回到你的可用余额,你可以提现或再次使用。
    • 手续费不优先于排队的盈利方:每个盈利方都要支付盈利手续费,但只有队列为空、且池中现金也足以覆盖它时,手续费才会分给质押者和团队;否则留在 LP 中。只要有任何待付款在排队,就免收亏损和爆仓手续费。构建者费随盈利或亏损手续费一同扣出,遵循同样的规则。
    • 有待付款排队期间的亏损:它们被划入专用桶,而不是成为可自由支配的池中现金。它们入账时仍会让记账资金池全额上升。
    每一美元的去向亏损与爆仓的资金进入池中现金;若有待付款在排队,则进入专用桶。盈利从池中现金支付,不足部分进入赔付队列。结算把专用桶里的现金付给队首。亏损或爆仓盈利平仓队列为空?现金足够?是否是否池中现金专用桶留给赔付队列支付给你赔付队列无资金支持的待付款结算记账资金池 = 池中现金 − 排队待付款 − 持仓中的债务
    每一美元的去向. 亏损与爆仓的资金进入池中现金;若有待付款在排队,则进入专用桶。盈利从池中现金支付,不足部分进入赔付队列。结算把专用桶里的现金付给队首。

    盈利平仓

    无论 LP 处于什么状态,都先从收益中扣除 2% 的盈利手续费。然后:

    1. 队列为空:从池中现金向你支付,最多为全部收益。只有池中现金同时也足以覆盖手续费时,手续费才分给质押者和团队;否则留在 LP 中。
    2. 池中现金付不了的部分,或者在已有待付款排队时的全部收益,以你的名义追加到队尾。排队的部分不改变池中现金。

    保证金来自排队待付款的仓位按同样方式结清,只是 LP 欠的是它剩余的全部待付款:盈利时是保证金加收益,亏损平仓时是保证金减亏损。开仓时动用的待付款只是抵押,并不是你持有的钱。

    亏损平仓与爆仓

    保证金来自余额的仓位亏损平仓或被爆仓时:

    1. 队列为空:亏损减去手续费(平仓为 2%,爆仓为保证金的 2%)成为池中现金。
    2. 有待付款排队:这笔资金留在 Exchange 中,但进入留给排队盈利方的专用桶,且不收手续费。它入账时仍计入记账资金池,也仍会为它铸造 TOKEN。

    保证金来自排队待付款的仓位亏损时,不会带来任何现金:被注销的那部分待付款只是不再欠付,因此既不进入池中现金,也不进入专用桶。亏损平仓时,剩余的待付款像盈利一样支付或排队;只有队列为空、且池中现金足以覆盖待付款加手续费时,才收取亏损手续费。爆仓会注销全部待付款,不收手续费。

    结算(harvest)

    结算从队首开始支付排队的待付款:

    1. 从队首开始沿队列向后,用队列可用的现金逐笔支付;最后轮到的一笔可能只付一部分。
    2. 已支付的金额先从专用桶中扣除。如果现金在队列清空之前用完,就停止;之后的亏损为之后的结算提供资金。
    3. 队列清空时如果专用桶中还有剩余,就把余下部分释放为普通的池中现金。结算和释放都不改变记账资金池:排队的待付款早已从中扣除。

    结算无需许可,调用者也得不到报酬。一次调用最多支付 64 笔待付款;只要有现金可付,我们的维护程序就以每次 32 笔调用它,所以无需任何人操心。

    如果你又有一笔盈利要排队时,队列中最新的一笔待付款恰好也是你的,两笔会合并为一笔;支付顺序不变。用排队待付款开仓时,系统先消耗你最新的待付款,最多回溯 50 笔;以这种方式清空的待付款会在队列中留下空位,结算时会跳过。

    不变式

    • 池中现金和专用桶都是无符号数,因此都不会为负。
    • 只要有任何待付款在排队,可用于新支付的现金就为零,因此新的盈利方永远不会先于更早的盈利方得到支付。
    • 记账资金池等于池中现金减去排队待付款,再减去持仓中的债务。它可以为负:这是设计上允许的暂时资不抵债。
    • 一次质押者分配会取走质押者的手续费(这部分始终有资金保障),以及 LP 超过 $10,000,000 的价值;没有待付款排队时,这部分超额从池中现金支付,否则以质押合约的名义排队。

    索引服务在每个区块后检查这些恒等式,一旦有任何一项不成立就停止提供数据。

    用户看到的内容

    开仓不受队列影响,只受通常的未平仓量上限,以及单次开仓可动用的待付款笔数限制。盈利平仓要么立即向你支付,要么让你排队,取决于 LP 的状况。应用会显示可用余额(已支付)和排队余额(等待结算);两者都可以用来开新仓,因为排队的待付款可以充当保证金。

    最后更新: