memo.rs 767 B

12345678910111213141516171819202122232425262728293031323334
  1. use anchor_lang::solana_program::pubkey::Pubkey;
  2. use anchor_lang::Result;
  3. use anchor_lang::{context::CpiContext, Accounts};
  4. pub use spl_memo;
  5. pub use spl_memo::ID;
  6. pub fn build_memo<'info>(ctx: CpiContext<'_, '_, '_, 'info, BuildMemo>, memo: &[u8]) -> Result<()> {
  7. let ix = spl_memo::build_memo(
  8. memo,
  9. &ctx.remaining_accounts
  10. .iter()
  11. .map(|account| account.key)
  12. .collect::<Vec<_>>(),
  13. );
  14. anchor_lang::solana_program::program::invoke_signed(
  15. &ix,
  16. &ctx.remaining_accounts,
  17. ctx.signer_seeds,
  18. )
  19. .map_err(Into::into)
  20. }
  21. #[derive(Accounts)]
  22. pub struct BuildMemo {}
  23. #[derive(Clone)]
  24. pub struct Memo;
  25. impl anchor_lang::Id for Memo {
  26. fn id() -> Pubkey {
  27. ID
  28. }
  29. }