verify_precompiles needs FeatureSet

Rather than pass in individual features, pass in the entire feature set
so that we can add the ed25519 program feature in a later commit.

(cherry picked from commit 0f62771f42)

 Conflicts:
	banks-server/src/banks_server.rs
	core/src/banking_stage.rs
	programs/secp256k1/src/lib.rs
	rpc/src/rpc.rs
	runtime/src/bank.rs
	sdk/src/transaction.rs
	sdk/src/transaction/sanitized.rs
This commit is contained in:
Sean Young
2021-08-30 08:58:45 +01:00
parent 5350250a06
commit c8f6a0817b
8 changed files with 67 additions and 54 deletions

View File

@@ -5,6 +5,7 @@
use crate::sanitize::{Sanitize, SanitizeError};
use crate::secp256k1_instruction::verify_eth_addresses;
use crate::{
feature_set,
hash::Hash,
instruction::{CompiledInstruction, Instruction, InstructionError},
message::Message,
@@ -18,6 +19,7 @@ use crate::{
system_program,
};
use std::result;
use std::sync::Arc;
use thiserror::Error;
/// Reasons a transaction might be rejected.
@@ -409,7 +411,7 @@ impl Transaction {
.collect()
}
pub fn verify_precompiles(&self, libsecp256k1_0_5_upgrade_enabled: bool) -> Result<()> {
pub fn verify_precompiles(&self, feature_set: &Arc<feature_set::FeatureSet>) -> Result<()> {
for instruction in &self.message().instructions {
// The Transaction may not be sanitized at this point
if instruction.program_id_index as usize >= self.message().account_keys.len() {
@@ -427,7 +429,7 @@ impl Transaction {
let e = verify_eth_addresses(
data,
&instruction_datas,
libsecp256k1_0_5_upgrade_enabled,
feature_set.is_active(&feature_set::libsecp256k1_0_5_upgrade_enabled::id()),
);
e.map_err(|_| TransactionError::InvalidAccountIndex)?;
}