* Parse SPL Memo v3 (#14979)
* Parse memo v3 too
* tree
(cherry picked from commit 34dfcc9c6f
)
# Conflicts:
# Cargo.lock
* Fix version conflicts (inline v3 id)
Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
Co-authored-by: Tyera Eulberg <tyera@solana.com>
This commit is contained in:
@ -12,17 +12,25 @@ use std::{
|
|||||||
};
|
};
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|
||||||
|
// Inline to prevent version conflicts in v1.4 branch
|
||||||
|
mod spl_memo_v3_0 {
|
||||||
|
solana_sdk::declare_id!("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr");
|
||||||
|
}
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
static ref BPF_LOADER_PROGRAM_ID: Pubkey = solana_sdk::bpf_loader::id();
|
static ref BPF_LOADER_PROGRAM_ID: Pubkey = solana_sdk::bpf_loader::id();
|
||||||
static ref MEMO_PROGRAM_ID: Pubkey =
|
static ref MEMO_V1_PROGRAM_ID: Pubkey =
|
||||||
Pubkey::from_str(&spl_memo_v1_0::id().to_string()).unwrap();
|
Pubkey::from_str(&spl_memo_v1_0::id().to_string()).unwrap();
|
||||||
|
static ref MEMO_V3_PROGRAM_ID: Pubkey =
|
||||||
|
Pubkey::from_str(&spl_memo_v3_0::id().to_string()).unwrap();
|
||||||
static ref STAKE_PROGRAM_ID: Pubkey = solana_stake_program::id();
|
static ref STAKE_PROGRAM_ID: Pubkey = solana_stake_program::id();
|
||||||
static ref SYSTEM_PROGRAM_ID: Pubkey = system_program::id();
|
static ref SYSTEM_PROGRAM_ID: Pubkey = system_program::id();
|
||||||
static ref TOKEN_PROGRAM_ID: Pubkey = spl_token_id_v2_0();
|
static ref TOKEN_PROGRAM_ID: Pubkey = spl_token_id_v2_0();
|
||||||
static ref VOTE_PROGRAM_ID: Pubkey = solana_vote_program::id();
|
static ref VOTE_PROGRAM_ID: Pubkey = solana_vote_program::id();
|
||||||
static ref PARSABLE_PROGRAM_IDS: HashMap<Pubkey, ParsableProgram> = {
|
static ref PARSABLE_PROGRAM_IDS: HashMap<Pubkey, ParsableProgram> = {
|
||||||
let mut m = HashMap::new();
|
let mut m = HashMap::new();
|
||||||
m.insert(*MEMO_PROGRAM_ID, ParsableProgram::SplMemo);
|
m.insert(*MEMO_V1_PROGRAM_ID, ParsableProgram::SplMemo);
|
||||||
|
m.insert(*MEMO_V3_PROGRAM_ID, ParsableProgram::SplMemo);
|
||||||
m.insert(*TOKEN_PROGRAM_ID, ParsableProgram::SplToken);
|
m.insert(*TOKEN_PROGRAM_ID, ParsableProgram::SplToken);
|
||||||
m.insert(*BPF_LOADER_PROGRAM_ID, ParsableProgram::BpfLoader);
|
m.insert(*BPF_LOADER_PROGRAM_ID, ParsableProgram::BpfLoader);
|
||||||
m.insert(*STAKE_PROGRAM_ID, ParsableProgram::Stake);
|
m.insert(*STAKE_PROGRAM_ID, ParsableProgram::Stake);
|
||||||
@ -131,10 +139,18 @@ mod test {
|
|||||||
data: vec![240, 159, 166, 150],
|
data: vec![240, 159, 166, 150],
|
||||||
};
|
};
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
parse(&MEMO_PROGRAM_ID, &memo_instruction, &[]).unwrap(),
|
parse(&MEMO_V1_PROGRAM_ID, &memo_instruction, &[]).unwrap(),
|
||||||
ParsedInstruction {
|
ParsedInstruction {
|
||||||
program: "spl-memo".to_string(),
|
program: "spl-memo".to_string(),
|
||||||
program_id: MEMO_PROGRAM_ID.to_string(),
|
program_id: MEMO_V1_PROGRAM_ID.to_string(),
|
||||||
|
parsed: json!("🦖"),
|
||||||
|
}
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
parse(&MEMO_V3_PROGRAM_ID, &memo_instruction, &[]).unwrap(),
|
||||||
|
ParsedInstruction {
|
||||||
|
program: "spl-memo".to_string(),
|
||||||
|
program_id: MEMO_V3_PROGRAM_ID.to_string(),
|
||||||
parsed: json!("🦖"),
|
parsed: json!("🦖"),
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user