summaryrefslogtreecommitdiff
path: root/d5/ff26067fbd00c489afa0302626fcc857d03862
blob: 6189ad881b4378731c09834c68da9ea1dcf1d96c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
Return-Path: <luke@dashjr.org>
Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
	[172.17.192.35])
	by mail.linuxfoundation.org (Postfix) with ESMTPS id 886883EA0
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Sat,  4 May 2019 02:50:38 +0000 (UTC)
X-Greylist: from auto-whitelisted by SQLgrey-1.7.6
Received: from zinan.dashjr.org (zinan.dashjr.org [192.3.11.21])
	by smtp1.linuxfoundation.org (Postfix) with ESMTP id E7FDA87
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Sat,  4 May 2019 02:50:33 +0000 (UTC)
Received: from ishibashi.lan (adsl-98-70-226-33.gnv.bellsouth.net
	[98.70.226.33]) (Authenticated sender: luke-jr)
	by zinan.dashjr.org (Postfix) with ESMTPSA id 97D5E38A0C76
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Sat,  4 May 2019 02:50:30 +0000 (UTC)
X-Hashcash: 1:25:190504:bitcoin-dev@lists.linuxfoundation.org::UqcUBYbk5YKItUEY:bNrO
From: Luke Dashjr <luke@dashjr.org>
To: Bitcoin development mailing list <bitcoin-dev@lists.linuxfoundation.org>
Date: Sat, 4 May 2019 02:50:02 +0000
User-Agent: KMail/1.9.10
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="nextPart5828916.evidevtqpS";
	protocol="application/pgp-signature"; micalg=pgp-sha1
Content-Transfer-Encoding: 7bit
Message-Id: <201905040250.10240.luke@dashjr.org>
X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,BIGNUM_EMAILS,
	RCVD_IN_DNSWL_MED autolearn=no version=3.3.1
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
	smtp1.linux-foundation.org
X-Mailman-Approved-At: Sun, 05 May 2019 02:29:53 +0000
Subject: [bitcoin-dev] Bitcoin Knots 0.18.0.knots20190502 released
X-BeenThere: bitcoin-dev@lists.linuxfoundation.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Bitcoin Protocol Discussion <bitcoin-dev.lists.linuxfoundation.org>
List-Unsubscribe: <https://lists.linuxfoundation.org/mailman/options/bitcoin-dev>,
	<mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=unsubscribe>
List-Archive: <http://lists.linuxfoundation.org/pipermail/bitcoin-dev/>
List-Post: <mailto:bitcoin-dev@lists.linuxfoundation.org>
List-Help: <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=help>
List-Subscribe: <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>,
	<mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=subscribe>
X-List-Received-Date: Sat, 04 May 2019 02:50:38 -0000

--nextPart5828916.evidevtqpS
Content-Type: text/plain;
  charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Bitcoin Knots version *0.18.0.knots20190502* is now available from:

  <https://bitcoinknots.org/files/0.18.x/0.18.0.knots20190502/>

This is a new major version release, including new features, various bug
fixes and performance improvements, as well as updated translations.

Please report bugs using the issue tracker at GitHub:

  <https://github.com/bitcoinknots/bitcoin/issues>

How to Upgrade
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

If you are running an older version, shut it down. Wait until it has
completely shut down (which might take a few minutes for older
versions), then run the installer (on Windows) or just copy over
`/Applications/Bitcoin-Qt` (on Mac) or `bitcoind`/`bitcoin-qt` (on
Linux).

The first time you run version 0.15.0 or newer, your chainstate database
will be converted to a new format, which will take anywhere from a few
minutes to half an hour, depending on the speed of your machine.

Note that the block database format also changed in version 0.8.0 and
there is no automatic upgrade code from before version 0.8 to version
0.15.0 or later. Upgrading directly from 0.7.x and earlier without
redownloading the blockchain is not supported.  However, as usual, old
wallet versions are still supported.

Compatibility
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Bitcoin Knots is supported on operating systems using the Linux kernel,
macOS 10.10+, and Windows 7 and newer. It is not recommended to use
Bitcoin Knots on unsupported systems.

=46rom 0.17.0 onwards, macOS <10.10 is no longer supported. 0.17.0 is
built using Qt 5.9.x, which doesn't support versions of macOS older than
10.10. Additionally, Bitcoin Knots does not yet change appearance when
macOS "dark mode" is activated.

In addition to previously-supported CPU platforms, this release's
pre-compiled distribution also provides binaries for the RISC-V
platform.

