append method

Future<LogicSignature> append({
  1. required Account account,
})

Appends a signature to multisig logic signed transaction

Implementation

Future<LogicSignature> append({required Account account}) async {
  final multiSignature = this.multiSignature;
  if (multiSignature == null) {
    throw AlgorandException(message: 'The logicsig has no valid multisig');
  }

  final publicKey = Ed25519PublicKey(
    bytes: Uint8List.fromList(account.publicKey.bytes),
  );

  final index = multiSignature.subsigs.indexWhere(
    (subsig) => subsig.key == publicKey,
  );

  if (index == -1) {
    throw AlgorandException(
        message: 'Multisig account does not contain this secret key');
  }

  final signature = await account.sign(getEncodedProgram());
  multiSignature.subsigs[index] = MultisigSubsig(
    key: publicKey,
    signature: signature,
  );

  return copyWith(multiSignature: multiSignature);
}