initialize static method

TransactionInstruction initialize({
  1. required Pubkey stakeAccount,
  2. required Authorized authorized,
  3. required Lockup lockup,
})

Initialize a stake with lockup and authorization information.

Keys:

  • [w] stakeAccount - Uninitialized stake account.

Data:

  • authorized - Public keys that must sign staker transactions and withdrawer transactions.
  • lockup - Information about withdrawal restrictions.

Implementation

static TransactionInstruction initialize({
  required final Pubkey stakeAccount,
  required final Authorized authorized,
  required final Lockup lockup,
}) {
  // 0. `[w]` Uninitialized stake account.
  // 1. `[]` Rent sysvar.
  final List<AccountMeta> keys = [
    AccountMeta.writable(stakeAccount),
    AccountMeta(sysvarRentPubkey),
  ];

  final List<Iterable<u8>> data = [
    Authorized.codec.encode(authorized.toJson()),
    Lockup.codec.encode(lockup.toJson()),
  ];

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