encodeCashAddress function
Encodes a hash from a given type into an eCash address with the given prefix.
prefix Cash address prefix. E.g.: 'ecash'.
type Type of address to generate
hash Hash to encode represented as an array of 8-bit integers or hex string.
Throws ValidationError
Implementation
String encodeCashAddress(String prefix, AddressType type, dynamic hash) {
validate(_isValidPrefix(prefix), 'Invalid prefix: $prefix.');
validate(
hash is Uint8List || hash is String,
'Invalid hash: $hash. Must be string or Uint8List.',
);
if (hash is String) {
hash = _stringToUint8Array(hash);
}
final Uint8List prefixData = _concat(
_prefixToUint5Array(prefix),
Uint8List(1),
);
final int versionByte = _getTypeBits(type) + _getHashSizeBits(hash);
final Uint8List payloadData = _toUint5Array(
_concat(Uint8List.fromList([versionByte]), hash),
);
final Uint8List checksumData = _concat(
_concat(prefixData, payloadData),
Uint8List(8),
);
final Uint8List payload = _concat(
payloadData,
_checksumToUint5Array(_polymod(checksumData)),
);
return '$prefix:${base32.encode(payload)}';
}