Skip to content

Commit d42a8be

Browse files
committed
Update network_address.dart
1 parent 7a82c69 commit d42a8be

File tree

1 file changed

+55
-60
lines changed

1 file changed

+55
-60
lines changed

lib/src/bitcoin/address/network_address.dart

+55-60
Original file line numberDiff line numberDiff line change
@@ -2,104 +2,105 @@ part of 'package:bitcoin_base/src/bitcoin/address/address.dart';
22

33
/// An abstract class representing a forked address for a specific network.
44
abstract class BitcoinNetworkAddress<T extends BasedUtxoNetwork> {
5-
const BitcoinNetworkAddress();
5+
const BitcoinNetworkAddress._(
6+
{required this.address,
7+
required this.network,
8+
required this.baseAddress});
69

710
/// The underlying Bitcoin base address.
8-
abstract final BitcoinBaseAddress baseAddress;
11+
final BitcoinBaseAddress baseAddress;
912

1013
/// Converts the address to a string representation for the specified network [T].
11-
String toAddress([T? network]) {
12-
return network == null ? address : baseAddress.toAddress(network);
14+
String toAddress([T? updateNetwork]) {
15+
return updateNetwork == null
16+
? address
17+
: baseAddress.toAddress(updateNetwork);
1318
}
1419

1520
/// The type of the Bitcoin address.
1621
BitcoinAddressType get type => baseAddress.type;
1722

1823
/// The string representation of the address.
19-
abstract final String address;
24+
final String address;
25+
26+
final T network;
2027
}
2128

2229
/// A concrete implementation of [BitcoinNetworkAddress] for Bitcoin network.
2330
class BitcoinAddress extends BitcoinNetworkAddress<BitcoinNetwork> {
24-
const BitcoinAddress._(this.baseAddress, this.address);
31+
const BitcoinAddress._(
32+
BitcoinBaseAddress baseAddress, String address, BitcoinNetwork network)
33+
: super._(address: address, baseAddress: baseAddress, network: network);
2534
factory BitcoinAddress(String address,
2635
{BitcoinNetwork network = BitcoinNetwork.mainnet}) {
2736
return BitcoinAddress._(
28-
_BitcoinAddressUtils.decodeAddress(address, network), address);
37+
_BitcoinAddressUtils.decodeAddress(address, network), address, network);
2938
}
3039
factory BitcoinAddress.fromBaseAddress(BitcoinBaseAddress address,
31-
{DashNetwork network = DashNetwork.mainnet}) {
40+
{BitcoinNetwork network = BitcoinNetwork.mainnet}) {
3241
final baseAddress = _BitcoinAddressUtils.validateAddress(address, network);
33-
return BitcoinAddress._(baseAddress, baseAddress.toAddress(network));
42+
return BitcoinAddress._(
43+
baseAddress, baseAddress.toAddress(network), network);
3444
}
35-
@override
36-
final BitcoinBaseAddress baseAddress;
37-
@override
38-
final String address;
3945
}
4046

4147
/// A concrete implementation of [BitcoinNetworkAddress] for Doge network.
4248
class DogeAddress extends BitcoinNetworkAddress<DogecoinNetwork> {
43-
const DogeAddress._(this.baseAddress, this.address);
49+
const DogeAddress._(
50+
BitcoinBaseAddress baseAddress, String address, DogecoinNetwork network)
51+
: super._(address: address, baseAddress: baseAddress, network: network);
4452
factory DogeAddress(String address,
4553
{DogecoinNetwork network = DogecoinNetwork.mainnet}) {
4654
return DogeAddress._(
47-
_BitcoinAddressUtils.decodeAddress(address, network), address);
55+
_BitcoinAddressUtils.decodeAddress(address, network), address, network);
4856
}
4957
factory DogeAddress.fromBaseAddress(BitcoinBaseAddress address,
5058
{DogecoinNetwork network = DogecoinNetwork.mainnet}) {
5159
final baseAddress = _BitcoinAddressUtils.validateAddress(address, network);
52-
return DogeAddress._(baseAddress, baseAddress.toAddress(network));
60+
return DogeAddress._(baseAddress, baseAddress.toAddress(network), network);
5361
}
54-
@override
55-
final BitcoinBaseAddress baseAddress;
56-
57-
@override
58-
final String address;
5962
}
6063

