initializeMultisig2 static method

TransactionInstruction initializeMultisig2({
  1. required Pubkey account,
  2. required List<Pubkey> signers,
  3. required u8 numberOfSigners,
})

Like InitializeMultisig, but does not require the Rent sysvar to be provided.

Keys:

  • [w] account - The multisignature account to initialize.
  • [] signers - The signer accounts (minSigners : maxSigners).

Data

  • numberOfSigners - The number of signers required to validate this multisignature account.

Implementation

static TransactionInstruction initializeMultisig2({
  // Keys
  required final Pubkey account,
  required final List<Pubkey> signers,
  // Data
  required final u8 numberOfSigners,
}) {
  // Validation
  checkGte(signers.length, minSigners, 'signers');
  checkLte(signers.length, maxSigners, 'signers');

  // 0. `[w]` The multisignature account to initialize.
  // 1. `[]` ..2+N The signer accounts, must equal to N where 1 <= N <= 11.
  final List<AccountMeta> keys = [
    AccountMeta.writable(account),
    for (final Pubkey signer in signers)
      AccountMeta(signer),
  ];

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

  return _instance.createTransactionIntruction(
    TokenInstruction.initializeMultisig2,
    keys: keys,
    data: data,
  );
}