From 7b67a6d20843114bf7a644872925c8febc888d85 Mon Sep 17 00:00:00 2001 From: Justin Starry Date: Fri, 19 Feb 2021 15:59:31 +0800 Subject: [PATCH] Load memo v2 into genesis for test validator (#15425) * Load memo v2 into genesis for test validator * feedback * versions * remove .so * add .so --- explorer/src/utils/tx.ts | 3 +++ fetch-spl.sh | 1 + program-test/src/programs.rs | 14 ++++++++++++-- program-test/src/programs/spl_memo-3.0.0.so | Bin 0 -> 74800 bytes 4 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 program-test/src/programs/spl_memo-3.0.0.so diff --git a/explorer/src/utils/tx.ts b/explorer/src/utils/tx.ts index c0ce6356c..991f5c6ca 100644 --- a/explorer/src/utils/tx.ts +++ b/explorer/src/utils/tx.ts @@ -34,6 +34,7 @@ export enum PROGRAM_NAMES { SPL_TOKEN = "SPL Token Program", ASSOCIATED_TOKEN = "SPL Associated Token Program", MEMO = "Memo Program", + MEMO_2 = "Memo Program 2", SWAP = "Swap Program", LENDING = "Lending Program", } @@ -51,6 +52,7 @@ export const SEARCHABLE_PROGRAMS: ProgramName[] = [ PROGRAM_NAMES.SPL_TOKEN, PROGRAM_NAMES.ASSOCIATED_TOKEN, PROGRAM_NAMES.MEMO, + PROGRAM_NAMES.MEMO_2, PROGRAM_NAMES.SWAP, PROGRAM_NAMES.LENDING, ]; @@ -68,6 +70,7 @@ export const PROGRAM_NAME_BY_ID = { TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA: PROGRAM_NAMES.SPL_TOKEN, ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL: PROGRAM_NAMES.ASSOCIATED_TOKEN, Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo: PROGRAM_NAMES.MEMO, + MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr: PROGRAM_NAMES.MEMO_2, SwaPpA9LAaLfeLi3a68M4DjnLqgtticKg6CnyNwgAC8: PROGRAM_NAMES.SWAP, LendZqTs7gn5CTSJU1jWKhKuVpjJGom45nnwPb2AMTi: PROGRAM_NAMES.LENDING, } as const; diff --git a/fetch-spl.sh b/fetch-spl.sh index fe3c9103a..3f419fcd8 100755 --- a/fetch-spl.sh +++ b/fetch-spl.sh @@ -40,6 +40,7 @@ fetch_program() { fetch_program token 3.1.0 TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA BPFLoader2111111111111111111111111111111111 fetch_program memo 1.0.0 Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo BPFLoader1111111111111111111111111111111111 +fetch_program memo 3.0.0 MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr BPFLoader2111111111111111111111111111111111 fetch_program associated-token-account 1.0.1 ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL BPFLoader2111111111111111111111111111111111 fetch_program feature-proposal 1.0.0 Feat1YXHhH6t1juaWF74WLcfv4XoNocjXA6sPWHNgAse BPFLoader2111111111111111111111111111111111 diff --git a/program-test/src/programs.rs b/program-test/src/programs.rs index 0ae71c66b..f27cfa182 100644 --- a/program-test/src/programs.rs +++ b/program-test/src/programs.rs @@ -3,16 +3,26 @@ use solana_sdk::{account::Account, pubkey::Pubkey, rent::Rent}; mod spl_token { solana_sdk::declare_id!("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"); } -mod spl_memo { +mod spl_memo_1_0 { solana_sdk::declare_id!("Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo"); } +mod spl_memo_3_0 { + solana_sdk::declare_id!("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"); +} mod spl_associated_token_account { solana_sdk::declare_id!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"); } static SPL_PROGRAMS: &[(Pubkey, &[u8])] = &[ (spl_token::ID, include_bytes!("programs/spl_token-3.1.0.so")), - (spl_memo::ID, include_bytes!("programs/spl_memo-1.0.0.so")), + ( + spl_memo_1_0::ID, + include_bytes!("programs/spl_memo-1.0.0.so"), + ), + ( + spl_memo_3_0::ID, + include_bytes!("programs/spl_memo-3.0.0.so"), + ), ( spl_associated_token_account::ID, include_bytes!("programs/spl_associated-token-account-1.0.1.so"), diff --git a/program-test/src/programs/spl_memo-3.0.0.so b/program-test/src/programs/spl_memo-3.0.0.so new file mode 100644 index 0000000000000000000000000000000000000000..88385a01dec7b2f375cc33959fc8ee06e6eef409 GIT binary patch literal 74800 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 g^LN5a(;