본문으로 건너뛰기

BalanceManager SDK

BalanceManager는 모든 자산 잔액을 보관하는 DeepBookV3의 핵심 구성 요소이다. SDK는 BalanceManager를 생성, 관리, 그리고 상호작용하기 위한 포괄적인 함수를 제공한다.

BalanceManager 함수​

DeepBookV3 SDK는 BalanceManager를 관리하기 위한 다음 함수를 제공한다.

Click to open
createAndShareBalanceManager

새 BalanceManager를 생성하고 자동으로 공유하려면 createAndShareBalanceManager를 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

Click to open
createBalanceManagerWithOwner

custom 소유자로 새 BalanceManager를 생성하려면 createBalanceManagerWithOwner를 사용한다. manager 객체를 반환한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • ownerAddress: 소유자의 주소를 나타내는 String이다.
Click to open
shareBalanceManager

생성되었지만 아직 공유되지 않은 BalanceManager를 공유하려면 shareBalanceManager를 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • manager: 공유할 BalanceManager를 나타내는 TransactionArgument이다.

예치 및 인출 함수​

Click to open
depositIntoManager

BalanceManager에 fund를 예치하려면 depositIntoManager를 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerKey: BalanceManager를 식별하는 String이다.
  • coinKey: 예치할 코인을 식별하는 String이다.
  • amountToDeposit: 예치할 amount를 나타내는 Number이다.
Click to open
withdrawFromManager

BalanceManager에서 fund를 인출하려면 withdrawFromManager를 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerKey: BalanceManager를 식별하는 String이다.
  • coinKey: 인출할 코인을 식별하는 String이다.
  • amountToWithdraw: 인출할 amount를 나타내는 Number이다.
  • recipient: recipient 주소를 나타내는 String이다.
Click to open
withdrawAllFromManager

BalanceManager에서 특정 코인 타입의 모든 fund를 인출하려면 withdrawAllFromManager를 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerKey: BalanceManager를 식별하는 String이다.
  • coinKey: 인출할 코인을 식별하는 String이다.
  • recipient: recipient 주소를 나타내는 String이다.
Click to open
checkManagerBalance

BalanceManager에서 특정 코인의 잔액을 확인하려면 checkManagerBalance를 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerKey: BalanceManager를 식별하는 String이다.
  • coinKey: 확인할 코인을 식별하는 String이다.

Trade proof 함수​

Click to open
generateProof

BalanceManager에 대한 trade proof를 생성하려면 generateProof를 사용한다. tradeCap 설정 여부에 따라 적절한 함수를 자동으로 호출한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerKey: BalanceManager를 식별하는 String이다.
Click to open
generateProofAsOwner

BalanceManager의 소유자로서 trade proof를 생성하려면 generateProofAsOwner를 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerId: BalanceManager의 ID를 나타내는 String이다.
Click to open
generateProofAsTrader

generateProofAsTrader을 사용하여 trade proof를 생성하려면 tradeCap를 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerId: BalanceManager의 ID를 나타내는 String이다.
  • tradeCapId: trade cap의 ID를 나타내는 String이다.

Capability 함수​

Click to open
민트TradeCap

BalanceManager에 대한 mintTradeCap을 민트하려면 tradeCap을 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerKey: BalanceManager를 식별하는 String이다.
Click to open
민트DepositCap

BalanceManager에 대한 mintDepositCap을 민트하려면 depositCap을 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerKey: BalanceManager를 식별하는 String이다.
Click to open
민트WithdrawalCap

BalanceManager에 대한 mintWithdrawalCap을 민트하려면 withdrawCap을 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerKey: BalanceManager를 식별하는 String이다.
Click to open
depositWithCap

depositWithCap을 사용해 BalanceManager에 fund를 예치하려면 depositCap을 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerKey: BalanceManager를 식별하는 String이다.
  • coinKey: 예치할 코인을 식별하는 String이다.
  • amountToDeposit: 예치할 amount를 나타내는 Number이다.
Click to open
withdrawWithCap