If you are using the `systemd` unit configuration file located at
`contrib/init/bitcoind.service`, it has been changed to use
`/var/lib/bitcoind` as the data directory instead of
`~bitcoin/.bitcoin`. When switching over to the new configuration file,
please make sure that the filesystem on which `/var/lib/bitcoind` will
exist has enough space (check using `df -h /var/lib/bitcoind`), and
optionally copy over your existing data directory. See the [systemd init
file section](#systemd-init-file) for more details.

Known issues
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Wallet GUI
=2D---------

=46or advanced users who have both (1) enabled coin control features, and
(2) are using multiple wallets loaded at the same time: The coin control
input selection dialog can erroneously retain wrong-wallet state when
switching wallets using the dropdown menu. For now, it is recommended
not to use coin control features with multiple wallets loaded.

Notable changes
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Policy
=2D-----

=2D Previously, transactions sending to future Bech32 address versions
  would be rejected, which could lead to stuck transactions, locking
  up change. This has been relaxed by default to mitigate the issue.
  For 0.18.0, the `-sendtofuture=3D0` option (also available in the
  GUI Mempool Settings tab) can restore the old policy, but this is
  discouraged, and will be removed in the future.

Mining
=2D-----

=2D Calls to `getblocktemplate` will fail if the segwit rule is not
  specified.  Calling `getblocktemplate` without segwit specified is
  almost certainly a misconfiguration since doing so results in lower
  rewards for the miner.  Failed calls will produce an error message
  describing how to enable the segwit rule.

=2D By default, blocks mined with Bitcoin Knots will be limited to 300k
  in size, or 1.5 MWU in weight. Note these defaults are just healthy
  recommendations, and can be overridden with the `-blockmaxsize` and
  `-blockmaxweight` options.

Configuration option changes
=2D---------------------------

=2D A warning is printed if an unrecognized section name is used in the
  configuration file.  Recognized sections are `[test]`, `[main]`, and
  `[regtest]`.

=2D The `rpcallowip` option can no longer be used to automatically listen
  on all network interfaces.  Instead, the `rpcbind` parameter must be
  used to specify the IP addresses to listen on.  Listening for RPC
  commands over a public network connection is insecure and should be
  disabled, so a warning is now printed if a user selects such a
  configuration.  If you need to expose RPC in order to use a tool like
  Docker, ensure you only bind RPC to your localhost, e.g. `docker run
  [...] -p 127.0.0.1:8332:8332` (this is an extra `:8332` over the
  normal Docker port specification).

=2D The `rpcpassword` option now causes a startup error if the password
  set in the configuration file contains a hash character (#), as it's
  ambiguous whether the hash character is meant for the password or as a
  comment.

=2D The `whitelistforcerelay` option is used to relay transactions from
  whitelisted peers even when not accepted to the mempool. This option
  now defaults to being off, so that changes in policy and
  disconnect/ban behavior will not cause a node that is whitelisting
  another to be dropped by peers.  Users can still explicitly enable
  this behavior with the command line option (and may want to consider
  [contacting](https://bitcoincore.org/en/contact/) the Bitcoin Core
  project to let us know about their use-case, as this feature could be
  deprecated in the future).

=2D The `startupnotify` option is used to specify a command to execute when
  Bitcoin Knots has finished with its startup sequence.

systemd init file
=2D----------------

The systemd init file (`contrib/init/bitcoind.service`) has been changed
to use `/var/lib/bitcoind` as the data directory instead of
`~bitcoin/.bitcoin`. This change makes Bitcoin Knots more consistent with
other services, and makes the systemd init config more consistent with
existing Upstart and OpenRC configs.

The configuration, PID, and data directories are now completely managed
by systemd, which will take care of their creation, permissions, etc.
See [`systemd.exec(5)`]
(https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Runtime=
Directory=3D)
for more details.

When using the provided init files under `contrib/init`, overriding the
`datadir` option in `/etc/bitcoin/bitcoin.conf` will have no effect.
This is because the command line arguments specified in the init files
take precedence over the options specified in
`/etc/bitcoin/bitcoin.conf`.


Documentation
=2D------------

=2D A new short [document]
(https://github.com/bitcoin/bitcoin/blob/master/doc/JSON-RPC-interface.md)
  about the JSON-RPC interface describes cases where the results of an
  RPC might contain inconsistencies between data sourced from different
  subsystems, such as wallet state and mempool state.  A note is added
  to the [REST interface documentation]
(https://github.com/bitcoin/bitcoin/blob/master/doc/REST-interface.md)
  indicating that the same rules apply.

=2D Further information is added to the [JSON-RPC
  documentation]
(https://github.com/bitcoin/bitcoin/blob/master/doc/JSON-RPC-interface.md)
  about how to secure this interface.

=2D A new [document]
(https://github.com/bitcoin/bitcoin/blob/master/doc/bitcoin-conf.md)
  about the `bitcoin.conf` file describes how to use it to configure
  Bitcoin Knots.

=2D A new document introduces Bitcoin Knots's BIP174 [Partially-Signed
  Bitcoin Transactions
  (PSBT)](https://github.com/bitcoin/bitcoin/blob/master/doc/psbt.md)
  interface, which is used to allow multiple programs to collaboratively
  work to create, sign, and broadcast new transactions.  This is useful
  for offline (cold storage) wallets, multisig wallets, coinjoin
  implementations, and many other cases where two or more programs need
  to interact to generate a complete transaction.

=2D The [output script
  descriptor]
(https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md)
  documentation has been updated with information about new features in
  this still-developing language for describing the output scripts that
  a wallet or other program wants to receive notifications for, such as
  which addresses it wants to know received payments.  The language is
  currently used in multiple new and updated RPCs described in these
  release notes and is expected to be adapted to other RPCs and to the
  underlying wallet structure.

Build system changes
=2D-------------------

=2D The minimum required version of Qt (when building the GUI) has been
  increased from 5.2 to 5.5.1 (the [depends
  system](https://github.com/bitcoin/bitcoin/blob/master/depends/README.md)
  provides 5.9.7)

New RPCs
=2D-------

=2D `listwalletdir` returns a list of wallets in the wallet directory
  (either the default wallet directory or the directory configured by
  the `-walletdir` parameter).

=2D `getrpcinfo` returns runtime details of the RPC server. At the moment,
  it returns an array of the currently active commands and how long
  they've been running.

=2D `deriveaddresses` returns one or more addresses corresponding to an
  [output descriptor]
(https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md).

=2D `getdescriptorinfo` accepts a descriptor and returns information about
  it, including its computed checksum.

=2D `joinpsbts` merges multiple distinct PSBTs into a single PSBT. The
  multiple PSBTs must have different inputs. The resulting PSBT will
  contain every input and output from all of the PSBTs. Any signatures
  provided in any of the PSBTs will be dropped.

=2D `analyzepsbt` examines a PSBT and provides information about what
  the PSBT contains and the next steps that need to be taken in order
  to complete the transaction. For each input of a PSBT, `analyzepsbt`
  provides information about what information is missing for that
  input, including whether a UTXO needs to be provided, what pubkeys
  still need to be provided, which scripts need to be provided, and
  what signatures are still needed. Every input will also list which
  role is needed to complete that input, and `analyzepsbt` will also
  list the next role in general needed to complete the PSBT.
  `analyzepsbt` will also provide the estimated fee rate and estimated
  virtual size of the completed transaction if it has enough
  information to do so.

=2D `utxoupdatepsbt` searches the set of Unspent Transaction Outputs
  (UTXOs) to find the outputs being spent by the partial transaction.
  PSBTs need to have the UTXOs being spent to be provided because
  the signing algorithm requires information from the UTXO being spent.
  For segwit inputs, only the UTXO itself is necessary.  For
  non-segwit outputs, the entire previous transaction is needed so
  that signers can be sure that they are signing the correct thing.
  Unfortunately, because the UTXO set only contains UTXOs and not full
  transactions, `utxoupdatepsbt` will only add the UTXO for segwit
  inputs.

Updated RPCs
=2D-----------

Note: some low-level RPC changes mainly useful for testing are described
in the Low-level Changes section below.

=2D The mempool RPCs, such as `getrawmempool` with `verbose=3Dtrue`, now
  return an additional "bip125-replaceable" value indicating whether the
  transaction (or its unconfirmed ancestors) opts-in to asking nodes and
  miners to replace it with a higher-feerate transaction spending any of
  the same inputs.

=2D `settxfee` previously silently ignored attempts to set the fee below
  the allowed minimums.  It now prints a warning.  The special value of
  "0" may still be used to request the minimum value.

=2D `importmulti` has been updated to support P2WSH, P2WPKH, P2SH-P2WPKH,
  and P2SH-P2WSH. Requests for P2WSH and P2SH-P2WSH accept an additional
  `witnessscript` parameter.

=2D `importmulti` now returns an additional `warnings` field for each
  request with an array of strings explaining when fields are being
  ignored or are inconsistent, if there are any.

=2D `getaddressinfo` now returns an additional `solvable` boolean field
  when Bitcoin Knots knows enough about the address's scriptPubKey,
  optional redeemScript, and optional witnessScript in order for the
  wallet to be able to generate an unsigned input spending funds sent to
  that address.

=2D The `getaddressinfo`, `listunspent`, and `scantxoutset` RPCs now
  return an additional `desc` field that contains an output descriptor
  containing all key paths and signing information for the address
  (except for the private key).  The `desc` field is only returned for
  `getaddressinfo` and `listunspent` when the address is solvable.

=2D `importprivkey` will preserve previously-set labels for addresses or
  public keys corresponding to the private key being imported.  For
  example, if you imported a watch-only address with the label "cold
  wallet" in earlier releases of Bitcoin Knots, subsequently importing
  the private key would default to resetting the address's label to the
  default empty-string label ("").  In this release, the previous label
  of "cold wallet" will be retained.  If you optionally specify any
  label besides the default when calling `importprivkey`, the new label
  will be applied to the address.

=2D See the [Mining](#mining) section for changes to `getblocktemplate`.

=2D `getmininginfo` now omits `currentblocksize`, `currentblockweight` and
  `currentblocktx` when a block was never assembled via RPC on this node.
  `currentblocksize` is also omitted if the `-blockmaxsize` option is
  set to 4 MB or larger (and therefore ineffective).

=2D The `getrawtransaction` RPC & REST endpoints no longer check the
  unspent UTXO set for a transaction. The remaining behaviors are as
  follows: 1. If a blockhash is provided, check the corresponding block.
  2. If no blockhash is provided, check the mempool. 3. If no blockhash
  is provided but txindex is enabled, also check txindex.

=2D `unloadwallet` is now synchronous, meaning it will not return until
  the wallet is fully unloaded.

=2D `importmulti` now supports importing of addresses from descriptors. A
  "desc" parameter can be provided instead of the "scriptPubKey" in a
  request, as well as an optional range for ranged descriptors to
  specify the start and end of the range to import. Descriptors with key
  origin information imported through `importmulti` will have their key
  origin information stored in the wallet for use with creating PSBTs.
  More information about descriptors can be found
  [here](https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md).

=2D `listunspent` has been modified so that it also returns
  `witnessScript`, the witness script in the case of a P2WSH or
  P2SH-P2WSH output.

=2D `createwallet` now has an optional `blank` argument that can be used
  to create a blank wallet. Blank wallets do not have any keys or HD
  seed.  They cannot be opened in software older than 0.18. Once a blank
  wallet has a HD seed set (by using `sethdseed`) or private keys,
  scripts, addresses, and other watch only things have been imported,
  the wallet is no longer blank and can be opened in 0.17.x. Encrypting
  a blank wallet will also set a HD seed for it.

=2D `walletcreatefundedpsbt` now respects the `-walletrbf` option for its
  default BIP125 RBF parameter.

=2D `testmempoolaccept` and `sendrawtransaction` now accept a new `maxfeera=
te`
  parameter to help avoid accidentally exceeding a given fee rate.

=2D `getmempoolinfo` now has a `loaded` key in the result to indicate
  completed loading of the saved mempool cache (or that it was skipped or
  absent).

=2D `getmempoolinfo` now accepts an optional parameter to get a fee histogr=
am
  in the result.

=2D `getwalletinfo` includes a `scanning` key in its result, which will be
  either `false` (to indicate no scanning in progress), or progress
  information.

Deprecated or removed RPCs
=2D-------------------------

=2D `signrawtransaction` is removed after being deprecated and hidden
  behind a special configuration option in version 0.17.0.

=2D The 'account' API is removed after being deprecated in v0.17.  The
  'label' API was introduced in v0.17 as a replacement for accounts.
  See the [release notes from
  v0.17]
(https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-n=
otes-0.17.0.md#label-and-account-apis-for-wallet)
  for a full description of the changes from the 'account' API to the
  'label' API.

=2D `addwitnessaddress` is removed after being deprecated in version
  0.16.0.

=2D `generate` is deprecated and will be fully removed in a subsequent
  major version.  This RPC is only used for testing, but its
  implementation reached across multiple subsystems (wallet and mining),
  so it is being deprecated to simplify the wallet-node interface.
  Projects that are using `generate` for testing purposes should
  transition to using the `generatetoaddress` RPC, which does not
  require or use the wallet component. Calling `generatetoaddress` with
  an address returned by the `getnewaddress` RPC gives the same
  functionality as the old `generate` RPC.  To continue using `generate`
  in this version, restart bitcoind with the `-deprecatedrpc=3Dgenerate`
  configuration option.

=2D Be reminded that parts of the `validateaddress` command have been
  deprecated and moved to `getaddressinfo`. The following deprecated
  fields have moved to `getaddressinfo`: `ismine`, `iswatchonly`,
  `script`, `hex`, `pubkeys`, `sigsrequired`, `pubkey`, `embedded`,
  `iscompressed`, `label`, `timestamp`, `hdkeypath`, `hdmasterkeyid`.

=2D The `addresses` field has been removed from the `validateaddress`
  and `getaddressinfo` RPC methods.  This field was confusing since
  it referred to public keys using their P2PKH address.  Clients
  should use the `embedded.address` field for P2SH or P2WSH wrapped
  addresses, and `pubkeys` for inspecting multisig participants.

=2D Due to apparent lack of interest, the `verifyscript` method has been
  removed.

REST changes
=2D-----------

=2D A new `/rest/blockhashbyheight/` endpoint is added for fetching the
  hash of the block in the current best blockchain based on its height
  (how many blocks it is after the Genesis Block). This replaces the
  older `/rest/blockhash/` endpoint which did the same thing, and is
  now deprecated. Note that the new API uses a HTTP 404 Not Found
  response for heights beyond the current chain length, has inverted
  the order of bytes for hex format, and uses a "blockhash" key for
  JSON format.

=2D The `/rest/mempool/info.json` endpoint now has a `loaded` key in the
  result to indicate completed loading of the saved mempool cache (or that
  it was skipped or absent).

=2D A new REST `/rest/mempool/info/with_fee_histogram` endpoint parallels
  `/rest/mempool/info`, but adds a fee histogram to the result.

Graphical User Interface (GUI)
=2D-----------------------------

=2D In the Send tab, the checkbox for "pay only the required fee" has been
  removed.  Instead, the user can simply decrease the value in the
  Custom Feerate field all the way down to the node's configured minimum
  relay fee.

=2D The special send-to-self transaction record type has been removed.
  Instead, all such transactions (including old transactions) will now
  be displayed as a pair of send and receive (or possibly multiple
  receives, in some circumstances).

=2D A new experimental Pairing tab has been added to assist in linking
  other wallet software (for example, such as you might have on your
  phone) with your node. Note that it is likely the pairing address
  displayed will change in future versions, possibly requiring
  re-pairing.

=2D In the Overview tab, the watch-only balance will be the only balance
  shown if the wallet was created using the `createwallet` RPC and the
  `disable_private_keys` parameter was set to true.

=2D The launch-on-startup option is no longer available on macOS if
  compiled with macosx min version greater than 10.11 (use
  CXXFLAGS=3D"-mmacosx-version-min=3D10.11"
  CFLAGS=3D"-mmacosx-version-min=3D10.11" for setting the deployment sdk
  version)

=2D Tonal Bitcoin support is now stricter with font detection. If you
  use Tonal Bitcoin and no longer have TBC unit options visible, try
  another font and/or open an issue on GitHub.

Tools
=2D----

=2D A new `bitcoin-wallet` tool is now distributed alongside Bitcoin
  Knots's other executables.  Without needing to use any RPCs, this tool
  can currently create a new wallet file or display some basic
  information about an existing wallet, such as whether the wallet is
  encrypted, whether it uses an HD seed, how many transactions it
  contains, and how many address book entries it has.

=2D Due to apparent lack of interest, support for Script debugging has been
  removed from libbitcoinconsensus.

Planned changes
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

This section describes planned changes to Bitcoin Knots that may affect
other Bitcoin software and services.

Deprecated P2P messages
=2D----------------------

=2D BIP 61 reject messages are now deprecated. Reject messages have no use
  case on the P2P network and are only logged for debugging by most
  network nodes. Furthermore, they increase bandwidth and can be harmful
  for privacy and security. It has been possible to disable BIP 61
  messages since v0.17 with the `-enablebip61=3D0` option. BIP 61 messages
  will be disabled by default in a future version, before being removed
  entirely.

Low-level changes
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

This section describes RPC changes mainly useful for testing, mostly not
relevant in production. The changes are mentioned for completeness.

RPC
=2D--

=2D The `submitblock` RPC previously returned the reason a rejected block
  was invalid the first time it processed that block, but returned a
  generic "duplicate" rejection message on subsequent occasions it
  processed the same block.  It now always returns the fundamental
  reason for rejecting an invalid block and only returns "duplicate" for
  valid blocks it has already accepted.

=2D A new `submitheader` RPC allows submitting block headers independently
  from their block.  This is likely only useful for testing.

=2D The `signrawtransactionwithkey` and `signrawtransactionwithwallet`
  RPCs have been modified so that they also optionally accept a
  `witnessScript`, the witness script in the case of a P2WSH or
  P2SH-P2WSH output. This is compatible with the change to
  `listunspent`.

=2D For the `walletprocesspsbt` and `walletcreatefundedpsbt` RPCs, if the
  `bip32derivs` parameter is set to true but the key metadata for a
  public key has not been updated yet, then that key will have a
  derivation path as if it were just an independent key (i.e. no
  derivation path and its master fingerprint is itself).

Configuration
=2D------------

=2D The `-usehd` configuration option was removed in version 0.16. From
  that version onwards, all new wallets created are hierarchical
  deterministic wallets. This release makes specifying `-usehd` an
  invalid configuration option.

Network
=2D------

=2D This release allows peers that your node automatically disconnected
  for misbehavior (e.g. sending invalid data) to reconnect to your node
  if you have unused incoming connection slots.  If your slots fill up,
  a misbehaving node will be disconnected to make room for nodes without
  a history of problems (unless the misbehaving node helps your node in
  some other way, such as by connecting to a part of the Internet from
  which you don't have many other peers).  Previously, Bitcoin Knots
  banned the IP addresses of misbehaving peers for a period of time
  (default of 1 day); this was easily circumvented by attackers with
  multiple IP addresses. If you manually ban a peer, such as by using
  the `setban` RPC, all connections from that peer will still be
  rejected.

Wallet
=2D------

=2D The key metadata will need to be upgraded the first time that the HD
  seed is available.  For unencrypted wallets this will occur on wallet
  loading.  For encrypted wallets this will occur the first time the
  wallet is unlocked.

=2D Newly encrypted wallets will no longer require restarting the
  software. Instead such wallets will be completely unloaded and
  reloaded to achieve the same effect.

=2D A sub-project of Bitcoin Core now provides Hardware Wallet Interaction
  (HWI) scripts that allow command-line users to use several popular
  hardware key management devices with Bitcoin Knots.  See their [project
  page](https://github.com/bitcoin-core/HWI#readme) for details.

Security
=2D-------

=2D This release changes the Random Number Generator (RNG) used from
  OpenSSL to Bitcoin Core's implementation, although entropy gathered
  by Bitcoin Knots is fed out to OpenSSL and then read back in when the
  program needs strong randomness. This moves Bitcoin Knots a little
  closer to no longer needing to depend on OpenSSL, a dependency that
  has caused security issues in the past.  The new implementation
  gathers entropy from multiple sources, including from hardware
  supporting the rdseed CPU instruction.

0.18.0 change log
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

### Consensus
=2D n/a *Update checkpoints and chain params, adding a new checkpoint at bl=
ock=20
571,392 (luke-jr)

### Policy
=2D #15846 *Policy-accept sending to future native witness outputs=20
with -sendtofuture=3D1 (luke-jr)
=2D #15846 *Policy: Enable -sendtofuture=3D1 by default (except with -corep=
olicy)=20
(luke-jr)
=2D n/a *Reduce default block size/weight to a safer 300kB/1.5MWU (luke-jr)

### Mining
=2D #14811 Mining: Enforce that segwit option must be set in GBT (jnewbery)

### Block and transaction handling
=2D #13310 Report progress in ReplayBlocks while rolling forward (promag)
=2D #13783 validation: Pass tx pool reference into CheckSequenceLocks=20
(MarcoFalke)
=2D #14834 validation: Assert that pindexPrev is non-null when required=20
(kallewoof)
=2D #14085 index: Fix for indexers skipping genesis block (jimpo)
=2D #14963 mempool, validation: Explain `cs_main` locking semantics (MarcoF=
alke)
=2D #15193 Default `-whitelistforcerelay` to off (sdaftuar)
=2D #15552 Granular invalidateblock and RewindBlockIndex (MarcoFalke)
=2D #14841 Move CheckBlock() call to critical section (hebasto)
=2D #15218 *validation: flush state after initial sync (andrewtoth)

### P2P protocol and network code
=2D #14025 Remove dead code for nVersion=3D10300 (MarcoFalke)
=2D #12254 BIP 158: Compact Block Filters for Light Clients (jimpo)
=2D #14073 blockfilter: Avoid out-of-bounds script access (jimpo)
=2D #14140 Switch nPrevNodeCount to vNodesSize (pstratem)
=2D #14027 Skip stale tip checking if outbound connections are off or if=20
reindexing (gmaxwell)
=2D #14532 Never bind `INADDR_ANY` by default, and warn when doing so expli=
citly=20
(luke-jr)
=2D #14733 Make peer timeout configurable, speed up very slow test and ensu=
re=20
correct code path tested (zallarak)
=2D #14336 Implement poll (pstratem)
=2D #15051 IsReachable is the inverse of IsLimited (DRY). Includes unit tes=
ts=20
(mmachicao)
=2D #15138 Drop IsLimited in favor of IsReachable (Empact)
=2D #14605 Return of the Banman (dongcarl)
=2D #14929 Allow connections from misbehavior banned peers (gmaxwell)
=2D #15345 Correct comparison of addr count (dongcarl)
=2D #15201 Add missing locking annotation for vNodes. vNodes is guarded by=
=20
cs_vNodes (practicalswift)
=2D #14626 Select orphan transaction uniformly for eviction (sipa)
=2D #15486 Ensure tried collisions resolve, and allow feeler connections to=
=20
existing outbound netgroups (sdaftuar)
=2D #15558 *Do not query all DNS seed at once (sipa)
=2D #15651 *torcontrol: Use the default/standard network port for Tor hidde=
n=20
services, even if the internal port is set differently (luke-jr)
=2D #15423 *torcontrol: Query Tor for correct -onion configuration (luke-jr)
=2D #15633 *Ignore BIP-152 HB requests from non-witness peers. (gmaxwell)

### Wallet
=2D #13962 Remove unused `dummy_tx` variable from FillPSBT (dongcarl)
=2D #13967 Don't report `minversion` wallet entry as unknown (instagibbs)
=2D #13988 Add checks for settxfee reasonableness (ajtowns)
=2D #12559 Avoid locking `cs_main` in some wallet RPC (promag)
=2D #13631 Add CMerkleTx::IsImmatureCoinBase method (Empact)
=2D #14023 Remove accounts RPCs (jnewbery)
=2D #13825 Kill accounts (jnewbery)
=2D #10605 Add AssertLockHeld assertions in CWallet::ListCoins (ryanofsky)
=2D #12490 Remove deprecated wallet rpc features from `bitcoin_server`=20
(jnewbery)
=2D #14138 Set `encrypted_batch` to nullptr after delete. Avoid double free=
 in=20
the case of NDEBUG (practicalswift)
=2D #14168 Remove `ENABLE_WALLET` from `libbitcoin_server.a` (jnewbery)
=2D #12493 Reopen CDBEnv after encryption instead of shutting down (achow10=
1)
=2D #14282 Remove `-usehd` option (jnewbery)
=2D #14146 Remove trailing separators from `-walletdir` arg (PierreRochard)
=2D #14291 Add ListWalletDir utility function (promag)
=2D #14468 Deprecate `generate` RPC method (jnewbery)
=2D #11634 Add missing `cs_wallet`/`cs_KeyStore` locks to wallet=20
(practicalswift)
=2D #14296 Remove `addwitnessaddress` (jnewbery)
=2D #14451 Add BIP70 deprecation warning (jameshilliard)
=2D #14320 Fix duplicate fileid detection (ken2812221)
=2D #14561 Remove `fs::relative` call and fix listwalletdir tests (promag)
=2D #14454 Add SegWit support to importmulti (MeshCollider)
=2D #14350 Add WalletLocation class (promag)
=2D #14689 Require a public key to be retrieved when signing a P2PKH input=
=20
(achow101)
=2D #14478 Show error to user when corrupt wallet unlock fails (MeshCollide=
r)
=2D #14552 Detect duplicate wallet by comparing the db filename (ken2812221)
=2D #14678 Remove redundant KeyOriginInfo access, already done in CreateSig=
=20
(instagibbs)
=2D #14477 Add ability to convert solvability info to descriptor (sipa)
=2D #14760 Log env path in `BerkeleyEnvironment::Flush` (promag)
=2D #14646 Add expansion cache functions to descriptors (unused for now) (s=
ipa)
=2D #13076 Fix ScanForWalletTransactions to return an enum indicating scan=
=20
result: `success` / `failure` / `user_abort` (Empact)
=2D #14821 Replace CAffectedKeysVisitor with descriptor based logic (sipa)
=2D #14957 Initialize `stop_block` in CWallet::ScanForWalletTransactions=20
(Empact)
=2D #14565 Overhaul `importmulti` logic (sipa)
=2D #15039 Avoid leaking nLockTime fingerprint when anti-fee-sniping=20
(MarcoFalke)
=2D #14268 Introduce SafeDbt to handle Dbt with free or `memory_cleanse`=20
raii-style (Empact)
=2D #14711 Remove uses of chainActive and mapBlockIndex in wallet code=20
(ryanofsky)
=2D #15279 Clarify rescanblockchain doc (MarcoFalke)
=2D #15292 Remove `boost::optional`-related false positive -Wmaybe-uninitia=
lized=20
warnings on GCC compiler (hebasto)
=2D #13926 [Tools] bitcoin-wallet - a tool for creating and managing wallet=
s=20
offline (jnewbery)
=2D #11911 Free BerkeleyEnvironment instances when not in use (ryanofsky)
=2D #15235 Do not import private keys to wallets with private keys disabled=
=20
(achow101)
=2D #15263 Descriptor expansions only need pubkey entries for PKH/WPKH (sip=
a)
=2D #15322 Add missing `cs_db` lock (promag)
=2D #15297 Releases dangling files on `BerkeleyEnvironment::Close` (promag)
=2D #14491 Allow descriptor imports with importmulti (MeshCollider)
=2D #15365 Add lock annotation for mapAddressBook (MarcoFalke)
=2D #15226 Allow creating blank (empty) wallets (alternative) (achow101)
=2D #15390 [wallet-tool] Close bdb when flushing wallet (jnewbery)
=2D #15334 Log absolute paths for the wallets (hebasto)
=2D #14978 Factor out PSBT utilities from RPCs for use in GUI code; related=
=20
refactoring (gwillen)
=2D #14481 Add P2SH-P2WSH support to listunspent RPC (MeshCollider)
=2D #14021 Import key origin data through descriptors in importmulti (achow=
101)
=2D #14075 Import watch only pubkeys to the keypool if private keys are dis=
abled=20
(achow101)
=2D #15368 Descriptor checksums (sipa)
=2D #15433 Use a single wallet batch for `UpgradeKeyMetadata` (jonasschnell=
i)
=2D #15408 Remove unused `TransactionError` constants (MarcoFalke)
=2D #15583 Log and ignore errors in ListWalletDir and IsBerkeleyBtree (prom=
ag)
=2D #14195 Pass privkey export DER compression flag correctly (fingera)
=2D #15299 Fix assertion in `CKey::SignCompact` (promag)
=2D #14437 Start to separate wallet from node (ryanofsky)
=2D #15749 Fix: importmulti only imports origin info for PKH outputs (sipa)
=2D #15913 *Bugfix: dummywallet: Add -ignorepartialspends to list of ignore=
d=20
wallet options (luke-jr)
=2D #15911 *[rpc] walletcreatefundedpsbt: use wallet default RBF (Sjors)
=2D #9152 *RPC/Wallet: Use BroadcastTransaction for sweepprivkeys to ensure=
=20
wallet is synced before we return (luke-jr)
=2D #13541 *wallet/rpc: add maxfeerate parameter to testmempoolaccept and=20
sendrawtransaction (kallewoof)

### RPC and other APIs
=2D #12842 Prevent concurrent `savemempool` (promag)
=2D #13891 Remove getinfo deprecation warning (jnewbery)
=2D #13399 Add `submitheader` (MarcoFalke)
=2D #13723 PSBT key path cleanups (sipa)
=2D #14008 Preserve a format of RPC command definitions (kostyantyn)
=2D #13983 Return more specific reject reason for submitblock (MarcoFalke)
=2D #14298 rest: Improve performance for JSON calls (alecalve)
=2D #14297 Remove warning for removed estimatefee RPC (jnewbery)
=2D #14373 Consistency fixes for RPC descriptions (ch4ot1c)
=2D #14150 Add key origin support to descriptors (sipa)
=2D #14518 Always throw in getblockstats if `-txindex` is required (promag)
=2D #13381 Add possibility to preserve labels on importprivkey (marcoagner)
=2D #14530 Use `RPCHelpMan` to generate RPC doc strings (MarcoFalke)
=2D #14720 Correctly name RPC arguments (MarcoFalke)
=2D #14726 Use `RPCHelpMan` for all RPCs (MarcoFalke)
=2D #14796 Pass argument descriptions to `RPCHelpMan` (MarcoFalke)
=2D #14670 http: Fix HTTP server shutdown (promag)
=2D #14885 Assert that named arguments are unique in `RPCHelpMan` (promag)
=2D #14877 Document default values for optional arguments (MarcoFalke)
=2D #14875 RPCHelpMan: Support required arguments after optional ones=20
(MarcoFalke)
=2D #14993 Fix data race (UB) in InterruptRPC() (practicalswift)
=2D #14653 rpcwallet: Add missing transaction categories to RPC helptexts=20
(andrewtoth)
=2D #14981 Clarify RPC `getrawtransaction`'s time help text (benthecarman)
=2D #12151 Remove `cs_main` lock from blockToJSON and blockheaderToJSON (pr=
omag)
=2D #15078 Document `bytessent_per_msg` and `bytesrecv_per_msg` (MarcoFalke)
=2D #15057 Correct `reconsiderblock `help text, add test (MarcoFalke)
=2D #12153 Avoid permanent `cs_main` lock in `getblockheader` (promag)
=2D #14982 Add `getrpcinfo` command (promag)
=2D #15122 Expand help text for `importmulti` changes (jnewbery)
=2D #15186 remove duplicate solvable field from `getaddressinfo` (fanquake)
=2D #15209 zmq: log outbound message high water mark when reusing socket=20
(fanquake)
=2D #15177 rest: Improve tests and documention of /headers and /block (prom=
ag)
=2D #14353 rest: Add blockhash call, fetch blockhash by height (jonasschnel=
li)
=2D #15248 Compile on GCC4.8 (MarcoFalke)
=2D #14987 RPCHelpMan: Pass through Result and Examples (MarcoFalke)
=2D #15159 Remove lookup to UTXO set from GetTransaction (amitiuttarwar)
=2D #15245 remove deprecated mentions of signrawtransaction from fundraw he=
lp=20
(instagibbs)
=2D #14667 Add `deriveaddresses` RPC util method (Sjors)
=2D #15357 Don't ignore `-maxtxfee` when wallet is disabled (JBaczuk)
=2D #15337 Fix for segfault if combinepsbt called with empty inputs=20
(benthecarman)
=2D #14918 RPCHelpMan: Check default values are given at compile-time=20
(MarcoFalke)
=2D #15383 mining: Omit uninitialized currentblockweight, currentblocktx=20
(MarcoFalke)
=2D #13932 Additional utility RPCs for PSBT (achow101)
=2D #15401 Actually throw help when passed invalid number of params (MarcoF=
alke)
=2D #15497 Consistent range arguments in=20
scantxoutset/importmulti/deriveaddresses (sipa)
=2D #15510 deriveaddresses: add range to CRPCConvertParam (Sjors)
=2D #15582 Fix overflow bug in analyzepsbt fee: CAmount instead of int (sip=
a)
=2D #13424 Consistently validate txid / blockhash length and encoding in rp=
c=20
calls (Empact)
=2D #15750 Remove the addresses field from the getaddressinfo return object=
=20
(jnewbery)
=2D n/a *Bugfix: httpserver: Close listen socket if we fail to make an evht=
tp=20
handle (luke-jr)
=2D #15323 *rpc: Expose g_is_mempool_loaded via getmempoolinfo=20
and /rest/mempool/info.json (Empact)
=2D #15730 *rpc: Show scanning details in getwalletinfo (promag)
=2D #15836 *Add feerate histogram to getmempoolinfo (jonasschnelli)
=2D #15861 *rpc/gui: Refactor 'Unknown block versions being mined' warning=
=20
(luke-jr)
=2D n/a *Removed verifyscript method (luke-jr)
=2D n/a *Removed libbitcoinconsensus Script debugging support (luke-jr)
=2D #15932 *rpc: Serialize in getblock without cs_main (MarcoFalke)

