123456789101112131415161718192021222324252627282930313233343536 |
- use solana_program::{
- account_info::{next_account_info, AccountInfo},
- entrypoint::ProgramResult,
- program::invoke,
- pubkey::Pubkey,
- system_instruction,
- };
- pub fn transfer_sol_with_cpi(accounts: &[AccountInfo], amount: u64) -> ProgramResult {
- let accounts_iter = &mut accounts.iter();
- let payer = next_account_info(accounts_iter)?;
- let recipient = next_account_info(accounts_iter)?;
- let system_program = next_account_info(accounts_iter)?;
- invoke(
- &system_instruction::transfer(payer.key, recipient.key, amount),
- &[payer.clone(), recipient.clone(), system_program.clone()],
- )?;
- Ok(())
- }
- pub fn transfer_sol_with_program(
- _program_id: &Pubkey,
- accounts: &[AccountInfo],
- amount: u64,
- ) -> ProgramResult {
- let accounts_iter = &mut accounts.iter();
- let payer = next_account_info(accounts_iter)?;
- let recipient = next_account_info(accounts_iter)?;
- **payer.try_borrow_mut_lamports()? -= amount;
- **recipient.try_borrow_mut_lamports()? += amount;
- Ok(())
- }
|