BalanceManager
The BalanceManager
shared object holds all balances for different assets. To perform trades, pass a combination of BalanceManager
and TradeProof
into a pool. TradeProof
s are generated in one of two ways, either by the BalanceManager
owner directly, or by any TradeCap
owner. The owner can generate a TradeProof
without the risk of equivocation. The TradeCap
owner, because it's an owned object, risks equivocation when generating a TradeProof
. Generally, a high frequency trading engine trades as the default owner.
With exception to swaps, all interactions with DeepBookV3 require a BalanceManager
as one of its inputs. When orders are matched, funds are transferred to or from the BalanceManager
. You can use a single BalanceManager
between all pools.
API
Following are the different public functions that the BalanceManager
exposes.
Create a BalanceManager
The new()
function creates a BalanceManager
hot potato (a struct with no abilities). Combine it with share
, or else the transaction fails. You can combine the transaction with deposit calls, allowing you to create, deposit, then share the balance manager in one transaction.
packages/deepbook/sources/balance_manager.move
. You probably need to run `pnpm prebuild` and restart the site.Create a BalanceManager with custom owner
The new_with_owner()
function creates a BalanceManager
hot potato (a struct with no abilities) with a custom owner. Combine it with share
, or else the transaction fails. You can combine the transaction with deposit calls, allowing you to create, deposit, then share the balance manager in one transaction.
packages/deepbook/sources/balance_manager.move
. You probably need to run `pnpm prebuild` and restart the site.Mint a TradeCap
The owner of a BalanceManager
can mint a TradeCap
and send it to another address. Upon receipt, that address will have the capability to place orders with this BalanceManager
. The address owner cannot deposit or withdraw funds, however. The maximum total number of TradeCap
, WithdrawCap
, and DepositCap
that can be assigned for a BalanceManager
is 1000
. If this limit is reached, one or more existing caps must be revoked before minting new ones. You can also use revoke_trade_cap
to revoke DepositCap
and WithdrawCap
.
packages/deepbook/sources/balance_manager.move
. You probably need to run `pnpm prebuild` and restart the site.Mint a DepositCap or WithdrawCap
The owner of a BalanceManager
can mint a DepositCap
or WithdrawCap
and send it to another address. Upon receipt, that address will have the capability to deposit in or withdraw from BalanceManager
. The address owner cannot execute trades, however. The maximum total number of TradeCap
, WithdrawCap
, and DepositCap
that can be assigned for a BalanceManager
is 1000
. If this limit is reached, one or more existing caps must be revoked before minting new ones.
packages/deepbook/sources/balance_manager.move
. You probably need to run `pnpm prebuild` and restart the site.Generate a TradeProof
To call any function that requires a balance check or transfer, the user must provide their BalanceManager
as well as a TradeProof
. There are two ways to generate a trade proof, one used by the owner and another used by a TradeCap
owner.
packages/deepbook/sources/balance_manager.move
. You probably need to run `pnpm prebuild` and restart the site.Deposit funds
Only the owner can call this function to deposit funds into the BalanceManager
.
packages/deepbook/sources/balance_manager.move
. You probably need to run `pnpm prebuild` and restart the site.Withdraw funds
Only the owner can call this function to withdraw funds from the BalanceManager
.
packages/deepbook/sources/balance_manager.move
. You probably need to run `pnpm prebuild` and restart the site.Deposit funds using DepositCap
Only holders of a DepositCap
for the BalanceManager
can call this function to deposit funds into the BalanceManager
.
packages/deepbook/sources/balance_manager.move
. You probably need to run `pnpm prebuild` and restart the site.Withdraw funds using WithdrawCap
Only holders of a WithdrawCap
for the BalanceManager
can call this function to withdraw funds from the BalanceManager
.
packages/deepbook/sources/balance_manager.move
. You probably need to run `pnpm prebuild` and restart the site.Read endpoints
packages/deepbook/sources/balance_manager.move
. You probably need to run `pnpm prebuild` and restart the site.Related links
The DeepBookV3 repository on GitHub.