dev
dart 33 lines 1.18 KB
Raw
1 import 'package:bitcoin_base/bitcoin_base.dart';
2
3 String addressFromOutputScript(Script script, BasedUtxoNetwork network) {
4 try {
5 return addressFromScript(script, network).toAddress(network);
6 } catch (_) {}
7
8 return '';
9 }
10
11 BitcoinBaseAddress addressFromScript(Script script,
12 [BasedUtxoNetwork network = BitcoinNetwork.mainnet]) {
13 final addressType = script.getAddressType();
14 if (addressType == null) {
15 throw ArgumentError("Invalid script");
16 }
17
18 switch (addressType) {
19 case P2pkhAddressType.p2pkh:
20 return P2pkhAddress.fromScriptPubkey(script: script, network: BitcoinNetwork.mainnet);
21 case P2shAddressType.p2pkhInP2sh:
22 case P2shAddressType.p2pkInP2sh:
23 return P2shAddress.fromScriptPubkey(script: script, network: BitcoinNetwork.mainnet);
24 case SegwitAddresType.p2wpkh:
25 return P2wpkhAddress.fromScriptPubkey(script: script, network: BitcoinNetwork.mainnet);
26 case SegwitAddresType.p2wsh:
27 return P2wshAddress.fromScriptPubkey(script: script, network: BitcoinNetwork.mainnet);
28 case SegwitAddresType.p2tr:
29 return P2trAddress.fromScriptPubkey(script: script, network: BitcoinNetwork.mainnet);
30 }
31
32 throw ArgumentError("Invalid script");
33 }