Add fees to tx-wide caps (#22081)
This commit is contained in:
@@ -2,38 +2,49 @@
|
||||
|
||||
use {
|
||||
crate::instruction::Instruction,
|
||||
borsh::{BorshDeserialize, BorshSchema, BorshSerialize},
|
||||
borsh::{BorshDeserialize, BorshSerialize},
|
||||
};
|
||||
|
||||
crate::declare_id!("ComputeBudget111111111111111111111111111111");
|
||||
|
||||
/// Compute Budget Instructions
|
||||
#[derive(
|
||||
Serialize,
|
||||
Deserialize,
|
||||
BorshSerialize,
|
||||
BorshDeserialize,
|
||||
BorshSchema,
|
||||
Debug,
|
||||
Clone,
|
||||
PartialEq,
|
||||
AbiExample,
|
||||
AbiEnumVisitor,
|
||||
BorshDeserialize,
|
||||
BorshSerialize,
|
||||
Clone,
|
||||
Debug,
|
||||
Deserialize,
|
||||
PartialEq,
|
||||
Serialize,
|
||||
)]
|
||||
pub enum ComputeBudgetInstruction {
|
||||
/// Request a specific maximum number of compute units the transaction is
|
||||
/// allowed to consume.
|
||||
RequestUnits(u32),
|
||||
/// Request a specific transaction-wide program heap frame size in bytes.
|
||||
/// The value requested must be a multiple of 1024. This new heap frame size
|
||||
/// applies to each program executed, including all calls to CPIs.
|
||||
/// allowed to consume and an additional fee to pay.
|
||||
RequestUnits {
|
||||
/// Units to request
|
||||
units: u32,
|
||||
/// Additional fee to add
|
||||
additional_fee: u32,
|
||||
},
|
||||
/// Request a specific transaction-wide program heap region size in bytes.
|
||||
/// The value requested must be a multiple of 1024. This new heap region
|
||||
/// size applies to each program executed, including all calls to CPIs.
|
||||
RequestHeapFrame(u32),
|
||||
}
|
||||
|
||||
impl ComputeBudgetInstruction {
|
||||
/// Create a `ComputeBudgetInstruction::RequestUnits` `Instruction`
|
||||
pub fn request_units(units: u32) -> Instruction {
|
||||
Instruction::new_with_borsh(id(), &ComputeBudgetInstruction::RequestUnits(units), vec![])
|
||||
pub fn request_units(units: u32, additional_fee: u32) -> Instruction {
|
||||
Instruction::new_with_borsh(
|
||||
id(),
|
||||
&ComputeBudgetInstruction::RequestUnits {
|
||||
units,
|
||||
additional_fee,
|
||||
},
|
||||
vec![],
|
||||
)
|
||||
}
|
||||
|
||||
/// Create a `ComputeBudgetInstruction::RequestHeapFrame` `Instruction`
|
||||
|
Reference in New Issue
Block a user