tcUSD

了解 tcUSD 的铸造、还款、清算、治理方式,以及如何将它用于价格市场抵押品。

tcUSD(Taco USD)是支持 EIP-2612 permit 的 18 位小数 ERC-20 代币。在部署启用该路径时,Timu 合约可以把它作为价格市场共享结算抵押品。

当前 TcUSDCollateralMinterV24 允许你存入治理配置的超额抵押资产,并据此铸造 tcUSD。Minter 会按每种支撑资产分别记录你的抵押品和债务。

tcUSD 不是任何持有人都能对 Minter 抵押品执行 1:1 赎回的凭证。代币持有人不能任选一种底层资产直接赎回。借款人需要偿还自己账本中的债务,并在账户保持健康时提取自己的抵押品。tcUSD 的市场价格可能偏离 1 USD。

可用性

合约已经实现不代表当前应用一定提供完整的 tcUSD 铸造流程。支持网络、Token 与 Minter 地址、已启用支撑资产、预言机、容量上限和暂停状态都取决于具体部署。

交易前请确认当前有效的部署 manifest 或产品配置,并读取最新链上设置。只有 Token 或 Minter 地址,不能证明 Minter 已激活,也不能证明某种支撑资产当前可以铸造新 tcUSD。

两层合约

  • TcUSD 是代币和发行权限层。只有已经激活并获得授权的 Minter 才能创建 tcUSD。Active 和 Frozen 状态的 Minter 都可以销毁 Minter 合约自身持有的 tcUSD,用于还款和恢复。
  • TcUSDCollateralMinterV24 是抵押品与债务层。它保管支撑资产,通过已配置的 USD 预言机估值,并处理债务铸造、还款、清算和坏账。

迁移期间,一个 tcUSD Token 可以同时授权多个 Minter。每个 Minter 都有独立的债务账本和风险设置。

借款与还款

除非当前产品提供受支持的封装流程,否则你需要直接与 Active TcUSDCollateralMinterV24 交互。

每个承担风险的调用都带有你签名时显式设定的防护参数:maxDebtAfter 限制铸造后你接受的债务上限,minHealthFactorAfter 限制提取后的健康度下限,expectedOracleDigest 锁定交易必须观察到的预言机读数,deadline 拒绝过期提交。预言机摘要变化、截止时间过期或防护边界被突破时,调用会直接回滚,而不是按意外条件成交。

操作结果主要检查
deposit(collateral, amount)向你的账户增加支撑抵押品合约必须收到精确数量;已退役抵押品会被拒绝
mint(collateral, amount, maxDebtAfter, expectedOracleDigest, deadline)增加债务并向你发送 tcUSD铸造已启用、抵押品处于 Active、预言机摘要符合预期、账户健康且全部发行上限允许
repay(collateral, amount)拉取并销毁 tcUSD,然后减少你的债务金额必须大于零,且不能超过已记录债务
withdraw(collateral, amount, minHealthFactorAfter, expectedOracleDigest, deadline)返还支撑抵押品提取后健康度、预言机摘要和截止时间
repayAndWithdraw(collateral, repayAmount, withdrawAmount, minHealthFactorAfter, expectedOracleDigest, deadline)原子完成还款和提取两个金额都必须大于零;提取失败时还款也会一起回滚

depositAndMint 在一次调用中组合存款和铸造,并同时接收两组参数。铸造失败时,存款也会一起回滚。

repayFor(account, collateral, amount) 允许第三方提供 tcUSD 偿还他人账本中的债务。付款方不会获得任何抵押品或补偿,借款人的抵押品仍留在 Minter 中。它与 repay 一样从不读取预言机,并且在所有已配置模式下都可用。

存入前,请把支撑代币授权给 TcUSDCollateralMinterV24。还款前,请把 tcUSD 授权给同一个 Minter。TcUSD.permit 可以通过 EIP-2612 签名设置 tcUSD allowance,但调用方仍需通过受支持的交易流程提交 permit 和还款调用。

每个 (account, collateral) 债务账本相互独立。以一种资产存入的抵押品不能支撑另一种资产下的债务,Minter 也不会跨支撑资产合并健康度。

生命周期模式与脱锚门禁

每种支撑资产在其 backing config 中都有一个生命周期模式:

  • ACTIVE 允许对该资产铸造新债务。
  • REDUCE_ONLY 和 FROZEN 禁止新铸造。降低风险的路径仍然可用:你可以增加抵押品、还款、在保持健康的情况下提取,账户也仍可被清算。
  • RETIRED 还会禁止新增存款。还款、清算和坏账覆盖仍然可用,但你不能向已退役资产继续追加支撑。

