From 34dfcc9c6f72738f08f80199823058bcdae35966 Mon Sep 17 00:00:00 2001 From: Tyera Eulberg Date: Mon, 1 Feb 2021 21:02:57 -0700 Subject: [PATCH] Parse SPL Memo v3 (#14979) * Parse memo v3 too * tree --- Cargo.lock | 56 ++++++++++++--------- programs/bpf/Cargo.lock | 12 ++++- transaction-status/Cargo.toml | 1 + transaction-status/src/parse_instruction.rs | 19 +++++-- 4 files changed, 60 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ae9a7b2b18..fb9ee5a65a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4250,9 +4250,9 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "1.4.17" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fd05ea1ac578b63449a1a89b62b5f00059dc438f7c143b4dcaf2eec1341e555" +checksum = "0d0c1cf7dafbcf4e1e0a56b7b28848bdf41a5e3065e9763d3aae892027109956" dependencies = [ "bs58", "bv", @@ -4262,9 +4262,9 @@ dependencies = [ "rustc_version", "serde", "serde_derive", - "sha2 0.8.2", - "solana-frozen-abi-macro 1.4.17", - "solana-logger 1.4.17", + "sha2 0.9.2", + "solana-frozen-abi-macro 1.5.5", + "solana-logger 1.5.5", "thiserror", ] @@ -4288,9 +4288,9 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.4.17" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19f67844548a975ef56f712bb8840afcf19e94037b3341174d6edadb7e578351" +checksum = "cb44325468e78e9e4535c90c656c36c953b42cd34ed4999d39f1d33b8780a545" dependencies = [ "lazy_static", "proc-macro2 1.0.24", @@ -4532,11 +4532,11 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.4.17" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b97055ab14e7c1f67a3141b066ada44e6dfd1b2424d61ba2411dfd7cab08b69" +checksum = "b7a46715d2f6fda4697f640038fbd2a16645b10af81dbf2e5a19048c99b8a546" dependencies = [ - "env_logger 0.7.1", + "env_logger 0.8.2", "lazy_static", "log 0.4.11", ] @@ -4698,9 +4698,9 @@ dependencies = [ [[package]] name = "solana-program" -version = "1.4.17" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78135c538a4bea743c9703f93f7a5289b26075b92b19de8ebb7e60853732b9a0" +checksum = "fb200f05cb93b01f6e9b2e0d94d240e7e5dfa0b14c4308713b236c01a525a0ef" dependencies = [ "bincode", "bs58", @@ -4718,11 +4718,11 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "sha2 0.8.2", - "solana-frozen-abi 1.4.17", - "solana-frozen-abi-macro 1.4.17", - "solana-logger 1.4.17", - "solana-sdk-macro 1.4.17", + "sha2 0.9.2", + "solana-frozen-abi 1.5.5", + "solana-frozen-abi-macro 1.5.5", + "solana-logger 1.5.5", + "solana-sdk-macro 1.5.5", "thiserror", ] @@ -4929,9 +4929,9 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.4.17" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090e095a5ac39010fa83488dfae422132798e15183d887cc9ab33ed6bb9dab8f" +checksum = "d463f2a24e75ca02f065ac2a9ac855f661c8d0f8917090514d65e4f82cdf05ab" dependencies = [ "bs58", "proc-macro2 1.0.24", @@ -5177,7 +5177,8 @@ dependencies = [ "solana-sdk", "solana-stake-program", "solana-vote-program", - "spl-memo", + "spl-memo 2.0.1", + "spl-memo 3.0.0", "spl-token", "thiserror", ] @@ -5323,7 +5324,7 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4adc47eebe5d2b662cbaaba1843719c28a67e5ec5d0460bc3ca60900a51f74e2" dependencies = [ - "solana-program 1.4.17", + "solana-program 1.5.5", "spl-token", ] @@ -5333,7 +5334,16 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb2b771f6146dec14ef5fbf498f9374652c54badc3befc8c40c1d426dd45d720" dependencies = [ - "solana-program 1.4.17", + "solana-program 1.5.5", +] + +[[package]] +name = "spl-memo" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e76b60c6f58279b5469beb1705744e9778ee94d643c8e3e2ff91874c59bb3c63" +dependencies = [ + "solana-program 1.5.5", ] [[package]] @@ -5346,7 +5356,7 @@ dependencies = [ "num-derive", "num-traits", "num_enum", - "solana-program 1.4.17", + "solana-program 1.5.5", "thiserror", ] diff --git a/programs/bpf/Cargo.lock b/programs/bpf/Cargo.lock index 4bb26593d7..7d9d09eaef 100644 --- a/programs/bpf/Cargo.lock +++ b/programs/bpf/Cargo.lock @@ -3289,7 +3289,8 @@ dependencies = [ "solana-sdk", "solana-stake-program", "solana-vote-program", - "spl-memo", + "spl-memo 2.0.1", + "spl-memo 3.0.0", "spl-token", "thiserror", ] @@ -3360,6 +3361,15 @@ dependencies = [ "solana-program 1.5.3", ] +[[package]] +name = "spl-memo" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e76b60c6f58279b5469beb1705744e9778ee94d643c8e3e2ff91874c59bb3c63" +dependencies = [ + "solana-program 1.5.3", +] + [[package]] name = "spl-token" version = "3.0.1" diff --git a/transaction-status/Cargo.toml b/transaction-status/Cargo.toml index abb30f0430..03b9561fd3 100644 --- a/transaction-status/Cargo.toml +++ b/transaction-status/Cargo.toml @@ -23,6 +23,7 @@ solana-runtime = { path = "../runtime", version = "1.6.0" } solana-stake-program = { path = "../programs/stake", version = "1.6.0" } solana-vote-program = { path = "../programs/vote", version = "1.6.0" } spl-memo-v1-0 = { package = "spl-memo", version = "=2.0.1", features = ["no-entrypoint"] } +spl-memo-v3-0 = { package = "spl-memo", version = "=3.0.0", features = ["no-entrypoint"] } spl-token-v2-0 = { package = "spl-token", version = "=3.0.1", features = ["no-entrypoint"] } thiserror = "1.0" diff --git a/transaction-status/src/parse_instruction.rs b/transaction-status/src/parse_instruction.rs index b3a286a183..9e2b595da0 100644 --- a/transaction-status/src/parse_instruction.rs +++ b/transaction-status/src/parse_instruction.rs @@ -14,15 +14,18 @@ use thiserror::Error; lazy_static! { 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(); + 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 SYSTEM_PROGRAM_ID: Pubkey = system_program::id(); static ref TOKEN_PROGRAM_ID: Pubkey = spl_token_id_v2_0(); static ref VOTE_PROGRAM_ID: Pubkey = solana_vote_program::id(); static ref PARSABLE_PROGRAM_IDS: HashMap = { 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(*BPF_LOADER_PROGRAM_ID, ParsableProgram::BpfLoader); m.insert(*STAKE_PROGRAM_ID, ParsableProgram::Stake); @@ -131,10 +134,18 @@ mod test { data: vec![240, 159, 166, 150], }; assert_eq!( - parse(&MEMO_PROGRAM_ID, &memo_instruction, &[]).unwrap(), + parse(&MEMO_V1_PROGRAM_ID, &memo_instruction, &[]).unwrap(), ParsedInstruction { 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!("🦖"), } );