본문으로 건너뛰기

BalanceManager SDK

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

Balance manager functions

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

Click to open
createAndShareBalanceManager

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

Click to open
createBalanceManagerWithOwner

custom owner로 새 balance manager를 생성하려면 createBalanceManagerWithOwner를 사용한다. manager object를 반환한다. 이 호출은 Transaction object를 받는 함수를 반환한다.

Parameters

  • ownerAddress: owner의 address를 나타내는 String이다.
Click to open
shareBalanceManager

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

Parameters

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

Deposit and withdraw functions

Click to open
depositIntoManager

balance manager에 fund를 deposit하려면 depositIntoManager를 사용한다. 이 호출은 Transaction object를 받는 함수를 반환한다.

Parameters

  • managerKey: balance manager를 식별하는 String이다.
  • coinKey: deposit할 coin을 식별하는 String이다.
  • amountToDeposit: deposit할 amount를 나타내는 Number이다.
Click to open
withdrawFromManager

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

Parameters

  • managerKey: balance manager를 식별하는 String이다.
  • coinKey: 인출할 coin을 식별하는 String이다.
  • amountToWithdraw: 인출할 amount를 나타내는 Number이다.
  • recipient: recipient address를 나타내는 String이다.
Click to open
withdrawAllFromManager

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

Parameters

  • managerKey: balance manager를 식별하는 String이다.
  • coinKey: 인출할 coin을 식별하는 String이다.
  • recipient: recipient address를 나타내는 String이다.
Click to open
checkManagerBalance

balance manager에서 특정 coin의 balance를 확인하려면 checkManagerBalance를 사용한다. 이 호출은 Transaction object를 받는 함수를 반환한다.

Parameters

  • managerKey: balance manager를 식별하는 String이다.
  • coinKey: 확인할 coin을 식별하는 String이다.

Trade proof functions

Click to open
generateProof

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

Parameters

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

balance manager의 owner로서 trade proof를 생성하려면 generateProofAsOwner를 사용한다. 이 호출은 Transaction object를 받는 함수를 반환한다.

Parameters

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

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

Parameters

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

Capability functions

Click to open
mintTradeCap

balance manager에 대한 tradeCap을 mint하려면 mintTradeCap을 사용한다. 이 호출은 Transaction object를 받는 함수를 반환한다.

Parameters

  • managerKey: balance manager를 식별하는 String이다.
Click to open
mintDepositCap

balance manager에 대한 depositCap을 mint하려면 mintDepositCap을 사용한다. 이 호출은 Transaction object를 받는 함수를 반환한다.

Parameters

  • managerKey: balance manager를 식별하는 String이다.
Click to open
mintWithdrawalCap

balance manager에 대한 withdrawCap을 mint하려면 mintWithdrawalCap을 사용한다. 이 호출은 Transaction object를 받는 함수를 반환한다.

Parameters

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

depositCap을 사용해 balance manager에 fund를 deposit하려면 depositWithCap을 사용한다. 이 호출은 Transaction object를 받는 함수를 반환한다.

Parameters

  • managerKey: balance manager를 식별하는 String이다.
  • coinKey: deposit할 coin을 식별하는 String이다.
  • amountToDeposit: deposit할 amount를 나타내는 Number이다.
Click to open
withdrawWithCap

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

Parameters

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

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

Parameters

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

Referral functions

Click to open
setBalanceManagerReferral

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

Parameters

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

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

Parameters

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

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

Parameters

  • managerKey: balance manager를 식별하는 String이다.
  • poolKey: pool을 식별하는 String이다.

Registry functions

Click to open
registerBalanceManager

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

Parameters

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

Read-only functions

Click to open
owner

balance manager의 owner address를 가져오려면 owner를 사용한다. 이 호출은 Transaction object를 받는 함수를 반환한다.

Parameters

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

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

Parameters

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

pool referral(DeepBookPoolReferral)의 owner address를 가져오려면 balanceManagerReferralOwner를 사용한다. 이 호출은 Transaction object를 받는 함수를 반환한다.

Parameters

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

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

Parameters

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

Examples

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

Create and share a balance manager

// 예시: 새 balance manager를 생성하고 share한다
createBalanceManager = (tx: Transaction) => {
tx.add(this.balanceManager.createAndShareBalanceManager());
};

