encodeCashAddress function

String encodeCashAddress(
  1. String prefix,
  2. AddressType type,
  3. dynamic hash
)

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