@@ -168,6 +168,8 @@ pub enum BuildError {
168168 WalletSetupFailed ,
169169 /// We failed to setup the logger.
170170 LoggerSetupFailed ,
171+ /// The given network does not match the node's previously configured network.
172+ NetworkMismatch ,
171173}
172174
173175impl fmt:: Display for BuildError {
@@ -189,6 +191,9 @@ impl fmt::Display for BuildError {
189191 Self :: WalletSetupFailed => write ! ( f, "Failed to setup onchain wallet." ) ,
190192 Self :: LoggerSetupFailed => write ! ( f, "Failed to setup the logger." ) ,
191193 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+ } ,
192197 }
193198 }
194199}
@@ -904,9 +909,25 @@ fn build_with_store_internal(
904909 . extract_keys ( )
905910 . check_network ( config. network )
906911 . 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+ } ,
910931 } ) ?;
911932 let bdk_wallet = match wallet_opt {
912933 Some ( wallet) => wallet,
0 commit comments