### GUI
=2D #13634 Compile `boost::signals2` only once (MarcoFalke)
=2D #13248 Make proxy icon from statusbar clickable (mess110)
=2D #13529 Use new Qt5 connect syntax (promag)
=2D #14162 Also log and print messages or questions like bitcoind (MarcoFal=
ke)
=2D #14385 Avoid system harfbuzz and bz2 (theuni)
=2D #14450 Fix QCompleter popup regression (hebasto)
=2D #14177 Set C locale for amountWidget (hebasto)
=2D #14374 Add `Blocksdir` to Debug window (hebasto)
=2D #14554 Remove unused `adjustedTime` parameter (hebasto)
=2D #14608 Remove the "Pay only required fee=E2=80=A6" checkbox (hebasto)
=2D #14521 qt, docs: Fix `bitcoin-qt -version` output formatting (hebasto)
=2D #13966 When private key is disabled, only show watch-only balance=20
(ken2812221)
=2D #14828 Remove hidden columns in coin control dialog (promag)
=2D #14783 Fix `boost::signals2::no_slots_error` in early calls to InitWarn=
ing=20
(promag)
=2D #14854 Cleanup SplashScreen class (hebasto)
=2D #14801 Use window() instead of obsolete topLevelWidget() (hebasto)
=2D #14975 Refactoring with QString::toNSString() (hebasto)
=2D #15000 Fix broken notificator on GNOME (hebasto)
=2D #14375 Correct misleading "overridden options" label (hebasto)
=2D #15007 Notificator class refactoring (hebasto)
=2D #14784 Use `WalletModel*` instead of the wallet name as map key (promag)
=2D #11625 Add BitcoinApplication & RPCConsole tests (ryanofsky)
=2D #13216 implements concept for different disk sizes on intro (marcoagner)
=2D #15114 Replace remaining 0 with nullptr (Empact)
=2D #14594 Fix minimized window bug on Linux (hebasto)
=2D #14556 Fix confirmed transaction labeled "open" (#13299) (hebasto)
=2D #15149 Show current wallet name in window title (promag)
=2D #15136 "Peers" tab overhaul (hebasto)
=2D #14250 Remove redundant stopThread() and stopExecutor() signals (hebast=
o)
=2D #15040 Add workaround for QProgressDialog bug on macOS (hebasto)
=2D #15101 Add WalletController (promag)
=2D #15178 Improve "help-console" message (hebasto)
=2D #15210 Fix window title update (promag)
=2D #15167 Fix wallet selector size adjustment (hebasto)
=2D #15208 Remove macOS launch-at-startup when compiled with > macOS 10.11,=
 fix=20
