@@ -168,6 +168,8 @@ pub enum BuildError {
168
168
WalletSetupFailed ,
169
169
/// We failed to setup the logger.
170
170
LoggerSetupFailed ,
171
+ /// The given network does not match the node's previously configured network.
172
+ NetworkMismatch ,
171
173
}
172
174
173
175
impl fmt:: Display for BuildError {
@@ -189,6 +191,9 @@ impl fmt::Display for BuildError {
189
191
Self :: WalletSetupFailed => write ! ( f, "Failed to setup onchain wallet." ) ,
190
192
Self :: LoggerSetupFailed => write ! ( f, "Failed to setup the logger." ) ,
191
193
Self :: InvalidNodeAlias => write ! ( f, "Given node alias is invalid." ) ,
194
+ Self :: NetworkMismatch => {
195
+ write ! ( f, "Given network does not match the node's previously configured network." )
196
+ } ,
192
197
}
193
198
}
194
199
}
@@ -904,9 +909,25 @@ fn build_with_store_internal(
904
909
. extract_keys ( )
905
910
. check_network ( config. network )
906
911
. load_wallet ( & mut wallet_persister)
907
- . map_err ( |e| {
908
- log_error ! ( logger, "Failed to set up wallet: {}" , e) ;
909
- BuildError :: WalletSetupFailed
912
+ . map_err ( |e| match e {
913
+ bdk_wallet:: LoadWithPersistError :: InvalidChangeSet (
914
+ bdk_wallet:: LoadError :: Mismatch ( bdk_wallet:: LoadMismatch :: Network {
915
+ loaded,
916
+ expected,
917
+ } ) ,
918
+ ) => {
919
+ log_error ! (
920
+ logger,
921
+ "Failed to setup wallet: Networks do not match. Expected {} but got {}" ,
922
+ expected,
923
+ loaded
924
+ ) ;
925
+ BuildError :: NetworkMismatch
926
+ } ,
927
+ _ => {
928
+ log_error ! ( logger, "Failed to set up wallet: {}" , e) ;
929
+ BuildError :: WalletSetupFailed
930
+ } ,
910
931
} ) ?;
911
932
let bdk_wallet = match wallet_opt {
912
933
Some ( wallet) => wallet,
0 commit comments