深入原理
TOKEN 铸造曲线
已实现亏损如何转化为代币供应。供应量从零开始,先按先平坦后衰减的曲线铸造;所有者切换之后,每一美元亏损铸造当前供应量的一个固定份额。
两个阶段
代币供应量从零开始,因此一开始不可能按供应量自身的份额铸造。铸造分两个阶段进行:
- 上线曲线(见下文):先是平坦速率,然后是衰减的尾段。
- 供应份额规则:从所有者通过时间锁启用它的那一刻开始。这次切换只发生一次,且不可撤销;切换时,新规则的常数会被设定为让每美元的边际铸造量保持不变。
上线曲线
曲线分为两个区段,由 Tokenomics 合约中的三个参数决定:平坦阈值 F = $2,000,000,平坦速率 R = 每美元 100 个 TOKEN,尾段尺度 S = $120,000,000。它跟踪两个状态变量:
T:记账资金池(见偿付能力与队列),可以为负;H:尾段进度,即至今按尾段计价的累计铸造基数,只增不减。
rate = R while T < F (the flat region, including any negative T)
rate = R · (S / (S + H))² otherwise (the tail)
铸造基数是你已实现亏损中符合条件的部分(见下文),并不总是等于计入记账资金池的金额。每次铸造时,系统把基数分配到两个区段,按速率的积分铸造,因此把一笔亏损拆成多笔,最多只会因取整多出几 wei:
T −= wins paid in the batch
flat = T < F ? min(basis, F − T) : 0 (a negative T leaves more flat room)
tail = basis − flat
r1 = S · 1e18 / (S + H)
r2 = S · 1e18 / (S + H + tail)
minted = flat · R / 1e18 + ((R · r1 / 1e18) · r2 / 1e18) · tail / 1e18
H += tail
T += what the LP received
只增不减的尾段进度
H 是一个只升不降的高水位。分配把 LP 超过 $10,000,000 的价值转给质押者时,T 会回落,但 H 保持不变。尾段一旦推进,速率就会永久地相应降低:尾段亏损累计达到 S 后,速率降为 R 的四分之一,无论其间 LP 有多少次被分配给质押者。这就是上图以 H 而不是 LP 为横轴的原因。
因此,早期交易者的铸造速率远高于后来者。这是有意为之。
切换之后:按供应份额铸造
切换之后,无论记账资金池处于什么水平,每一美元的铸造基数都按代币供应量的一个固定份额铸造:
c36 = R_now · 1e36 / supply_at_switch fixed once (R_now: the curve's marginal rate)
x = c36 · g / 1e36 g: the effective basis, below
minted = supply · (e^x / (1 + 1e−15) − 1) supply: the token supply before this mint
e^x 按 wad(18 位小数)计算,结果再向下扣除 1000 wei(以 wad 计)的余量,约为 1e15 分之一。H 不再增长。由于每一美元都铸造当时供应量的同一份额,供应量没有上限:它随累计亏损增长,已有持仓按同样的比例被稀释。
资不抵债奖励
切换之后,补足低于零的记账资金池的亏损计数更多:
g_below0 = min(credit, −T) the part of what the loss adds to T that lands below zero
m = 1 + 4u(2 − u), u = min(1, t / 3 days)
g = basis + (m − 1) · g_below0
t 是记账资金池跌破零以来经过的时间。m 在 3 天 内从一倍上升到 5×,只要 T 仍低于零就保持在这个水平。一次结算使 T 低于零时开始计时,使它回到零或以上时清零,因此下次 T 跌破零时奖励重新从一倍开始。亏损的其余部分按一倍计。
什么算作「亏损」
- 亏损平仓,保证金来自余额,队列为空:亏损减去 2% 的亏损手续费;如果平仓所用的密钥指定了获批的构建者,再减去构建者费,两者都从 LP 收到的部分中扣出。记账资金池上升同样的数额。
- 亏损平仓,有待付款排队:不收手续费,亏损进入专用桶;基数为全部亏损,记账资金池也上升全部亏损。专用桶只决定这笔现金先用于支付排队的盈利方。
- 爆仓:无论队列处于什么状态,基数都是损失的全部保证金。记账资金池上升保证金减去爆仓手续费(如果收取了手续费)。在爆仓价或更差价格执行的平仓按爆仓结算,基数相同。
- 保证金来自排队待付款的仓位:亏损平仓按被注销的那部分待付款铸造,收取亏损手续费时扣除手续费;爆仓注销全部待付款,不收手续费,并按全部待付款铸造。记账资金池按同样的数额变动。
批量与延迟铸造
一次平掉多个仓位时,整个批次只铸造一次;铸造数量按各仓位的基数比例分配,采用最大余数法,余数相同时优先分给靠前的仓位。爆仓按每个仓位分别铸造。
Exchange 以固定的 gas 额度调用 Tokenomics。如果调用失败,平仓照常完成,这次铸造的输入被保存下来,之后的所有铸造都排在它后面,这样按原顺序补铸时,铸造数量与直接铸造完全一致。任何人都可以触发补铸,我们的维护程序也会这样做。