1#![deny(missing_docs)]
2
3mod entrypoint;
7pub mod processor;
8
9pub use solana_program;
11use solana_program::{
12 instruction::{AccountMeta, Instruction},
13 pubkey::Pubkey,
14};
15
16pub mod v1 {
18 solana_program::declare_id!("MEMDqRW2fYAU19mcFnoDVoqG4Br4t7TdyWjjv38P6Nc");
19}
20
21solana_program::declare_id!("MEMWKbqsjEB8o972BvDHExZFSauzGZKvB4xHDVPFowh");
22
23pub fn build_memo(memo: &[u8], signer_pubkeys: &[&Pubkey]) -> Instruction {
31 Instruction {
32 program_id: id(),
33 accounts: signer_pubkeys
34 .iter()
35 .map(|&pubkey| AccountMeta::new_readonly(*pubkey, true))
36 .collect(),
37 data: memo.to_vec(),
38 }
39}
40
41#[cfg(test)]
42mod tests {
43 use super::*;
44
45 #[test]
46 fn test_build_memo() {
47 let signer_pubkey = Pubkey::new_unique();
48 let memo = "🐆".as_bytes();
49 let instruction = build_memo(memo, &[&signer_pubkey]);
50 assert_eq!(memo, instruction.data);
51 assert_eq!(instruction.accounts.len(), 1);
52 assert_eq!(instruction.accounts[0].pubkey, signer_pubkey);
53 }
54}