From b3ec7095ce706cebce8db2a2e76010a605de72b3 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Fri, 20 Oct 2023 13:49:39 +0200 Subject: [PATCH] gov ix: idl set-authority instruction --- ts/client/scripts/create-gov-ix.ts | 231 ++++++++++++++++------------- 1 file changed, 131 insertions(+), 100 deletions(-) diff --git a/ts/client/scripts/create-gov-ix.ts b/ts/client/scripts/create-gov-ix.ts index 64b8ea7d7..2f9d87eeb 100644 --- a/ts/client/scripts/create-gov-ix.ts +++ b/ts/client/scripts/create-gov-ix.ts @@ -64,112 +64,112 @@ async function buildClient(): Promise { ); } -async function tokenRegister(): Promise { - const client = await buildClient(); +// async function tokenRegister(): Promise { +// 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 { - const client = await buildClient(); +// async function tokenEdit(): Promise { +// 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 { const client = await buildClient(); @@ -412,6 +412,36 @@ async function idlResize(): Promise { console.log(await serializeInstructionToBase64(ix)); } +async function idlSetAuthority(): Promise { + // 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 { try { // await tokenRegister(); @@ -421,7 +451,8 @@ async function main(): Promise { // await serum3Register(); // await ixDisable(); // await createMangoAccount(); - await idlResize(); + // await idlResize(); + await idlSetAuthority(); } catch (error) { console.log(error); }