addressToOutputScript static method
Implementation
static Uint8List? addressToOutputScript(String address, [NetworkType? nw]) {
final network = nw ?? bitcoin;
bool flag = false;
final parts = address.split(':');
if(parts.length == 2 && parts[0] == 'bitcoincash'){
final reAddress = bchToLegacy(address);
address = reAddress;
}
try {
final decodeBase58 = bs58check.decode(address);
if (decodeBase58[0] == network.pubKeyHash) return P2PKH(data: PaymentData(address: address), network: network).data.output;
if (decodeBase58[0] == network.scriptHash) return P2SH(data: PaymentData(address: address), network: network).data.output;
throw ArgumentError('Invalid version or Network mismatch');
} catch (e) {
flag = true;
}
try {
final decodeBech32 = bech32.decode(address);
if (network.bech32 != decodeBech32.hrp) throw ArgumentError('Invalid prefix or Network mismatch');
final p2wpkh = P2WPKH(data: PaymentData(address: address), network: network);
return p2wpkh.data.output;
} catch (e) {
flag = true;
}
try {
final decodeBech32m = bech32.decode(address, encoding: 'bech32m');
if (network.bech32 != decodeBech32m.hrp) throw ArgumentError('Invalid prefix or Network mismatch');
final hash = Uint8List.fromList(convertBits(decodeBech32m.data.sublist(1), 5, 8, strictMode: true));
return compile([OPS['OP_1'], hash]);
} catch (e) {
flag = true;
}
if(flag) throw ArgumentError('$address has no matching Script');
}