Class: Solace::Instructions::ComputeBudget::SetComputeUnitPriceInstruction

Inherits:
Object
  • Object
show all
Defined in:
lib/solace/instructions/compute_budget/set_compute_unit_price_instruction.rb

Overview

Instruction for setting the compute unit price.

This instruction is used to set the price (in micro-lamports per compute unit) a transaction pays as a priority fee, which validators use to order it during congestion.

Examples:

Build a SetComputeUnitPrice instruction

instruction = Solace::Instructions::ComputeBudget::SetComputeUnitPriceInstruction.build(
  micro_lamports: 50_000,
  program_index: 1
)

Since:

  • 0.1.7

Constant Summary collapse

INSTRUCTION_INDEX =

Since:

  • 0.1.7

[3].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#INSTRUCTION_INDEXObject (readonly)

Instruction index for the Compute Budget Program's SetComputeUnitPrice instruction.



33
# File 'lib/solace/instructions/compute_budget/set_compute_unit_price_instruction.rb', line 33

INSTRUCTION_INDEX = [3].freeze

Class Method Details

.build(micro_lamports:, program_index:) ⇒ Solace::Instruction

Builds a Solace::Instruction for setting the compute unit price

Parameters:

  • micro_lamports (Integer)

    Price per compute unit (in micro-lamports)

  • program_index (Integer)

    Index of the Compute Budget program in the transaction's accounts

Returns:

Since:

  • 0.1.7



40
41
42
43
44
45
46
# File 'lib/solace/instructions/compute_budget/set_compute_unit_price_instruction.rb', line 40

def self.build(micro_lamports:, program_index:)
  Solace::Instruction.new.tap do |ix|
    ix.program_index = program_index
    ix.accounts      = []
    ix.data          = data(micro_lamports)
  end
end

.data(micro_lamports) ⇒ Array<Integer>

Instruction data for a set compute unit price instruction

The BufferLayout is:

- [Instruction Index (1 byte)]
- [Price (8 bytes little-endian u64)]

Parameters:

  • micro_lamports (Integer)

    Price per compute unit (in micro-lamports)

Returns:

  • (Array<Integer>)

    1-byte instruction index + 8-byte price

Since:

  • 0.1.7



56
57
58
# File 'lib/solace/instructions/compute_budget/set_compute_unit_price_instruction.rb', line 56

def self.data(micro_lamports)
  INSTRUCTION_INDEX + Solace::Utils::Codecs.encode_le_u64(micro_lamports).bytes
end