legacyToBch static method
Implementation
static String legacyToBch({required String address, required String prefix}) {
final decode = bs58check.decode(address);
final hash = decode.sublist(1);
final normalizedPrefix = prefix.toLowerCase();
final isMainnet = normalizedPrefix == 'bitcoincash';
final pubKeyHashVersion = isMainnet ? 0x00 : 0x6f;
final scriptHashVersion = isMainnet ? 0x05 : 0xc4;
final type = decode.first == pubKeyHashVersion
? 'P2PKH'
: decode.first == scriptHashVersion
? 'P2SH'
: throw ArgumentError('Legacy address does not match CashAddr network');
final prefixData = prefixToUint5Array(normalizedPrefix) + [0];
final versionByte = getTypeBits(type) + getHashSizeBits(hash);
final payloadData = convertBits([versionByte] + hash, 8, 5);
final checksumData =
prefixData + payloadData + List.generate(8, (index) => 0);
final payload = payloadData + checksumToUint5Array(polymod(checksumData));
return '$normalizedPrefix:${base32Encode(payload)}';
}