6164
/// A concrete implementation of [BitcoinNetworkAddress] for Pepecoin network.
6265
class PepeAddress extends BitcoinNetworkAddress<PepeNetwork> {
63-
const PepeAddress._(this.baseAddress, this.address);
66+
const PepeAddress._(
67+
BitcoinBaseAddress baseAddress, String address, PepeNetwork network)
68+
: super._(address: address, network: network, baseAddress: baseAddress);
6469
factory PepeAddress(String address,
6570
{PepeNetwork network = PepeNetwork.mainnet}) {
6671
return PepeAddress._(
67-
_BitcoinAddressUtils.decodeAddress(address, network), address);
72+
_BitcoinAddressUtils.decodeAddress(address, network), address, network);
6873
}
6974
factory PepeAddress.fromBaseAddress(BitcoinBaseAddress address,
7075
{PepeNetwork network = PepeNetwork.mainnet}) {
7176
final baseAddress = _BitcoinAddressUtils.validateAddress(address, network);
72-
return PepeAddress._(baseAddress, baseAddress.toAddress(network));
77+
return PepeAddress._(baseAddress, baseAddress.toAddress(network), network);
7378
}
74-
@override
75-
final BitcoinBaseAddress baseAddress;
76-
77-
@override
78-
final String address;
7979
}
8080

8181
/// A concrete implementation of [BitcoinNetworkAddress] for Litecoin network.
8282
class LitecoinAddress extends BitcoinNetworkAddress<LitecoinNetwork> {
83-
LitecoinAddress._(this.baseAddress, this.address);
83+
const LitecoinAddress._(
84+
BitcoinBaseAddress baseAddress, String address, LitecoinNetwork network)
85+
: super._(address: address, baseAddress: baseAddress, network: network);
8486
factory LitecoinAddress(String address,
8587
{LitecoinNetwork network = LitecoinNetwork.mainnet}) {
8688
return LitecoinAddress._(
87-
_BitcoinAddressUtils.decodeAddress(address, network), address);
89+
_BitcoinAddressUtils.decodeAddress(address, network), address, network);
8890
}
8991
factory LitecoinAddress.fromBaseAddress(BitcoinBaseAddress address,
9092
{LitecoinNetwork network = LitecoinNetwork.mainnet}) {
9193
final baseAddress = _BitcoinAddressUtils.validateAddress(address, network);
92-
return LitecoinAddress._(baseAddress, baseAddress.toAddress(network));
94+
return LitecoinAddress._(
95+
baseAddress, baseAddress.toAddress(network), network);
9396
}
94-
@override
95-
final BitcoinBaseAddress baseAddress;
96-
@override
97-
final String address;
9897
}
9998

