CakeWallet/cw_bitcoin/lib/address_from_output.dart
2025-06-26 09:22:15 +03:00

33 lines
1 KiB
Dart

import 'package:bitcoin_base/bitcoin_base.dart';
String addressFromOutputScript(Script script, BasedUtxoNetwork network) {
try {
return addressFromScript(script, network).toAddress(network);
} catch (_) {}
return '';
}
BitcoinBaseAddress addressFromScript(Script script,
[BasedUtxoNetwork network = BitcoinNetwork.mainnet]) {
final addressType = script.getAddressType();
if (addressType == null) {
throw ArgumentError("Invalid script");
}
switch (addressType) {
case P2pkhAddressType.p2pkh:
return P2pkhAddress.fromScriptPubkey(script: script);
case P2shAddressType.p2pkhInP2sh:
case P2shAddressType.p2pkInP2sh:
return P2shAddress.fromScriptPubkey(script: script);
case SegwitAddressType.p2wpkh:
return P2wpkhAddress.fromScriptPubkey(script: script);
case SegwitAddressType.p2wsh:
return P2wshAddress.fromScriptPubkey(script: script);
case SegwitAddressType.p2tr:
return P2trAddress.fromScriptPubkey(script: script);
}
throw ArgumentError("Invalid script");
}