getRCDFromFactoidAddress function

Uint8List getRCDFromFactoidAddress(
  1. String faAddress
)

Implementation

Uint8List getRCDFromFactoidAddress(String faAddress) {
  Uint8List? _rcd1Hash = Uint8List(1);

  if (faAddress.length != 52) {
    print("invalid factoid address length");
    return _rcd1Hash;
  }

  if (!faAddress.startsWith("FA")) {
    print("invalid factoid address prefix: $faAddress");
    return _rcd1Hash;
  }

  Uint8List faPrefix = [0x5f, 0xb1].asUint8List();
  var decodedFA = base58.decode(faAddress);

  if (!( ListEquality().equals(decodedFA.sublist(0, 2), faPrefix))) {
    print("invalid factoid base58 encoding prefix: $faAddress");
    return _rcd1Hash;
  }

  var checksumPre  = sha256.convert(decodedFA.sublist(0, 34));
  var checksum =  sha256.convert(checksumPre.bytes.asUint8List()).bytes.asUint8List();

  if( !(ListEquality().equals(decodedFA.sublist(34), checksum.sublist(0,4)) )){
    print("invalid checksum on factoid address: $faAddress");
    return _rcd1Hash;
  }

  _rcd1Hash = decodedFA.sublist(2, 34);
  return _rcd1Hash;
}