memory mismanagement (jonasschnelli)
=2D #15163 Correct units for "-dbcache" and "-prune" (hebasto)
=2D #15225 Change the receive button to respond to keypool state changing=20
(achow101)
=2D #15280 Fix shutdown order (promag)
=2D #15203 Fix issue #9683 "gui, wallet: random abort (segmentation fault)=
=20
(dooglus)
=2D #15091 Fix model overlay header sync (jonasschnelli)
=2D #15153 Add Open Wallet menu (promag)
=2D #15183 Fix `m_assumed_blockchain_size` variable value (marcoagner)
=2D #15063 If BIP70 is disabled, attempt to fall back to BIP21 parsing (luk=
e-jr)
=2D #15195 Add Close Wallet action (promag)
=2D #15462 Fix async open wallet call order (promag)
=2D #15801 Bugfix: GUI: Options: Initialise prune setting range before load=
ing=20
current value, and remove upper bound limit (luke-jr)
=2D #11750 *CoinControl: Remove selection-only counter (luke-jr)
=2D #15115 *Replace send-to-self with dual send+receive entries (luke-jr)
=2D #15371 *Uppercase bech32 addresses in qr codes (benthecarman)
=2D #15428 *Add Pairing tab with Tor onion address as copyable text and QR =
code=20
(luke-jr)
=2D #7510 *Various improvements for pruning controls (luke-jr)
=2D #929 *Bugfix: GUI: bitcoinunits: Don't make unitlist static, since it g=
ets=20
rebuilt every call (luke-jr)
=2D #929 *tonalutils: For Tonal support detection, check that the font has =
all=20
glyphs and they all have the same sizes (luke-jr)
=2D n/a *update receiving address book description to refer to receive tab =
for=20
new addresses (HatboyWonder)
=2D n/a *Qt/Options: Configure sendtofuture using rwconf (luke-jr)

