Parse SPL Memo v3 (#14979)

* Parse memo v3 too

* tree
This commit is contained in:
Tyera Eulberg 2021-02-01 21:02:57 -07:00 committed by GitHub
parent 709aa74e11
commit 34dfcc9c6f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 60 additions and 28 deletions

56
Cargo.lock generated
View File

@ -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",
]

View File

@ -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"

View File

@ -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"

View File

@ -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<Pubkey, ParsableProgram> = {
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!("🦖"),
}
);