메인터이너 SDK
Maintainer SDK는 margin pool을 관리하고, interest rate를 구성하며, 어떤 DeepBook pool이 margin lending에 액세스할 수 있는지 제어하기 위한 administrative 함수를 제공한다. 이 함수들은 적절한 capability를 가진 maintainer로 제한된다.
maintainer function
DeepBook Margin SDK는 pool administration과 configuration을 위한 다음 함수를 제공한다.
createMarginPool
특정 asset에 대한 새 margin pool을 생성하려면 createMarginPool을 사용한다. maintainer capability가 필요하다. 이 호출은 Transaction object를 받는 함수를 반환한다.
매개변수
coinKey: asset 타입을 식별하는 String이다.poolConfig: protocol configuration을 나타내는TransactionArgument이다.
packages/deepbook-v3/src/transactions/marginMaintainer.ts. You probably need to run `pnpm prebuild` and restart the site.newProtocolConfig
margin pool setting과 interest parameter를 결합한 새 protocol configuration object를 생성하려면 newProtocolConfig를 사용한다. 이 호출은 Transaction object를 받는 함수를 반환한다.
매개변수
coinKey: asset 타입을 식별하는 String이다.marginPoolConfig: pool setting을 포함하는MarginPoolConfigParamsobject이다.interestConfig: interest rate parameter를 포함하는InterestConfigParamsobject이다.
packages/deepbook-v3/src/transactions/marginMaintainer.ts. You probably need to run `pnpm prebuild` and restart the site.newMarginPoolConfig
margin pool configuration object를 생성하려면 newMarginPoolConfig를 사용한다. 이 호출은 Transaction object를 받는 함수를 반환한다.
매개변수
coinKey: asset 타입을 식별하는 String이다.marginPoolConfig: 다음을 포함하는MarginPoolConfigParamsobject이다:supplyCap: 허용되는 최대 supply를 나타내는 Number이다maxUtilizationRate: 최대 utilization을 나타내는 Number이다(예: 80%는 0.8이다)referralSpread: protocol spread percentage를 나타내는 Number이다minBorrow: 최소 borrow amount를 나타내는 Number이다
packages/deepbook-v3/src/transactions/marginMaintainer.ts. You probably need to run `pnpm prebuild` and restart the site.newInterestConfig
interest configuration object를 생성하려면 newInterestConfig를 사용한다. 이 호출은 Transaction object를 받는 함수를 반환한다.
매개변수
interestConfig: 다음을 포함하는InterestConfigParamsobject이다:baseRate: base interest rate를 나타내는 Number이다baseSlope: kink 이전의 interest rate slope를 나타내는 Number이다optimalUtilization: kink point를 나타내는 Number이다(예: 0.8)excessSlope: kink 이후의 interest rate slope를 나타내는 Number이다
packages/deepbook-v3/src/transactions/marginMaintainer.ts. You probably need to run `pnpm prebuild` and restart the site.enableDeepbookPoolForLoan, disableDeepbookPoolForLoan
이 함수들을 사용해 어떤 DeepBook pool이 margin pool에서 차입할 수 있는지 제어한다. 이 호출은 Transaction object를 받는 함수를 반환한다.
매개변수
deepbookPoolKey: DeepBook pool을 식별하는 String이다.coinKey: margin pool asset을 식별하는 String이다.marginPoolCap: margin pool capability ID를 나타내는 String이다.
packages/deepbook-v3/src/transactions/marginMaintainer.ts. You probably need to run `pnpm prebuild` and restart the site.updateInterestParams
margin pool의 interest rate parameter를 업데이트하려면 updateInterestParams를 사용한다. 이 호출은 Transaction object를 받는 함수를 반환한다.
매개변수
coinKey: margin pool asset을 식별하는 String이다.marginPoolCap: margin pool capability ID를 나타내는 String이다.interestConfig: 새 interest parameter를 포함하는InterestConfigParamsobject이다.
packages/deepbook-v3/src/transactions/marginMaintainer.ts. You probably need to run `pnpm prebuild` and restart the site.updateMarginPoolConfig
margin pool의 configuration setting을 업데이트하려면 updateMarginPoolConfig를 사용한다. 이 호출은 Transaction object를 받는 함수를 반환한다.
매개변수
coinKey: margin pool asset을 식별하는 String이다.marginPoolCap: margin pool capability ID를 나타내는 String이다.marginPoolConfig: 새 pool setting을 포함하는MarginPoolConfigParamsobject이다.
packages/deepbook-v3/src/transactions/marginMaintainer.ts. You probably need to run `pnpm prebuild` and restart the site.withdrawMaintainerFees
margin pool에서 누적된 maintainer fee를 인출하려면 withdrawMaintainerFees를 사용한다. 이 호출은 Transaction object를 받는 함수를 반환한다.
매개변수
coinKey: margin pool asset을 식별하는 String이다.marginPoolCap: margin pool capability ID를 나타내는 String이다.
packages/deepbook-v3/src/transactions/marginMaintainer.ts. You probably need to run `pnpm prebuild` and restart the site.withdrawProtocolFees
margin pool에서 누적된 protocol fee를 인출하려면 withdrawProtocolFees를 사용한다. 이 호출은 Transaction object를 받는 함수를 반환한다.
매개변수
coinKey: margin pool asset을 식별하는 String이다.
packages/deepbook-v3/src/transactions/marginMaintainer.ts. You probably need to run `pnpm prebuild` and restart the site.adminWithdrawDefaultReferralFees
margin pool에서 default referral fee를 인출하려면 adminWithdrawDefaultReferralFees를 사용한다. 이 호출은 Transaction object를 받는 함수를 반환한다.
매개변수
coinKey: margin pool asset을 식별하는 String이다.
packages/deepbook-v3/src/transactions/marginMaintainer.ts. You probably need to run `pnpm prebuild` and restart the site.예시
다음 예시는 일반적인 maintainer operation을 시연한다.
margin pool 생성
// 예시: USDC margin pool을 생성한다
createUsdcMarginPool = (tx: Transaction) => {
const coinKey = 'USDC';
// pool configuration을 생성한다
const poolConfig = tx.add(
this.maintainerContract.newProtocolConfig(
coinKey,
{
supplyCap: 10_000_000, // USDC 10M 한도
maxUtilizationRate: 0.8, // 80%
referralSpread: 0.1, // protocol spread는 10%
minBorrow: 100, // 최소 USDC 100
},
{
baseRate: 0.02, // base rate는 2%
baseSlope: 0.1, // kink 이전 slope 10%
optimalUtilization: 0.8, // kink point는 80%
excessSlope: 1.0, // kink 이후 slope 100%
},
),
);
// pool을 생성한다
tx.add(this.maintainerContract.createMarginPool(coinKey, poolConfig));
};
borrowing용 DeepBook pool enable
// 예시: SUI/USDC pool이 USDC margin pool에서 차입하도록 허용한다
enablePoolForBorrowing = (tx: Transaction) => {
const deepbookPoolKey = 'SUI_DBUSDC';
const coinKey = 'USDC';
const marginPoolCapId = '0x...'; // margin pool cap의 ID
tx.add(
this.maintainerContract.enableDeepbookPoolForLoan(deepbookPoolKey, coinKey, marginPoolCapId),
);
};
interest rate parameter update
// 예시: USDC margin pool 금리를 업데이트한다
updateInterestRates = (tx: Transaction) => {
const coinKey = 'USDC';
const marginPoolCapId = '0x...';
tx.add(
this.maintainerContract.updateInterestParams(coinKey, marginPoolCapId, {
baseRate: 0.03, // base rate를 3%로 높인다
baseSlope: 0.12, // slope를 높인다
optimalUtilization: 0.75, // kink를 75%로 낮춘다
excessSlope: 1.5, // excess slope를 더 가파르게 한다
}),
);
};
margin pool configuration update
// 예시: USDC margin pool 한도를 업데이트한다
updatePoolConfig = (tx: Transaction) => {
const coinKey = 'USDC';
const marginPoolCapId = '0x...';
tx.add(
this.maintainerContract.updateMarginPoolConfig(coinKey, marginPoolCapId, {
supplyCap: 20_000_000, // USDC 20M으로 늘린다
maxUtilizationRate: 0.85, // utilization 85%를 허용한다
referralSpread: 0.12, // protocol spread를 늘린다
minBorrow: 50, // 최소값을 USDC 50으로 낮춘다
}),
);
};
pool setup workflow 완료
// 예시: 새 margin pool 설정 workflow를 완료한다
setupNewMarginPool = (tx: Transaction) => {
const coinKey = 'SUI';
// Step 1: protocol config를 생성한다
const poolConfig = tx.add(
this.maintainerContract.newProtocolConfig(
coinKey,
{
supplyCap: 1_000_000, // SUI 1M 한도
maxUtilizationRate: 0.75,
referralSpread: 0.1,
minBorrow: 10,
},
{
baseRate: 0.01,
baseSlope: 0.08,
optimalUtilization: 0.8,
excessSlope: 0.8,
},
),
);
// Step 2: margin pool을 생성한다
tx.add(this.maintainerContract.createMarginPool(coinKey, poolConfig));
// Step 3: 차입용으로 특정 DeepBook pools를 활성화한다
const marginPoolCapId = '0x...'; // pool 생성 event에서 가져온다
tx.add(this.maintainerContract.enableDeepbookPoolForLoan('SUI_DBUSDC', coinKey, marginPoolCapId));
tx.add(this.maintainerContract.enableDeepbookPoolForLoan('SUI_USDT', coinKey, marginPoolCapId));
};