본문으로 건너뛰기

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을 사용한다. 이는 연관된 DepositCapWithdrawCap도 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);
};