Class: Solace::Instructions::Token2022::TransferCheckedInstruction

Inherits:
Object
  • Object
show all
Defined in:
lib/solace/instructions/token_2022/transfer_checked_instruction.rb

Overview

Instruction for transferring Token-2022 tokens with decimal validation.

Examples:

Build a TransferChecked instruction

instruction = Solace::Instructions::Token2022::TransferCheckedInstruction.build(
  amount: 100,
  decimals: 6,
  to_index: 1,
  from_index: 2,
  mint_index: 3,
  authority_index: 4,
  program_index: 5
)

Since:

  • 0.1.5

Constant Summary collapse

INSTRUCTION_INDEX =

Token-2022 instruction index for Transfer Checked

Since:

  • 0.1.5

[12].freeze

Class Method Summary collapse

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 Token-2022 tokens.

The BufferLayout is:

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

Parameters:

  • amount (Integer)

    Amount to transfer (in tokens, according to mint’s decimals)

  • decimals (Integer)

    Number of decimals for the token

  • to_index (Integer)

    Index of the destination token account in the transaction’s accounts

  • from_index (Integer)

    Index of the source token account in the transaction’s accounts

  • mint_index (Integer)

    Index of the mint in the transaction’s accounts

  • authority_index (Integer)

    Index of the authority (owner) in the transaction’s accounts

  • program_index (Integer) (defaults to: 3)

    Index of the Token-2022 Program in the transaction’s accounts

Returns:

Since:

  • 0.1.5



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/solace/instructions/token_2022/transfer_checked_instruction.rb', line 39

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, authority_index]
    ix.data = data(amount, decimals)
  end
end

.data(amount, decimals) ⇒ Array

Instruction data for a TransferChecked instruction.

Parameters:

  • amount (Integer)

    Amount to transfer

  • decimals (Integer)

    Number of decimals for the token

Returns:

  • (Array)

    1-byte instruction index + 8-byte amount + 1-byte decimals

Since:

  • 0.1.5



60
61
62
63
64
# File 'lib/solace/instructions/token_2022/transfer_checked_instruction.rb', line 60

def self.data(amount, decimals)
  INSTRUCTION_INDEX +
    Solace::Utils::Codecs.encode_le_u64(amount).bytes +
    [decimals]
end