diff --git a/programs/descro/src/instructions/resolve.rs b/programs/descro/src/instructions/resolve.rs index 5377acb..a9e196c 100644 --- a/programs/descro/src/instructions/resolve.rs +++ b/programs/descro/src/instructions/resolve.rs @@ -1,8 +1,9 @@ -use anchor_lang::prelude::*; -use anchor_lang::solana_program::{program::invoke_signed, system_instruction}; -use descro_ext_resolvers::state::Ruling; -use crate::state::{EscrowAccount, EscrowState, Winner}; use crate::error::EscrowError; +use crate::state::{EscrowAccount, EscrowState, Winner}; +use anchor_lang::solana_program::{program::invoke_signed, system_instruction}; +use anchor_lang::system_program::Transfer; +use anchor_lang::{prelude::*, system_program}; +use descro_ext_resolvers::state::Ruling; #[derive(Accounts)] pub struct Resolve<'info> { @@ -78,17 +79,16 @@ pub fn handler(ctx: Context, winner: Winner) -> Result<()> { let vault_bump = ctx.accounts.escrow_account.vault_bump; let vault_balance = ctx.accounts.vault.to_account_info().lamports(); - invoke_signed( - &system_instruction::transfer( - ctx.accounts.vault.to_account_info().key, - ctx.accounts.winner.to_account_info().key, - vault_balance, + system_program::transfer( + CpiContext::new_with_signer( + system_program::ID, + Transfer { + from: ctx.accounts.vault.to_account_info(), + to: ctx.accounts.winner.to_account_info(), + }, + &[&[b"vault", escrow_key.as_ref(), &[vault_bump]]], ), - &[ - ctx.accounts.vault.to_account_info(), - ctx.accounts.winner.to_account_info(), - ], - &[&[b"vault", escrow_key.as_ref(), &[vault_bump]]], + vault_balance, )?; // Update resolver stats if the entry is registered in the registry