@@ -32,26 +32,25 @@ def skip_test_if_missing_module(self):
32
32
def setup_network (self ):
33
33
self .setup_nodes ()
34
34
35
- def run_test (self ):
35
+ def run_test (self ):
36
36
self .log .info ("Mining blocks..." )
37
37
self .nodes [0 ].generate (1 )
38
38
self .nodes [1 ].generate (1 )
39
39
timestamp = self .nodes [1 ].getblock (self .nodes [1 ].getbestblockhash ())['mediantime' ]
40
40
41
41
node0_address1 = self .nodes [0 ].getaddressinfo (self .nodes [0 ].getnewaddress ())
42
42
43
- #Check only one address
43
+ # Check only one address
44
44
assert_equal (node0_address1 ['ismine' ], True )
45
45
46
- #Node 1 sync test
47
- assert_equal (self .nodes [1 ].getblockcount (),1 )
46
+ # Node 1 sync test
47
+ assert_equal (self .nodes [1 ].getblockcount (), 1 )
48
48
49
- #Address Test - before import
49
+ # Address Test - before import
50
50
address_info = self .nodes [1 ].getaddressinfo (node0_address1 ['address' ])
51
51
assert_equal (address_info ['iswatchonly' ], False )
52
52
assert_equal (address_info ['ismine' ], False )
53
53
54
-
55
54
# RPC importmulti -----------------------------------------------
56
55
57
56
# Bitcoin Address (implicit non-internal)
@@ -127,7 +126,6 @@ def run_test (self):
127
126
assert_equal (address_assert ['ismine' ], False )
128
127
assert_equal ('timestamp' in address_assert , False )
129
128
130
-
131
129
# Address + Public key + !Internal(explicit)
132
130
self .log .info ("Should import an address with public key" )
133
131
address = self .nodes [0 ].getaddressinfo (self .nodes [0 ].getnewaddress ())
@@ -136,7 +134,7 @@ def run_test (self):
136
134
"address" : address ['address' ]
137
135
},
138
136
"timestamp" : "now" ,
139
- "pubkeys" : [ address ['pubkey' ] ],
137
+ "pubkeys" : [address ['pubkey' ]],
140
138
"internal" : False
141
139
}])
142
140
assert_equal (result [0 ]['success' ], True )
@@ -145,14 +143,13 @@ def run_test (self):
145
143
assert_equal (address_assert ['ismine' ], False )
146
144
assert_equal (address_assert ['timestamp' ], timestamp )
147
145
148
-
149
146
# ScriptPubKey + Public key + internal
150
147
self .log .info ("Should import a scriptPubKey with internal and with public key" )
151
148
address = self .nodes [0 ].getaddressinfo (self .nodes [0 ].getnewaddress ())
152
149
request = [{
153
150
"scriptPubKey" : address ['scriptPubKey' ],
154
151
"timestamp" : "now" ,
155
- "pubkeys" : [ address ['pubkey' ] ],
152
+ "pubkeys" : [address ['pubkey' ]],
156
153
"internal" : True
157
154
}]
158
155
result = self .nodes [1 ].importmulti (requests = request )
@@ -168,7 +165,7 @@ def run_test (self):
168
165
request = [{
169
166
"scriptPubKey" : nonstandardScriptPubKey ,
170
167
"timestamp" : "now" ,
171
- "pubkeys" : [ address ['pubkey' ] ]
168
+ "pubkeys" : [address ['pubkey' ]]
172
169
}]
173
170
result = self .nodes [1 ].importmulti (requests = request )
174
171
assert_equal (result [0 ]['success' ], False )
@@ -187,7 +184,7 @@ def run_test (self):
187
184
"address" : address ['address' ]
188
185
},
189
186
"timestamp" : "now" ,
190
- "keys" : [ self .nodes [0 ].dumpprivkey (address ['address' ]) ]
187
+ "keys" : [self .nodes [0 ].dumpprivkey (address ['address' ])]
191
188
}])
192
189
assert_equal (result [0 ]['success' ], True )
193
190
address_assert = self .nodes [1 ].getaddressinfo (address ['address' ])
@@ -201,7 +198,7 @@ def run_test (self):
201
198
"address" : address ['address' ]
202
199
},
203
200
"timestamp" : "now" ,
204
- "keys" : [ self .nodes [0 ].dumpprivkey (address ['address' ]) ]
201
+ "keys" : [self .nodes [0 ].dumpprivkey (address ['address' ])]
205
202
}])
206
203
assert_equal (result [0 ]['success' ], False )
207
204
assert_equal (result [0 ]['error' ]['code' ], - 4 )
@@ -215,7 +212,7 @@ def run_test (self):
215
212
"address" : address ['address' ]
216
213
},
217
214
"timestamp" : "now" ,
218
- "keys" : [ self .nodes [0 ].dumpprivkey (address ['address' ]) ],
215
+ "keys" : [self .nodes [0 ].dumpprivkey (address ['address' ])],
219
216
"watchonly" : True
220
217
}])
221
218
assert_equal (result [0 ]['success' ], False )
@@ -232,7 +229,7 @@ def run_test (self):
232
229
result = self .nodes [1 ].importmulti ([{
233
230
"scriptPubKey" : address ['scriptPubKey' ],
234
231
"timestamp" : "now" ,
235
- "keys" : [ self .nodes [0 ].dumpprivkey (address ['address' ]) ],
232
+ "keys" : [self .nodes [0 ].dumpprivkey (address ['address' ])],
236
233
"internal" : True
237
234
}])
238
235
assert_equal (result [0 ]['success' ], True )
@@ -247,7 +244,7 @@ def run_test (self):
247
244
result = self .nodes [1 ].importmulti ([{
248
245
"scriptPubKey" : nonstandardScriptPubKey ,
249
246
"timestamp" : "now" ,
250
- "keys" : [ self .nodes [0 ].dumpprivkey (address ['address' ]) ]
247
+ "keys" : [self .nodes [0 ].dumpprivkey (address ['address' ])]
251
248
}])
252
249
assert_equal (result [0 ]['success' ], False )
253
250
assert_equal (result [0 ]['error' ]['code' ], - 8 )
@@ -257,7 +254,6 @@ def run_test (self):
257
254
assert_equal (address_assert ['ismine' ], False )
258
255
assert_equal ('timestamp' in address_assert , False )
259
256
260
-
261
257
# P2SH address
262
258
sig_address_1 = self .nodes [0 ].getaddressinfo (self .nodes [0 ].getnewaddress ())
263
259
sig_address_2 = self .nodes [0 ].getaddressinfo (self .nodes [0 ].getnewaddress ())
@@ -280,11 +276,10 @@ def run_test (self):
280
276
assert_equal (address_assert ['isscript' ], True )
281
277
assert_equal (address_assert ['iswatchonly' ], True )
282
278
assert_equal (address_assert ['timestamp' ], timestamp )
283
- p2shunspent = self .nodes [1 ].listunspent (0 ,999999 , [multi_sig_script ['address' ]])[0 ]
279
+ p2shunspent = self .nodes [1 ].listunspent (0 , 999999 , [multi_sig_script ['address' ]])[0 ]
284
280
assert_equal (p2shunspent ['spendable' ], False )
285
281
assert_equal (p2shunspent ['solvable' ], False )
286
282
287
-
288
283
# P2SH + Redeem script
289
284
sig_address_1 = self .nodes [0 ].getaddressinfo (self .nodes [0 ].getnewaddress ())
290
285
sig_address_2 = self .nodes [0 ].getaddressinfo (self .nodes [0 ].getnewaddress ())
@@ -307,11 +302,10 @@ def run_test (self):
307
302
address_assert = self .nodes [1 ].getaddressinfo (multi_sig_script ['address' ])
308
303
assert_equal (address_assert ['timestamp' ], timestamp )
309
304
310
- p2shunspent = self .nodes [1 ].listunspent (0 ,999999 , [multi_sig_script ['address' ]])[0 ]
305
+ p2shunspent = self .nodes [1 ].listunspent (0 , 999999 , [multi_sig_script ['address' ]])[0 ]
311
306
assert_equal (p2shunspent ['spendable' ], False )
312
307
assert_equal (p2shunspent ['solvable' ], True )
313
308
314
-
315
309
# P2SH + Redeem script + Private Keys + !Watchonly
316
310
sig_address_1 = self .nodes [0 ].getaddressinfo (self .nodes [0 ].getnewaddress ())
317
311
sig_address_2 = self .nodes [0 ].getaddressinfo (self .nodes [0 ].getnewaddress ())
@@ -329,13 +323,13 @@ def run_test (self):
329
323
},
330
324
"timestamp" : "now" ,
331
325
"redeemscript" : multi_sig_script ['redeemScript' ],
332
- "keys" : [ self .nodes [0 ].dumpprivkey (sig_address_1 ['address' ]), self .nodes [0 ].dumpprivkey (sig_address_2 ['address' ])]
326
+ "keys" : [self .nodes [0 ].dumpprivkey (sig_address_1 ['address' ]), self .nodes [0 ].dumpprivkey (sig_address_2 ['address' ])]
333
327
}])
334
328
assert_equal (result [0 ]['success' ], True )
335
329
address_assert = self .nodes [1 ].getaddressinfo (multi_sig_script ['address' ])
336
330
assert_equal (address_assert ['timestamp' ], timestamp )
337
331
338
- p2shunspent = self .nodes [1 ].listunspent (0 ,999999 , [multi_sig_script ['address' ]])[0 ]
332
+ p2shunspent = self .nodes [1 ].listunspent (0 , 999999 , [multi_sig_script ['address' ]])[0 ]
339
333
assert_equal (p2shunspent ['spendable' ], False )
340
334
assert_equal (p2shunspent ['solvable' ], True )
341
335
@@ -356,14 +350,13 @@ def run_test (self):
356
350
},
357
351
"timestamp" : "now" ,
358
352
"redeemscript" : multi_sig_script ['redeemScript' ],
359
- "keys" : [ self .nodes [0 ].dumpprivkey (sig_address_1 ['address' ]), self .nodes [0 ].dumpprivkey (sig_address_2 ['address' ])],
353
+ "keys" : [self .nodes [0 ].dumpprivkey (sig_address_1 ['address' ]), self .nodes [0 ].dumpprivkey (sig_address_2 ['address' ])],
360
354
"watchonly" : True
361
355
}])
362
356
assert_equal (result [0 ]['success' ], False )
363
357
assert_equal (result [0 ]['error' ]['code' ], - 8 )
364
358
assert_equal (result [0 ]['error' ]['message' ], 'Watch-only addresses should not include private keys' )
365
359
366
-
367
360
# Address + Public key + !Internal + Wrong pubkey
368
361
self .log .info ("Should not import an address with a wrong public key" )
369
362
address = self .nodes [0 ].getaddressinfo (self .nodes [0 ].getnewaddress ())
@@ -373,7 +366,7 @@ def run_test (self):
373
366
"address" : address ['address' ]
374
367
},
375
368
"timestamp" : "now" ,
376
- "pubkeys" : [ address2 ['pubkey' ] ]
369
+ "pubkeys" : [address2 ['pubkey' ]]
377
370
}])
378
371
assert_equal (result [0 ]['success' ], False )
379
372
assert_equal (result [0 ]['error' ]['code' ], - 5 )
@@ -383,15 +376,14 @@ def run_test (self):
383
376
assert_equal (address_assert ['ismine' ], False )
384
377
assert_equal ('timestamp' in address_assert , False )
385
378
386
-
387
379
# ScriptPubKey + Public key + internal + Wrong pubkey
388
380
self .log .info ("Should not import a scriptPubKey with internal and with a wrong public key" )
389
381
address = self .nodes [0 ].getaddressinfo (self .nodes [0 ].getnewaddress ())
390
382
address2 = self .nodes [0 ].getaddressinfo (self .nodes [0 ].getnewaddress ())
391
383
request = [{
392
384
"scriptPubKey" : address ['scriptPubKey' ],
393
385
"timestamp" : "now" ,
394
- "pubkeys" : [ address2 ['pubkey' ] ],
386
+ "pubkeys" : [address2 ['pubkey' ]],
395
387
"internal" : True
396
388
}]
397
389
result = self .nodes [1 ].importmulti (request )
@@ -403,7 +395,6 @@ def run_test (self):
403
395
assert_equal (address_assert ['ismine' ], False )
404
396
assert_equal ('timestamp' in address_assert , False )
405
397
406
-
407
398
# Address + Private key + !watchonly + Wrong private key
408
399
self .log .info ("Should not import an address with a wrong private key" )
409
400
address = self .nodes [0 ].getaddressinfo (self .nodes [0 ].getnewaddress ())
@@ -413,7 +404,7 @@ def run_test (self):
413
404
"address" : address ['address' ]
414
405
},
415
406
"timestamp" : "now" ,
416
- "keys" : [ self .nodes [0 ].dumpprivkey (address2 ['address' ]) ]
407
+ "keys" : [self .nodes [0 ].dumpprivkey (address2 ['address' ])]
417
408
}])
418
409
assert_equal (result [0 ]['success' ], False )
419
410
assert_equal (result [0 ]['error' ]['code' ], - 5 )
@@ -423,15 +414,14 @@ def run_test (self):
423
414
assert_equal (address_assert ['ismine' ], False )
424
415
assert_equal ('timestamp' in address_assert , False )
425
416
426
-
427
417
# ScriptPubKey + Private key + internal + Wrong private key
428
418
self .log .info ("Should not import a scriptPubKey with internal and with a wrong private key" )
429
419
address = self .nodes [0 ].getaddressinfo (self .nodes [0 ].getnewaddress ())
430
420
address2 = self .nodes [0 ].getaddressinfo (self .nodes [0 ].getnewaddress ())
431
421
result = self .nodes [1 ].importmulti ([{
432
422
"scriptPubKey" : address ['scriptPubKey' ],
433
423
"timestamp" : "now" ,
434
- "keys" : [ self .nodes [0 ].dumpprivkey (address2 ['address' ]) ],
424
+ "keys" : [self .nodes [0 ].dumpprivkey (address2 ['address' ])],
435
425
"internal" : True
436
426
}])
437
427
assert_equal (result [0 ]['success' ], False )
@@ -442,7 +432,6 @@ def run_test (self):
442
432
assert_equal (address_assert ['ismine' ], False )
443
433
assert_equal ('timestamp' in address_assert , False )
444
434
445
-
446
435
# Importing existing watch only address with new timestamp should replace saved timestamp.
447
436
assert_greater_than (timestamp , watchonly_timestamp )
448
437
self .log .info ("Should replace previously saved watch only timestamp." )
@@ -459,7 +448,6 @@ def run_test (self):
459
448
assert_equal (address_assert ['timestamp' ], timestamp )
460
449
watchonly_timestamp = timestamp
461
450
462
-
463
451
# restart nodes to check for proper serialization/deserialization of watch only address
464
452
self .stop_nodes ()
465
453
self .start_nodes ()
@@ -471,14 +459,12 @@ def run_test (self):
471
459
# Bad or missing timestamps
472
460
self .log .info ("Should throw on invalid or missing timestamp values" )
473
461
assert_raises_rpc_error (- 3 , 'Missing required timestamp field for key' ,
474
- self .nodes [1 ].importmulti , [{
475
- "scriptPubKey" : address ['scriptPubKey' ],
476
- }])
462
+ self .nodes [1 ].importmulti , [{"scriptPubKey" : address ['scriptPubKey' ]}])
477
463
assert_raises_rpc_error (- 3 , 'Expected number or "now" timestamp value for key. got type string' ,
478
- self .nodes [1 ].importmulti , [{
479
- "scriptPubKey" : address ['scriptPubKey' ],
480
- "timestamp" : "" ,
481
- }])
464
+ self .nodes [1 ].importmulti , [{
465
+ "scriptPubKey" : address ['scriptPubKey' ],
466
+ "timestamp" : ""
467
+ }])
482
468
483
469
# Import P2WPKH address as watch only
484
470
self .log .info ("Should import a P2WPKH address as watch only" )
@@ -502,7 +488,7 @@ def run_test (self):
502
488
"address" : address ['address' ]
503
489
},
504
490
"timestamp" : "now" ,
505
- "pubkeys" : [ address ['pubkey' ] ]
491
+ "pubkeys" : [address ['pubkey' ]]
506
492
}])
507
493
assert_equal (result [0 ]['success' ], True )
508
494
address_assert = self .nodes [1 ].getaddressinfo (address ['address' ])
@@ -547,7 +533,7 @@ def run_test (self):
547
533
},
548
534
"timestamp" : "now" ,
549
535
"witnessscript" : multi_sig_script ['redeemScript' ],
550
- "keys" : [ self .nodes [0 ].dumpprivkey (sig_address_1 ['address' ]), self .nodes [0 ].dumpprivkey (sig_address_2 ['address' ]) ]
536
+ "keys" : [self .nodes [0 ].dumpprivkey (sig_address_1 ['address' ]), self .nodes [0 ].dumpprivkey (sig_address_2 ['address' ])]
551
537
}])
552
538
assert_equal (result [0 ]['success' ], True )
553
539
address_assert = self .nodes [1 ].getaddressinfo (multi_sig_script ['address' ])
@@ -579,7 +565,7 @@ def run_test (self):
579
565
},
580
566
"timestamp" : "now" ,
581
567
"redeemscript" : bytes_to_hex_str (pkscript ),
582
- "pubkeys" : [ sig_address_1 ['pubkey' ] ]
568
+ "pubkeys" : [sig_address_1 ['pubkey' ]]
583
569
}])
584
570
assert_equal (result [0 ]['success' ], True )
585
571
address_assert = self .nodes [1 ].getaddressinfo (sig_address_1 ['address' ])
@@ -597,7 +583,7 @@ def run_test (self):
597
583
},
598
584
"timestamp" : "now" ,
599
585
"redeemscript" : bytes_to_hex_str (pkscript ),
600
- "keys" : [ self .nodes [0 ].dumpprivkey (sig_address_1 ['address' ])]
586
+ "keys" : [self .nodes [0 ].dumpprivkey (sig_address_1 ['address' ])]
601
587
}])
602
588
assert_equal (result [0 ]['success' ], True )
603
589
address_assert = self .nodes [1 ].getaddressinfo (sig_address_1 ['address' ])
@@ -623,4 +609,4 @@ def run_test (self):
623
609
assert_equal (address_assert ['solvable' ], True )
624
610
625
611
if __name__ == '__main__' :
626
- ImportMultiTest ().main ()
612
+ ImportMultiTest ().main ()
0 commit comments