ADAByronAddr.deserialize constructor
ADAByronAddr.deserialize(
- List<int> serAddrBytes
)
Implementation
factory ADAByronAddr.deserialize(List<int> serAddrBytes) {
final addrBytes = CborListValue.decode(serAddrBytes);
if (addrBytes.value.length != 2) {
throw AddressConverterException.addressBytesValidationFailed();
}
if (!addrBytes.isTypeAt<CborTagValue>(0) ||
!addrBytes.isTypeAt<CborIntValue>(1)) {
throw AddressConverterException.addressBytesValidationFailed();
}
final decodeCbor = addrBytes.objectAt<CborTagValue>(0);
if (decodeCbor.tags.isEmpty ||
decodeCbor.tags.first != ADAByronAddrConst.payloadTag ||
decodeCbor.value is! CborBytesValue) {
throw AddressConverterException.addressBytesValidationFailed();
}
final crcTag = addrBytes.objectAt<CborIntValue>(1).value;
final List<int> payloadBytes = decodeCbor.asValue<CborBytesValue>().value;
final crc32Got = Crc32().quickIntDigest(payloadBytes);
if (crc32Got != crcTag) {
throw AddressConverterException.addressBytesValidationFailed();
}
return ADAByronAddr(payload: ADAByronAddrPayload.deserialize(payloadBytes));
}