### Build system
=2D #13955 gitian: Bump descriptors for (0.)18 (fanquake)
=2D #13899 Enable -Wredundant-decls where available. Remove redundant=20
redeclarations (practicalswift)
=2D #13665 Add RISC-V support to gitian (ken2812221)
=2D #14062 Generate MSVC project files via python script (ken2812221)
=2D #14037 Add README.md to linux release tarballs (hebasto)
=2D #14183 Remove unused Qt 4 dependencies (ken2812221)
=2D #14127 Avoid getifaddrs when unavailable (greenaddress)
=2D #14184 Scripts and tools: increased timeout downloading (cisba)
=2D #14204 Move `interfaces/*` to `libbitcoin_server` (laanwj)
=2D #14208 Actually remove `ENABLE_WALLET` (jnewbery)
=2D #14212 Remove libssl from LDADD unless GUI (MarcoFalke)
=2D #13578 Upgrade zeromq to 4.2.5 and avoid deprecated zeromq API function=
s=20
(mruddy)
=2D #14281 lcov: filter /usr/lib/ from coverage reports (MarcoFalke)
=2D #14325 gitian: Use versioned unsigned tarballs instead of generically n=
amed=20
ones (achow101)
=2D #14253 During 'make clean', remove some files that are currently missed=
=20
(murrayn)
=2D #14455 Unbreak `make clean` (jamesob)
=2D #14495 Warn (don't fail!) on spelling errors (practicalswift)
=2D #14496 Pin to specific versions of Python packages we install from PyPI=
 in=20
Travis (practicalswift)
=2D #14568 Fix Qt link order for Windows build (ken2812221)
=2D #14252 Run functional tests and benchmarks under the undefined behaviou=
r=20
sanitizer (UBSan) (practicalswift)
=2D #14612 Include full version number in released file names (achow101)
=2D #14840 Remove duplicate libconsensus linking in test make (AmirAbrams)
=2D #14883 Add `--retry 5` to curl opts in `install_db4.sh` (qubenix)
=2D #14701 Add `CLIENT_VERSION_BUILD` to CFBundleGetInfoString (fanquake)
=2D #14849 Qt 5.9.7 (fanquake)
=2D #15020 Add names to Travis jobs (gkrizek)
=2D #15047 Allow to configure --with-sanitizers=3Dfuzzer (MarcoFalke)
=2D #15154 Configure: bitcoin-tx doesn't need libevent, so don't pull it in=
=20
(luke-jr)
=2D #15175 Drop macports support (Empact)
=2D #15308 Restore compatibility with older boost (Empact)
=2D #15407 msvc: Fix silent merge conflict between #13926 and #14372 part I=
I=20
(ken2812221)
=2D #15388 Makefile.am: add rule for src/bitcoin-wallet (Sjors)
=2D #15393 Bump minimum Qt version to 5.5.1 (Sjors)
=2D #15285 Prefer Python 3.4 even if newer versions are present on the syst=
em=20
(Sjors)
=2D #15398 msvc: Add rapidcheck property tests (ken2812221)
=2D #15431 msvc: scripted-diff: Remove NDEBUG pre-define in project file=20
(ken2812221)
=2D #15549 gitian: Improve error handling (laanwj)
=2D #15548 use full version string in setup.exe (MarcoFalke)
=2D #11526 Visual Studio build configuration for Bitcoin Core (sipsorcery)
=2D #15110 build\_msvc: Fix the build problem in `libbitcoin_server` (Mr-Le=
shiy)
=2D #14372 msvc: build secp256k1 and leveldb locally (ken2812221)
=2D #15325 msvc: Fix silent merge conflict between #13926 and #14372=20
(ken2812221)
=2D #15391 Add compile time verification of assumptions we're currently mak=
ing=20
implicitly/tacitly (practicalswift)
=2D #15503 msvc: Use a single file to specify the include path (ken2812221)
=2D #13765 contrib: Add gitian build support for github pull request=20
(ken2812221)
=2D #15809 gitignore: plist and dat (jamesob)

