From b005624a6e1d4bcd103edafdb401aec273cabc3a Mon Sep 17 00:00:00 2001 From: Guillermo Bescos Date: Fri, 23 May 2025 16:04:59 +0100 Subject: [PATCH] fix: check account belong to governance and account is active --- .../xc_admin/packages/xc_admin_cli/src/index.ts | 1 + .../SolanaStakingMultisigInstruction.ts | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/governance/xc_admin/packages/xc_admin_cli/src/index.ts b/governance/xc_admin/packages/xc_admin_cli/src/index.ts index 4352949b34..e5352902d9 100644 --- a/governance/xc_admin/packages/xc_admin_cli/src/index.ts +++ b/governance/xc_admin/packages/xc_admin_cli/src/index.ts @@ -414,6 +414,7 @@ multisigCommand( voteAccounts.map((voteAccount: PublicKey) => fetchStakeAccounts( new Connection(getPythClusterApiUrl(cluster)), + authorizedPubkey, voteAccount, ), ), diff --git a/governance/xc_admin/packages/xc_admin_common/src/multisig_transaction/SolanaStakingMultisigInstruction.ts b/governance/xc_admin/packages/xc_admin_common/src/multisig_transaction/SolanaStakingMultisigInstruction.ts index d165c85fe9..eaa3b48ad5 100644 --- a/governance/xc_admin/packages/xc_admin_common/src/multisig_transaction/SolanaStakingMultisigInstruction.ts +++ b/governance/xc_admin/packages/xc_admin_common/src/multisig_transaction/SolanaStakingMultisigInstruction.ts @@ -124,6 +124,7 @@ export class SolanaStakingMultisigInstruction implements MultisigInstruction { export async function fetchStakeAccounts( connection: Connection, + staker: PublicKey, voterAccount: PublicKey, ) { const stakeAccounts = await connection.getProgramAccounts( @@ -137,12 +138,24 @@ export async function fetchStakeAccounts( bytes: bs58.encode(Buffer.from([2, 0, 0, 0])), }, }, + { + memcmp: { + offset: 12, + bytes: staker.toBase58(), + }, + }, { memcmp: { offset: 124, bytes: voterAccount.toBase58(), }, }, + { + memcmp: { + offset: 172, + bytes: bs58.encode(Buffer.from("ff".repeat(8), "hex")), // account is active + }, + }, ], }, );