Class: Solace::Instructions::SplToken::TransferCheckedInstruction
- Inherits:
-
Object
- Object
- Solace::Instructions::SplToken::TransferCheckedInstruction
- Defined in:
- lib/solace/instructions/spl_token/transfer_checked_instruction.rb
Overview
Instruction for transferring SPL tokens.
This instruction is used to transfer SPL tokens from one token account to another while checking the decimals of the token to ensure the transfer amount is correct.
Constant Summary collapse
- INSTRUCTION_INDEX =
SPL Token Program instruction index for Transfer Checked
[12].freeze
Class Method Summary collapse
-
.build(amount:, decimals:, to_index:, from_index:, mint_index:, authority_index:, program_index: 3) ⇒ Solace::Instruction
Builds a Solace::Instruction for transferring SPL tokens.
-
.data(amount, decimals) ⇒ Array
Instruction data for a token transfer instruction.
Class Method Details
.build(amount:, decimals:, to_index:, from_index:, mint_index:, authority_index:, program_index: 3) ⇒ Solace::Instruction
Builds a Solace::Instruction for transferring SPL tokens
SPL Token Program transfer instruction layout:
- 1 byte: instruction index (12 for transfer checked)
- 8 bytes: amount (u64, little-endian)
- 8 bytes: decimals (u64, little-endian)
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/solace/instructions/spl_token/transfer_checked_instruction.rb', line 42 def self.build( amount:, decimals:, to_index:, from_index:, mint_index:, authority_index:, program_index: 3 ) Solace::Instruction.new.tap do |ix| ix.program_index = program_index ix.accounts = [from_index, mint_index, to_index, ] ix.data = data(amount, decimals) end end |
.data(amount, decimals) ⇒ Array
Instruction data for a token transfer instruction
The BufferLayout is:
- [Instruction Index (1 byte)]
- [Amount (8 bytes little-endian u64)]
- [Decimals (8 bytes little-endian u64)]
68 69 70 71 72 |
# File 'lib/solace/instructions/spl_token/transfer_checked_instruction.rb', line 68 def self.data(amount, decimals) INSTRUCTION_INDEX + Solace::Utils::Codecs.encode_le_u64(amount).bytes + [decimals] end |