### Tests and QA
=2D #15405 appveyor: Clean cache when build configuration changes (Sjors)
=2D #13953 Fix deprecation in bitcoin-util-test.py (isghe)
=2D #13963 Replace usage of tostring() with tobytes() (dongcarl)
=2D #13964 ci: Add appveyor ci (ken2812221)
=2D #13997 appveyor: fetch the latest port data (ken2812221)
=2D #13707 Add usage note to check-rpc-mappings.py (masonicboom)
=2D #13861 Add testing of `value_ret` for SelectCoinsBnB (Empact)
=2D #13863 travis: Move script sections to files in `.travis/` subject to=20
shellcheck (scravy)
=2D #14081 travis: Fix missing differentiation between unit and functional =
tests=20
(scravy)
=2D #14042 travis: Add cxxflags=3D-wno-psabi at arm job (ken2812221)
=2D #14051 Make `combine_logs.py` handle multi-line logs (jnewbery)
=2D #14093 Fix accidental trunction from int to bool (practicalswift)
=2D #14108 Add missing locking annotations and locks (`g_cs_orphans`)=20
(practicalswift)
=2D #14088 Don't assert(=E2=80=A6) with side effects (practicalswift)
=2D #14086 appveyor: Use clcache to speed up build (ken2812221)
=2D #13954 Warn (don't fail!) on spelling errors. Fix typos reported by=20
codespell (practicalswift)
=2D #12775 Integration of property based testing into Bitcoin Core (Christe=
wart)
=2D #14119 Read reject reasons from debug log, not P2P messages (MarcoFalke)
=2D #14189 Fix silent merge conflict in `wallet_importmulti` (MarcoFalke)
=2D #13419 Speed up `knapsack_solver_test` by not recreating wallet 100 tim=
es=20
(lucash-dev)
=2D #14199 Remove redundant BIP174 test from `rpc_psbt.json` (araspitzu)
=2D #14179 Fixups to "Run all tests even if wallet is not compiled" (MarcoF=
alke)
=2D #14225 Reorder tests and move most of extended tests up to normal tests=
=20
(ken2812221)
=2D #14236 `generate` --> `generatetoaddress` change to allow tests run wit=
hout=20
wallet (sanket1729)
=2D #14287 Use MakeUnique to construct objects owned by `unique_ptrs`=20
(practicalswift)
=2D #14007 Run functional test on Windows and enable it on Appveyor (ken281=
2221)
=2D #14275 Write the notification message to different files to avoid race=
=20
condition in `feature_notifications.py` (ken2812221)
=2D #14306 appveyor: Move AppVeyor YAML to dot-file-style YAML (MitchellCas=
h)
=2D #14305 Enforce critical class instance attributes in functional tests, =
fix=20
segwit test specificity (JustinTArthur)
=2D #14316 Exclude all tests with difference parameters in `--exclude` list=
=20
(ken2812221)
=2D #14381 Add missing call to `skip_if_no_cli()` (practicalswift)
=2D #14389 travis: Set codespell version to avoid breakage (MarcoFalke)
=2D #14398 Don't access out of bounds array index: array[sizeof(array)] (Em=
pact)
=2D #14419 Remove `rpc_zmq.py` (jnewbery)
=2D #14241 appveyor: Script improvement (ken2812221)
=2D #14413 Allow closed RPC handler in `assert_start_raises_init_error`=20
(ken2812221)
=2D #14324 Run more tests with wallet disabled (MarcoFalke)
=2D #13649 Allow arguments to be forwarded to flake8 in lint-python.sh (jam=
esob)
=2D #14465 Stop node before removing the notification file (ken2812221)
=2D #14460 Improve 'CAmount' tests (hebasto)
=2D #14456 forward timeouts properly in `send_blocks_and_test` (jamesob)
=2D #14527 Revert "Make qt wallet test compatible with qt4" (MarcoFalke)
=2D #14504 Show the progress of functional tests (isghe)
=2D #14559 appveyor: Enable multiwallet tests (ken2812221)
=2D #13515 travis: Enable qt for all jobs (ken2812221)
=2D #14571 Test that nodes respond to `getdata` with `notfound` (MarcoFalke)
=2D #14569 Print dots by default in functional tests (ken2812221)
=2D #14631 Move deterministic address import to `setup_nodes` (jnewbery)
=2D #14630 test: Remove travis specific code (MarcoFalke)
=2D #14528 travis: Compile once on xenial (MarcoFalke)
=2D #14092 Dry run `bench_bitcoin` as part `make check` to allow for quick=
=20
identification of assertion/sanitizer failures in benchmarking code=20
(practicalswift)
=2D #14664 `example_test.py`: fixup coinbase height argument, derive number=
=20
clearly (instagibbs)
=2D #14522 Add invalid P2P message tests (jamesob)
=2D #14619 Fix value display name in `test_runner` help text (merland)
=2D #14672 Send fewer spam messages in `p2p_invalid_messages` (jamesob)
=2D #14673 travis: Fail the ubsan travis build in case of newly introduced =
ubsan=20
errors (practicalswift)
=2D #14665 appveyor: Script improvement part II (ken2812221)
=2D #14365 Add Python dead code linter (vulture) to Travis (practicalswift)
=2D #14693 `test_node`: `get_mem_rss` fixups (MarcoFalke)
=2D #14714 util.h: explicitly include required QString header (1Il1)
=2D #14705 travis: Avoid timeout on verify-commits check (MarcoFalke)
=2D #14770 travis: Do not specify sudo in `.travis` (scravy)
=2D #14719 Check specific reject reasons in `feature_block` (MarcoFalke)
=2D #14771 Add `BOOST_REQUIRE` to getters returning optional (MarcoFalke)
=2D #14777 Add regtest for JSON-RPC batch calls (domob1812)
=2D #14764 travis: Run thread sanitizer on unit tests (MarcoFalke)
=2D #14400 Add Benchmark to test input de-duplication worst case (JeremyRub=
in)
=2D #14812 Fix `p2p_invalid_messages` on macOS (jamesob)
=2D #14813 Add `wallet_encryption` error tests (MarcoFalke)
=2D #14820 Fix `descriptor_tests` not checking ToString output of public=20
descriptors (ryanofsky)
=2D #14794 Add AddressSanitizer (ASan) Travis build (practicalswift)
=2D #14822 bench: Destroy wallet txs instead of leaking their memory=20
(MarcoFalke)
=2D #14683 Better `combine_logs.py` behavior (jamesob)
=2D #14231 travis: Save cache even when build or test fail (ken2812221)
=2D #14816 Add CScriptNum decode python implementation in functional suite=
=20
(instagibbs)
=2D #14861 Modify `rpc_bind` to conform to #14532 behaviour (dongcarl)
=2D #14864 Run scripted-diff in subshell (dongcarl)
=2D #14795 Allow `test_runner` command line to receive parameters for each =
test=20
(marcoagner)
=2D #14788 Possible fix the permission error when the tests open the cookie=
 file=20
(ken2812221)
=2D #14857 `wallet_keypool_topup.py`: Test for all keypool address types=20
(instagibbs)
=2D #14886 Refactor importmulti tests (jnewbery)
=2D #14908 Removed implicit CTransaction constructor calls from tests and=20
benchmarks (lucash-dev)
=2D #14903 Handle ImportError explicitly, improve comparisons against None=
=20
(daniel-s-ingram)
=2D #14884 travis: Enforce python 3.4 support through linter (Sjors)
=2D #14940 Add test for truncated pushdata script (MarcoFalke)
=2D #14926 consensus: Check that final transactions are valid (MarcoFalke)
=2D #14937 travis: Fix travis would always be green even if it fail (ken281=
2221)
=2D #14953 Make `g_insecure_rand_ctx` `thread_local` (MarcoFalke)
=2D #14931 mempool: Verify prioritization is dumped correctly (MarcoFalke)
=2D #14935 Test for expected return values when calling functions returning=
 a=20
success code (practicalswift)
=2D #14969 Fix `cuckoocache_tests` TSAN failure introduced in 14935=20
(practicalswift)
=2D #14964 Fix race in `mempool_accept` (MarcoFalke)
=2D #14829 travis: Enable functional tests in the threadsanitizer (tsan) bu=
ild=20
job (practicalswift)
=2D #14985 Remove `thread_local` from `test_bitcoin` (MarcoFalke)
=2D #15005 Bump timeout to run tests in travis thread sanitizer (MarcoFalke)
=2D #15013 Avoid race in `p2p_timeouts` (MarcoFalke)
=2D #14930 pruning: Check that verifychain can be called when pruned=20
(MarcoFalke)
=2D #15022 Upgrade Travis OS to Xenial (gkrizek)
=2D #14738 Fix running `wallet_listtransactions.py` individually through=20
`test_runner.py` (kristapsk)
=2D #15026 Rename `rpc_timewait` to `rpc_timeout` (MarcoFalke)
=2D #15069 Fix `rpc_net.py` `pong` race condition (Empact)
=2D #14790 Allow running `rpc_bind.py` --nonloopback test without IPv6=20
(kristapsk)
=2D #14457 add invalid tx templates for use in functional tests (jamesob)
=2D #14855 Correct ineffectual WithOrVersion from `transactions_tests` (Emp=
act)
=2D #15099 Use `std::vector` API for construction of test data (domob1812)
=2D #15102 Run `invalid_txs.InputMissing` test in `feature_block` (MarcoFal=
ke)
=2D #15059 Add basic test for BIP34 (MarcoFalke)
=2D #15108 Tidy up `wallet_importmulti.py` (amitiuttarwar)
=2D #15164 Ignore shellcheck warning SC2236 (promag)
=2D #15170 refactor/lint: Add ignored shellcheck suggestions to an array=20
(koalaman)
=2D #14958 Remove race between connecting and shutdown on separate connecti=
ons=20
(promag)
=2D #15166 Pin shellcheck version (practicalswift)
=2D #15196 Update all `subprocess.check_output` functions to be Python 3.4=
=20
compatible (gkrizek)
=2D #15043 Build fuzz targets into seperate executables (MarcoFalke)
=2D #15276 travis: Compile once on trusty (MarcoFalke)
=2D #15246 Add tests for invalid message headers (MarcoFalke)
=2D #15301 When testing with --usecli, unify RPC arg to cli arg conversion =
and=20
handle dicts and lists (achow101)
=2D #15247 Use wallet to retrieve raw transactions (MarcoFalke)
=2D #15303 travis: Remove unused `functional_tests_config` (MarcoFalke)
=2D #15330 Fix race in `p2p_invalid_messages` (MarcoFalke)
=2D #15324 Make bloom tests deterministic (MarcoFalke)
=2D #15328 travis: Revert "run extended tests once daily" (MarcoFalke)
=2D #15327 Make test `updatecoins_simulation_test` deterministic=20
(practicalswift)
=2D #14519 add utility to easily profile node performance with perf (jameso=
b)
=2D #15349 travis: Only exit early if compilation took longer than 30 min=20
(MarcoFalke)
=2D #15350 Drop RPC connection if --usecli (promag)
=2D #15370 test: Remove unused --force option (MarcoFalke)
=2D #14543 minor `p2p_sendheaders` fix of height in coinbase (instagibbs)
=2D #13787 Test for Windows encoding issue (ken2812221)
=2D #15378 Added missing tests for RPC wallet errors (benthecarman)
=2D #15238 remove some magic mining constants in functional tests (instagib=
bs)
=2D #15411 travis: Combine --disable-bip70 into existing job (MarcoFalke)
=2D #15295 fuzz: Add `test/fuzz/test_runner.py` and run it in travis=20
(MarcoFalke)
=2D #15413 Add missing `cs_main` locks required when accessing pcoinsdbview=
,=20
pcoinsTip or pblocktree (practicalswift)
=2D #15399 fuzz: Script validation flags (MarcoFalke)
=2D #15410 txindex: interrupt threadGroup before calling destructor (MarcoF=
alke)
=2D #15397 Remove manual byte editing in `wallet_tx_clone` func test=20
(instagibbs)
=2D #15415 functional: allow custom cwd, use tmpdir as default (Sjors)
=2D #15404 Remove `-txindex` to start nodes (amitiuttarwar)
=2D #15439 remove `byte.hex()` to keep compatibility (AkioNak)
=2D #15419 Always refresh cache to be out of ibd (MarcoFalke)
=2D #15507 Bump timeout on tests that timeout on windows (MarcoFalke)
=2D #15506 appveyor: fix cache issue and reduce dependencies build time=20
(ken2812221)
=2D #15485 add `rpc_misc.py`, mv test getmemoryinfo, add test mallocinfo=20
(adamjonas)
=2D #15321 Add `cs_main` lock annotations for mapBlockIndex (MarcoFalke)
=2D #14128 lint: Make sure we read the command line inputs using UTF-8 deco=
ding=20
in python (ken2812221)
=2D #14115 lint: Make all linters work under the default macos dev environm=
ent=20
(build-osx.md) (practicalswift)
=2D #15219 lint: Enable python linters via an array (Empact)
=2D #15155 *test: Support -cli tests using external bitcoin-cli (luke-jr)
=2D #15888 *QA: Add wallet_implicitsegwit to test the ability to transform =
keys=20
between address types (luke-jr)
=2D #15896 *QA: feature_filelock, interface_bitcoin_cli: Use PACKAGE_NAME i=
n=20
messages rather than hardcoding Bitcoin Core (luke-jr)
=2D #15897 *QA/mininode: Send all headers upfront in send_blocks_and_test t=
o=20
avoid sending an unconnected one (luke-jr)
=2D #12911 *test: add test to segwit tests for fee rate when signing raw tx=
=20
(kallewoof)
=2D #12146 *QA: wallet_implicitsegwit: Add tests for -walletimplicitsegwit=
=3D0=20
(luke-jr)

