@@ -278,18 +278,54 @@ pub trait RpcApi: Sized {
278
278
blank : Option < bool > ,
279
279
passphrase : Option < & str > ,
280
280
avoid_reuse : Option < bool > ,
281
+ descriptors : Option < bool > ,
281
282
) -> Result < json:: LoadWalletResult > {
282
- let mut args = [
283
- wallet. into ( ) ,
284
- opt_into_json ( disable_private_keys) ?,
285
- opt_into_json ( blank) ?,
286
- opt_into_json ( passphrase) ?,
287
- opt_into_json ( avoid_reuse) ?,
288
- ] ;
289
- self . call (
290
- "createwallet" ,
291
- handle_defaults ( & mut args, & [ false . into ( ) , false . into ( ) , into_json ( "" ) ?, false . into ( ) ] ) ,
292
- )
283
+ // the descriptors argument was added in version 21
284
+ if self . version ( ) ? < 210000 {
285
+ // note: we allow Some(false) since it's the default behavior
286
+ if let Some ( true ) = descriptors {
287
+ return Err ( Error :: Unsupported ) ;
288
+ }
289
+ // no descriptors argument yet
290
+ let mut args = [
291
+ wallet. into ( ) ,
292
+ opt_into_json ( disable_private_keys) ?,
293
+ opt_into_json ( blank) ?,
294
+ opt_into_json ( passphrase) ?,
295
+ opt_into_json ( avoid_reuse) ?,
296
+ ] ;
297
+ self . call (
298
+ "createwallet" ,
299
+ handle_defaults (
300
+ & mut args,
301
+ & [ false . into ( ) , false . into ( ) , into_json ( "" ) ?, false . into ( ) ] ,
302
+ ) ,
303
+ )
304
+ } else {
305
+ let mut args = [
306
+ wallet. into ( ) ,
307
+ opt_into_json ( disable_private_keys) ?,
308
+ opt_into_json ( blank) ?,
309
+ opt_into_json ( passphrase) ?,
310
+ opt_into_json ( avoid_reuse) ?,
311
+ opt_into_json ( descriptors) ?,
312
+ ] ;
313
+ // from 23 on, the default value of the descriptors argument is true
314
+ let default_descriptors = self . version ( ) ? >= 230000 ;
315
+ self . call (
316
+ "createwallet" ,
317
+ handle_defaults (
318
+ & mut args,
319
+ & [
320
+ false . into ( ) ,
321
+ false . into ( ) ,
322
+ into_json ( "" ) ?,
323
+ false . into ( ) ,
324
+ default_descriptors. into ( ) ,
325
+ ] ,
326
+ ) ,
327
+ )
328
+ }
293
329
}
294
330
295
331
fn list_wallets ( & self ) -> Result < Vec < String > > {
0 commit comments