@@ -8,6 +8,8 @@ use serde::{Deserialize, Serialize};
8
8
type IndexedTxGraphChangeSet =
9
9
indexed_tx_graph:: ChangeSet < ConfirmationBlockTime , keychain_txout:: ChangeSet > ;
10
10
11
+ use crate :: keyring;
12
+
11
13
/// A change set for [`Wallet`]
12
14
///
13
15
/// ## Definition
@@ -101,14 +103,10 @@ type IndexedTxGraphChangeSet =
101
103
/// [`WalletPersister`]: crate::WalletPersister
102
104
/// [`Wallet::staged`]: crate::Wallet::staged
103
105
/// [`Wallet`]: crate::Wallet
104
- #[ derive( Default , Debug , Clone , PartialEq , Deserialize , Serialize ) ]
105
- pub struct ChangeSet {
106
- /// Descriptor for recipient addresses.
107
- pub descriptor : Option < Descriptor < DescriptorPublicKey > > ,
108
- /// Descriptor for change addresses.
109
- pub change_descriptor : Option < Descriptor < DescriptorPublicKey > > ,
110
- /// Stores the network type of the transaction data.
111
- pub network : Option < bitcoin:: Network > ,
106
+ #[ derive( Debug , Clone , PartialEq , Deserialize , Serialize ) ]
107
+ pub struct ChangeSet < K : Ord > {
108
+ /// Stores the `KeyRing` containing the network and descriptor data.
109
+ pub keyring : keyring:: changeset:: ChangeSet < K > ,
112
110
/// Changes to the [`LocalChain`](local_chain::LocalChain).
113
111
pub local_chain : local_chain:: ChangeSet ,
114
112
/// Changes to [`TxGraph`](tx_graph::TxGraph).
@@ -117,41 +115,34 @@ pub struct ChangeSet {
117
115
pub indexer : keychain_txout:: ChangeSet ,
118
116
}
119
117
120
- impl Merge for ChangeSet {
121
- /// Merge another [`ChangeSet`] into itself.
122
- fn merge ( & mut self , other : Self ) {
123
- if other. descriptor . is_some ( ) {
124
- debug_assert ! (
125
- self . descriptor. is_none( ) || self . descriptor == other. descriptor,
126
- "descriptor must never change"
127
- ) ;
128
- self . descriptor = other. descriptor ;
129
- }
130
- if other. change_descriptor . is_some ( ) {
131
- debug_assert ! (
132
- self . change_descriptor. is_none( )
133
- || self . change_descriptor == other. change_descriptor,
134
- "change descriptor must never change"
135
- ) ;
136
- self . change_descriptor = other. change_descriptor ;
137
- }
138
- if other. network . is_some ( ) {
139
- debug_assert ! (
140
- self . network. is_none( ) || self . network == other. network,
141
- "network must never change"
142
- ) ;
143
- self . network = other. network ;
118
+ impl < K > Default for ChangeSet < K >
119
+ where
120
+ K : Ord ,
121
+ {
122
+ fn default ( ) -> Self {
123
+ Self {
124
+ keyring : Default :: default ( ) ,
125
+ local_chain : Default :: default ( ) ,
126
+ tx_graph : Default :: default ( ) ,
127
+ indexer : Default :: default ( ) ,
144
128
}
129
+ }
130
+ }
145
131
132
+ impl < K > Merge for ChangeSet < K >
133
+ where
134
+ K : Ord ,
135
+ {
136
+ /// Merge another [`ChangeSet`] into itself.
137
+ fn merge ( & mut self , other : Self ) {
138
+ Merge :: merge ( & mut self . keyring , other. keyring ) ;
146
139
Merge :: merge ( & mut self . local_chain , other. local_chain ) ;
147
140
Merge :: merge ( & mut self . tx_graph , other. tx_graph ) ;
148
141
Merge :: merge ( & mut self . indexer , other. indexer ) ;
149
142
}
150
143
151
144
fn is_empty ( & self ) -> bool {
152
- self . descriptor . is_none ( )
153
- && self . change_descriptor . is_none ( )
154
- && self . network . is_none ( )
145
+ self . keyring . is_empty ( )
155
146
&& self . local_chain . is_empty ( )
156
147
&& self . tx_graph . is_empty ( )
157
148
&& self . indexer . is_empty ( )
@@ -276,7 +267,7 @@ impl Merge for ChangeSet {
276
267
// }
277
268
// }
278
269
279
- impl From < local_chain:: ChangeSet > for ChangeSet {
270
+ impl < K : Ord > From < local_chain:: ChangeSet > for ChangeSet < K > {
280
271
fn from ( chain : local_chain:: ChangeSet ) -> Self {
281
272
Self {
282
273
local_chain : chain,
@@ -285,7 +276,7 @@ impl From<local_chain::ChangeSet> for ChangeSet {
285
276
}
286
277
}
287
278
288
- impl From < IndexedTxGraphChangeSet > for ChangeSet {
279
+ impl < K : Ord > From < IndexedTxGraphChangeSet > for ChangeSet < K > {
289
280
fn from ( indexed_tx_graph : IndexedTxGraphChangeSet ) -> Self {
290
281
Self {
291
282
tx_graph : indexed_tx_graph. tx_graph ,
@@ -295,7 +286,7 @@ impl From<IndexedTxGraphChangeSet> for ChangeSet {
295
286
}
296
287
}
297
288
298
- impl From < tx_graph:: ChangeSet < ConfirmationBlockTime > > for ChangeSet {
289
+ impl < K : Ord > From < tx_graph:: ChangeSet < ConfirmationBlockTime > > for ChangeSet < K > {
299
290
fn from ( tx_graph : tx_graph:: ChangeSet < ConfirmationBlockTime > ) -> Self {
300
291
Self {
301
292
tx_graph,
@@ -304,7 +295,7 @@ impl From<tx_graph::ChangeSet<ConfirmationBlockTime>> for ChangeSet {
304
295
}
305
296
}
306
297
307
- impl From < keychain_txout:: ChangeSet > for ChangeSet {
298
+ impl < K : Ord > From < keychain_txout:: ChangeSet > for ChangeSet < K > {
308
299
fn from ( indexer : keychain_txout:: ChangeSet ) -> Self {
309
300
Self {
310
301
indexer,
0 commit comments