decode static method

Map decode(
  1. String encoded
)

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');
  }
}