verify method

Future<bool> verify(
  1. Address address
)

Perform signature verification against the sender address.

Implementation

Future<bool> verify(Address address) async {
  // Multisig
  if (signature != null && multiSignature != null) {
    return false;
  }

  try {
    Logic.checkProgram(program: logic, arguments: arguments);
  } catch (ex) {
    return false;
  }

  if (signature == null && multiSignature == null) {
    try {
      return address == toAddress();
    } catch (ex) {
      return false;
    }
  }

  // Verify signature
  if (signature != null) {
    final verified = await crypto.Ed25519().verify(
      getEncodedProgram(),
      signature: crypto.Signature(
        signature?.bytes ?? [],
        publicKey: address.toVerifyKey(),
      ),
    );

    return verified;
  }

  // Verify multisig
  final verified = await multiSignature?.verify(data: getEncodedProgram());
  return verified ?? false;
}