decode static method
Decodes an MNID string into its corresponding network identifier and Ethereum address.
encoded
- The MNID string to be decoded.
Returns a Map with 'network' and 'address' keys.
Throws an exception if the address checksum is invalid.
Implementation
static Map decode(String encoded) {
final Uint8List data = base58.decode(encoded);
final netLength = data.length - 24;
final version = data.sublist(0, 1);
final network = data.sublist(1, netLength);
final address = data.sublist(netLength, 20 + netLength);
final check = data.sublist(netLength + 20);
final List<int> flat = Uint8List.fromList(
[version, network, address].expand((element) => element).toList(),
);
if (check.equals(checksum(flat))) {
return {
"network": '0x${hex.encode(network)}',
"address": '0x${HEX.encode(address)}'
};
} else {
throw Exception('Invalid address checksum');
}
}