Class: Solace::Instructions::SystemProgram::TransferInstruction
- Defined in:
- lib/solace/instructions/system_program/transfer_instruction.rb
Overview
Service object for building a System Program transfer instruction
Constant Summary collapse
- INSTRUCTION_ID =
Instruction ID for System Transfer
[2, 0, 0, 0].freeze
Class Method Summary collapse
-
.build(lamports:, to_index:, from_index:, program_index: 2) ⇒ Solace::Instruction
Builds a Solace::Instruction for transferring SOL.
-
.data(lamports) ⇒ Array
Instruction data for a transfer instruction.
Class Method Details
.build(lamports:, to_index:, from_index:, program_index: 2) ⇒ Solace::Instruction
Builds a Solace::Instruction for transferring SOL
System Program transfer instruction layout:
- 4 bytes: instruction index (0 for transfer)
- 8 bytes: amount (u64, little-endian)
22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/solace/instructions/system_program/transfer_instruction.rb', line 22 def self.build( lamports:, to_index:, from_index:, program_index: 2 ) Instruction.new.tap do |ix| ix.program_index = program_index ix.accounts = [from_index, to_index] ix.data = data(lamports) end end |
.data(lamports) ⇒ Array
Instruction data for a transfer instruction
The BufferLayout is:
- [Instruction ID (4 bytes)]
- [Amount (8 bytes little-endian u64)]
43 44 45 46 |
# File 'lib/solace/instructions/system_program/transfer_instruction.rb', line 43 def self.data(lamports) INSTRUCTION_ID + Utils::Codecs.encode_le_u64(lamports).bytes end |