Address.parse constructor
Address.parse(
- ViteAddress address
Implementation
factory Address.parse(ViteAddress address) {
if (address.length != kViteAddressLength) {
throw Exception('Invalid address length');
}
if (!address.startsWith(kViteAddressPrefix)) {
throw Exception('Invalid Vite Address format');
}
final addressHex = address.substring(kViteAddressPrefix.length);
if (!utils.isHex(addressHex)) {
throw Exception('Invalid Vite Address format');
}
final coreHex = addressHex.substring(0, 2 * kAddressCoreSize);
final checksumHex = addressHex.substring(2 * kAddressCoreSize);
final core = utils.hexToBytes(coreHex);
final checksum = utils.digest(
data: core,
digestSize: kAddressChecksumSize,
);
if (checksum.hex == checksumHex) {
return Address.user(core);
} else if (checksum.complement.hex == checksumHex) {
return Address.contract(core);
} else {
throw Exception('Incorrect checksum');
}
}