gov ix: idl set-authority instruction

This commit is contained in:
Christian Kamm 2023-10-20 13:49:39 +02:00
parent 33bc278a2c
commit b3ec7095ce
1 changed files with 131 additions and 100 deletions

View File

@ -64,112 +64,112 @@ async function buildClient(): Promise<MangoClient> {
);
}
async function tokenRegister(): Promise<void> {
const client = await buildClient();
// async function tokenRegister(): Promise<void> {
// const client = await buildClient();
const group = await client.getGroup(new PublicKey(GROUP_PK));
// const group = await client.getGroup(new PublicKey(GROUP_PK));
const ix = await client.program.methods
.tokenRegister(
8 as TokenIndex,
'wBTC (Portal)',
defaultOracleConfig,
defaultInterestRate,
bpsToDecimal(50),
bpsToDecimal(5),
0.9,
0.8,
1.1,
1.2,
percentageToDecimal(5),
60 * 60,
0.06,
0.0003,
percentageToDecimal(20),
new BN(24 * 60 * 60),
new BN(toNative(50000, 6).toNumber()),
5_000_000_000,
5_000_000_000,
0,
0.0005,
0.0005,
0.0005,
)
.accounts({
group: group.publicKey,
admin: group.admin,
mint: new PublicKey('3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh'),
oracle: new PublicKey('GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU'),
payer: (client.program.provider as AnchorProvider).wallet.publicKey,
rent: SYSVAR_RENT_PUBKEY,
})
.instruction();
// const ix = await client.program.methods
// .tokenRegister(
// 8 as TokenIndex,
// 'wBTC (Portal)',
// defaultOracleConfig,
// defaultInterestRate,
// bpsToDecimal(50),
// bpsToDecimal(5),
// 0.9,
// 0.8,
// 1.1,
// 1.2,
// percentageToDecimal(5),
// 60 * 60,
// 0.06,
// 0.0003,
// percentageToDecimal(20),
// new BN(24 * 60 * 60),
// new BN(toNative(50000, 6).toNumber()),
// 5_000_000_000,
// 5_000_000_000,
// 0,
// 0.0005,
// 0.0005,
// 0.0005,
// )
// .accounts({
// group: group.publicKey,
// admin: group.admin,
// mint: new PublicKey('3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh'),
// oracle: new PublicKey('GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU'),
// payer: (client.program.provider as AnchorProvider).wallet.publicKey,
// rent: SYSVAR_RENT_PUBKEY,
// })
// .instruction();
// const coder = new BorshCoder(IDL);
// console.log(coder.instruction.decode(ix.data));
// // const coder = new BorshCoder(IDL);
// // console.log(coder.instruction.decode(ix.data));
console.log(await serializeInstructionToBase64(ix));
}
// console.log(await serializeInstructionToBase64(ix));
// }
async function tokenEdit(): Promise<void> {
const client = await buildClient();
// async function tokenEdit(): Promise<void> {
// const client = await buildClient();
const group = await client.getGroup(new PublicKey(GROUP_PK));
// const group = await client.getGroup(new PublicKey(GROUP_PK));
const params = Builder(NullTokenEditParams)
.borrowWeightScaleStartQuote(new BN(toNative(100000, 6)).toNumber())
.depositWeightScaleStartQuote(new BN(toNative(100000, 6)).toNumber())
.build();
const ix = await client.program.methods
.tokenEdit(
params.oracle,
params.oracleConfig,
params.groupInsuranceFund,
params.interestRateParams,
params.loanFeeRate,
params.loanOriginationFeeRate,
params.maintAssetWeight,
params.initAssetWeight,
params.maintLiabWeight,
params.initLiabWeight,
params.liquidationFee,
params.stablePriceDelayIntervalSeconds,
params.stablePriceDelayGrowthLimit,
params.stablePriceGrowthLimit,
params.minVaultToDepositsRatio,
params.netBorrowLimitPerWindowQuote !== null
? new BN(params.netBorrowLimitPerWindowQuote)
: null,
params.netBorrowLimitWindowSizeTs !== null
? new BN(params.netBorrowLimitWindowSizeTs)
: null,
params.borrowWeightScaleStartQuote,
params.depositWeightScaleStartQuote,
params.resetStablePrice ?? false,
params.resetNetBorrowLimit ?? false,
params.reduceOnly,
params.name,
params.forceClose,
params.tokenConditionalSwapTakerFeeRate,
params.tokenConditionalSwapMakerFeeRate,
params.flashLoanSwapFeeRate,
)
.accounts({
group: group.publicKey,
oracle: new PublicKey('GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU'),
admin: group.admin,
mintInfo: new PublicKey('59rgC1pa45EziDPyFgJgE7gbv7Dd7VaGmd2D93i1dtFk'),
})
.remainingAccounts([
{
pubkey: new PublicKey('8gabXzwdPn5TvtuQvysh3CxVbjfNY3TZd5XEG5qnueUm'),
isWritable: true,
isSigner: false,
} as AccountMeta,
])
.instruction();
console.log(serializeInstructionToBase64(ix));
}
// const params = Builder(NullTokenEditParams)
// .borrowWeightScaleStartQuote(new BN(toNative(100000, 6)).toNumber())
// .depositWeightScaleStartQuote(new BN(toNative(100000, 6)).toNumber())
// .build();
// const ix = await client.program.methods
// .tokenEdit(
// params.oracle,
// params.oracleConfig,
// params.groupInsuranceFund,
// params.interestRateParams,
// params.loanFeeRate,
// params.loanOriginationFeeRate,
// params.maintAssetWeight,
// params.initAssetWeight,
// params.maintLiabWeight,
// params.initLiabWeight,
// params.liquidationFee,
// params.stablePriceDelayIntervalSeconds,
// params.stablePriceDelayGrowthLimit,
// params.stablePriceGrowthLimit,
// params.minVaultToDepositsRatio,
// params.netBorrowLimitPerWindowQuote !== null
// ? new BN(params.netBorrowLimitPerWindowQuote)
// : null,
// params.netBorrowLimitWindowSizeTs !== null
// ? new BN(params.netBorrowLimitWindowSizeTs)
// : null,
// params.borrowWeightScaleStartQuote,
// params.depositWeightScaleStartQuote,
// params.resetStablePrice ?? false,
// params.resetNetBorrowLimit ?? false,
// params.reduceOnly,
// params.name,
// params.forceClose,
// params.tokenConditionalSwapTakerFeeRate,
// params.tokenConditionalSwapMakerFeeRate,
// params.flashLoanSwapFeeRate,
// )
// .accounts({
// group: group.publicKey,
// oracle: new PublicKey('GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU'),
// admin: group.admin,
// mintInfo: new PublicKey('59rgC1pa45EziDPyFgJgE7gbv7Dd7VaGmd2D93i1dtFk'),
// })
// .remainingAccounts([
// {
// pubkey: new PublicKey('8gabXzwdPn5TvtuQvysh3CxVbjfNY3TZd5XEG5qnueUm'),
// isWritable: true,
// isSigner: false,
// } as AccountMeta,
// ])
// .instruction();
// console.log(serializeInstructionToBase64(ix));
// }
async function serum3Register(): Promise<void> {
const client = await buildClient();
@ -412,6 +412,36 @@ async function idlResize(): Promise<void> {
console.log(await serializeInstructionToBase64(ix));
}
async function idlSetAuthority(): Promise<void> {
// anchor constant for all idl-specific instructions
const idlIxBytes = [0x40, 0xf4, 0xbc, 0x78, 0xa7, 0xe9, 0x69, 0x0a];
const idlIxNum = 4; // setAuthority
const newAuthority = new PublicKey(
'8SSLjXBEVk9nesbhi9UMCA32uijbVBUqWoKPPQPTekzt',
);
const ix = new TransactionInstruction({
keys: [
{
pubkey: new PublicKey('3foqXduY5PabCn6LjNrLo3waNf3Hy6vQgqavoVUCsUN9'), // idl account
isSigner: false,
isWritable: true,
},
{
pubkey: new PublicKey('FP4PxqHTVzeG2c6eZd7974F9WvKUSdBeduUK3rjYyvBw'), // authority
isSigner: true,
isWritable: true,
},
],
programId: MANGO_V4_ID['mainnet-beta'],
data: Buffer.concat([
Buffer.from(idlIxBytes.concat([idlIxNum])),
newAuthority.toBuffer(),
]),
});
console.log(await serializeInstructionToBase64(ix));
}
async function main(): Promise<void> {
try {
// await tokenRegister();
@ -421,7 +451,8 @@ async function main(): Promise<void> {
// await serum3Register();
// await ixDisable();
// await createMangoAccount();
await idlResize();
// await idlResize();
await idlSetAuthority();
} catch (error) {
console.log(error);
}