withdrawWithCap을 사용해 BalanceManager에서 fund를 인출하려면 withdrawCap을 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerKey: BalanceManager를 식별하는 String이다.
  • coinKey: 인출할 코인을 식별하는 String이다.
  • amountToWithdraw: 인출할 amount를 나타내는 Number이다.
Click to open
revokeTradeCap

revokeTradeCap을 revoke하려면 TradeCap을 사용한다. 이는 연관된 DepositCap과 WithdrawCap도 revoke한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerKey: BalanceManager를 식별하는 String이다.
  • tradeCapId: revoke할 TradeCap의 ID를 나타내는 String이다.

referral 함수​

Click to open
setBalanceManagerReferral

BalanceManager에 대해 풀-specific referral을 설정하려면 setBalanceManagerReferral을 사용한다. permission checking을 위해 tradeCap이 필요하다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerKey: BalanceManager를 식별하는 String이다.
  • referral: referral ID(DeepBookPoolReferral)를 나타내는 String이다.
  • tradeCap: permission을 위한 trade cap을 나타내는 TransactionArgument이다.
Click to open
unsetBalanceManagerReferral

특정 풀에 대해 BalanceManager에서 referral을 제거하려면 unsetBalanceManagerReferral을 사용한다. permission checking을 위해 tradeCap이 필요하다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerKey: BalanceManager를 식별하는 String이다.
  • poolKey: referral을 해제할 풀을 식별하는 String이다.
  • tradeCap: permission을 위한 trade cap을 나타내는 TransactionArgument이다.
Click to open
getBalanceManagerReferralId

특정 풀에 대해 BalanceManager와 연관된 referral ID를 가져오려면 getBalanceManagerReferralId를 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerKey: BalanceManager를 식별하는 String이다.
  • poolKey: 풀을 식별하는 String이다.

Registry 함수​

Click to open
registerBalanceManager

registry에 BalanceManager를 등록하려면 registerBalanceManager를 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerKey: BalanceManager를 식별하는 String이다.

read-only 함수​

Click to open
소유자

BalanceManager의 소유자 주소를 가져오려면 owner를 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerKey: BalanceManager를 식별하는 String이다.
Click to open
id

BalanceManager의 ID를 가져오려면 id를 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • managerKey: BalanceManager를 식별하는 String이다.
Click to open
balanceManagerReferralOwner

풀 referral(DeepBookPoolReferral)의 소유자 주소를 가져오려면 balanceManagerReferralOwner를 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • referralId: referral ID를 나타내는 String이다.
Click to open
balanceManagerReferralPoolId

풀 referral(DeepBookPoolReferral)과 연관된 풀 ID를 가져오려면 balanceManagerReferralPoolId를 사용한다. 이 호출은 Transaction 객체를 받는 함수를 반환한다.

매개변수

  • referralId: referral의 ID를 나타내는 String이다.

예시​

다음 예시는 일반적인 BalanceManager operation을 시연한다.

BalanceManager 생성 및 share​

// Example: Create and share a new balance manager
createBalanceManager = (tx: Transaction) => {
tx.add(this.balanceManager.createAndShareBalanceManager());
};

custom 소유자로 BalanceManager 생성​

// Example: Create a balance manager with custom owner and share it
createManagerWithOwner = (tx: Transaction) => {
const ownerAddress = '0x123...';

// Create the manager with custom owner
const manager = tx.add(this.balanceManager.createBalanceManagerWithOwner(ownerAddress));

// Share the manager
tx.add(this.balanceManager.shareBalanceManager(manager));
};

fund 예치 및 출금​

// Example: Deposit USDC into a balance manager
depositFunds = (tx: Transaction) => {
const managerKey = 'MANAGER_1';
const coinKey = 'DBUSDC';
const amount = 1000; // 1000 USDC

tx.add(this.balanceManager.depositIntoManager(managerKey, coinKey, amount));
};