### Platform support
=2D #13866 utils: Use `_wfopen` and `_wfreopen` on windows (ken2812221)
=2D #13886 utils: Run commands using UTF-8 string on windows (ken2812221)
=2D #14192 utils: Convert `fs::filesystem_error` messages from local multib=
yte=20
to UTF-8 on windows (ken2812221)
=2D #13877 utils: Make fs::path::string() always return UTF-8 string on win=
dows=20
(ken2812221)
=2D #13883 utils: Convert windows args to UTF-8 string (ken2812221)
=2D #13878 utils: Add fstream wrapper to allow to pass unicode filename on=
=20
windows (ken2812221)
=2D #14426 utils: Fix broken windows filelock (ken2812221)
=2D #14686 Fix windows build error if `--disable-bip70` (ken2812221)
=2D #14922 windows: Set `_WIN32_WINNT` to 0x0601 (Windows 7) (ken2812221)
=2D #13888 Call unicode API on Windows (ken2812221)
=2D #15468 Use `fsbridge::ifstream` to fix Windows path issue (ken2812221)
=2D #13734 Drop `boost::scoped_array` and use `wchar_t` API explicitly on=20
Windows (ken2812221)
=2D #13884 Enable bdb unicode support for Windows (ken2812221)
=2D #15600 *lockedpool: When possible, use madvise to avoid including sensi=
tive=20
information in core dumps or forked process memory spaces (luke-jr)
=2D #15650 *Handle the result of posix_fallocate system call (lucayepa)

### Miscellaneous
=2D #13935 contrib: Adjust output to current test format (AkioNak)
=2D #14097 validation: Log FormatStateMessage on ConnectBlock error in=20
ConnectTip (MarcoFalke)
=2D #14186 bitcoin-cli: don't translate command line options (HashUnlimited)
=2D #14057 logging: Only log `using config file path_to_bitcoin.conf` messa=
ge on=20
startup if conf file exists (leishman)
=2D #14164 Update univalue subtree (MarcoFalke)
=2D #14272 init: Remove deprecated args from hidden args (MarcoFalke)
=2D #14494 Error if # is used in rpcpassword in conf (MeshCollider)
=2D #14742 Properly generate salt in rpcauth.py (dongcarl)
=2D #14708 Warn unrecognised sections in the config file (AkioNak)
=2D #14756 Improve rpcauth.py by using argparse and getpass modules (promag)
=2D #14785 scripts: Fix detection of copyright holders (cornelius)
=2D #14831 scripts: Use `#!/usr/bin/env bash` instead of `#!/bin/bash` (vim=
88)
=2D #14869 Scripts: Add trusted key for samuel dobson (laanwj)
=2D #14809 Tools: improve verify-commits.py script (jlopp)
=2D #14624 Some simple improvements to the RNG code (sipa)
=2D #14947 scripts: Remove python 2 import workarounds (practicalswift)
=2D #15087 Error if rpcpassword contains hash in conf sections (MeshCollide=
r)
=2D #14433 Add checksum in gitian build scripts for ossl (TheCharlatan)
=2D #15165 contrib: Allow use of github api authentication in github-merge=
=20
(laanwj)
=2D #14409 utils and libraries: Make 'blocksdir' always net specific (hebas=
to)
=2D #14839 threads: Fix unitialized members in `sched_param` (fanquake)
=2D #14955 Switch all RNG code to the built-in PRNG (sipa)
=2D #15258 Scripts and tools: Fix `devtools/copyright_header.py` to always =
honor=20
exclusions (Empact)
=2D #12255 Update bitcoin.service to conform to init.md (dongcarl)
=2D #15266 memory: Construct globals on first use (MarcoFalke)
=2D #15347 Fix build after pr 15266 merged (hebasto)
=2D #15351 Update linearize-hashes.py (OverlordQ)
=2D #15358 util: Add setuphelpoptions() (MarcoFalke)
=2D #15216 Scripts and tools: Replace script name with a special parameter=
=20
(hebasto)
=2D #15250 Use RdSeed when available, and reduce RdRand load (sipa)
=2D #15278 Improve PID file error handling (hebasto)
=2D #15270 Pull leveldb subtree (MarcoFalke)
=2D #15456 Enable PID file creation on WIN (riordant)
=2D #15124 Fail AppInitMain if either disk space check fails (Empact)
=2D #15117 Fix invalid memory write in case of failing mmap(=E2=80=A6) in=20
PosixLockedPageAllocator::AllocateLocked (practicalswift)
=2D #14357 streams: Fix broken `streams_vector_reader` test. Remove unused=
=20
`seek(size_t)`
=2D #11640 Make `LOCK`, `LOCK2`, `TRY_LOCK` work with CWaitableCriticalSect=
ion=20
(ryanofsky)
=2D #14074 Use `std::unordered_set` instead of `set` in blockfilter interfa=
ce=20
(jimpo)
=2D #15275 Add gitian PGP key for hebasto (hebasto)
=2D #8501 *Stats: Fix typing issues in memory management logic (luke-jr)
=2D #8501 *Stats: In weird memory management cases, do the best that makes =
sense=20
(luke-jr)
=2D #13339 *wallet: Escape wallet name in -walletnotify script (promag)
=2D #15367 *feature: Added ability for users to add a startup command=20
(benthecarman)
=2D #15566 *cli: add chain and return network name as per BIP70. (fanquake)

### Documentation
=2D #14120 Notes about control port and read access to cookie (JBaczuk)
=2D #14135 correct GetDifficulty doc after #13288 (fanquake)
=2D #14013 Add new regtest ports in man following #10825 ports reattributio=
ns=20
(ariard)
=2D #14149 Remove misleading checkpoints comment in CMainParams (MarcoFalke)
=2D #14153 Add disable-wallet section to OSX build instructions, update lin=
e in=20
Unix instructions (bitstein)
=2D #13662 Explain when reindex-chainstate can be used instead of reindex=20
(Sjors)
=2D #14207 `-help-debug` implies `-help` (laanwj)
=2D #14213 Fix reference to lint-locale-dependence.sh (hebasto)
=2D #14206 Document `-checklevel` levels (laanwj)
=2D #14217 Add GitHub PR template (MarcoFalke)
=2D #14331 doxygen: Fix member comments (MarcoFalke)
=2D #14264 Split depends installation instructions per arch (MarcoFalke)
=2D #14393 Add missing apt-get install (poiuty)
=2D #14428 Fix macOS files description in qt/README.md (hebasto)
=2D #14390 release process: RPC documentation (karel-3d)
=2D #14497 Add doc/bitcoin-conf.md (hebasto)
=2D #14526 Document lint tests (fanquake)
=2D #14511 Remove explicit storage requirement from README.md (merland)
=2D #14600 Clarify commit message guidelines (merland)
=2D #14617 FreeBSD: Document Python 3 requirement for 'gmake check' (murray=
n)
=2D #14592 Add external interface consistency guarantees (MarcoFalke)
=2D #14625 Make clear function argument case in dev notes (dongcarl)
=2D #14515 Update OpenBSD build guide for 6.4 (fanquake)
=2D #14436 Add comment explaining recentRejects-DoS behavior (jamesob)
=2D #14684 conf: Remove deprecated options from docs, Other cleanup (MarcoF=
alke)
=2D #14731 Improve scripted-diff developer docs (dongcarl)
=2D #14778 A few minor formatting fixes and clarifications to descriptors.m=
d=20
(jnewbery)
=2D #14448 Clarify rpcwallet flag url change (JBaczuk)
=2D #14808 Clarify RPC rawtransaction documentation (jlopp)
=2D #14804 Less confusing documentation for `torpassword` (fanquake)
=2D #14848 Fix broken Gmane URL in security-check.py (cyounkins-bot)
=2D #14882 developer-notes.md: Point out that UniValue deviates from upstre=
am=20
(Sjors)
=2D #14909 Update minimum required Qt (fanquake)
=2D #14914 Add nice table to files.md (emilengler)
=2D #14741 Indicate `-rpcauth` option password hashing alg (dongcarl)
=2D #14950 Add NSIS setup/install steps to windows docs (fanquake)
=2D #13930 Better explain GetAncestor check for `m_failed_blocks` in=20
AcceptBlockHeader (Sjors)
=2D #14973 Improve Windows native build instructions (murrayn)
=2D #15073 Botbot.me (IRC logs) not available anymore (anduck)
=2D #15038 Get more info about GUI-related issue on Linux (hebasto)
=2D #14832 Add more Doxygen information to Developer Notes (ch4ot1c)
=2D #15128 Fix download link in doc/README.md (merland)
=2D #15127 Clarifying testing instructions (benthecarman)
=2D #15132 Add FreeBSD build notes link to doc/README.md (fanquake)
=2D #15173 Explain what .python-version does (Sjors)
=2D #15223 Add information about security to the JSON-RPC doc (harding)
=2D #15249 Update python docs to reflect that wildcard imports are disallow=
ed=20
(Empact)
=2D #15176 Get rid of badly named `doc/README_osx.md` (merland)
=2D #15272 Correct logging return type and RPC example (fanquake)
=2D #15244 Gdb attaching to process during tests has non-sudo solution=20
(instagibbs)
=2D #15332 Small updates to `getrawtransaction` description (amitiuttarwar)
=2D #15354 Add missing `bitcoin-wallet` tool manpages (MarcoFalke)
=2D #15343 netaddress: Make IPv4 loopback comment more descriptive (dongcar=
l)
=2D #15353 Minor textual improvements in `translation_strings_policy.md`=20
(merland)
=2D #15426 importmulti: add missing description of keypool option (harding)
=2D #15425 Add missing newline to listunspent help for witnessScript (hardi=
ng)
=2D #15348 Add separate productivity notes document (dongcarl)
=2D #15416 Update FreeBSD build guide for 12.0 (fanquake)
=2D #15222 Add info about factors that affect dependency list (merland)
=2D #13676 Explain that mempool memory is added to `-dbcache` (Sjors)
=2D #15273 Slight tweak to the verify-commits script directions (droark)
=2D #15477 Remove misleading hint in getrawtransaction (MarcoFalke)
=2D #15489 Update release process for snap package (MarcoFalke)
=2D #15524 doc: Remove berkeleydb PPA from linux build instructions (MarcoF=
alke)
=2D #15559 Correct `analyzepsbt` rpc doc (fanquake)
=2D #15194 Add comment describing `fDisconnect` behavior (dongcarl)
=2D #15754 getrpcinfo docs (benthecarman)
=2D #15763 Update bips.md for 0.18.0 (sipa)
=2D #15757 List new RPCs in psbt.md and descriptors.md (sipa)
=2D #15765 correct bitcoinconsensus_version in shared-libraries.md (fanquak=
e)
=2D #15792 describe onlynet option in doc/tor.md (jonatack)
=2D #15802 mention creating application support bitcoin folder on OSX (Jimm=
yMow)
=2D #15799 Clarify RPC versioning (MarcoFalke)

