getRCDFromFactoidAddress function
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;
}