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

ch09-07 通过 DeepBook Pool 执行杠杆买入

返回本章

先看用户路径

这一节从 Margin 用户动作读起:围绕“通过 DeepBook Pool 执行杠杆买入”,先把 manager、collateral、loan、trade 和 repay 的顺序排清楚,再看源码入口。

源码入口

重点阅读:

源码旁白:先定位结构体、入口函数和事件,再回到本节的资金路径或应用流程。不要从 helper 函数开始读。

把 PTB 串起来

杠杆买入常见路径:

  1. 用户有 quote 抵押,如 USDC。
  2. borrow_quote 借入更多 USDC。
  3. pool_proxy.place_market_orderplace_limit_order 买入 base。
  4. pool_proxy.withdraw_settled_amounts 结算成交资产。
  5. 重新读取 manager_state 和风险率。

pool_proxy.place_market_order 会先根据订单簿计算 effective price,再调用 registry.assert_price。如果订单簿没有足够流动性,会触发 ENoLiquidityInOrderbook 或 DeepBook Pool 侧错误。

交易前模拟要输出三类信息:

  • 预估成交均价和滑点。
  • 借款后风险率和成交后风险率。
  • 价格保护失败、流动性不足、风险率不足时的用户提示。

工程旁白

杠杆买入的债务通常是 quote。base 价格下跌会降低资产价值并压低风险率;quote 利息增长也会逐步抬高 debt amount。因此交易确认页要同时显示价格风险和借款成本。

市价买入最容易在订单簿深度不足时产生失败或过大滑点。pool_proxy 会做 effective price 与 oracle 检查,应用侧也应在提交前用订单簿快照给出最坏可接受价格。

Margin 应用判断

  • 买入 PTB 包含 borrow quote、place order、settle/refresh 三个逻辑步骤。
  • 所有价格和滑点提示都要标明基于当前订单簿,最终以 dry run 为准。
  • 成交后如果没有立即还款,继续展示 quote debt 的利息累计。

动手检查

  • 买入后 debt asset 是否仍是 quote,base 下跌对风险率有什么影响?
  • 订单失败是 risk ratio 不足、oracle price out of bounds 还是 orderbook liquidity 不足?
  • 交易完成后是否刷新 settled amounts 和 open orders?