Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ch05-11 资金安全相关 abort code

返回本章

先沿资金问问题

这一节把“资金安全相关 abort code”放到余额流里看。只看钱包余额会误判交易可用性,真正要追的是权限 proof、托管余额、费用参数和结算路径。

源码入口

沿资金流看

重点错误码如下:

  • balance_manager.moveEInvalidOwner = 0EInvalidTrader = 1EInvalidProof = 2EBalanceManagerBalanceTooLow = 3EMaxCapsReached = 4ECapNotInList = 5
  • vault.moveENoBalanceToSettle = 7EHasOwedBalances = 8 与 permissionless settlement 相关。
  • pool.moveEInvalidQuantityIn = 6EInvalidOrderBalanceManager = 9EMinimumQuantityOutNotMet = 12EInvalidStake = 13EPoolNotRegistered = 14EWrongPoolReferral = 20
  • governance.moveEInvalidMakerFee = 1EInvalidTakerFee = 2EProposalDoesNotExist = 3EMaxProposalsReachedNotEnoughVotes = 4EWhitelistedPoolCannotChange = 5

前端错误提示应把 Move abort 映射成可操作信息:余额不足提示充值到 BalanceManager;proof 错误提示重新选择 manager 或授权 cap;版本错误提示刷新池列表;治理 fee 错误提示检查 stable/volatile 上下界和 1000 倍数。

资金旁白:这条线不要从撮合引擎开始。钱包里的 Coin<T> 先进入 balance_manager.move 的托管余额,成交后的 settled/owed 记录在 account.move,真正资产进出由 vault.move 收尾。读费用和余额时,始终沿这条资金线核对。

余额类错误最常见于把钱包余额、manager 可用余额、open order 锁定量和 owed balance 混为一谈。交易前检查应分别展示这些数值,并说明哪一项会被本次 PTB 消耗。

资金安全判断

  • 交易前同时检查 BalanceManager 余额、授权 proof、pool version 和费用参数。
  • 钱包余额只表示未托管资产;下单可用余额必须来自 balance_manager.move 的 manager 余额。
  • 涉及费用或返佣时,分别记录 maker/taker、base/quote/DEEP 和当前 epoch 参数。

动手检查

  • 资金安全相关 abort code 中哪一步会读写 BalanceManager,哪一步会进入 Vault
  • 失败时应优先排查余额不足、cap/proof 权限、pool pause/version 还是治理参数未生效?
  • 应用侧需要向用户展示 wallet balance、manager balance、locked balance 中的哪几项?