* Upgradeable programs needs program account's address as program id (#14417)
(cherry picked from commit 0619805806
)
# Conflicts:
# programs/bpf_loader/src/lib.rs
* fix conflicts
Co-authored-by: Jack May <jack@solana.com>
This commit is contained in:
100
programs/bpf/Cargo.lock
generated
100
programs/bpf/Cargo.lock
generated
@ -1841,7 +1841,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-loader-program"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"byteorder 1.3.4",
|
||||
@ -1856,7 +1856,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-programs"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"byteorder 1.3.4",
|
||||
@ -1875,7 +1875,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-128bit"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-bpf-rust-128bit-dep",
|
||||
"solana-program",
|
||||
@ -1883,42 +1883,42 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-128bit-dep"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-alloc"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-call-depth"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-caller-access"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-custom-heap"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-dep-crate"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"byteorder 1.3.4",
|
||||
"solana-program",
|
||||
@ -1926,21 +1926,21 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-deprecated_loader"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-dup-accounts"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-error-handling"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"num-derive 0.2.5",
|
||||
"num-traits",
|
||||
@ -1950,21 +1950,21 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-external-spend"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-instruction-introspection"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-invoke"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-bpf-rust-invoked",
|
||||
"solana-program",
|
||||
@ -1972,42 +1972,42 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-invoke-and-error"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-invoke-and-ok"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-invoke-and-return"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-invoked"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-iter"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-many-args"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-bpf-rust-many-args-dep",
|
||||
"solana-program",
|
||||
@ -2015,35 +2015,35 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-many-args-dep"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-mem"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-noop"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-panic"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-param-passing"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-bpf-rust-param-passing-dep",
|
||||
"solana-program",
|
||||
@ -2051,14 +2051,14 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-param-passing-dep"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-rand"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"getrandom",
|
||||
"rand",
|
||||
@ -2067,7 +2067,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-ristretto"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"curve25519-dalek 3.0.0",
|
||||
"getrandom",
|
||||
@ -2076,49 +2076,49 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-ro-modify"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-sanity"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-sha256"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-sysval"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-upgradeable"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-rust-upgraded"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"solana-program",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-config-program"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"chrono",
|
||||
@ -2130,7 +2130,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-crate-features"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"backtrace",
|
||||
"bytes 0.4.12",
|
||||
@ -2152,7 +2152,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-frozen-abi"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"bs58",
|
||||
"bv",
|
||||
@ -2170,7 +2170,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-frozen-abi-macro"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"lazy_static",
|
||||
"proc-macro2 1.0.24",
|
||||
@ -2181,7 +2181,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-logger"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"env_logger",
|
||||
"lazy_static",
|
||||
@ -2190,7 +2190,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-measure"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"jemalloc-ctl",
|
||||
"jemallocator",
|
||||
@ -2201,7 +2201,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-metrics"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"env_logger",
|
||||
"gethostname",
|
||||
@ -2213,7 +2213,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-program"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"bs58",
|
||||
@ -2241,7 +2241,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-rayon-threadlimit"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"lazy_static",
|
||||
"num_cpus",
|
||||
@ -2249,7 +2249,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-runtime"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"blake3",
|
||||
@ -2298,7 +2298,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-sdk"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"assert_matches",
|
||||
"bincode",
|
||||
@ -2340,7 +2340,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-sdk-macro"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"bs58",
|
||||
"proc-macro2 1.0.24",
|
||||
@ -2351,7 +2351,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-secp256k1-program"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"digest 0.9.0",
|
||||
@ -2364,7 +2364,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-stake-program"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"log",
|
||||
@ -2384,7 +2384,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-vote-program"
|
||||
version = "1.4.20"
|
||||
version = "1.4.21"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"log",
|
||||
|
@ -2,16 +2,24 @@
|
||||
|
||||
extern crate solana_program;
|
||||
use solana_program::{
|
||||
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, msg, pubkey::Pubkey,
|
||||
account_info::AccountInfo,
|
||||
entrypoint,
|
||||
entrypoint::ProgramResult,
|
||||
msg,
|
||||
pubkey::Pubkey,
|
||||
sysvar::{clock, fees},
|
||||
};
|
||||
|
||||
entrypoint!(process_instruction);
|
||||
fn process_instruction(
|
||||
_program_id: &Pubkey,
|
||||
program_id: &Pubkey,
|
||||
accounts: &[AccountInfo],
|
||||
_instruction_data: &[u8],
|
||||
) -> ProgramResult {
|
||||
msg!("Upgradeable program");
|
||||
assert_eq!(accounts.len(), 2);
|
||||
assert_eq!(accounts.len(), 3);
|
||||
assert_eq!(accounts[0].key, program_id);
|
||||
assert_eq!(*accounts[1].key, clock::id());
|
||||
assert_eq!(*accounts[2].key, fees::id());
|
||||
Err(42.into())
|
||||
}
|
||||
|
@ -2,16 +2,24 @@
|
||||
|
||||
extern crate solana_program;
|
||||
use solana_program::{
|
||||
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, msg, pubkey::Pubkey,
|
||||
account_info::AccountInfo,
|
||||
entrypoint,
|
||||
entrypoint::ProgramResult,
|
||||
msg,
|
||||
pubkey::Pubkey,
|
||||
sysvar::{clock, fees},
|
||||
};
|
||||
|
||||
entrypoint!(process_instruction);
|
||||
fn process_instruction(
|
||||
_program_id: &Pubkey,
|
||||
program_id: &Pubkey,
|
||||
accounts: &[AccountInfo],
|
||||
_instruction_data: &[u8],
|
||||
) -> ProgramResult {
|
||||
msg!("Upgraded program");
|
||||
assert_eq!(accounts.len(), 2);
|
||||
assert_eq!(accounts.len(), 3);
|
||||
assert_eq!(accounts[0].key, program_id);
|
||||
assert_eq!(*accounts[1].key, clock::id());
|
||||
assert_eq!(*accounts[2].key, fees::id());
|
||||
Err(43.into())
|
||||
}
|
||||
|
@ -1437,7 +1437,6 @@ fn test_program_bpf_test_use_latest_executor2() {
|
||||
fn test_program_bpf_upgrade() {
|
||||
solana_logger::setup();
|
||||
|
||||
let mut nonce = 0;
|
||||
let GenesisConfigInfo {
|
||||
genesis_config,
|
||||
mint_keypair,
|
||||
@ -1452,17 +1451,18 @@ fn test_program_bpf_upgrade() {
|
||||
let (program_id, authority_keypair) =
|
||||
load_upgradeable_bpf_program(&bank_client, &mint_keypair, "solana_bpf_rust_upgradeable");
|
||||
|
||||
// Call upgrade program
|
||||
nonce += 1;
|
||||
let instruction = Instruction::new(
|
||||
let mut instruction = Instruction::new(
|
||||
program_id,
|
||||
&[nonce],
|
||||
&[0],
|
||||
vec![
|
||||
AccountMeta::new(program_id.clone(), false),
|
||||
AccountMeta::new(clock::id(), false),
|
||||
AccountMeta::new(fees::id(), false),
|
||||
],
|
||||
);
|
||||
let result = bank_client.send_and_confirm_instruction(&mint_keypair, instruction);
|
||||
|
||||
// Call upgrade program
|
||||
let result = bank_client.send_and_confirm_instruction(&mint_keypair, instruction.clone());
|
||||
assert_eq!(
|
||||
result.unwrap_err().unwrap(),
|
||||
TransactionError::InstructionError(0, InstructionError::Custom(42))
|
||||
@ -1478,16 +1478,8 @@ fn test_program_bpf_upgrade() {
|
||||
);
|
||||
|
||||
// Call upgraded program
|
||||
nonce += 1;
|
||||
let instruction = Instruction::new(
|
||||
program_id,
|
||||
&[nonce],
|
||||
vec![
|
||||
AccountMeta::new(clock::id(), false),
|
||||
AccountMeta::new(fees::id(), false),
|
||||
],
|
||||
);
|
||||
let result = bank_client.send_and_confirm_instruction(&mint_keypair, instruction);
|
||||
instruction.data[0] += 1;
|
||||
let result = bank_client.send_and_confirm_instruction(&mint_keypair, instruction.clone());
|
||||
assert_eq!(
|
||||
result.unwrap_err().unwrap(),
|
||||
TransactionError::InstructionError(0, InstructionError::Custom(43))
|
||||
@ -1513,15 +1505,7 @@ fn test_program_bpf_upgrade() {
|
||||
);
|
||||
|
||||
// Call original program
|
||||
nonce += 1;
|
||||
let instruction = Instruction::new(
|
||||
program_id,
|
||||
&[nonce],
|
||||
vec![
|
||||
AccountMeta::new(clock::id(), false),
|
||||
AccountMeta::new(fees::id(), false),
|
||||
],
|
||||
);
|
||||
instruction.data[0] += 1;
|
||||
let result = bank_client.send_and_confirm_instruction(&mint_keypair, instruction);
|
||||
assert_eq!(
|
||||
result.unwrap_err().unwrap(),
|
||||
@ -1534,7 +1518,6 @@ fn test_program_bpf_upgrade() {
|
||||
fn test_program_bpf_invoke_upgradeable_via_cpi() {
|
||||
solana_logger::setup();
|
||||
|
||||
let mut nonce = 0;
|
||||
let GenesisConfigInfo {
|
||||
genesis_config,
|
||||
mint_keypair,
|
||||
@ -1557,18 +1540,20 @@ fn test_program_bpf_invoke_upgradeable_via_cpi() {
|
||||
let (program_id, authority_keypair) =
|
||||
load_upgradeable_bpf_program(&bank_client, &mint_keypair, "solana_bpf_rust_upgradeable");
|
||||
|
||||
// Call invoker program to invoke the upgradeable program
|
||||
nonce += 1;
|
||||
let instruction = Instruction::new(
|
||||
let mut instruction = Instruction::new(
|
||||
invoke_and_return,
|
||||
&[nonce],
|
||||
&[0],
|
||||
vec![
|
||||
AccountMeta::new(program_id, false),
|
||||
AccountMeta::new(program_id, false),
|
||||
AccountMeta::new(clock::id(), false),
|
||||
AccountMeta::new(fees::id(), false),
|
||||
],
|
||||
);
|
||||
let result = bank_client.send_and_confirm_instruction(&mint_keypair, instruction);
|
||||
|
||||
// Call invoker program to invoke the upgradeable program
|
||||
instruction.data[0] += 1;
|
||||
let result = bank_client.send_and_confirm_instruction(&mint_keypair, instruction.clone());
|
||||
assert_eq!(
|
||||
result.unwrap_err().unwrap(),
|
||||
TransactionError::InstructionError(0, InstructionError::Custom(42))
|
||||
@ -1584,17 +1569,8 @@ fn test_program_bpf_invoke_upgradeable_via_cpi() {
|
||||
);
|
||||
|
||||
// Call the upgraded program
|
||||
nonce += 1;
|
||||
let instruction = Instruction::new(
|
||||
invoke_and_return,
|
||||
&[nonce],
|
||||
vec![
|
||||
AccountMeta::new(program_id, false),
|
||||
AccountMeta::new(clock::id(), false),
|
||||
AccountMeta::new(fees::id(), false),
|
||||
],
|
||||
);
|
||||
let result = bank_client.send_and_confirm_instruction(&mint_keypair, instruction);
|
||||
instruction.data[0] += 1;
|
||||
let result = bank_client.send_and_confirm_instruction(&mint_keypair, instruction.clone());
|
||||
assert_eq!(
|
||||
result.unwrap_err().unwrap(),
|
||||
TransactionError::InstructionError(0, InstructionError::Custom(43))
|
||||
@ -1620,17 +1596,8 @@ fn test_program_bpf_invoke_upgradeable_via_cpi() {
|
||||
);
|
||||
|
||||
// Call original program
|
||||
nonce += 1;
|
||||
let instruction = Instruction::new(
|
||||
invoke_and_return,
|
||||
&[nonce],
|
||||
vec![
|
||||
AccountMeta::new(program_id, false),
|
||||
AccountMeta::new(clock::id(), false),
|
||||
AccountMeta::new(fees::id(), false),
|
||||
],
|
||||
);
|
||||
let result = bank_client.send_and_confirm_instruction(&mint_keypair, instruction);
|
||||
instruction.data[0] += 1;
|
||||
let result = bank_client.send_and_confirm_instruction(&mint_keypair, instruction.clone());
|
||||
assert_eq!(
|
||||
result.unwrap_err().unwrap(),
|
||||
TransactionError::InstructionError(0, InstructionError::Custom(42))
|
||||
|
@ -207,7 +207,13 @@ pub fn process_instruction(
|
||||
invoke_context,
|
||||
)?,
|
||||
};
|
||||
executor.execute(loader_id, keyed_accounts, instruction_data, invoke_context)?
|
||||
executor.execute(
|
||||
loader_id,
|
||||
first_account.unsigned_key(),
|
||||
keyed_accounts,
|
||||
instruction_data,
|
||||
invoke_context,
|
||||
)?
|
||||
} else {
|
||||
if !check_loader_id(program_id) {
|
||||
log!(logger, "Invalid BPF loader id");
|
||||
@ -587,6 +593,7 @@ impl Executor for BPFExecutor {
|
||||
fn execute(
|
||||
&self,
|
||||
loader_id: &Pubkey,
|
||||
program_id: &Pubkey,
|
||||
keyed_accounts: &[KeyedAccount],
|
||||
instruction_data: &[u8],
|
||||
invoke_context: &mut dyn InvokeContext,
|
||||
@ -598,12 +605,8 @@ impl Executor for BPFExecutor {
|
||||
let program = next_keyed_account(&mut keyed_accounts_iter)?;
|
||||
|
||||
let parameter_accounts = keyed_accounts_iter.as_slice();
|
||||
let parameter_bytes = serialize_parameters(
|
||||
loader_id,
|
||||
program.unsigned_key(),
|
||||
parameter_accounts,
|
||||
&instruction_data,
|
||||
)?;
|
||||
let parameter_bytes =
|
||||
serialize_parameters(loader_id, program_id, parameter_accounts, &instruction_data)?;
|
||||
{
|
||||
let compute_meter = invoke_context.get_compute_meter();
|
||||
let (mut vm, heap_region) = match create_vm(
|
||||
|
@ -10556,6 +10556,7 @@ pub(crate) mod tests {
|
||||
impl Executor for TestExecutor {
|
||||
fn execute(
|
||||
&self,
|
||||
_loader_id: &Pubkey,
|
||||
_program_id: &Pubkey,
|
||||
_keyed_accounts: &[KeyedAccount],
|
||||
_instruction_data: &[u8],
|
||||
|
@ -248,6 +248,7 @@ pub trait Executor: Debug + Send + Sync {
|
||||
/// Execute the program
|
||||
fn execute(
|
||||
&self,
|
||||
loader_id: &Pubkey,
|
||||
program_id: &Pubkey,
|
||||
keyed_accounts: &[KeyedAccount],
|
||||
instruction_data: &[u8],
|
||||
|
Reference in New Issue
Block a user