split static method

TransactionInstruction split({
  1. required Pubkey stakeAccount,
  2. required Pubkey uninitializedStakeAccount,
  3. required Pubkey authority,
  4. required bu64 lamports,
})

Split u64 tokens and stake off a stake account into another stake account.

Keys:

  • [w] stakeAccount - Stake account to be split; must be in the Initialized or Stake state.
  • [w] uninitializedStakeAccount - Uninitialized stake account that will take the split-off amount.
  • [s] authority - Stake authority.

Implementation

static TransactionInstruction split({
  // Keys
  required final Pubkey stakeAccount,
  required final Pubkey uninitializedStakeAccount,
  required final Pubkey authority,
  // Data
  required final bu64 lamports,
}) {
  // 0. `[w]` Stake account to be split; must be in the Initialized or Stake state.
  // 1. `[w]` Uninitialized stake account that will take the split-off amount.
  // 2. `[s]` Stake authority.
  final List<AccountMeta> keys = [
    AccountMeta.writable(stakeAccount),
    AccountMeta.writable(uninitializedStakeAccount),
    AccountMeta.signer(authority),
  ];

  final List<Iterable<u8>> data = [
    borsh.u64.encode(lamports),
  ];

  return _instance.createTransactionIntruction(
    StakeInstruction.split,
    keys: keys,
    data: data,
  );
}