// Example: Withdraw SUI from a balance manager
withdrawFunds = (tx: Transaction) => {
const managerKey = 'MANAGER_1';
const coinKey = 'SUI';
const amount = 100; // 100 SUI
const recipient = '0x456...';

tx.add(this.balanceManager.withdrawFromManager(managerKey, coinKey, amount, recipient));
};

// Example: Withdraw all DEEP from a balance manager
withdrawAllDeep = (tx: Transaction) => {
const managerKey = 'MANAGER_1';
const coinKey = 'DEEP';
const recipient = '0x456...';

tx.add(this.balanceManager.withdrawAllFromManager(managerKey, coinKey, recipient));
};

capability 민트 및 사용​

// Example: Mint a TradeCap and use it
mintAndUseTradeCap = async (tx: Transaction) => {
const managerKey = 'MANAGER_1';

// Mint the TradeCap
const tradeCap = tx.add(this.balanceManager.mintTradeCap(managerKey));

// Transfer to a trader
const traderAddress = '0x789...';
tx.transferObjects([tradeCap], traderAddress);
};

// Example: Use DepositCap to deposit funds
depositWithCapability = (tx: Transaction) => {
const managerKey = 'MANAGER_1';
const coinKey = 'DBUSDC';
const amount = 5000; // 5000 USDC

tx.add(this.balanceManager.depositWithCap(managerKey, coinKey, amount));
};

// Example: Use WithdrawCap to withdraw funds
withdrawWithCapability = (tx: Transaction) => {
const managerKey = 'MANAGER_1';
const coinKey = 'SUI';
const amount = 50; // 50 SUI

const withdrawnCoin = tx.add(this.balanceManager.withdrawWithCap(managerKey, coinKey, amount));

// Transfer the withdrawn coin
tx.transferObjects([withdrawnCoin], '0xabc...');
};

trade proof 생성​

// Example: Generate a trade proof and use it to place an order
placeOrderWithProof = (tx: Transaction) => {
const managerKey = 'MANAGER_1';
const poolKey = 'SUI_DBUSDC';

// Generate proof automatically (uses owner or tradeCap method)
const proof = tx.add(this.balanceManager.generateProof(managerKey));

// Use the proof to place an order
tx.add(
this.deepBook.placeLimitOrder({
poolKey: poolKey,
balanceManagerKey: managerKey,
clientOrderId: '12345',
price: 2.5,
quantity: 100,
isBid: true,
payWithDeep: true,
}),
);
};

referral 설정 및 관리​

// Example: Set a pool-specific referral for a balance manager
setManagerReferral = (tx: Transaction) => {
const managerKey = 'MANAGER_1';
const referralId = '0xdef...'; // DeepBookPoolReferral ID

// Get or create the TradeCap
const tradeCap = tx.object('0x...'); // Assuming tradeCap is already minted

tx.add(this.balanceManager.setBalanceManagerReferral(managerKey, referralId, tradeCap));
};

// Example: Unset a referral for a specific pool
unsetManagerReferral = (tx: Transaction) => {
const managerKey = 'MANAGER_1';
const poolKey = 'SUI_DBUSDC';
const tradeCap = tx.object('0x...');

tx.add(this.balanceManager.unsetBalanceManagerReferral(managerKey, poolKey, tradeCap));
};

workflow 완료​

// Example: Complete balance manager setup workflow
completeSetup = async (tx: Transaction) => {
const ownerAddress = '0x123...';

// Step 1: Create manager with custom owner
const manager = tx.add(this.balanceManager.createBalanceManagerWithOwner(ownerAddress));

// Step 2: Share the manager
tx.add(this.balanceManager.shareBalanceManager(manager));

// Step 3: Mint capabilities
const tradeCap = tx.add(this.balanceManager.mintTradeCap('MANAGER_1'));
const depositCap = tx.add(this.balanceManager.mintDepositCap('MANAGER_1'));
const withdrawCap = tx.add(this.balanceManager.mintWithdrawalCap('MANAGER_1'));

// Step 4: Transfer capabilities to owner
tx.transferObjects([depositCap, withdrawCap, tradeCap], ownerAddress);
};