10099
/// A concrete implementation of [BitcoinNetworkAddress] for Bitcoin cash network.
101100
class BitcoinCashAddress extends BitcoinNetworkAddress<BitcoinCashNetwork> {
102-
const BitcoinCashAddress._(this.baseAddress, this.address);
101+
const BitcoinCashAddress._(BitcoinBaseAddress baseAddress, String address,
102+
BitcoinCashNetwork network)
103+
: super._(address: address, baseAddress: baseAddress, network: network);
103104
factory BitcoinCashAddress(String address,
104105
{BitcoinCashNetwork network = BitcoinCashNetwork.mainnet,
105106
bool validateNetworkPrefix = false}) {
@@ -109,61 +110,55 @@ class BitcoinCashAddress extends BitcoinNetworkAddress<BitcoinCashNetwork> {
109110
if (decodeAddress == null) {
110111
throw DartBitcoinPluginException("Invalid ${network.value} address.");
111112
}
112-
return BitcoinCashAddress._(decodeAddress, address);
113+
return BitcoinCashAddress._(decodeAddress, address, network);
113114
}
114115
factory BitcoinCashAddress.fromBaseAddress(BitcoinBaseAddress address,
115116
{BitcoinCashNetwork network = BitcoinCashNetwork.mainnet}) {
116117
final baseAddress = _BitcoinAddressUtils.validateAddress(address, network);
117-
return BitcoinCashAddress._(baseAddress, baseAddress.toAddress(network));
118+
return BitcoinCashAddress._(
119+
baseAddress, baseAddress.toAddress(network), network);
118120
}
119-
@override
120-
final BitcoinBaseAddress baseAddress;
121-
@override
122-
final String address;
123121

124122
@override
125-
String toAddress([BitcoinCashNetwork? network, String? prefix]) {
123+
String toAddress([BitcoinCashNetwork? updateNetwork, String? prefix]) {
126124
if (prefix != null) {
127125
return BchAddrConverter.convert(address, prefix, null);
128126
}
129-
return super.toAddress(network);
127+
return super.toAddress(updateNetwork);
130128
}
131129
}
132130

133131
/// A concrete implementation of [BitcoinNetworkAddress] for Dash network.
134132
class DashAddress extends BitcoinNetworkAddress<DashNetwork> {
135-
const DashAddress._(this.baseAddress, this.address);
133+
const DashAddress._(
134+
BitcoinBaseAddress baseAddress, String address, DashNetwork network)
135+
: super._(address: address, baseAddress: baseAddress, network: network);
136136
factory DashAddress(String address,
137137
{DashNetwork network = DashNetwork.mainnet}) {
138138
return DashAddress._(
139-
_BitcoinAddressUtils.decodeAddress(address, network), address);
139+
_BitcoinAddressUtils.decodeAddress(address, network), address, network);
140140
}
141141
factory DashAddress.fromBaseAddress(BitcoinBaseAddress address,
142142
{DashNetwork network = DashNetwork.mainnet}) {
143143
final baseAddress = _BitcoinAddressUtils.validateAddress(address, network);
144-
return DashAddress._(baseAddress, baseAddress.toAddress(network));
144+
return DashAddress._(baseAddress, baseAddress.toAddress(network), network);
145145
}
146-
@override
147-
final BitcoinBaseAddress baseAddress;
148-
@override
149-
final String address;
150146
}
151147

152148
/// A concrete implementation of [BitcoinNetworkAddress] for bitcoinSV network.
153-
class BitcoinSVAddress extends BitcoinNetworkAddress<DashNetwork> {
154-
const BitcoinSVAddress._(this.baseAddress, this.address);
149+
class BitcoinSVAddress extends BitcoinNetworkAddress<BitcoinSVNetwork> {
150+
const BitcoinSVAddress._(
151+
BitcoinBaseAddress baseAddress, String address, BitcoinSVNetwork network)
152+
: super._(address: address, baseAddress: baseAddress, network: network);
155153
factory BitcoinSVAddress(String address,
156154
{BitcoinSVNetwork network = BitcoinSVNetwork.mainnet}) {
157155
return BitcoinSVAddress._(
158-
_BitcoinAddressUtils.decodeAddress(address, network), address);
156+
_BitcoinAddressUtils.decodeAddress(address, network), address, network);
159157
}
160158
factory BitcoinSVAddress.fromBaseAddress(BitcoinBaseAddress address,
161159
{BitcoinSVNetwork network = BitcoinSVNetwork.mainnet}) {
162160
final baseAddress = _BitcoinAddressUtils.validateAddress(address, network);
163-
return BitcoinSVAddress._(baseAddress, baseAddress.toAddress(network));
161+
return BitcoinSVAddress._(
162+
baseAddress, baseAddress.toAddress(network), network);
164163
}
165-
@override
166-
final BitcoinBaseAddress baseAddress;
167-
@override
168-
final String address;
169164
}

0 commit comments

Comments
 (0)