Minter 还可以绑定共享的脱锚监控器。当已绑定的监控器报告脱锚事件进行中时:

  • 新铸造会回滚。
  • 在仍有未清债务的情况下提取抵押品会回滚,因为在负债时移除支撑属于新增风险。当你在该资产下的已记录债务清零后,提取不再经过脱锚门禁,但仍然需要有效的预言机读数。
  • 接受会引入新配置、放宽风险条款或更换已固定预言机身份的待决提案会回滚。纯收紧操作(例如提高模式或降低上限)仍然可用。

观察到资不抵债后铸造也会保持暂停。resumeMinting 仅限 Owner 调用,只要仍存在已记录坏账,或已绑定的脱锚监控器仍报告事件进行中,调用就会回滚。

健康度与发行上限

Minter 根据已配置预言机和代币小数位,把抵押品换算为 USD 价值。预言机必须返回按 1e18 缩放的抵押品 USD 价格。债务使用 18 位小数的 tcUSD/USD 单位。

  • collateralFactorBps 决定初始借款上限:maxDebt = collateralValue × collateralFactorBps / 10,000。
  • liquidationThresholdBps 决定清算起点。只有满足 debt > liquidationDebt 时账户才可被清算,其中 liquidationDebt = collateralValue × liquidationThresholdBps / 10,000。
  • liquidationIncentiveBps 会提高支付给清算人的抵押品数量。配置校验会限制激励,并要求账户在配置的清算阈值处仍能被完整清算。

可以使用 getAccountHealth(account, collateral) 读取抵押品价值、最大债务、清算债务、当前债务、账户的 healthFactorWad、初始健康状态和可清算状态。

新增发行必须同时满足三层容量限制:

  • backingConfig 中该支撑资产的 mintCap 限制该资产对应的活跃债务与已记录坏账总和。
  • globalDebtCeiling 限制该 Minter 在所有支撑资产下的活跃债务与已记录坏账总和。默认值为零,因此发行初始采用默认拒绝机制。
  • TcUSD.minterMintCap(minter) 限制该授权 Minter 在 Token 层记录的净发行量。

把上限或债务天花板降低到当前使用量以下,会阻止继续发行,但不会阻止还款、增加抵押品、保持健康的提取、清算或坏账覆盖。

这些合约不会累计借款利息。已记录债务只会因铸造、还款、清算和坏账覆盖而变化。

预言机检查

Minter 不会信任单纯的非零 getPrice() 返回值。每个依赖价格的操作都会通过绑定读取访问已配置的 backing oracle,并检查:

  • 预言机适配器绑定的 base token 必须正是该抵押品代币,且报价单位为 USD。
  • 适配器的来源身份(source id、config hash 和运行时代码哈希)必须与排期 backing config 时固定的身份一致。
  • 预言机状态为 LIVE,sequencer 报告为健康,价格非零且与风险快照内部一致。
  • 观测值仍处于有效窗口内。携带 expectedOracleDigest 的交易还要求预期摘要匹配当前结果;健康度读取不接收该交易保护参数。

绑定失败可能返回 BackingConfigInvalid,规范价格无效返回 OraclePriceUnavailable,交易摘要不匹配返回 OracleDigestMismatch。适配器失败也可能传递其自身错误。存入抵押品、还款、替他人还款和坏账覆盖从不读取预言机。

清算与坏账

清算是无许可操作。清算人先把 tcUSD 授权给 Minter,再携带 TcUsdLiquidationRequestV24 调用 liquidate:

  • account 和 collateral 标识借款人的债务账本。
  • maxDebtToRepay 是最大值。Minter 最多偿还该数量,且不超过未清债务。
  • minCollateralSeized 和 maxBadDebtCreated 分别限制可扣押的抵押品数量和该次清算可产生的坏账数量。
  • expectedOracleDigest 和 deadline 锁定预言机读数和截止时间。

调用会返回一张回执,包含实际还款额、扣押的抵押品、产生的坏账,以及账户与系统的后续状态。

Minter 销毁实际用于还款的 tcUSD,并把按配置激励计算的支撑抵押品转给清算人。实际销毁和扣押数量都会受剩余债务与抵押品限制。

如果价格跳空导致债务超过剩余抵押品可以支撑的还款额:

  1. 任何观察到该缺口的成功清算都会立即暂停新增铸造。
  2. 部分清算可以让缺口继续保留为借款人的活跃债务。
  3. 剩余抵押品耗尽时,Minter 会关闭该借款人债务,并把未覆盖金额记录到 badDebtByCollateral 和 totalBadDebt。

Minter 可以向成功的清算人支付配置的补贴,补贴受储备金、每日预算和每借款人预算约束。补贴取决于部署配置,可能为零或已暂停;资格、储备或预算条件不满足时会跳过补贴;实际补贴转账失败仍会使清算回滚。

任何持有现有 tcUSD 的账户都可以先授权 Minter,再调用 coverBadDebt(collateral, amount)。该调用会销毁 tcUSD,并减少已记录坏账和总债务。它不是获得补偿的申领操作,也不会铸造新的支撑资产。

