债券
购买债券,就是把储备资产卖给国库以换取 DOHM,DOHM 在一段悬崖式归属期后交付。每笔购买都会铸造一张债券凭证——它是这笔兑付的唯一凭据。凭证在某个固定区块高度到期,之后你凭它赎回全部兑付额。
流程
- 选择一个市场并输入存入数量,界面会报出你的兑付额。
- 设定一个最低兑付额(滑点保护——签名交易中携带
min_payout)。 - 签名并广播。你会在同一笔交易中收到债券凭证(以及可能的退还)。
- 等待凭证到期的区块高度。
- 赎回凭证:把它发回,领取全部 DOHM 兑付额,凭证随即被销毁。
定价
每笔存入首先以 frUSD 计价(usd,基本单位),再按市场的模式定价。deposit_usd = amount × price / SCALE,其中 price 取决于资产(见下文存入估值)。
固定价市场(fixed = frUSD/DOHM × 1e8):
payout = deposit_usd × 1e8 / fixed
贴底价市场(价格恰好等于国库底价——经济上中性):
payout = deposit_usd × 1e8 / floor
曲线市场——针对虚拟储备 v_in(frUSD 单位)与 v_out(DOHM 单位)的恒定乘积曲线。曲线现货价为 1e8 × v_in / v_out:
payout = deposit_usd × v_out / (v_in + deposit_usd)
购买之后,存入额并入虚拟储备——v_in += deposit_usd——因此下一笔债券更贵(需求反馈)。市场闲置时,v_in 会衰减:每 half_life 个区块减半(在一个周期内线性插值),但永不低于 min_v_in:
v_in(t) = max(v_in >> (elapsed / half_life) − partial, min_v_in)
partial = (v_in_shifted / 2) × (elapsed mod half_life) / half_life
min_v_in 是曲线的硬性价格底线;市场在创建时保证 1e8 × min_v_in / v_out > 国库底价,也就是说曲线债券始终具有增值性。市场还可以启用调价:每 tune_interval 个区块,v_in 会被重新校准,使剩余额度在市场结束高度前恰好售罄;每次调价幅度不超过 ±25%,且永不低于 min_v_in。
存入估值(price)
| 资产类型 | 如何估值 |
|---|---|
| frUSD | 1:1,price = 1e8。无需预言机。 |
| 波动性资产(如 frBTC) | 仅限签名债券。 由链下签名者认证一个价格区间(见下文)。你的兑付额按区间中点 (min_usd + max_usd) / 2 计算。国库会独立读取 AMM 实时现货价,并在 现货价不落在 [min_usd, max_usd] 区间内时直接回滚——区间外的价格无法执行。 |
| LP 代币 | 按资金池抗操纵的每单位折算价值估值(见下文),落在签名区间内,再按市场的曲线价或固定价定价。 |
LP 每单位价值(r0_usd、r1_usd = 资金池两侧储备按实时现货价的估值):
value_per_lp = 2 × √(r0_usd × r1_usd) × 1e8 / total_lp
deposit_usd = value_per_lp × lp_amount / 1e8
几何平均 √(r0·r1) 在池内兑换下保持不变,因此闪兑无法抬高 LP 的估值。
签名认证(面向集成方)
波动性资产债券或 LP 债券需要来自治理设定的价格签名者的 ed25519 认证。签名消息为7 个 u128 字,小端序,以一个域分隔标签开头:
[ DOMAIN, asset_block, asset_tx, min_usd, max_usd, expiry_height, nonce ]
DOMAIN = 1 (DOMAIN_BOND_SIGNED) 单资产债券 → (asset_block, asset_tx)
= 2 (DOMAIN_BOND_LP) LP 债券 → 资金池的 (block, tx)
完整认证为11 个 u128 字:上述 7 个字段,加上以大端序打包为 4 个字的 64 字节签名。开头的标签是必需的——它使两类消息空间在密码学上不可互换,因此单资产认证无法被重放为 LP 认证(反之亦然)。省略它会导致验证失败。签名者、有效期以及一次性 nonce 都会在任何状态变更前于链上校验。
认证中的
[min_usd, max_usd]区间在债券里没有宽度上限。宽区间由另一种方式约束:国库会独立重新读取实时现货价,要求现货价 ∈ [min_usd, max_usd],并对自己算出的价值执行增值保护——因此过宽的区间只会导致回滚,绝不会造成背书不足。(你可能看到的 2 倍宽度上限,是估值模块中另一套由治理设定的按资产合理性区间,与此处的认证无关。)
执行顺序(哪些会回滚,以及顺序如何)
存入完成定价后,债券会按以下顺序逐项检查。回滚信息会指出它命中的第一项:
-
额度部分成交。 若你的兑付额超过市场剩余额度,成交会被精确削减到额度上限——所需存入额用向上取整的逆运算重新计算(绝不导致背书不足),且未用完的存入额在同一笔交易中退还。
-
最低兑付额。
payout < min_payout→ 回滚(你的滑点下限)。 -
增值保护。 存入额必须在底价处足以背书兑付额,否则交易回滚:
deposit_usd × 1e8 ≥ payout × floor相等即为贴底价的中性交易;任何超出部分都是盈余,进入质押者的奖励预算。
-
最高兑付额。
payout > max_payout→ 回滚(单笔购买上限)。 -
单区块上限。 同一个比特币区块内的兑付额之和不得超过
max_dohm_per_block。
已过 conclusion 高度或被显式关闭的市场不再接受新债券(在定价前检查)。赎回已有凭证不受影响。
归属——悬崖式,而非线性
claimable = payout 若 height ≥ vesting_end
= 0 否则
vesting_end = start + vesting_blocks
start 是你的购买区块(对于预售类市场,则是全市场统一的固定起点)。到期前不可领取任何数量;到期时全额可领取。 在不同高度的两次购买,是两张各自到期的独立凭证。
赎回
- 每笔交易赎回一张凭证。赎回多张已到期凭证需要多笔交易,各自支付矿工费。
- 赎回即使在协议暂停期间也能执行——退出永远不会被困住。
- 赎回时铸造全额兑付,凭证被销毁。如果你在同一个 UTXO 上多发了其他资产,它们会原封不动地退回。