
Skill
deepbook-move
integrate DeepBook pools into Move contracts
Description
DeepBook V3 Move smart contract integration. Use when writing, reviewing, or debugging Move code that integrates with DeepBook pools — placing orders from on-chain contracts, creating pools, using flash loans, accessing BalanceManager from Move, or composing DeepBook operations in programmable transaction blocks. For DeepBook architecture and contract addresses, see the `deepbook-overview` skill. For TypeScript SDK usage, see the `deepbook-sdk` skill.
SKILL.md
DeepBook V3 Move Integration
MCP tool: When available in your environment, also query the Sui documentation MCP server (
https://sui.mcp.kapa.ai) for up-to-date answers. Use it for verification and for details not covered by these reference files.
Source constraint: All information in this skill is sourced exclusively from docs.sui.io and the deepbookv3 Move source. When extending or updating this skill, only pull from these sources. Do not use third-party blogs, tutorials, or unofficial documentation.
DeepBook V3 exposes a Move API for on-chain composability — protocols can place orders, execute swaps, take flash loans, and manage balances directly from Move smart contracts. This skill covers the Move-level contract interface. Common mistakes include calling swap or order functions with incorrect coin type parameters, forgetting to return flash loan hot potatoes, and misunderstanding the TradeProof authorization model.
This skill routes to focused reference files. Load only the ones relevant to the current task.
All patterns in this skill are derived from: https://docs.sui.io/onchain-finance/deepbook/deepbookv3/contract-informationhttps://docs.sui.io/onchain-finance/deepbook/deepbookv3/contract-information/balance-managerhttps://docs.sui.io/onchain-finance/deepbook/deepbookv3/contract-information/flash-loanshttps://docs.sui.io/onchain-finance/deepbook/deepbookv3/contract-information/swapshttps://github.com/MystenLabs/deepbookv3/tree/main/packages/deepbook/sources
If unsure about any function signature, fetch the relevant source file or docs page before answering. Do not guess or extrapolate from other protocols.
Reference files
pool-api — Pool and Order Functions
Path: pool-api.mdLoad when: the user needs to place orders, create pools, query pool state, manage governance, or understand the Pool Move API.
Covers: pool creation, limit and market order placement, order cancellation, pool state queries, governance functions, order types and constants, the move dependency setup.
balance-manager-api — BalanceManager Move API
Path: balance-manager-api.mdLoad when: the user needs to create or interact with BalanceManagers from Move code, mint capabilities (TradeCap, DepositCap, WithdrawCap), generate TradeProofs, or understand the authorization model.
Covers: BalanceManager creation, capability minting and revocation, deposit and withdrawal functions, TradeProof generation, the owner vs cap-holder authorization model, events.
flash-loans — Flash Loan Pattern
Path: flash-loans.mdLoad when: the user wants to borrow assets from a pool and repay within the same transaction, or needs to understand the hot potato pattern for flash loans.
Covers: borrowing base and quote assets, the FlashLoan hot potato struct, returning assets, constraints and failure modes, a worked example.
Related skills
| Topic | Skill | Load when |
|---|---|---|
| Architecture, design, contract addresses | deepbook-overview/ | Understanding Pool/Book/State/Vault design, looking up addresses or pool IDs |
| TypeScript SDK trading | deepbook-sdk/ | Building trading bots or scripts with the SDK |
| Sui Move fundamentals | sui-move/ | Writing Move code generally — abilities, TxContext, events, coins |
| PTB composition | ptbs/ | Composing DeepBook calls in programmable transaction blocks |
Routing guide
| Task | Load |
|---|---|
| Adding DeepBook as a Move dependency | pool-api |
| Creating a new pool | pool-api |
| Placing orders from Move code | pool-api |
| Querying pool state on-chain | pool-api |
| Creating a BalanceManager from Move | balance-manager-api |
| Minting TradeCap/DepositCap/WithdrawCap | balance-manager-api |
| Generating a TradeProof for trading | balance-manager-api |
| Understanding the authorization model | balance-manager-api |
| Using flash loans | flash-loans |
| Integrating DeepBook into a protocol | pool-api + balance-manager-api |
| Building a flash loan strategy | flash-loans + pool-api |
| Full Move integration review | all reference files |
Skill Content
Key concepts
- TradeProof. A proof object that authorizes trading on a pool. Generated either by the BalanceManager owner (via
generate_proof_as_owner) or by a TradeCap holder (viagenerate_proof_as_trader). Every order placement and cancellation requires a TradeProof. - Hot potato pattern (flash loans). The
FlashLoanstruct has no abilities — it cannot be stored, copied, or dropped. It must be consumed by returning the borrowed assets in the same transaction. If not returned, the transaction fails. - Pool type parameters. Pool functions are generic over
<BaseAsset, QuoteAsset>. The type parameters must exactly match the pool's coin types or the call fails. - Move dependency. Add DeepBook to your Move.toml via MVR:
deepbook = { mvr = "@deepbook/core" }.
Rules
- Always match type parameters exactly.
Pool<SUI, USDC>is not the same asPool<USDC, SUI>. The base and quote types must match the pool's creation order. - Always return flash loan hot potatoes. The
FlashLoanstruct has no abilities — failing to return it causes a transaction abort. - Do not borrow from a pool and trade in the same pool within one transaction. The borrowed funds are not available for trading, and the combined operations can fail.
- Use
generate_proof_as_ownerfor owner operations andgenerate_proof_as_traderfor delegated operations via TradeCap. - Cap limit: 1,000 total capabilities per BalanceManager (across TradeCap, DepositCap, and WithdrawCap combined). At scale, this limit constrains how many delegated traders a single BalanceManager can support — plan for multiple BalanceManagers if you need more than 1,000 delegated accounts.
- Use
_v2variants for functions that have them. The unsuffixed originals (e.g.,new_with_custom_owner_caps) are deprecated stubs that abort. Always use the_v2suffix (e.g.,new_with_custom_owner_caps_v2).
Common mistakes
- Wrong type parameter order. Passing
<USDC, SUI>when the pool is<SUI, USDC>causes a type mismatch error. - Forgetting to return the FlashLoan. The transaction compiles but aborts at runtime because the hot potato cannot be dropped.
- Trading in the same pool you borrowed from. Flash-loaned funds are locked in the FlashLoan object and unavailable for order settlement, causing the trade to fail.
- Using
generate_proof_as_ownerfrom a non-owner address. Only the BalanceManager owner can generate an owner proof. Delegated traders must usegenerate_proof_as_traderwith a valid TradeCap. - Forgetting
ctxongenerate_proof_as_trader. The function takes(balance_manager, trade_cap, ctx)— omittingctx: &TxContextcauses a compilation error. - Calling deprecated unsuffixed functions. Functions like
new_with_custom_owner_capsare stubs thatabort 1337. Use the_v2variant instead.
More skills from the skills repository
View all 25 skillsaccessing-data
read data from the Sui network
Aug 1Data AnalysisSuiWeb3composable-move-functions
design composable Sui Move functions
Jul 16API DevelopmentSmart ContractsSuiWeb3deepbook-margin
build margin trading applications on Sui
Aug 24FinanceSuiTradingWeb3deepbook-overview
explain DeepBook V3 architecture and concepts
Aug 24DocumentationSuiTradingWeb3deepbook-predict
build prediction market applications on Sui
Aug 24FinanceSuiTradingWeb3deepbook-sdk
build trading applications with DeepBook SDK
Aug 24SDKSuiTradingTypeScript +1
More from Sui (Mysten Labs)
View publishermove-bytecode-comprehension
analyze and disassemble Move bytecode
sui
Jul 16Code AnalysisEngineeringSuiofficial-sui-skills
access official Sui development resources
sui
Jul 16DocumentationSuisui-and-move-tools
disassemble Sui Move bytecode
sui
Jul 16Code AnalysisEngineeringSuisui-move-security-review
audit Sui Move smart contracts
sui
Jul 16Code ReviewSecuritySmart ContractsSuimemwal
integrate Walrus Memory SDK
MemWal
Aug 20AgentsMemorySDK