Create a balance manager with custom owner

// 예시: custom owner로 balance manager를 생성하고 share한다
createManagerWithOwner = (tx: Transaction) => {
const ownerAddress = '0x123...';

// custom owner로 manager를 생성한다
const manager = tx.add(this.balanceManager.createBalanceManagerWithOwner(ownerAddress));

// manager를 share한다
tx.add(this.balanceManager.shareBalanceManager(manager));
};

Deposit and withdraw funds

// 예시: balance manager에 USDC를 예치한다
depositFunds = (tx: Transaction) => {
const managerKey = 'MANAGER_1';
const coinKey = 'DBUSDC';
const amount = 1000; // 금액은 USDC 1000이다

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

// 예시: balance manager에서 SUI를 출금한다
withdrawFunds = (tx: Transaction) => {
const managerKey = 'MANAGER_1';
const coinKey = 'SUI';
const amount = 100; // 금액은 SUI 100이다
const recipient = '0x456...';

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

// 예시: balance manager에서 DEEP 전부를 출금한다
withdrawAllDeep = (tx: Transaction) => {
const managerKey = 'MANAGER_1';
const coinKey = 'DEEP';
const recipient = '0x456...';

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

Mint and use capabilities

// 예시: TradeCap을 mint하고 사용한다
mintAndUseTradeCap = async (tx: Transaction) => {
const managerKey = 'MANAGER_1';

// TradeCap을 mint한다
const tradeCap = tx.add(this.balanceManager.mintTradeCap(managerKey));

// trader에게 전송한다
const traderAddress = '0x789...';
tx.transferObjects([tradeCap], traderAddress);
};

// 예시: DepositCap을 사용해 자금을 예치한다
depositWithCapability = (tx: Transaction) => {
const managerKey = 'MANAGER_1';
const coinKey = 'DBUSDC';
const amount = 5000; // 금액은 USDC 5000이다

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

// 예시: WithdrawCap을 사용해 자금을 출금한다
withdrawWithCapability = (tx: Transaction) => {
const managerKey = 'MANAGER_1';
const coinKey = 'SUI';
const amount = 50; // 금액은 SUI 50이다

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

// 출금한 coin을 전송한다
tx.transferObjects([withdrawnCoin], '0xabc...');
};

Generate trade proofs

// 예시: trade proof를 생성하고 이를 사용해 order를 넣는다
placeOrderWithProof = (tx: Transaction) => {
const managerKey = 'MANAGER_1';
const poolKey = 'SUI_DBUSDC';

// proof를 자동으로 생성한다(owner 또는 tradeCap method 사용)
const proof = tx.add(this.balanceManager.generateProof(managerKey));

// proof를 사용해 order를 넣는다
tx.add(
this.deepBook.placeLimitOrder({
poolKey: poolKey,
balanceManagerKey: managerKey,
clientOrderId: '12345',
price: 2.5,
quantity: 100,
isBid: true,
payWithDeep: true,
}),
);
};

Set and manage referrals

// 예시: balance manager에 pool-specific referral을 설정한다
setManagerReferral = (tx: Transaction) => {
const managerKey = 'MANAGER_1';
const referralId = '0xdef...'; // DeepBookPoolReferral의 ID

// TradeCap을 가져오거나 생성한다
const tradeCap = tx.object('0x...'); // tradeCap이 이미 mint되었다고 가정한다

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

// 예시: 특정 pool에 대한 referral 설정을 해제한다
unsetManagerReferral = (tx: Transaction) => {
const managerKey = 'MANAGER_1';
const poolKey = 'SUI_DBUSDC';
const tradeCap = tx.object('0x...');

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

Complete workflow

// 예시: balance manager 설정 workflow를 완료한다
completeSetup = async (tx: Transaction) => {
const ownerAddress = '0x123...';

// Step 1: custom owner로 manager를 생성한다
const manager = tx.add(this.balanceManager.createBalanceManagerWithOwner(ownerAddress));

// Step 2: manager를 share한다
tx.add(this.balanceManager.shareBalanceManager(manager));

// Step 3: capabilities를 mint한다
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: capabilities를 owner에게 전송한다
tx.transferObjects([depositCap, withdrawCap, tradeCap], ownerAddress);
};