Replaces keyed_account get_signers() by InstructionContext::get_signers(). (#23863)
This commit is contained in:
parent
c83c95b56b
commit
91c2729856
|
@ -12,7 +12,7 @@ use {
|
||||||
solana_sdk::{
|
solana_sdk::{
|
||||||
feature_set,
|
feature_set,
|
||||||
instruction::InstructionError,
|
instruction::InstructionError,
|
||||||
keyed_account::{get_signers, keyed_account_at_index},
|
keyed_account::keyed_account_at_index,
|
||||||
program_utils::limited_deserialize,
|
program_utils::limited_deserialize,
|
||||||
stake::{
|
stake::{
|
||||||
instruction::StakeInstruction,
|
instruction::StakeInstruction,
|
||||||
|
@ -28,6 +28,8 @@ pub fn process_instruction(
|
||||||
data: &[u8],
|
data: &[u8],
|
||||||
invoke_context: &mut InvokeContext,
|
invoke_context: &mut InvokeContext,
|
||||||
) -> Result<(), InstructionError> {
|
) -> Result<(), InstructionError> {
|
||||||
|
let transaction_context = &invoke_context.transaction_context;
|
||||||
|
let instruction_context = transaction_context.get_current_instruction_context()?;
|
||||||
let keyed_accounts = invoke_context.get_keyed_accounts()?;
|
let keyed_accounts = invoke_context.get_keyed_accounts()?;
|
||||||
|
|
||||||
trace!("process_instruction: {:?}", data);
|
trace!("process_instruction: {:?}", data);
|
||||||
|
@ -38,7 +40,7 @@ pub fn process_instruction(
|
||||||
return Err(InstructionError::InvalidAccountOwner);
|
return Err(InstructionError::InvalidAccountOwner);
|
||||||
}
|
}
|
||||||
|
|
||||||
let signers = get_signers(&keyed_accounts[first_instruction_account..]);
|
let signers = instruction_context.get_signers(transaction_context);
|
||||||
match limited_deserialize(data)? {
|
match limited_deserialize(data)? {
|
||||||
StakeInstruction::Initialize(authorized, lockup) => {
|
StakeInstruction::Initialize(authorized, lockup) => {
|
||||||
let rent = get_sysvar_with_account_check::rent(
|
let rent = get_sysvar_with_account_check::rent(
|
||||||
|
|
|
@ -10,12 +10,10 @@ use {
|
||||||
solana_sdk::{
|
solana_sdk::{
|
||||||
feature_set,
|
feature_set,
|
||||||
instruction::InstructionError,
|
instruction::InstructionError,
|
||||||
keyed_account::{get_signers, keyed_account_at_index, KeyedAccount},
|
keyed_account::{keyed_account_at_index, KeyedAccount},
|
||||||
program_utils::limited_deserialize,
|
program_utils::limited_deserialize,
|
||||||
pubkey::Pubkey,
|
|
||||||
sysvar::rent::Rent,
|
sysvar::rent::Rent,
|
||||||
},
|
},
|
||||||
std::collections::HashSet,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn process_instruction(
|
pub fn process_instruction(
|
||||||
|
@ -23,6 +21,8 @@ pub fn process_instruction(
|
||||||
data: &[u8],
|
data: &[u8],
|
||||||
invoke_context: &mut InvokeContext,
|
invoke_context: &mut InvokeContext,
|
||||||
) -> Result<(), InstructionError> {
|
) -> Result<(), InstructionError> {
|
||||||
|
let transaction_context = &invoke_context.transaction_context;
|
||||||
|
let instruction_context = transaction_context.get_current_instruction_context()?;
|
||||||
let keyed_accounts = invoke_context.get_keyed_accounts()?;
|
let keyed_accounts = invoke_context.get_keyed_accounts()?;
|
||||||
|
|
||||||
trace!("process_instruction: {:?}", data);
|
trace!("process_instruction: {:?}", data);
|
||||||
|
@ -33,7 +33,7 @@ pub fn process_instruction(
|
||||||
return Err(InstructionError::InvalidAccountOwner);
|
return Err(InstructionError::InvalidAccountOwner);
|
||||||
}
|
}
|
||||||
|
|
||||||
let signers: HashSet<Pubkey> = get_signers(&keyed_accounts[first_instruction_account..]);
|
let signers = instruction_context.get_signers(transaction_context);
|
||||||
match limited_deserialize(data)? {
|
match limited_deserialize(data)? {
|
||||||
VoteInstruction::InitializeAccount(vote_init) => {
|
VoteInstruction::InitializeAccount(vote_init) => {
|
||||||
let rent = get_sysvar_with_account_check::rent(
|
let rent = get_sysvar_with_account_check::rent(
|
||||||
|
@ -201,9 +201,10 @@ mod tests {
|
||||||
feature_set::FeatureSet,
|
feature_set::FeatureSet,
|
||||||
hash::Hash,
|
hash::Hash,
|
||||||
instruction::{AccountMeta, Instruction},
|
instruction::{AccountMeta, Instruction},
|
||||||
|
pubkey::Pubkey,
|
||||||
sysvar::{self, clock::Clock, slot_hashes::SlotHashes},
|
sysvar::{self, clock::Clock, slot_hashes::SlotHashes},
|
||||||
},
|
},
|
||||||
std::str::FromStr,
|
std::{collections::HashSet, str::FromStr},
|
||||||
};
|
};
|
||||||
|
|
||||||
fn create_default_account() -> AccountSharedData {
|
fn create_default_account() -> AccountSharedData {
|
||||||
|
|
|
@ -12,7 +12,7 @@ use {
|
||||||
account_utils::StateMut,
|
account_utils::StateMut,
|
||||||
feature_set,
|
feature_set,
|
||||||
instruction::InstructionError,
|
instruction::InstructionError,
|
||||||
keyed_account::{get_signers, keyed_account_at_index, KeyedAccount},
|
keyed_account::{keyed_account_at_index, KeyedAccount},
|
||||||
nonce,
|
nonce,
|
||||||
program_utils::limited_deserialize,
|
program_utils::limited_deserialize,
|
||||||
pubkey::Pubkey,
|
pubkey::Pubkey,
|
||||||
|
@ -268,6 +268,8 @@ pub fn process_instruction(
|
||||||
instruction_data: &[u8],
|
instruction_data: &[u8],
|
||||||
invoke_context: &mut InvokeContext,
|
invoke_context: &mut InvokeContext,
|
||||||
) -> Result<(), InstructionError> {
|
) -> Result<(), InstructionError> {
|
||||||
|
let transaction_context = &invoke_context.transaction_context;
|
||||||
|
let instruction_context = transaction_context.get_current_instruction_context()?;
|
||||||
let keyed_accounts = invoke_context.get_keyed_accounts()?;
|
let keyed_accounts = invoke_context.get_keyed_accounts()?;
|
||||||
let instruction = limited_deserialize(instruction_data)?;
|
let instruction = limited_deserialize(instruction_data)?;
|
||||||
|
|
||||||
|
@ -275,7 +277,7 @@ pub fn process_instruction(
|
||||||
trace!("keyed_accounts: {:?}", keyed_accounts);
|
trace!("keyed_accounts: {:?}", keyed_accounts);
|
||||||
|
|
||||||
let _ = keyed_account_at_index(keyed_accounts, first_instruction_account)?;
|
let _ = keyed_account_at_index(keyed_accounts, first_instruction_account)?;
|
||||||
let signers = get_signers(&keyed_accounts[first_instruction_account..]);
|
let signers = instruction_context.get_signers(transaction_context);
|
||||||
match instruction {
|
match instruction {
|
||||||
SystemInstruction::CreateAccount {
|
SystemInstruction::CreateAccount {
|
||||||
lamports,
|
lamports,
|
||||||
|
|
|
@ -198,6 +198,10 @@ pub fn create_keyed_accounts_unified<'a>(
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[deprecated(
|
||||||
|
since = "1.11.0",
|
||||||
|
note = "Please use InstructionContext::get_signers() instead"
|
||||||
|
)]
|
||||||
/// Return all the signers from a set of KeyedAccounts
|
/// Return all the signers from a set of KeyedAccounts
|
||||||
pub fn get_signers<A>(keyed_accounts: &[KeyedAccount]) -> A
|
pub fn get_signers<A>(keyed_accounts: &[KeyedAccount]) -> A
|
||||||
where
|
where
|
||||||
|
|
Loading…
Reference in New Issue