bchToLegacy static method

String bchToLegacy(
  1. String addr, {
  2. String? prefix,
})

Implementation

static String bchToLegacy(String addr, {String? prefix}) {
  final parts = addr.split(':');
  final cashAddressPrefix = (prefix ?? parts.first).toLowerCase();
  if (parts.length != 2 || !validateCashAddress(addr, cashAddressPrefix)) {
    throw ArgumentError('Invalid CashAddr');
  }
  final payload = base32Decode(parts[1]);
  final decoded = convertBits(
    payload.sublist(0, payload.length - 8),
    5,
    8,
    strictMode: true,
  );
  final isScriptHash = decoded.first & 0x78 == 8;
  final isMainnet = cashAddressPrefix == 'bitcoincash';
  final legacyVersion = isMainnet
      ? (isScriptHash ? 0x05 : 0x00)
      : (isScriptHash ? 0xc4 : 0x6f);
  return bs58check.encode(
    Uint8List.fromList([legacyVersion, ...decoded.sublist(1)]),
  );
}