全部坏账覆盖完成后,系统不会自动恢复发行。systemRiskStatus() 返回总债务、坏账、债务天花板、全局天花板剩余容量、暂停状态,以及链上坏账与脱锚条件是否允许恢复。其中 remainingMintCapacity 只反映 globalDebtCeiling,抵押品级和 Token 级上限可能进一步降低实际容量。治理在调用 resumeMinting 前仍需另行评估实时抵押品和预言机状态。

时间锁治理的配置变更

TcUSDCollateralMinterV24 的 backing config 和全局债务天花板变更都遵循两步提案流程:

  • scheduleBackingConfig(collateral, config) 记录待决配置及其生效时间,acceptBackingConfig(collateral) 在延迟结束后应用它。
  • scheduleGlobalDebtCeiling(newCeiling) 与 acceptGlobalDebtCeiling() 遵循相同模式。

延迟时长为部署 Minter 时设置的 CONFIG_DELAY。它是部署参数,不是固定的一天常量。

固定的一天 MINTER_AUTHORIZATION_DELAY 适用于 Token 层的 TcUSD Minter 授权和已排期的 Minter 上限变更。抵押 Minter 的提案延迟与它相互独立。

Owner 或 Emergency Guardian 可以无需提案立即收紧:downgradeBackingMode 把支撑资产切换到更严格的模式,pauseMinting 暂停发行。这些操作是单向的,恢复需要 Owner 执行。

有界 Minter 授权

TcUSD 把新增发行权限与恢复销毁权限分开:

  • 治理调用 scheduleMinter 并设置每个 Minter 的上限。排期本身不会授予权限。
  • 固定的一天 MINTER_AUTHORIZATION_DELAY 结束后,治理调用 activateMinter。激活时会重新校验 Minter 运行时代码哈希、tcUSD 绑定关系和债务报告接口。
  • 治理或 Emergency Guardian 可以立即调用 freezeMinter。Frozen Minter 不能继续铸造,但会保留 Burner 权限,使原有账本仍可接受还款、执行清算和覆盖坏账。
  • 只有在 Frozen Minter 报告的债务和坏债均为零,且记录的净发行量为零后,治理才能移除它。重新激活需要再次经过延迟授权。

Emergency Guardian 可以立即降低发行风险,包括暂停抵押铸造、冻结 Active Token Minter,以及取消待激活的新 Minter 或待执行的上限提高。Guardian 不能激活 Minter、恢复抵押铸造、提高全局债务天花板或轮换 Guardian 权限。

Token 的 Minter 授权与抵押 Minter 的 mintingPaused 是两个独立门禁。只有两者都允许时才能新增发行。

在价格市场中使用 tcUSD

pvpAMM 池以 tcUSD 作为 ERC-20 抵押代币结算。部署绑定共享脱锚监控时,开放事件也可能禁止池中新开仓、增加流动性及其他新增风险操作。即使 tcUSD 铸造层可以接受多种支撑资产,每个池仍然只使用一种抵押品代币结算。

两套偿付能力相互独立:

  • 把借来的 tcUSD 锁入价格仓位、LP 批次或保证金账户,不会减少你的 TcUSDCollateralMinterV24 债务。
  • 支撑资产下跌时,Minter 可以清算该支撑抵押品,但不会触碰池中已经持有的 tcUSD。
  • 关闭池仓位可以取回 tcUSD,但赔付不会自动偿还 Minter 债务。你需要另行还款。
  • 池不会读取你的 Minter 健康度,Minter 也不会把你的池仓位或 LP 价值当作支撑资产。

请保留足够的流动 tcUSD 来管理债务。如果全部 tcUSD 都投入交易或流动性,你可能无法在支撑抵押品账户进入可清算状态前及时还款。

部署支持 Cross 交易时,一个 tcUSD 保证金账户可以汇总多个受支持池中的仓位,但这些池的抵押品必须是同一个 tcUSD 地址。详情请参阅仓位模式与保证金账户。

签名前检查

  • 从当前有效的部署来源确认 TcUSD 与 TcUSDCollateralMinterV24 地址。
  • 检查 TcUSD.minterStatus(minter)、minterMintCap(minter) 和 minterNetIssued(minter)。
  • 检查 backingConfig(collateral),包括 mode、预言机、抵押因子、清算阈值、激励和铸造上限,并用 pendingBackingConfig(collateral) 查看已排期的变更。
  • 检查 systemRiskStatus() 中的全局天花板容量、坏账和铸造暂停状态,并分别检查另外两层发行上限。
  • 在预言机价格可用时,检查你的 collateralOf(account, collateral)、debtOf(account, collateral) 和 getAccountHealth(account, collateral) 结果(含 healthFactorWad)。
  • 确认本次操作使用了正确的代币 allowance。

继续阅读

本页目录