Credits
=3D=3D=3D=3D=3D=3D=3D

Thanks to everyone who directly contributed to this release:

=2D 1Il1
=2D 251
=2D Aaron Clauson
=2D Adam Jonas
=2D Akio Nakamura
=2D Alexander Leishman
=2D Alexey Poghilenkov
=2D Amir Abrams
=2D Amiti Uttarwar
=2D Andrew Chow
=2D andrewtoth
=2D Anthony Towns
=2D Antoine Le Calvez
=2D Antoine Riard
=2D Antti Majakivi
=2D araspitzu
=2D Arvid Norberg
=2D Ben Carman
=2D Ben Woosley
=2D benthecarman
=2D bitcoinhodler
=2D Carl Dong
=2D Chakib Benziane
=2D Chris Moore
=2D Chris Stewart
=2D Chun Kuan Lee
=2D Cornelius Schumacher
=2D Cory Fields
=2D Craig Younkins
=2D Cristian Mircea Messel
=2D Damian Mee
=2D Daniel Ingram
=2D Daniel Kraft
=2D David A. Harding
=2D DesWurstes
=2D Dimitri Deijs
=2D Dimitris Apostolou
=2D Douglas Roark
=2D DrahtBot
=2D Emanuele Cisbani
=2D Emil Engler
=2D Eric Scrivner
=2D fridokus
=2D Gal Buki
=2D Gleb Naumenko
=2D Glenn Willen
=2D Graham Krizek
=2D Gregory Maxwell
=2D Gregory Sanders
=2D gustavonalle
=2D Harry Moreno
=2D Hennadii Stepanov
=2D Isidoro Ghezzi
=2D Jack Mallers
=2D James Hilliard
=2D James O'Beirne
=2D Jameson Lopp
=2D Jeremy Rubin
=2D Jesse Cohen
=2D Jim Posen
=2D John Newbery
=2D Jon Layton
=2D Jonas Schnelli
=2D Jo=C3=A3o Barbosa
=2D Jordan Baczuk
=2D Jorge Tim=C3=B3n
=2D Julian Fleischer
=2D Justin Turner Arthur
=2D Karel B=C3=ADlek
=2D Karl-Johan Alm
=2D Kaz Wesley
=2D ken2812221
=2D Kostiantyn Stepaniuk
=2D Kristaps Kaupe
=2D Lawrence Nahum
=2D Lenny Maiorani
=2D liuyujun
=2D Luca Venturini
=2D lucash-dev
=2D luciana
=2D Luke Dashjr
=2D marcaiaf
=2D marcoagner
=2D MarcoFalke
=2D Martin Erlandsson
=2D Marty Jones
=2D Mason Simon
=2D Michael Ford
=2D Michael Goldstein
=2D Michael Polzer
=2D Mitchell Cash
=2D mruddy
=2D Murray Nesbitt
=2D OverlordQ
=2D Patrick Strateman
=2D Pierre Rochard
=2D Pieter Wuille
=2D poiuty
=2D practicalswift
=2D priscoan
=2D qubenix
=2D riordant
=2D Russell Yanofsky
=2D Samuel Dobson
=2D sanket1729
=2D Sjors Provoost
=2D Stephan Oeste
=2D Steven Roose
=2D Suhas Daftuar
=2D TheCharlatan
=2D Tim Ruffing
=2D Tobias Kaderle
=2D Vidar Holen
=2D vim88
=2D Walter
=2D Wladimir J. van der Laan
=2D Zain Iqbal Allarakhia

As well as everyone that helped translating on [Transifex]
(https://www.transifex.com/projects/p/bitcoin/).


--nextPart5828916.evidevtqpS
Content-Type: application/pgp-signature; name=signature.asc 
Content-Description: This is a digitally signed message part.

-----BEGIN PGP SIGNATURE-----

iQQzBAABCAAdFiEE5GOpP18xF+7ebHMWvQKUJCH0iJ8FAlzM/d0ACgkQvQKUJCH0
iJ8Wfx//SrFWuhDTRy5eJ5/VD0keKJxxARiMBuLYP3dWGJ8oPbwxYMkOiXQtGFpy
L68xk9kYd/7dNrjYMysRBjX3jeeBYaBkjoOU6r9JlGIPY8qjw2zDn069xSHc6A10
IV69yrCutciqs+ltXslr1azC1czFr/oIUpvgImknpgTHNFbgawm9QGH8UyMs6kA3
j/EXzyYBYhgGugYrnLMlA8qGsdikTYYz97SncOFg0FnrJawPfcURLuJCNhoUa2qw
CcXCGFz/dqB1g51e0TuzGRjWJGyhqYbAAHbXItcKXTT5GEacHO9AXmNNcGtrrz2S
6/8LUQM1zzsaYLx0NmQPE5vqTtjWJxkl/6rJz0HlJ+bEm/7vLQJaPU1QtCr5eoBb
wSstcqAszvwgVcSdPCIqbFVjiS+i/psAMEuxR+qzxHfmyyCgXHMO4ZV8vjLDrkq8
NVg03D1OEJCaYTucYSgF2x8/Qg28w51ykMJjhyY/Wky4sVXjJuVKJlB4mocXCw0u
bTfhGuCt7RNv8ymqR96bdIFnQfyQHinFm6lY0L+qOLkFaD0yofGO8OS1i2Rfwic1
VcVmgwE8AaMpMCPPollfwWyV26Z+gpTG7xbjVe3tvE47OTTvzVObF8hchJy6nXAP
hIlPhdPt/rADjxjwDHwGfhT0mbid+6lkE9F5+CM7M/GBTa/Fil/g5h+nOw48Ksjw
lewpuLmqE3zMD74pCDdxW/fDZM42Cy6IK6sBqDvEGLSFM9y3DQ7l/Q1MxMyr3Fw+
qUUufMREt0wuKEIWlxsP227UfSzZ4hlUTPGlVWTPFM86A4r4WOyKy8ic+tzvd6hV
FgUn/EtYSOnMuWb7QOyl1xx/aY7LL33ENnZRNLT7MurvRCAaa8SD/w3WjqoCnygx
0qCSqr2ltdj5cn3npbI3trM57+yhum8LFE/3V8GMyQktfAQIlm9u3t4b2sEjYj8P
dge+WASiob0r7tCM8NhCdy9SJAF5NQV1IL92IcS8KE8993jA/oL9QOPiV0JI4lBP
JTiKKju1BPR6GW3bO2NM7sXj+EeP7sgyVAjfh6Xijf5AZQ7RWAA2ytgKNCaExGR7
JjzGBWOJBF2TEKvxJx0+KrJt+5FwxJqy2DmX0RfCk80iFS405Nnks7ioADbbd6zZ
+LK7rYO8RsAIEygf+h0vBDDbA43lgddIm6tEHFOQyMISSyy1fX6GE9LaYsQsFUe/
7DUB37pK2R7ahdt58sDe64LUNFDCNWKz8OEsk1ekcrT3cTpNZB4u7zFOumcPyRuh
E2plTViikfUGADjIYU2r7oLT+N7/bbW+4vjU/MivpHLp0uXEfGEQiyVAyAC7CWaJ
YSURtqd6mA+/qQ+3YPkg0b5gu2kY9A==
=kH2E
-----END PGP SIGNATURE-----

--nextPart5828916.evidevtqpS--