Compare commits

...

530 Commits

Author SHA1 Message Date
Wladimir J. van der Laan
f56c00b234 doc: Clean out release notes after release
Tree-SHA512: f0a863919ba6a81da0e6021752ab7499460bb606bb7b12f22a7fe3f4d6705f81cf2a7d9a8f53a52a3e63c767541bc656124ca8e7633713d68796cc630c5a1846
2018-09-18 09:23:39 +02:00
Wladimir J. van der Laan
49e34e2880 doc: Update manpages for 0.16.3
Tree-SHA512: e631405dd03438ac4b5fae5ed2fc0cb061e4cb7092ab068dd99b7c3001c95d166224f50af759454dbf47a2954409ac62c1232988918dd6650213918b853aea2d
2018-09-18 01:55:20 +02:00
Wladimir J. van der Laan
a0f4ff6088 doc: 0.16.3 release notes
Tree-SHA512: 4237ac0c1cd0c0f4c3f50494cf5985a95317730194820a22e2814571107a684fdd5253625707c95ac558a1ad8ab9f36904c46647d0cb931fe67ea2407738133a
2018-09-18 01:42:22 +02:00
Wladimir J. van der Laan
86e2f1d4bb build: Bump version to 0.16.3
Tree-SHA512: 56565311429f56d68508215eaa04f31f3e3f0144f367fc874da78652ce0aeb62b1d609513d9f8dcb204425c8e108103855a737eefc661f8b1f94c6219a9518a3
2018-09-18 01:26:53 +02:00
Wladimir J. van der Laan
696b936aa3 Merge #14249: [0.16] Fix crash bug with duplicate inputs within a transaction
9bd08fd465 [qa] backport: Test for duplicate inputs within a transaction (Suhas Daftuar)
d1dee20547 Fix crash bug with duplicate inputs within a transaction (Suhas Daftuar)

Pull request description:

  This is a backport of #14247 to 0.16.

Tree-SHA512: f11b2b0f2d8089bbac7542f78a0f14fc15c693604cb1168ef5ea71852a206da7eb53b6e420376ed1380583961176ba2d283e409e19d783c7a68c3407933a89b0
2018-09-18 01:25:55 +02:00
Suhas Daftuar
9bd08fd465 [qa] backport: Test for duplicate inputs within a transaction 2018-09-17 17:58:49 -04:00
Suhas Daftuar
d1dee20547 Fix crash bug with duplicate inputs within a transaction
Introduced by #9049
2018-09-17 22:22:30 +02:00
Wladimir J. van der Laan
9e116a6f87 Merge #13852: [0.16] doc: correct the help output for -prune
11b9dbb439 -prune option -help output aligned with code (Hennadii Stepanov)

Pull request description:

  Backports #13844 to the 0.16 branch.

Tree-SHA512: 84cac57ca3b1ef34892e73f131b5f3cc50d3f9e268a4123092cf6cdf519fc20616b5b084f9e9343505c15a2cf663a2c94d18c4587bcb7c261cbe32eeac8afe9b
2018-08-08 12:36:33 +02:00
Wladimir J. van der Laan
b64f02fcfa Merge #13796: [0.16] Make signrawtransaction give an error when amount is needed but missing
212ef1f954 [tests] Check signrawtransaction* errors on missing prevtx info (Anthony Towns)
1825e37075 Error on missing amount in signrawtransaction* (Anthony Towns)

Pull request description:

  Backport of #13547 to 0.16

Tree-SHA512: 7a660023b6948632a1f949443c18fa45add75ec8c36df1ebbaccd181dd1560c1bef460f061f8dab36b6a5df295eb4967effaa2cf55ea06b41d8f7562842a39ec
2018-08-08 12:29:30 +02:00
Hennadii Stepanov
11b9dbb439 -prune option -help output aligned with code
see: .../src/init.cpp#L1063

Github-Pull: #13844
Rebased-From: 312ff01
2018-08-02 21:35:23 +08:00
Wladimir J. van der Laan
6518bcd56c Merge #13797: [0.16] bitcoinconsensus: invalid flags should be set to bitcoinconsensus_error type, add test cases covering bitcoinconsensus error codes
1cdbea7f74 bitcoinconsensus: invalid flags should be set to bitcoinconsensus_error type, add test cases covering bitcoinconsensus error codes (Thomas Kerin)

Pull request description:

  Backport of #13655 to 0.16

Tree-SHA512: b62e185f2aa957f09255090e59f96c039f47a5623d68b6fef8d1dd831c6d3135b039be5cfad0f823687ff2a5143d24e34bd83fefcc9ba5b68f43054cbd9d909d
2018-07-30 17:04:07 +02:00
Wladimir J. van der Laan
8561515022 doc: Clean out release notes after 0.16.2
Tree-SHA512: fb7208356134322f3515c682ac7349eddb1ff54094abe397c94acb7e931b42265aca6b716eba072f79ebdb4a69ea87a5e40b6c4a48571db5b7b095ead45456ef
2018-07-30 16:38:26 +02:00
Thomas Kerin
1cdbea7f74 bitcoinconsensus: invalid flags should be set to bitcoinconsensus_error type, add test cases covering bitcoinconsensus error codes
Github-Pull: #13655
Rebased-From: 417b6c1d29
2018-07-29 21:08:45 +00:00
Anthony Towns
212ef1f954 [tests] Check signrawtransaction* errors on missing prevtx info
Github-Pull: #13547
Rebased-From: 685d1d8115
2018-07-29 20:26:45 +00:00
Anthony Towns
1825e37075 Error on missing amount in signrawtransaction*
Signatures using segregated witness commit to the amount being spent,
so that value must be passed into signrawtransactionwithkey and
signrawtransactionwithwallet. This ensures an error is issued if that
doesn't happen, rather than just assuming the value is 0 and producing
a signature that is almost certainly invalid.

Github-Pull: #13547
Rebased-From: a3b065b51f
2018-07-29 20:26:45 +00:00
Wladimir J. van der Laan
2848aa808f Merge #13703: 0.16.2: [doc] Bump manpages
0296b9c85e 0.16.2: Bump manpages (MarcoFalke)

Pull request description:

Tree-SHA512: 6fffb8ca0e3f2fbbb7561bf9e8710b1ece6475cc76d56120b790b0fa6261cb7a06f65816ab49a37e1ef5b99883d3e9649ac7f8dcabcfb716de03ca85a86cd320
2018-07-20 14:54:20 +02:00
MarcoFalke
0296b9c85e 0.16.2: Bump manpages 2018-07-18 13:38:06 -04:00
Wladimir J. van der Laan
08ca314410 doc: Fill in changelog and credits in release notes
Tree-SHA512: cb2a7cd91447b6e4ad13055e97b542c6984309e28cd33898f3c4bbe92141c6cb65cc472821b34e63f94aa675553d8d68709c431255ccc17e0fc0c54c0c3836bc
2018-07-18 15:36:50 +02:00
Wladimir J. van der Laan
7649da3588 Merge #13678: build: Bump version to 0.16.2
Tree-SHA512: f146372b303213af48ed57fc33ef1cc0aa07a205c53bb5bba291f58dfcae56673841e726a54fd57e6faedfddb011f6e8b40230635abf5701deac1b2ef4b03e59
2018-07-17 12:43:12 +02:00
Cory Fields
4244dbddc4 build: Bump version to 0.16.2 2018-07-16 12:53:21 -04:00
Wladimir J. van der Laan
63daa10015 doc: Clean out release notes for 0.16.2 2018-07-16 15:50:34 +02:00
Ben Woosley
20461fc272 Fix that CWallet::AbandonTransaction would only traverse one level
Prior to this change, it would mark only the first layer of
child transactions abandoned, due to always following the input hashTx
rather than the current now tx.

Github-Pull: #13652
Rebased-From: 89e70f9d7f
Tree-SHA512: 403da0cc400a807e5a30038bd505881a68208c3f9e96ad5a7755e763666982bc3c19564ac13a5757612c8b6efc331fb2ad0edbaf7e830993b84bc64624423e54
2018-07-16 15:37:42 +02:00
Wladimir J. van der Laan
7f27af22b0 Merge #13644: 0.16: Remaining backports for 0.16.2
d9c563095d qa: Initialize lockstack to prevent null pointer deref (MarcoFalke)
21dd5127a4 gui: Show messages as text not html (Wladimir J. van der Laan)
f78e7f6589 [qt] send: Clear All also resets coin control options (Sjors Provoost)
657dfc5bca Fix csBestBlock/cvBlockChange waiting in rpc/mining (Pieter Wuille)
88d1a649a2 Consensus: Fix bug when compiler do not support __builtin_clz* (532479301)
b72c0bd4c9 [qa] Add a test for merkle proof malleation (Suhas Daftuar)
6b9dc8ceae have verifytxoutproof check the number of txns in proof structure (Gregory Sanders)
ed82e7176d wallet: Erase wtxOrderd wtx pointer on removeprunedfunds (MarcoFalke)
e15e3a9ddd Remove boost dependency (boost/assign/std/vector.hpp) (practicalswift)
10621995ed Fix incorrect tests (practicalswift)
170b309981 Make tests pass after 2020 (Bernhard M. Wiedemann)
cfc6f7413b [rpcwallet] Clamp walletpassphrase value at 100M seconds (Suhas Daftuar)
bf1f150190 rpc: fix type mistmatch in listreceivedbyaddress (joemphilips)
2291774bd5 [trivial] Add newlines to end of log messages. (John Newbery)
cf6feb7837 qt: Avoid resetting on resetguisettigs=0 (MarcoFalke)
cbdabef35e qa: Fix wallet_listreceivedby race (MarcoFalke)
79c4fff9ed [tests] Fixed intermittent failure in p2p_sendheaders.py. (lmanners)
c04a4a5ae9 Remove useless mapRequest tracking that just effects Qt display. (Matt Corallo)

Pull request description:

  Some gui/doc/rpc/qa backports

Tree-SHA512: f1e918d2ca6016fc7c5d5adf5d537553a1769731e2dcac788edf02c7354387861ec5bcd0cbf3c833c1485d500c55a73a2799a8b39ed14477524ac46b4ff2332d
2018-07-16 14:49:53 +02:00
MarcoFalke
d9c563095d qa: Initialize lockstack to prevent null pointer deref
Github-Pull: #13300
Rebased-From: fa9da85b7c
2018-07-14 11:12:47 -04:00
Wladimir J. van der Laan
21dd5127a4 gui: Show messages as text not html
Currently, error messages (such as InitError) are displayed as-is, which
means Qt does auto detection on the format.

This means that it's possible to inject HTML from the command line
though e.g. specifying a wallet name with HTML in it. This isn't
a direct security risk because fetching content from internet is
disabled (and as far as I know we never report strings received
from the network this way). However, it can be confusing.

So explicitly force the format as text.

Github-Pull: #12617
Rebased-From: 6fbc0986fa
2018-07-13 13:33:58 -04:00
Sjors Provoost
f78e7f6589 [qt] send: Clear All also resets coin control options
Github-Pull: #12432
Rebased-From: f506c0a7f8
2018-07-13 13:33:58 -04:00
Pieter Wuille
657dfc5bca Fix csBestBlock/cvBlockChange waiting in rpc/mining
Github-Pull: #12743
Rebased-From: 45dd135039
2018-07-13 12:23:39 -04:00
532479301
88d1a649a2 Consensus: Fix bug when compiler do not support __builtin_clz*
#ifdef is not correct since defination is defined to 0 or 1. Should change to #if

Github-Pull: #12573
Rebased-From: 18307849b4
2018-07-13 12:23:39 -04:00
Suhas Daftuar
b72c0bd4c9 [qa] Add a test for merkle proof malleation
Github-Pull: #13452
Rebased-From: d280617bf5
2018-07-13 12:23:39 -04:00
Gregory Sanders
6b9dc8ceae have verifytxoutproof check the number of txns in proof structure
Github-Pull: #13452
Rebased-From: ed82f17000
2018-07-13 12:23:39 -04:00
MarcoFalke
ed82e7176d wallet: Erase wtxOrderd wtx pointer on removeprunedfunds
Github-Pull: #13437
Rebased-From: faa18ca046
2018-07-13 11:50:25 -04:00
practicalswift
e15e3a9ddd Remove boost dependency (boost/assign/std/vector.hpp)
Github-Pull: #13545
Rebased-From: 962d8eed5b
2018-07-13 11:50:25 -04:00
practicalswift
10621995ed Fix incorrect tests
Github-Pull: #13545
Rebased-From: c6fd0df4ef
2018-07-13 11:50:25 -04:00
Bernhard M. Wiedemann
170b309981 Make tests pass after 2020
also test that 64 bit integers are properly handled

Github-Pull: #13061
Rebased-From: 3ee4be1050
2018-07-12 10:27:29 -04:00
Suhas Daftuar
cfc6f7413b [rpcwallet] Clamp walletpassphrase value at 100M seconds
Larger values seem to trigger a bug on macos+libevent (resulting in the
rpc server stopping).

Github-Pull: #12905
Rebased-From: 662d19ff72
2018-07-12 10:03:03 -04:00
joemphilips
bf1f150190 rpc: fix type mistmatch in listreceivedbyaddress
Github-Pull: #12837
Rebased-From: 05c03d1249
2018-07-12 10:03:03 -04:00
John Newbery
2291774bd5 [trivial] Add newlines to end of log messages.
Log messages should terminate with a '\n', or the following log will be
written to the same line without a timestamp. Fix a couple of cases
where the message is not terminated with a \n.

Github-Pull: #12887
Rebased-From: 5b10ab0116
2018-07-12 10:03:02 -04:00
MarcoFalke
cf6feb7837 qt: Avoid resetting on resetguisettigs=0
Github-Pull: #12793
Rebased-From: 342fb80346
2018-07-12 10:03:02 -04:00
MarcoFalke
cbdabef35e qa: Fix wallet_listreceivedby race
Github-Pull: #13304
Rebased-From: fa865efa4a
2018-07-12 10:03:02 -04:00
lmanners
79c4fff9ed [tests] Fixed intermittent failure in p2p_sendheaders.py.
Added handling for the case where headers are announced over more than one message.
refs #12453

Github-Pull: #13192
Rebased-From: 12d1b77f7e
2018-07-12 10:03:02 -04:00
Matt Corallo
c04a4a5ae9 Remove useless mapRequest tracking that just effects Qt display.
I thought we had removed this a long time ago, TBH, its really
confusing feedback to users that we display whether a tx was
broadcast to immediate neighbor nodes, given that has little
indication of whether the tx propagated very far.

Github-Pull: #13622
Rebased-From: beef7ec4be
2018-07-12 09:49:41 -04:00
Wladimir J. van der Laan
dac5374cce Merge #13455: [0.16.2] Backports
9fd3e0001f depends: Update Qt download url (fanquake)
f7401c86b9 Fix parameter count check for importpubkey. (Kristaps Kaupe)
cbd2f70b75 expose CBlockIndex::nTx in getblock(header) (Gregory Sanders)
ce8aa5491f Add Windows shutdown handler (Chun Kuan Lee)
18b0c69e2f Bugfix: Include <memory> for std::unique_ptr (Luke Dashjr)

Pull request description:

  Backports:
  * #12859 Bugfix: Include <memory> for std::unique_ptr
  * #13131 Add Windows shutdown handler
  * #13451 rpc: expose CBlockIndex::nTx in getblock(header)
  * #13507 RPC: Fix parameter count check for importpubkey
  * #13544 depends: Update Qt download url

  to the 0.16 branch.

Tree-SHA512: eeaec52d001d5c81e67dda3a2d3fee7a9445e569366e597b18e81d802c1b7f89e545afd53d094740c37c1714050304979398b9860144454d3a5cb5abc9e9eaca
2018-07-09 21:07:13 +02:00
fanquake
9fd3e0001f depends: Update Qt download url
GitHub-Pull: #13544
Rebased-From: 2fca656
2018-06-30 09:33:58 +08:00
Kristaps Kaupe
f7401c86b9 Fix parameter count check for importpubkey.
Github-Pull: #13507
Rebased-From: 3f72d04
2018-06-26 07:58:01 +08:00
Gregory Sanders
cbd2f70b75 expose CBlockIndex::nTx in getblock(header)
GitHub-Pull: #13451
Rebased-From: 86edf4a
2018-06-15 13:34:09 +08:00
Wladimir J. van der Laan
dac5d68fc6 doc: Last-minute edits to 0.16.1 release notes
Tree-SHA512: 951cdf2b27ddb702906303d1bc07bac204323baf0ac4513ccb5da44cb2cb29ce74a62c75fe6531cfddc9059130890fe11929ea4ac545a17190d57e5163c7cc06
2018-06-13 14:32:11 +02:00
Chun Kuan Lee
ce8aa5491f Add Windows shutdown handler
GitHub-Pull: #13131
Rebased-From: ddebde7
2018-06-13 16:09:04 +08:00
Luke Dashjr
18b0c69e2f Bugfix: Include <memory> for std::unique_ptr
GitHub-Pull: #12859
Rebased-From: a5bca13
2018-06-13 16:07:44 +08:00
Wladimir J. van der Laan
4ea3e8ef07 qt: Periodic translations update
Tree-SHA512: eb84c69adcf1547f6bfcfd2d54ef7201c7147c26aa95e07a67be9ac12eeb31b173c847bd5f27b973c911c287ef3654413bdb201d70e4b9414f784e2d58a0071a
2018-06-01 11:37:03 +02:00
Wladimir J. van der Laan
afc115d753 doc: Add commits and authors to release notes for rc1
Tree-SHA512: e6779d21616eec04168b5726d1fe8a1b8356c3de7f5bad30a94848a0db7c0f84fcc0d6f965424b4f7a2a9a8daba1a11fc53b148b918230b39d8095fa215be6f4
2018-05-30 14:01:27 +02:00
Wladimir J. van der Laan
224a41d1f6 Merge #13336: [0.16.1] doc: Bump to Ubuntu Bionic 18.04 in build-windows.md
6de754306e doc: Bump to Ubuntu Bionic 18.04 in build-windows.md (Chun Kuan Lee)

Pull request description:

  Windows starts to provide Ubuntu 18.04 WSL, it can be downloaded from Microsoft Store.

  GitHub-Pull: #13246
  Rebased-From: 9d4f942

Tree-SHA512: f72b97637fcedee4b21316ecafd43c5889111fedbc6522f805df40241558fdfe7579ad4b6bce1940890b3bc352fd64d428f13fb40e97f913031e7eccdc0f7ddf
2018-05-28 15:04:32 +02:00
Chun Kuan Lee
6de754306e doc: Bump to Ubuntu Bionic 18.04 in build-windows.md
Windows starts to provide Ubuntu 18.04 WSL, it can be downloaded from Microsoft Store.

GitHub-Pull: #13246
Rebased-From: 9d4f942
2018-05-28 20:35:33 +08:00
Wladimir J. van der Laan
81bc9829cd build: Bump version to 0.16.1
Tree-SHA512: 3408031113febc1d9ac3734a355c832813046eb1f2eaa7f29ff0c7b330026ac1fc664ae9ea773370c9abeca0a50f0ec1bb50a6f5940f86df335f822c1f0b1a73
2018-05-28 12:55:30 +02:00
Wladimir J. van der Laan
b42c355085 qt: Pre-rc1 transifex pull
Tree-SHA512: 91372301f876e3813ebac68d466941ba488b8c74f7525ea9686945d50c2b2e29290c84722c96eebed40a246eca343981feaf2f51b836ba2b3923e4ddc15aef30
2018-05-28 12:55:12 +02:00
Wladimir J. van der Laan
07fb2a6e16 Merge #13319: [0.16.1] gui: Backport bech32 checkbox
dcb13a0ab6 qt: Update translations pre-rc1 (MarcoFalke)
0eda98d01b GUI: Allow generating Bech32 addresses with a legacy-address default (Luke Dashjr)
ea487f9f90 GUI: Rephrase Bech32 checkbox text/tooltip (Luke Dashjr)

Pull request description:

Tree-SHA512: 1298fa92579bcbdc80537a3a5b2f8aae460c7ebcb46fbade4305d45c883e1717587e24711792b5f65fd25b7a5999d7b9c82e63f5b4d18240f9ec4a0041efdb9a
2018-05-28 12:07:14 +02:00
Wladimir J. van der Laan
bfd1e92333 Merge #13317: [0.16.1] Remaining backports
08334b73be qa: Pad scriptPubKeys to get minimum sized txs (MarcoFalke)
0a000b9b73 Policy to reject extremely small transactions (Johnson Lau)
1fffc2b346 Add transaction tests for constant scriptCode (Johnson Lau)
d353dd121b Add constant scriptCode policy in non-segwit scripts (Johnson Lau)
d6c3a08c48 Add unit tests for signals generated by ProcessNewBlock() (Jesse Cohen)
bb79aaf93a Fix concurrency-related bugs in ActivateBestChain (Jesse Cohen)
0948153ea6 Do not unlock cs_main in ABC unless we've actually made progress. (Matt Corallo)
c71e535aec Bugfix: ensure consistency of m_failed_blocks after reconsiderblock (Suhas Daftuar)

Pull request description:

Tree-SHA512: 7466b8fcc2a1d598102028019d82c581fe985a11679d002c430287851142598c9172249aa9de511a26bd4c92dc4891b5ab597c24af4f591f2158cc2a58ff7beb
2018-05-28 10:08:51 +02:00
MarcoFalke
dcb13a0ab6 qt: Update translations pre-rc1 2018-05-24 16:46:20 -04:00
Luke Dashjr
0eda98d01b GUI: Allow generating Bech32 addresses with a legacy-address default
Github-Pull: #13251
Rebased-From: 82dda6bed9
2018-05-24 16:32:03 -04:00
Luke Dashjr
ea487f9f90 GUI: Rephrase Bech32 checkbox text/tooltip
- "Bech32" isn't very user-friendly
- You don't spend from addresses

Github-Pull: #13251
Rebased-From: 7ab1c6f6a7
2018-05-24 16:28:16 -04:00
MarcoFalke
08334b73be qa: Pad scriptPubKeys to get minimum sized txs
Github-Pull: #11423
Rebased-From: 364bae5f7a
2018-05-24 14:17:50 -04:00
Johnson Lau
0a000b9b73 Policy to reject extremely small transactions
A transaction with 1 segwit input and 1 P2WPHK output has non-witness size of 82 bytes. Anything smaller than this have unnecessary malloc overhead and are not relayed/mined.

Github-Pull: #11423
Rebased-From: 7485488e90
2018-05-24 14:03:05 -04:00
Johnson Lau
1fffc2b346 Add transaction tests for constant scriptCode
Tests showing that CONST_SCRIPTCODE is applied only to non-segwit transactions

Github-Pull: #11423
Rebased-From: 0f8719bb03
2018-05-24 14:03:01 -04:00
Johnson Lau
d353dd121b Add constant scriptCode policy in non-segwit scripts
This disables OP_CODESEPARATOR in non-segwit scripts (even in an unexecuted branch), and makes a positive FindAndDelete result invalid. This ensures that the scriptCode serialized in SignatureHash() is always the same as the script passing to the EvalScript.

Github-Pull: #11423
Rebased-From: 9dabfe49c0
2018-05-24 14:03:01 -04:00
Jesse Cohen
d6c3a08c48 Add unit tests for signals generated by ProcessNewBlock()
After a recent bug discovered in callback ordering in MainSignals,
this test checks invariants in ordering of
BlockConnected / BlockDisconnected / UpdatedChainTip signals

Github-Pull: #13023
Rebased-From: dd435ad402
2018-05-24 13:56:00 -04:00
Jesse Cohen
bb79aaf93a Fix concurrency-related bugs in ActivateBestChain
If multiple threads are invoking ActivateBestChain, it was possible to have
them working towards different tips, and we could arrive at a less work tip
than we should.  Fix this by introducing a ChainState lock which must
be held for the entire duration of ActivateBestChain to enforce
exclusion in ABC.

Github-Pull: #13023
Rebased-From: a3ae8e6873
2018-05-24 13:55:57 -04:00
Matt Corallo
0948153ea6 Do not unlock cs_main in ABC unless we've actually made progress.
Technically, some internal datastructures may be in an inconsistent
state if we do this, though there are no known bugs there. Still,
for future safety, its much better to only unlock cs_main if we've
made progress (not just tried a reorg which may make progress).

Github-Pull: #13023
Rebased-From: ecc3c4a019
2018-05-24 13:55:52 -04:00
Suhas Daftuar
c71e535aec Bugfix: ensure consistency of m_failed_blocks after reconsiderblock
Github-Pull: #13199
Rebased-From: 11fa6bb66e
2018-05-24 13:55:49 -04:00
Wladimir J. van der Laan
50b2c9e0df Merge #13253: [0.16] Further Backports
acdf433822 Hold cs_main while calling UpdatedBlockTip() and ui.NotifyBlockTip (Jesse Cohen)
5ff571e90c [wallet] [tests] Test disallowed multiwallet params (John Newbery)
4c14e7b67c [wallet] Fix zapwallettxes/multiwallet interaction. (John Newbery)
4087dd08e7 RPC Docs: gettxout*: clarify bestblock and unspent counts (David A. Harding)
b8aacd660e [qa] Handle disconnect_node race (Suhas Daftuar)

Pull request description:

  Backports:
  - #13201 [qa] Handle disconnect_node race
  - #13184 RPC Docs: gettxout*: clarify bestblock and unspent counts
  - #13030 [bugfix] [wallet] Fix zapwallettxes/multiwallet interaction.
  - #12988 Hold cs_main while calling UpdatedBlockTip() signal

  to the 0.16 branch.

Tree-SHA512: 8f65002bbafaf9c436f89051b2d79bf6a668fbd07bd317c64af238ed4a7c8efe776864b739a7f2869f1e3daa16f2f4366a85f41b188f9c454879d2c7b309be50
2018-05-24 10:31:36 +02:00
Wladimir J. van der Laan
5d8de76257 wallet: Exit SyncMetaData if there are no transactions to sync
Instead of crash with an assertion error, simply exit the function
`SyncMetaData` if there is no metadata to sync.

Fixes #13110.

Github-Pull: #13265
Rebased-From: b0d2ca9fb6
Tree-SHA512: 67e446e9ced901e37003a9661b6abea268e2ea648ac3b076d91c8d996de96bed389839a09d579a6562d930bcf501a091eb67454f474aae1174108a8650502072
2018-05-18 14:20:10 +02:00
Jesse Cohen
acdf433822 Hold cs_main while calling UpdatedBlockTip() and ui.NotifyBlockTip
Ensures that callbacks are invoked in the order in which the chain is updated
Resolves #12978

GitHub-Pull: #12988
Rebased-From: d86edd3
2018-05-18 14:10:39 +08:00
John Newbery
5ff571e90c [wallet] [tests] Test disallowed multiwallet params
Add a test to check that bitcoind fails to start when specifying
-zapwallettxes, -salvagewallet and -upgradewallet when running in
multiwallet mode.

GitHub-Pull: #13030
Rebased-From: 1f83839
2018-05-18 14:09:34 +08:00
John Newbery
4c14e7b67c [wallet] Fix zapwallettxes/multiwallet interaction.
-zapwallettxes should be disallowed when starting bitcoin in multiwallet
mode.

GitHub-Pull: #13030
Rebased-From: 3476e3c
2018-05-17 10:50:28 +08:00
David A. Harding
4087dd08e7 RPC Docs: gettxout*: clarify bestblock and unspent counts
GitHub-Pull: #13184
Rebased-From: f30e9be
2018-05-17 10:50:28 +08:00
Suhas Daftuar
b8aacd660e [qa] Handle disconnect_node race
Several tests call disconnect_nodes() on each node-pair in rapid
succession, resulting in a race condition if a node disconnects a peer
in-between the calculation of the nodeid's to disconnect and the
invocation of the disconnectnode rpc call.  Handle this.

GitHub-Pull: #13201
Rebased-From: 09c6699
2018-05-17 10:50:28 +08:00
Wladimir J. van der Laan
feba12fe85 Merge #12967: [0.16] Backports
8fca086 List support for BIP173 in bips.md (Pieter Wuille)
9645aa6 Remove blockmaxsize option from init.cpp (fanquake)
7847b92 Default to defining endian-conversion DECLs in compat w/o config (Matt Corallo)
1720eb3 qt:Show the entire Window when double clicking on taskbar (Chun Kuan Lee)
e055bc0 depends: Fix Qt build with XCode 9.3 (fanquake)
0684cf9 Avoid launching as admin when NSIS installer ends. (JeremyRand)
e802c22 [config] Remove blockmaxsize option (John Newbery)
f118a7a Fix illegal default `addProxy` and `addrSeparateProxyTor` settings. (251)
f60e84d Limit the number of IPs we use from each DNS seeder (e0)

Pull request description:

  Backports:
  - #12626 Limit the number of IPs addrman learns from each DNS seeder
  - #12650 gui: Fix issue: "default port not shown correctly in settings dialog"
  - #12756 [config] Remove blockmaxsize option
  - #12985 Windows: Avoid launching as admin when NSIS installer ends.
  - #12946 depends: Fix Qt build with XCode 9.3
  - #12998 Default to defining endian-conversion DECLs in compat w/o config
  - #12999 qt: Show the Window when double clicking the taskbar icon
  - #13064 List support for BIP173 in bips.md

  to the 0.16 branch.

Tree-SHA512: 3e6b47c54b2cd2bdd81fbc6176cb31e46423f6e05988984d3a09b3535e3cee101ffb071cf753a4beff3c9f0521eb5de4b7c0424a3e97da801d56b4015847ac0f
2018-05-16 13:41:02 +02:00
Pieter Wuille
8fca086d69 List support for BIP173 in bips.md 2018-05-03 10:02:34 +08:00
fanquake
9645aa6262 Remove blockmaxsize option from init.cpp 2018-05-01 20:57:58 +08:00
Matt Corallo
7847b92605 Default to defining endian-conversion DECLs in compat w/o config
While this isn't a supported build configuration, some build
systems need to build without going through our autotools steps,
so defaulting to something sane may make it easier to build.

Specifically, this fixes the inability to build
rust-bitcoinconsensus on some non-x86 platforms. It needs to build
without our autotools/configure steps to ensure correct compile
args are passed from the rust build system to gcc. Converting the
args from the rust build system to gcc would be a lot of
unmaintainable work.

GitHub-Pull: #12998
Rebased-From: 150b2f0
2018-04-26 23:43:54 +08:00
Chun Kuan Lee
1720eb3018 qt:Show the entire Window when double clicking on taskbar
GitHub-Pull: #12999
Rebased-From: 67bf2aa
2018-04-26 23:43:54 +08:00
fanquake
e055bc0fdf depends: Fix Qt build with XCode 9.3
GitHub-Pull: #12946
Rebased-From: 5b4fc3e
2018-04-26 23:43:54 +08:00
JeremyRand
0684cf9b58 Avoid launching as admin when NSIS installer ends.
The Bitcoin Core NSIS script runs with elevated privileges.  Unfortunately, this means that it launches Bitcoin Core itself with elevated privileges when the user chooses to launch Bitcoin Core at the end of the installation procedure.  This commit works around the issue by having explorer.exe launch Bitcoin Core.  Seems to be a similar approach to what http://nsis.sourceforge.net/ShellExecAsUser_plug-in does, but without a plugin.

h/t to "UK" at https://mdb-blog.blogspot.se/2013/01/nsis-lunch-program-as-user-from-uac.html?showComment=1410158039989#c2463780017054126736 for the sample code.

Fixes #7990.

GitHub-Pull: #12985
Rebased-From: 7d8a8cc
2018-04-26 23:43:54 +08:00
John Newbery
e802c22947 [config] Remove blockmaxsize option
The blockmaxsize option was marked as deprecated in V0.15.1, and code
was added to convert provided blockmaxsize into blockmaxweight. However,
this code was incorrectly implemented, and blockmaxsize was silently
ignored.

No users have complained about blockmaxsize being ignored, so just
remove it in V0.17.

GitHub-Pull: #12756
Rebased-From: 4757c04
2018-04-26 23:43:54 +08:00
251
f118a7a35b Fix illegal default addProxy and addrSeparateProxyTor settings.
GitHub-Pull: #12650
Rebased-From: 40c5886
2018-04-26 23:43:54 +08:00
e0
f60e84dba4 Limit the number of IPs we use from each DNS seeder
A risk exists where a malicious DNS seeder eclipses a node by returning an enormous number of IP addresses. In this commit we mitigate this risk by limiting the number of IP addresses addrman learns to 256 per DNS seeder.

GitHub-Pull: #12626
Rebased-From: 46e7f80
2018-04-26 23:43:54 +08:00
MarcoFalke
9ea62a3dc4 Merge #13049: [0.16] qa: Backports
41c29f6d1d qa: Fix python TypeError in script.py (MarcoFalke)
7460945e0b [qa] Delete cookie file before starting node (Suhas Daftuar)
0a76ed232a qa: Cache only chain and wallet for regtest datadir (MarcoFalke)
6c26df06ad [qa] Ensure bitcoind processes are cleaned up when tests end (Suhas Daftuar)
df38b130d9 [tests] Test starting bitcoind with -h and -version (John Newbery)
4bdb0ce517 [tests] Fix intermittent rpc_net.py failure. (John Newbery)
0e98f96e42 test: Use wait_until in tests where time was used for polling (Ben Woosley)
1286f3e49a test: Use wait_until to ensure ping goes out (Ben Woosley)
cfebd400ef [test] Round target fee to 8 decimals in assert_fee_amount (Karl-Johan Alm)

Pull request description:

  Similar to #12967 this contains all relevant bugfixes and improvements to the functional test suite.

  I didn't include fixes to make the tests run on Windows, since that is still an ongoing effort and doesn't seem worth to backport.

  As all of these are clean cherry-picks, I suggest reviewers redo the cherry-picks to get the same branch and then run the extended test suite.

Tree-SHA512: 70e1bc28d5572f93796f1ac4d97d77e8146869c15dcc1e3b65a730fa2641283050f769cefd9791d800c758e0a92f11fd55ed0797ccec87b897c7e701d0187f34
2018-04-24 10:02:56 -04:00
MarcoFalke
41c29f6d1d qa: Fix python TypeError in script.py
Github-Pull: #12475
Rebased-From: fa41d68a2e
2018-04-20 18:38:41 -04:00
Suhas Daftuar
7460945e0b [qa] Delete cookie file before starting node
If a cookie file exists in a datadir prior to node startup, it must have
been leftover from a prior unclean shutdown. As bitcoind will overwrite
it anyway, delete it before starting up to prevent the test framework
from inadvertently trying to connect using stale credentials.

Github-Pull: #12902
Rebased-From: 75d0e4c544
2018-04-20 18:38:41 -04:00
MarcoFalke
0a76ed232a qa: Cache only chain and wallet for regtest datadir
Github-Pull: #12638
Rebased-From: fa2310572f
2018-04-20 18:38:41 -04:00
Suhas Daftuar
6c26df06ad [qa] Ensure bitcoind processes are cleaned up when tests end
Github-Pull: #12904
Rebased-From: e36a0c0852
2018-04-20 18:38:41 -04:00
John Newbery
df38b130d9 [tests] Test starting bitcoind with -h and -version
Github-Pull: #12843
Rebased-From: 63048ec73d
2018-04-20 18:38:41 -04:00
John Newbery
4bdb0ce517 [tests] Fix intermittent rpc_net.py failure.
rpc_net.py would intermittently fail on Travis, probably
due to assuming that two consecutive RPC calls were atomic.
Fix this by only testing that amounts are bounded above and
below rather than equal.

Github-Pull: #12804
Rebased-From: 5a67c0524e
2018-04-20 18:38:41 -04:00
Ben Woosley
0e98f96e42 test: Use wait_until in tests where time was used for polling
Github-Pull: #12553
Rebased-From: 81b0822772
2018-04-20 18:38:41 -04:00
Ben Woosley
1286f3e49a test: Use wait_until to ensure ping goes out
Intermittent failure evident here:
https://travis-ci.org/bitcoin/bitcoin/jobs/344021180

Github-Pull: #12545
Rebased-From: 0eb84f30d8
2018-04-20 18:38:41 -04:00
Karl-Johan Alm
cfebd400ef [test] Round target fee to 8 decimals in assert_fee_amount
The output would produce arbitrary number of decimal points, sometimes resulting in 9 decimals:
AssertionError: Fee of 0.00000415 BTC too low! (Should be 0.000006175 BTC)
The above looks like the expected fee is 6175 sats when in reality it's 618.

Github-Pull: #12486
Rebased-From: 42e1b5d979
2018-04-20 14:58:48 -04:00
Wladimir J. van der Laan
845838c445 Merge #12636: backport: #11995 Fix Qt build with Xcode 9
f3b8d85 devtools: Exclude patches from lint-whitespace GitHub-Pull: #12442 Rebased-From: fafbf7f (MarcoFalke)
686cb86 [Depends] Fix Qt build with Xcode 9.2 (fanquake)

Pull request description:

  GitHub-Pull: #11995
  Rebased-From: 2b1f794

Tree-SHA512: 73d1c0a87fd135f3ad8bb737b97037ef047e582c41a7473833e82776957caf372fcd0caa764fc4eed792e9998e214ae829bad5535db6d589827085a74b0fa6f4
2018-03-14 16:16:59 +01:00
MarcoFalke
f3b8d85b4b devtools: Exclude patches from lint-whitespace
GitHub-Pull: #12442
Rebased-From: fafbf7f
2018-03-14 21:46:45 +08:00
Wladimir J. van der Laan
46ca8f383e Merge #12648: [0.16] test: Update trusted git root
faf316a43 test: Update trust git root (Wladimir J. van der Laan)

Pull request description:

  Marco Falke's old key expired, causing a travis error while verifying
  commits 36afd4db44 and before:

      gpg: Good signature from "Marco Falke <marco.falke@tum.de>" [unknown]
      gpg:                 aka "Marco Falke <falke.marco@gmail.com>" [unknown]
      gpg: Note: This key has expired!
      Primary key fingerprint: B8B3 F1C0 E58C 15DB 6A81  D30C 3648 A882 F431 6B9B
        Subkey fingerprint: FE09 B823 E6D8 3A3B C798  3EAA 2D7F 2372 E50F E137

  Update the trusted root commit to the commit after that, to fix
  this issue.

  (cherry picked from commit 7deba93bdc)

Tree-SHA512: c86cc23d087af54a1448545c122fc67a0c556b5eac8ac7d16eeec8c42d8d0d81b7b5041f9a175787604aa47883b68403cfa01c10a52db64e35be52e559b20ec8
2018-03-13 16:18:15 +01:00
fanquake
686cb86002 [Depends] Fix Qt build with Xcode 9.2
GitHub-Pull: #11995
Rebased-From: 2b1f794
2018-03-12 06:59:48 +08:00
Wladimir J. van der Laan
faf316a43f test: Update trust git root
Marco Falke's old key expired, causing a travis error while verifying
commits 36afd4db44 and before:

    gpg: Good signature from "Marco Falke <marco.falke@tum.de>" [unknown]
    gpg:                 aka "Marco Falke <falke.marco@gmail.com>" [unknown]
    gpg: Note: This key has expired!
    Primary key fingerprint: B8B3 F1C0 E58C 15DB 6A81  D30C 3648 A882 F431 6B9B
      Subkey fingerprint: FE09 B823 E6D8 3A3B C798  3EAA 2D7F 2372 E50F E137

Update the trusted root commit to the commit after that, to fix
this issue.

(cherry picked from commit 7deba93bdc)
2018-03-08 10:53:38 -05:00
MarcoFalke
60086ddc34 Merge #12637: backport: #12556 fix version typo in getpeerinfo RPC call help
e730b82b07 fix version typo (Tamas Blummer)

Pull request description:

  GitHub-Pull: #12556
  Rebased-From: d16bfaa

Tree-SHA512: b6626fabdd5f493016334ada0182565c7f834a22dc08dc846c71a190e61193dd4e28754e67b20086d9afeab9a58e38c3621c614eadf368b2d35b9c08a843356a
2018-03-07 16:14:40 -05:00
Tamas Blummer
e730b82b07 fix version typo
GitHub-Pull: #12556
Rebased-From: d16bfaa
2018-03-07 11:40:14 -05:00
MarcoFalke
72a3290c90 Merge #12585: [0.16] depends: Switch to downloading expat from GitHub
25afebc2ba depends: Switch expat download to GitHub (fanquake)

Pull request description:

  @droark [mentioned](https://github.com/bitcoin/bitcoin/pull/12402#issuecomment-370098383) the expat download was failing when trying to gitian build 0.16.
  I tried locally and also saw issues:
  ```
  make download
  Checksum missing or mismatched for expat source. Forcing re-download.
  Fetching expat-2.2.1.tar.bz2 from https://downloads.sourceforge.net/project/expat/expat/2.2.1
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                   Dload  Upload   Total   Spent    Left  Speed
    0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
  100   652  100   652    0     0    361      0  0:00:01  0:00:01 --:--:--     0
  /Users/xxx/Github/bitcoin/depends/work/download/expat-2.2.1/expat-2.2.1.tar.bz2.temp: FAILED
  shasum: WARNING: 1 computed checksum did NOT match
  Fetching expat-2.2.1.tar.bz2 from https://bitcoincore.org/depends-sources
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                   Dload  Upload   Total   Spent    Left  Speed
    0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
  curl: (22) The requested URL returned error: 404 Not Found
  make[1]: *** [/Users/xxx/Github/bitcoin/depends/sources/download-stamps/.stamp_fetched-expat-expat-2.2.1.tar.bz2.hash] Error 22
  make: *** [download-linux] Error 2
  ```
  This switches to downloading from GitHub, as we are doing in master.

Tree-SHA512: 0e3072ce4d8fee3e2bc434afc7469968c21e01ca35aa2ccbffc25f8e9b00af2e4a5f3f9e4cd5c0cd8e72a10b16205236eb0536380849109a739c09358dbc1394
2018-03-05 08:01:18 -05:00
fanquake
25afebc2ba depends: Switch expat download to GitHub 2018-03-03 11:58:25 +08:00
Wladimir J. van der Laan
a17fecfdf0 Merge #12518: [0.16] Bump leveldb subtree
835a21b Squashed 'src/leveldb/' changes from c521b3ac65..64052c76c5 (MarcoFalke)

Pull request description:

  The leveldb bump is the same branch/commit as in #12451

Tree-SHA512: 585a55747c75e990c9fd73399e98e548c01bef8b960c0a99844326de43663d004d2211b4689518f2d3e51cc48a732e9c92082939c356793143db411224fa75fa
2018-03-01 19:42:33 +01:00
Wladimir J. van der Laan
ea2e39fd20 qt: Remove faulty and unnecessary en_US translation
This faulty translation contained Chinese messages, and as en_US is our
source language, having a separate translation for it is pointless, remove it.

Tree-SHA512: 8493876926355890aa3b713851ed53d37ffe601280f7e0f45461abfe9671af10dc5c6ce966adb89b663486a46df43b0a36b797da7e1cd719597a7e15914bd4a2
2018-02-27 15:51:22 +01:00
Wladimir J. van der Laan
01f931b928 test: Add missing signal.h header
util_tests.cpp needs to include the signal.h header on FreeBSD.

Reported by denis2342 on IRC.

Github-Pull: #12447
Rebased-From: dd7e42cbb4
Tree-SHA512: 10ead029bb59f5d69e37b5679c710f22d64051de26e1ec8342eec4e4dec4d76249e16dff78d192972bcb8d139d99c7555a7cb2fe43b2b911103eab6d6f943b79
2018-02-27 10:49:44 +01:00
Wladimir J. van der Laan
5d41110c74 doc: Clear out release notes post-0.16.0
Moved to: https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.16.0.md

Tree-SHA512: 6619521357a1baa5df2d4deb9e75784f6f48711a7b5d5120cf02b47a80e242e41dcf34dadfd1b257bbdcd883c7dd216d36fbfff24abcf03c590bbf0f6bbec520
2018-02-27 10:48:39 +01:00
Henrik Jonsson
b0f692f81e [depends] Allow depends system to support armv7l
Github-Pull: #12474
Rebased-From: ac91ea64c2
Tree-SHA512: 61020cab59532738bc876fc4591923a5b48fee7c5729419bc42654d714cd6cad685e6482e199a17bb57ea97edcd129a15561939d55fa40661d8f051329942bdb
2018-02-23 17:14:13 +01:00
Wladimir J. van der Laan
4b4d7eb255 doc: Remove note about temporary file from release notes
About time, before tagging final.

Tree-SHA512: d54d77a501d227183be7b136025e5ac5e883cd140867368aa552aae89680d536f35f7619f58506069b083c7f718506d42f871fb95e2dcb76ab01cd2159c664be
2018-02-22 20:20:48 +01:00
Wladimir J. van der Laan
a8e62a8426 doc: Update release notes from wiki for rc3
Tree-SHA512: ff0f10dc9672771a941a1bcbf098e7b17ced4c34bd47a1394f16ca0e6f5f4e74e3db4960b2f0a1e7f489e7c438104c32da7754304fc3d64ff29947405e680e1f
2018-02-15 23:32:28 +01:00
Wladimir J. van der Laan
51093478c0 qt: Pre-rc4 translations update
Tree-SHA512: b209b5d404395c8031d92f332885f3ec8f8d040090b0afe55a8b915192c040494c387060cc8da4dd25bdb06d2633f8d42adae27a83933704cccf31d26ad0717c
2018-02-15 23:04:45 +01:00
Pieter Wuille
3762ac127a Make signrawtransaction accept P2SH-P2WSH redeemscripts
Github-Pull: #12427
Rebased-From: 5f605e172b
Tree-SHA512: caf8c4e1806757d705493de30eea4f6a146a334ca6f6c93bc74cda43abda391b8406dd8ed6765fcde8eb86b3fb55689547ab69a30f34fca0d7896ea8c4e1db67
2018-02-15 22:38:14 +01:00
Cory Fields
ad10b90e50 fix possible shutdown assertion with -reindex-shutdown
Credit @eklitzke for reproducing.

Github-Pull: #12349
Rebased-From: ceaefdd5f3
Tree-SHA512: bdc614d3c3fba23147be9528c581e25bbf1f0c359b525b4a05472ab42484724a8b34c8b3ed151f3ff23e48235e972950f9daa155d9ca3c4a9de6d61bf0591b4b
2018-02-15 22:38:12 +01:00
Wladimir J. van der Laan
4d54e7ad41 test: Add unit test for LockDirectory
Add a unit test for LockDirectory, introduced in #11281.

Github-Pull: #12422
Rebased-From: 1d4cbd26e4
Tree-SHA512: 8186f4b22c65153e30ec1e0b68be20fd59d34e1fe565d99f3b5a302780125953b867fb14c37144de3fd7baf5751df94bf3901eebbb7b820491ca452706d4e205
2018-02-15 22:38:10 +01:00
Wladimir J. van der Laan
32a726846d util: Fix multiple use of LockDirectory
This commit fixes problems with calling LockDirectory multiple times on
the same directory, or from multiple threads. It also fixes the build on
OpenBSD.

- Wrap the boost::interprocess::file_lock in a std::unique_ptr inside
  the map that keeps track of per-directory locks. This fixes a build
  issue with the clang 4.0.0+boost-1.58.0p8 version combo on OpenBSD
  6.2, and should have no observable effect otherwise.

- Protect the locks map using a mutex.

- Make sure that only locks that are successfully acquired are inserted
  in the map.

- Open the lock file for appending only if we know we don't have the
  lock yet - The `FILE* file = fsbridge::fopen(pathLockFile, "a");`
  wipes the 'we own this lock' administration, likely because it opens
  a new fd for the locked file then closes it.

Github-Pull: #12422
Rebased-From: fc888bfcac
Tree-SHA512: c8b8942fad9ea9d9e55f8e5e360f7cf3a8b00cd17e6bc5ec5895e1e6ddcbca796e62e82856e82f0562869a624d75ad510e108077461bb47a87b2b52be0aba866
2018-02-15 22:38:08 +01:00
Wladimir J. van der Laan
5e40e64fac travis: Don't fetch --unshallow when no longer shallow-cloning
Tree-SHA512: a1a6d794431de9639dc985bd42f852f4e11cc2090a826c9a5c2f32658246f5a2a634f113b86ae66bf6222fe3180c3c23145bc297082ff9f61d3abbab5ac53341
2018-02-15 16:42:45 +01:00
MarcoFalke
e2431d144a travis: Full clone for git subtree check
Github-Pull: #12388

Tree-SHA512: 8dc7fd5619e60674021ef58f384ddaa2b0d49a88f8babab03697ab19819954f9521de0ede7398661be670ce6339bfea436b10ad916b72f194e18efdb3721c08d
2018-02-15 16:00:38 +01:00
João Barbosa
f8938248ef Interrupt loading thread after shutdown request
Github-Pull: #12415
Rebased-From: 2e9406c0c5
Tree-SHA512: ad70df9fdcba38bc9eeac4e4e64f7d8607fbe92aefac3579a26939e642112d70ebee81c5a227bb8735bae87f95640061a5ab22b583275c7dd6c3277544bc427b
2018-02-15 14:42:27 +01:00
Russell Yanofsky
ff44101e8d Fix rescan test failure due to unset g_address_type, g_change_type
New global variables were introduced in #11403 and not setting them causes:

    test_bitcoin: wallet/wallet.cpp:4259: CTxDestination GetDestinationForKey(const CPubKey&, OutputType): Assertion `false' failed.
    unknown location(0): fatal error in "importwallet_rescan": signal: SIGABRT (application abort requested)

It's possible to reproduce the failure reliably by running:

    src/test/test_bitcoin --log_level=test_suite --run_test=wallet_tests/importwallet_rescan

Failures happen nondeterministically because boost test framework doesn't run
tests in a specified order, and tests that run previously can set the global
variables and mask the bug.

Github-Pull: #12424
Rebased-From: b7f6002ed5
Tree-SHA512: 1cc64db3b1d886d793e9d194b318dde3d5f628bde778a50513de4bf54dcfc77152885e72608927e3e490d253350ca0381847539a904cb31862f3a6fceac88dc1
2018-02-14 12:29:12 +01:00
Matt Corallo
0f616517e1 Fix ignoring tx data requests when fPauseSend is set on a peer
This resolves a bug introduced in
66aa1d58a1 where, if when responding
to a series of transaction requests in a getdata we hit the send
buffer limit and set fPauseSend, we will skip one transaction per
call to ProcessGetData.

Bug found by Cory Fields (@theuni).

Github-Pull: #12392
Rebased-From: c4af738763
Tree-SHA512: d2f7707eb9f925a655f66e5e77ce406c5266f7b2feccd5bcdabf6d5bc27a3f6578e753fac83d9c8c3fd7cf7de6fee086eee2f95f77af99ea2c4e5ae77c322c58
2018-02-12 10:30:50 +01:00
Sjors Provoost
d44cd7ed4b Reset pblocktree before deleting LevelDB file
Github-Pull: #12401
Rebased-From: a8b5d20f4f
Tree-SHA512: 3a87b6113283c3588f46bb5c725ec33ac639e2f91c589b5c0eb4375e3d23bd6c18e7ba96faf70be2afea86d8e6252bf4dbcf9c9ed166ce2d49846ff947a36d2e
2018-02-12 10:30:48 +01:00
Wladimir J. van der Laan
a5e3d44cc8 doc: Update release notes from wiki (for rc3 PRs)
Tree-SHA512: 34fa3ae23c0857fe7a0972b7c5dee802dc66b1eb85d6f70dc50257c4b61a10bab3d481cae6288d5a5da3230505d12e861373988a16a888a3198fbddd36a919bb
2018-02-08 10:50:08 +01:00
Wladimir J. van der Laan
4f63a43f6b qt: Pre-rc3 translations update
Tree-SHA512: e91c44f19b4a6b18736e664e9f446f3e6b457a1b239999ed0171965cfb2af2702b0083340a789d26c293ebf71e52d4a87af0e44d4e6a83a920bbf98c1c3dffa9
2018-02-08 10:31:04 +01:00
fivepiece
758a41e100 Bech32 addresses in dumpwallet
Output bech32 addresses in dumpwallet if address type is not as legacy

Github-Pull: #12315
Rebased-From: 45eea40aa8
Tree-SHA512: 3426292ddaeaafebc25fe84802011f5569a0cbb47fcc3209e7f00f64fc6eb1e637732722bbd02dce8d46be87d0f3687ce8370e71e9286bf7d00afc0a895faecb
2018-02-08 10:07:45 +01:00
Matt Corallo
3f5012beb6 Add braces to meet code style on line-after-the-one-changed.
Github-Pull: #12368
Rebased-From: 02fc886363
Tree-SHA512: 8e159541f5270801fd3c70540ad3c55e93f0ba37039e651d21f65ba9b271bbbb2f1389b13a0f40fea337e88bb1711f498bb3ee1230ec2c40b6530846ff241a8b
2018-02-08 10:07:43 +01:00
Matt Corallo
b8947554dd Hold mempool.cs for the duration of ATMP.
This resolves an issue where getrawmempool() can race mempool
notification signals. Intuitively we use mempool.cs as a "read
lock" on the mempool with cs_main being the write lock, so holding
the read lock intermittently while doing write operations is
somewhat strange.
This also avoids the introduction of cs_main in getrawmempool()
which reviewers objected to in the previous fix in #12273

Github-Pull: #12368
Rebased-From: 85aa8398f5
Tree-SHA512: 90a505a96cecc065e8575d816f3bb35040df8672efc315f45eb3f2ea086e8ea6ee2c99eed03d0fe2215c8d3ee947a7b120e3c57a25185d03550c9075573ab032
2018-02-08 10:07:41 +01:00
Wladimir J. van der Laan
4cd7edba47 http: Remove numThreads and ThreadCounter
The HTTP worker thread counter, as well as the RAII object that was used
to maintain it, is unused now, so can be removed.

Signed-off-by: Wladimir J. van der Laan <laanwj@gmail.com>
Github-Pull: #12366
Rebased-From: 11e01515fe
Tree-SHA512: 87055c4c14986973f4c1604db264fb5a9de21bb481e9d39b201774e2d17ed92a7d1617449471c13f56e0f1f09a8aebdf1254a71d6c7b856c880a5b71e0c3ba9d
2018-02-08 10:07:39 +01:00
Wladimir J. van der Laan
93de37a12b http: Remove WaitExit from WorkQueue
This function, which waits for all threads to exit, is no longer needed
now that threads are joined instead.

Signed-off-by: Wladimir J. van der Laan <laanwj@gmail.com>
Github-Pull: #12366
Rebased-From: f94665466e
Tree-SHA512: 5cda90b4c081424d637031c0bbf168f177667733ff20b6f77eac84e503f7fad6fab3eb897f191edd819f18b270e3ecea78974978abd102d323f42d9d06216e53
2018-02-08 10:07:37 +01:00
Wladimir J. van der Laan
dd346cb262 http: Join worker threads before deleting work queue
This prevents a potential race condition if control flow ends up in
`ShutdownHTTPServer` before the thread gets to `queue->Run()`,
deleting the work queue while workers are still going to use it.

Meant to fix #12362.

Signed-off-by: Wladimir J. van der Laan <laanwj@gmail.com>
Github-Pull: #12366
Rebased-From: b1c2370dde
Tree-SHA512: 7fbe8e562ba0e1138f95deb42e84cda734bef0d7058349728b3e1602b9f65777c5b1be0f6bd5a7e513ac38487dc82e62fd0a6ee4ed985cbf36c90a7eec18eced
2018-02-08 10:07:35 +01:00
Wladimir J. van der Laan
dafd0078a2 qt: Clarify some comments
Signed-off-by: Wladimir J. van der Laan <laanwj@gmail.com>
Github-Pull: #12374
Rebased-From: 1e5d14b3f7
Tree-SHA512: 367be993e298cb822618c2c64f83163c65d93ca588f183584d032fa1391ddac292e7a2882118037913d192ba77e1b2d5ab518ad029e0b05230be45da2d0c047c
2018-02-08 10:07:34 +01:00
Wladimir J. van der Laan
daaae36e15 qt: Make sure splash screen is freed on AppInitMain fail
The `splashFinished` event was never sent if AppInitMain fails,
causing the splash screen to stick around, causing problems
later.

This bug has existed for a while but is now trigging potential crashed
because the splash screen subscribes to wallet events.

Meant to fix #12372.

Signed-off-by: Wladimir J. van der Laan <laanwj@gmail.com>
Github-Pull: #12374
Rebased-From: f5a4c3ddf4
Tree-SHA512: 1c59633f0caec6344dce7f7d69d2e98242601fa906b1845c372a59c8ba015c3ac76389dd5d4e60b2fdb52d2878d566a0325679470075a680418cade7204069ef
2018-02-08 10:07:32 +01:00
MarcoFalke
604f289f71 qt: Poll ShutdownTimer after init is done
Github-Pull: #12377
Rebased-From: 2222bf02c9
Tree-SHA512: 575c10d9f043e2843616b989daaecfb357482445bc44b9f3af2fe0d891bb36b5ccb572f326703ea85291d56b9f6e8f4828496099b05889daea2277ad38aa0d0e
2018-02-08 10:07:30 +01:00
Matt Corallo
0f207c488a Fix fast-shutdown crash if genesis block was not loaded
If the ShutdownRequested() check at the top of ActivateBestChain()
returns false during initial genesis block load we will fail an
assertion in UTXO DB flush as the best block hash IsNull(). To work
around this, we move the check until after one round of
ActivateBestChainStep(), ensuring the genesis block gets connected.

Github-Pull: #12367
Rebased-From: dd2de47c62
Tree-SHA512: c2465be25aee327d16d460c9b58d25a5aeedec309f539898e78419bea76dbbe9cde9cc88ec393af38a82e6013d71cce85f4223c9bf04e7244ed619f20f734aa4
2018-02-08 10:07:28 +01:00
Matt Corallo
09fc859ef0 Fix fast-shutdown hang on ThreadImport+GenesisWait
If the user somehow manages to get into ShutdownRequested before
ThreadImport gets to ActivateBestChain() we may hang waiting on
condvar_GenesisWait forever. A simple wait_for and
ShutdownRequested resolves this case.

Github-Pull: #12367
Rebased-From: 1c9394ad47
Tree-SHA512: fb0751ef32d2005520738bf3b0a0f41ae3f9314d700d2a85eb50f023e87e109ce806cdcdf4a08f49a4d9c1001e27df7f461d3fd52b1f5a57885260ce9375260f
2018-02-08 10:07:24 +01:00
Wladimir J. van der Laan
da84760701 Merge #12380: 0.16: Check in current release notes draft
d56355a 0.16: Check in current release notes draft (MarcoFalke)

Pull request description:

  Gives people a chance to look at for rc3

Tree-SHA512: e00d5e5390da7c20c85a7edc88693e048109b12a0e2a8a022ecf4a7fbbfc29081a1eb1d4e7f212c22b49411a5e0527f7259ab4c178d5b72749b5dcb7731c51e3
2018-02-08 09:25:03 +01:00
MarcoFalke
d56355ad37 0.16: Check in current release notes draft 2018-02-07 14:55:56 -05:00
Wladimir J. van der Laan
f17942a3bc qt: Pre-rc2 translations update
Tree-SHA512: 09551113babe41bcc33e58c4467a17405f411ef4bc4cceeab937d35d115f946d3105d0540960456785843d59571410bf58dd9b5262d085b8a13a4d367b0e1c3b
2018-02-02 10:03:10 +01:00
Cory Fields
5303970c26 net: don't retry failed oneshot connections forever
Github-Pull: #12329
Rebased-From: 660f5f19ae
Tree-SHA512: 7e7401b0ade3a2482dd246cc92c795230b37001a13fd7d050847ea532b619106dfdfc113e95c2891c689d421b3dd775d1833789061cd90dc094f13c4f5f6b278
2018-02-02 09:51:25 +01:00
João Barbosa
0dc6a30ef3 [gui] Defer coin control instancing
Defer the GUI coin control instancing so that argument processing
is taken into account for the default coin control values.

Github-Pull: #12327
Rebased-From: 6558f8acc3
Tree-SHA512: 213b350fdb334e409ce01f7f6d6de30cada752201d9ff96a6f93f96e9f80f8baa6e6b251087c01b04d6317bcb805201d6667de27e174612a39b4982bb4793375
2018-02-02 09:51:21 +01:00
Cory Fields
e54c1ac110 net: initialize socket to avoid closing random fd's
Github-Pull: #12326
Rebased-From: 96dbd381cf
Tree-SHA512: 8b4a09974060e6d0992e7b9ec06c5de3ad2daf970c4484077fda803f37d3ed874dcb6fec226107b2aa0fa64cfe4116604ca4f90599430fcc622bbb805be55e1b
2018-02-01 19:22:19 +01:00
Wladimir J. van der Laan
6c2788c7c8 test: Make ua_comment test pass on 0.16.0
The specific length of the uacomment is one shorter on `0.16.0` than on
`0.15.99` causing the (stupid) test to fail.
Just match the latter part of the message only.

Github-Pull: #12302
Rebased-From: aac6bce112
Tree-SHA512: 9edecbe2529584d6d01296ec153330bb44add8445fef139d7b7a667b86fef8ee3aafea55d95ac109c9fef079133709f69798477e3eba92744ea2f6c8f5acbb7d
2018-01-30 23:05:01 +01:00
Wladimir J. van der Laan
66bc647e8c doc: Update manpages to 0.16.0
Tree-SHA512: 83b02b26dff5c7962b9c800e7f156f7d83573b8e8ed329b99ae2c63ce0eb5f713f9d3623906e3c598fcee45e660bae907b1d861cf22af49f3e947f70da73f956
2018-01-30 14:05:07 +01:00
Wladimir J. van der Laan
5c242b211e build: bump version to 0.16.0
Update version after branching off.

Tree-SHA512: 0ed503c6d299b25eccdc3f450d83c7fe24b851acbf89382397d5d7ad591c2106b78f8c826cefb034f62e6e233f773cd6fd7fcc05c4b09bbda5091a6ce5c37ee8
2018-01-30 13:46:30 +01:00
Wladimir J. van der Laan
10847fe2d8 qt: Periodic translations update
Pull 0.16 translations before forking, to avoid having to do it twice.

Tree-SHA512: 9c093885f03783e0f64718985c5f9d385d2a8592e2acc87d922ca973d07c756a6b7fff585388094f0e1b673c41e792ce918c1f594b45e82a262acd93e1b91a8e
2018-01-30 13:43:26 +01:00
Wladimir J. van der Laan
3448907a68 Merge #12266: Move scheduler/threadGroup into common-init instead of per-app
082a61c Move scheduler/threadGroup into common-init instead of per-app (Matt Corallo)

Pull request description:

  This resolves #12229 which pointed out a shutdown deadlock due to
  scheduler/checkqueue having been shut down while network message
  processing is still running.

Tree-SHA512: 0c0a76113996b164b0610d3b8c40b396f3e384d165bf098768e31fe3701b00763d0d810ef24702387e2e936fefb9fb900a6225f7417bb0175b585f365d542660
2018-01-30 13:04:30 +01:00
Wladimir J. van der Laan
7936446268 Merge #12276: Remove duplicate mapWallet lookups
039425c [wallet] Remove duplicate mapWallet lookups (João Barbosa)

Pull request description:

Tree-SHA512: 8075925d2adb64737c691e988d74a37bc326711aaee2c37327361679c051f219fa500e14cbcdb6a169352bcdbab160e11df4276b2657e19e12908ee2d4444d30
2018-01-30 10:16:31 +01:00
Wladimir J. van der Laan
288deacdbe Merge #12278: Add special error for genesis coinbase to getrawtransaction
ee11121 Add special error for genesis coinbase to gettransaction (MeshCollider)

Pull request description:

  Suggested by sipa here: https://botbot.me/freenode/bitcoin-core-dev/2018-01-23/?msg=96069825&page=2

  Just adds a special error message for the genesis block coinbase transaction when using `getrawtransaction`

Tree-SHA512: cd102c7983ec5457b299bff4b6db747d339fda157933a3ac54aec26b1e48b115aa68c1c9e6cb7a916f15c7786273ab558b2b20ab9768544d211e0ae9d1480e34
2018-01-30 09:59:28 +01:00
Wladimir J. van der Laan
7cf1aea5cf Merge #12294: [Docs] Create NetBSD build instructions and fix compilation
11c5827 [build] Add NETBSD leveldb target to configure.ac (fanquake)
1944fa3 [doc] Create build-netbsd.md (Randolf Richardson)
336685e [build] Add db4_cxx to bitcoin_find_bdb48.m4 (Randolf Richardson)

Pull request description:

  Replaces #12125.

Tree-SHA512: 411d082ffff7198bcc1b2b6fcdf86c378baf228d8f4fee0e6c9f0688efe9c6b6dcfd5c1ab9c1dfd0c4637723b8584dbbb614634ace0e1a417b59e88a6c736dc0
2018-01-30 09:57:45 +01:00
fanquake
11c5827ca7 [build] Add NETBSD leveldb target to configure.ac 2018-01-30 07:48:30 +08:00
Randolf Richardson
1944fa3205 [doc] Create build-netbsd.md 2018-01-30 07:47:27 +08:00
MeshCollider
ee11121229 Add special error for genesis coinbase to gettransaction 2018-01-30 11:36:25 +13:00
MarcoFalke
9d9c4185fa Merge #12293: [rpc] Mention that HD is enabled if hdmasterkeyid is present
c6b6385651 [rpc] Mention that HD is enabled if hdmasterkeyid is present (fanquake)

Pull request description:

  Also adds optional flag.

  Replaces #12042

Tree-SHA512: 6aded2cf36799f697eacbe4f51dff7c8110281092ca3c4fd73e26f57d788ec95a4fcbaf6976ef144e64f2e52759dbe241ac218a95e5ca2233cae1b98bfa5872e
2018-01-29 15:27:56 -05:00
Wladimir J. van der Laan
90d41049f9 Merge #11989: [build] .gitignore: add QT Creator artifacts
ac5104f [build] .gitignore: add QT Creator artifacts (Sjors Provoost)

Pull request description:

  These files appear on OSX if you follow the [QT Creator instructions](https://github.com/bitcoin/bitcoin/blob/master/doc/build-osx.md#using-qt-creator-as-ide).

  The files don't contain anything terribly useful that might warrant including them in the repo instead.

Tree-SHA512: 346ece7846e7707abe599fe53b91472f7f6b79609dfdd0cb471a3363919d941385eec402045f8344f52d4d2212d29ae7c3cb2f4d55bbd978d49ac333e83f0fca
2018-01-29 15:53:25 +01:00
Wladimir J. van der Laan
6378e5c514 Merge #11711: bitcoin_qt.m4: Minor fixes and clean-ups.
06abcbf scripted-diff: Orthogonalize string quoting (Werner Lemberg)
e0496d3 bitcoin_qt.m4: Add missing dollar sign for variable. (Werner Lemberg)
079f4b2 bitcoin_qt.m4: Add missing braces around variables in autoconf messages. (Werner Lemberg)
8695315 bitcoin_qt.m4: Use correct M4 quoting characters. (Werner Lemberg)
db32a4f bitcoin_qt.m4: Improve QT_VERSION tests. (Werner Lemberg)

Pull request description:

  Replaces #11222.

  Dropped the last commit, and converted e90d91c (now 06abcbf) into a scripted-diff using @theuni's suggestion.

Tree-SHA512: f2e1713bda96e8875be08839af914b24b3240f2eecf18cb268f83c82d965ebf544a0022af4f6f73b88b637a4fdd404a96b9fcf8e5bdd11c507b5bb425eeb7e1d
2018-01-29 15:39:36 +01:00
MarcoFalke
eebe4580bc Merge #12292: [tests] Fix names of excluded extended tests for travis
a2808cf8a4 [tests] Fix names of excluded extended tests for travis (Anthony Towns)

Pull request description:

Tree-SHA512: 2cb8b9690dd41e996d0b1b3b7ecc95dee43132ea8a8d56fb7398a99dfc082d337c22060138b67486f45c11120c11a2d0639abf2dedf7be71ca78f1a8be6f832d
2018-01-29 09:09:54 -05:00
Wladimir J. van der Laan
c0ae864ef5 Merge #11577: Fix warnings (-Wsign-compare) when building with DEBUG_ADDRMAN
6eddd43 Fix warnings when building with DEBUG_ADDRMAN (practicalswift)

Pull request description:

  Fix warnings when building with `DEBUG_ADDRMAN`.

  Warnings prior to this commit:

  ```
  addrman.cpp:390:24: warning: comparison of integers of different signs: 'size_type' (aka 'unsigned long') and 'int' [-Wsign-compare]
      if (vRandom.size() != nTried + nNew)
          ~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~
  addrman.cpp:411:52: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned long') [-Wsign-compare]
          if (info.nRandomPos < 0 || info.nRandomPos >= vRandom.size() || vRandom[info.nRandomPos] != n)
                                     ~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~
  addrman.cpp:419:25: warning: comparison of integers of different signs: 'size_type' (aka 'unsigned long') and 'int' [-Wsign-compare]
      if (setTried.size() != nTried)
          ~~~~~~~~~~~~~~~ ^  ~~~~~~
  addrman.cpp:421:23: warning: comparison of integers of different signs: 'size_type' (aka 'unsigned long') and 'int' [-Wsign-compare]
      if (mapNew.size() != nNew)
          ~~~~~~~~~~~~~ ^  ~~~~
  4 warnings generated.
  ```

Tree-SHA512: 0316faecfe95066d2c9a0b6b3960086e43824f21a67086a895ea45fbce1327f8d6df5945fe923c2dbe4efce430bc1384d515d317c3930d97d24965e507cf734d
2018-01-29 14:26:26 +01:00
Randolf Richardson
336685e17e [build] Add db4_cxx to bitcoin_find_bdb48.m4
Added "db4_cxx" as this is the name used in NetBSD for the Berkeley DB library.  Without this additional base filename alternative, the "configure" script will fail to find this library and compilation will not succeed.
2018-01-29 21:15:51 +08:00
Wladimir J. van der Laan
f3c7062b7b Merge #12159: Use the character based overload for std::string::find.
a73aab7 Use the character based overload for std::string::find. (Alin Rus)

Pull request description:

  std::string::find has a character based overload as can be seen here
  (4th oveload): http://www.cplusplus.com/reference/string/string/find/

  Use that instead of constantly allocating temporary strings.

Tree-SHA512: dc7684b1551e6d779eb989e9a74363f9b978059a7c0f3db09d01744c7e6452961f9e671173265e71efff27afbcb80c0fe2c11b6dff2290e54a49193fa25a5679
2018-01-29 14:08:09 +01:00
fanquake
c6b6385651 [rpc] Mention that HD is enabled if hdmasterkeyid is present 2018-01-29 21:00:27 +08:00
Wladimir J. van der Laan
9220426280 Merge #12108: [Refactor] Remove unused fQuit var from checkqueue.h
30ded3e [Refactor] Remove unused fQuit var from checkqueue.h (donaloconnor)

Pull request description:

  As per PR title, this var is no longer required

  Tested by doing a successful compile.

Tree-SHA512: 845e5e0a250cb99e353e8584e9af2df44d97683174e8caa1069bd192b72ab622063765f29676272aecaef87596d72c63ae628404e2f42555136ec2c26d419f2d
2018-01-29 13:21:50 +01:00
Wladimir J. van der Laan
3fa1ab4368 Merge #12095: [contrib] Use BDB_LIBS/CFLAGS and pass --disable-replication
f3196a0 [contrib] Add --disable-replication to install_db4 (fanquake)
311a423 [contrib] Use BDB_LIBS/CFLAGS in install_db4 (fanquake)

Pull request description:

  Switch install_db4 to use BDB_LIBS/BDB_CFLAGS, mentioned [here](https://github.com/bitcoin/bitcoin/pull/12041/files#r159616003).

  Pass ```--disable-replication``` to configure to match what we do in [depends](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/bdb.mk#L9).

  Documentation about --disable-replication is available [here](https://docs.oracle.com/cd/E17275_01/html/programmer_reference/build_unix_small.html).

Tree-SHA512: 6f58728f27859614f499719583b0c2e8cd0ee89cb7e8fa34d1c54399877d6822ec2d8549c72ae4aff61daf7169bd330ad6ddc6c81e63008dedf028abd834f24c
2018-01-29 11:33:02 +01:00
Wladimir J. van der Laan
000ac4fd01 Merge #12197: Log debug build status and warn when running benchmarks
34328b4 Use PACKAGE_NAME instead of hardcoding application name in log message (Wladimir J. van der Laan)
0c74e2e Log debug build status and warn when running benchmarks (Wladimir J. van der Laan)

Pull request description:

  Log whether the starting instance of bitcoin core is a debug or release build (--enable-debug).

  Also warn when running the benchmarks with a debug build, to prevent mistakes comparing debug to non-debug results.

Tree-SHA512: f612dcb7d0a8435016cff0df8aef4942144dfb88be8a00df45cc8830d2aba4b167f6d397b83f8f57d57685888babd04ba88d4dac5a202d3dbd91bcbea3708ef0
2018-01-29 11:12:16 +01:00
Anthony Towns
a2808cf8a4 [tests] Fix names of excluded extended tests for travis 2018-01-29 20:09:15 +10:00
Wladimir J. van der Laan
1213be6c3a Merge #12217: qa: Add missing syncwithvalidationinterfacequeue to tests
fa796bb qa: Add missing syncwithvalidationinterfacequeue to tests (MarcoFalke)

Pull request description:

  Fixes intermittent travis failures with those tests caused by a missing flush of mempool txes to the wallet.

Tree-SHA512: 4f57c93a81af9c07b36c16996bf3e6bbb2af61779f0d6ae0126b64563eb4ec4b53f64241c9cf4c3f322db56f4339fd939319747653bebc93bbc7e3d5dceedda6
2018-01-29 10:56:48 +01:00
João Barbosa
039425cf4f [wallet] Remove duplicate mapWallet lookups 2018-01-28 17:25:16 +00:00
MarcoFalke
9cf6393a4f Merge #12270: Update chainTxData for 0.16
a8c344b913 Update chainTxData for 0.16 (Wladimir J. van der Laan)

Pull request description:

  Another part of the release process.

  Not sure I did this correctly @sipa . Output from `getchaintxstats`:

  mainnet:
  ```
  {
    "time": 1516903077,
    "txcount": 295363220,
    "window_block_count": 4320,
    "window_tx_count": 7882762,
    "window_interval": 2242748,
    "txrate": 3.514778298765621
  }
  ```
  testnet:
  ```
  {
    "time": 1516903490,
    "txcount": 17082348,
    "window_block_count": 4320,
    "window_tx_count": 227756,
    "window_interval": 2526261,
    "txrate": 0.090155371911295
  }
  ```

Tree-SHA512: 640b564f4c55d136910ab1acb81244052735cbd10afdeb1f206d86548c3753fb3184ee0d79adfd36c87ee1c5ca283d5d333c1d9f1d23716da149ca78370c7060
2018-01-27 20:46:50 -05:00
Wladimir J. van der Laan
a8c344b913 Update chainTxData for 0.16
Another part of the release process.
2018-01-25 19:17:53 +01:00
Wladimir J. van der Laan
2ae7cf8ef5 Merge #12269: Update defaultAssumeValid to block 506067
bde8bcd Update defaultAssumeValid according to release-process.md. (Gregory Maxwell)

Pull request description:

  Update defaultAssumeValid according to release-process.md.
  Updated for block 506067 (0000000000000000005214481d2d96f898e3d5416e43359c145944a909d242e0).

Tree-SHA512: 38e6440a11609e56df816e295ceff697d29830a1d85009f920250320c474f8b04a182635b2f1ab44f54d0cdb8b4e4378336a788400e513d7482514434e53b3ff
2018-01-25 19:05:53 +01:00
Wladimir J. van der Laan
16bac24f60 Merge #12262: net: Hardcoded seed update
1e90544 net: Update hardcoded seeds (Wladimir J. van der Laan)
55f52bd contrib: Update ATTERN_AGENT to include 0.15.x (Wladimir J. van der Laan)

Pull request description:

  Update the hardcoded node addresses, after changing the pattern to include 0.15.x.

Tree-SHA512: 58b997393d77dcee3dcaffba0c6f185ca46c24d766b33d3a8c9d9efe5dd2e01f086b894a23e185120eee5054697e409b64736e53ca8e42b2315f82355c5f5d5c
2018-01-25 19:05:23 +01:00
Matt Corallo
082a61c69d Move scheduler/threadGroup into common-init instead of per-app
This resolves #12229 which pointed out a shutdown deadlock due to
scheduler/checkqueue having been shut down while network message
processing is still running.
2018-01-25 11:35:34 -05:00
Gregory Maxwell
bde8bcd8ad Update defaultAssumeValid according to release-process.md.
Updated for block 506067 (0000000000000000005214481d2d96f898e3d5416e43359c145944a909d242e0).
2018-01-25 15:35:30 +00:00
MarcoFalke
fa796bb695 qa: Add missing syncwithvalidationinterfacequeue to tests 2018-01-25 10:31:35 -05:00
MarcoFalke
598a9c4e4d Merge #12264: Fix versionbits warning test
1e2e09e2f6 Fix intermittent failure in p2p-versionbits-warning.py (John Newbery)
3bbd843708 Improve comments/logging in p2p-versionbits-warning.py (John Newbery)
ef2beb2c13 Fix flake8 warnings in p2p-versionbits-warning.py (John Newbery)

Pull request description:

  fixes #12259 (and tidies up the test)

  The problem was that the node was still in IBD at the point the last block was generated. UpdateTip() will not generate a warning if the node is still in IBD:

  cc5870a405/src/validation.cpp (L2151)

  The 'proper' fix would be to remove the overenthusiastic latching in DoWarning:

  cc5870a405/src/validation.cpp (L2135)

  so that more than one warning message can be output to `alertnotify`. Really we should suppress multiple messages of the same type, but allow messages to be output if they're for different warnings. That would mean the test wouldn't need to stop-start the node.

Tree-SHA512: 5c9aa5af7eba3c1350ea28482d57d3d79e3166c6224ceddb5d5a631090081d890d7403015e41f413c22990959a488cf1231f88bb825c54a609b24f89c450a1f6
2018-01-25 08:04:51 -05:00
John Newbery
1e2e09e2f6 Fix intermittent failure in p2p-versionbits-warning.py
Makes following changes to fix and tidy up p2p-versionbits-warning.py:
- add node alias in the run() method
- call versionbits_in_alert_file() in a wait_until loop.
- don't clear out the alert.txt file
- explicitly comment why the node needs to be stop-started
- Verify that the node is out of IBD after stop-start (nodes in IBD do
not generate alert messages)
- no need to subclass P2PInterface
2018-01-25 07:34:58 -05:00
John Newbery
3bbd843708 Improve comments/logging in p2p-versionbits-warning.py 2018-01-25 07:34:58 -05:00
John Newbery
ef2beb2c13 Fix flake8 warnings in p2p-versionbits-warning.py 2018-01-25 07:34:58 -05:00
MarcoFalke
6970b30c6f Merge #11774: [tests] Rename functional tests
6f881cc880 [tests] Remove EXPECTED_VIOLATION_COUNT (Anthony Towns)
3150b3fea7 [tests] Rename misc functional tests. (Anthony Towns)
81b79f2c39 [tests] Rename rpc_* functional tests. (Anthony Towns)
61b8f7f273 [tests] Rename p2p_* functional tests. (Anthony Towns)
90600bc7db [tests] Rename wallet_* functional tests. (Anthony Towns)
ca6523d0c8 [tests] Rename feature_* functional tests. (Anthony Towns)

Pull request description:

  This PR changes the functional tests to have a consistent naming scheme:

      tests for individual RPC methods are named rpc_...
      tests for interfaces (REST, ZMQ, RPC features) are named interface_...
      tests that explicitly test the p2p interface are named p2p_...
      tests for wallet features are named wallet_...
      tests for mining features are named mining_...
      tests for mempool behaviour are named mempool_...
      tests for full features that aren't wallet/mining/mempool are named feature_...

  Rationale: it's sometimes difficult for new contributors to know what's already covered by existing tests and where new tests should be added. Naming in a consistent fashion makes it easier to see what's already covered at a glance.

Tree-SHA512: 4246790552d42bbd95f6d5bdf67702b81b3b2c583ce7eaf1fe6d8e254721279b47315973c6e9ae82dad6e4c747f12188160764bf2624c0f8f3b4d39330ec8b16
2018-01-24 20:43:13 -05:00
Anthony Towns
6f881cc880 [tests] Remove EXPECTED_VIOLATION_COUNT 2018-01-25 09:44:30 +10:00
Anthony Towns
3150b3fea7 [tests] Rename misc functional tests. 2018-01-25 09:44:30 +10:00
Anthony Towns
81b79f2c39 [tests] Rename rpc_* functional tests. 2018-01-25 09:44:29 +10:00
Anthony Towns
61b8f7f273 [tests] Rename p2p_* functional tests. 2018-01-25 09:44:29 +10:00
Anthony Towns
90600bc7db [tests] Rename wallet_* functional tests. 2018-01-25 09:44:29 +10:00
Anthony Towns
ca6523d0c8 [tests] Rename feature_* functional tests. 2018-01-25 09:44:29 +10:00
MarcoFalke
f359afcc41 Merge #12261: qt: Bump BLOCK_CHAIN_SIZE to 200GB
ba490d2460 qt: Bump BLOCK_CHAIN_SIZE to 200GB (Wladimir J. van der Laan)

Pull request description:

  Part of the release process for 0.16.

  Value is open for discussion, my blocks/ directory is 163GB but this leaves some slack.

Tree-SHA512: 4dff81740992bf9de90427934afeb223ea5216f5682c9f07cb5c47aea33980a4c682fe3fd43c3dfa2c4d66ad0e7434dbce6cb252e56d63b36df605e12af9b10a
2018-01-24 14:40:37 -05:00
Jonas Schnelli
7abb0f0929 Merge #12194: Add change type option to fundrawtransaction
16f6f59dc [qa] Test fundrawtransaction with change_type option (João Barbosa)
536ddeb17 [rpc] Add change_type option to fundrawtransaction (João Barbosa)
31dbd5af4 [wallet] Add change type to CCoinControl (João Barbosa)

Pull request description:

  Adds a new option `change_type` to `fundrawtransaction` RPC. This is useful to override the node `-changetype` argument.

  The new option is exclusive to `changeAddress` option, setting both raises a RPC error.

  See also #11403, #12119.

Tree-SHA512: 654686444f6125e37015a62f167064d54ec335701534988447be4687fa5ef9c7980a8a07cc0a03fff6ea6c4c1abf0f77a8843d535c4f3fe0bf93f968a4e676e6
2018-01-24 09:09:30 -10:00
Jonas Schnelli
eadb2dacc3 Merge #12213: Add address type option to addmultisigaddress
f523c6bec [qa] Use address type in addmultisigaddress to avoid addwitnessaddress (João Barbosa)
886a92f25 [rpc] Add address type option to addmultisigaddress (João Barbosa)

Pull request description:

  Adds the option `address_type` to `addmultisigaddress` and `createmultisg` RPC. This also allows to avoid `addwitnessaddress` to obtain an `p2sh-segwit` or `bech32` multsig address.

  Related to #12210 as this reduces `addwitnessaddress` usage.

Tree-SHA512: 8f8f85dfcff66bb6c7e1e9865e37c285dead1d6dadb9672a89b92fa209d03cc35817ca1d656588c6c2146b728daaf7540b851929b640294653c62836cbefe7ee
2018-01-24 09:00:51 -10:00
Wladimir J. van der Laan
cc5870a405 Merge #12251: initwallet: Do not translate highly technical addresstype help
fa7ecbf initwallet: Do not translate highly technical addresstype help (MarcoFalke)

Pull request description:

  Help messages that consist of more than 50% highly technical jargon are nearly impossible to translate, so don't even try.

Tree-SHA512: f17a75e71a1b8d2df2576f4ab557256e4257fde680167b42c12553e70603843d242d84f6c33c844ac1b049f2957458974bdc1dde7f1693c968b29857abe2c02e
2018-01-24 17:41:55 +01:00
Wladimir J. van der Laan
1e90544153 net: Update hardcoded seeds
Update the hardcoded node addresses, after bumping the pattern in last
commit.
2018-01-24 17:35:43 +01:00
Wladimir J. van der Laan
55f52bd280 contrib: Update ATTERN_AGENT to include 0.15.x 2018-01-24 17:30:46 +01:00
MarcoFalke
fa7ecbf9f8 initwallet: Do not translate highly technical addresstype help 2018-01-24 11:30:44 -05:00
João Barbosa
f523c6bec0 [qa] Use address type in addmultisigaddress to avoid addwitnessaddress 2018-01-24 16:23:55 +00:00
Wladimir J. van der Laan
ba490d2460 qt: Bump BLOCK_CHAIN_SIZE to 200GB
Part of the release process for 0.16.

Value is open for discussion, my blocks/ directory is 163GB but this
leaves some slack.
2018-01-24 17:17:55 +01:00
João Barbosa
16f6f59dcf [qa] Test fundrawtransaction with change_type option 2018-01-24 16:00:50 +00:00
João Barbosa
536ddeb173 [rpc] Add change_type option to fundrawtransaction 2018-01-24 16:00:50 +00:00
João Barbosa
31dbd5af48 [wallet] Add change type to CCoinControl 2018-01-24 15:52:05 +00:00
Wladimir J. van der Laan
6e3fe93609 qt: Update translation source file
Tree-SHA512: d16e6fd179c74203c9ce2dae717fe1d71b501ee6e397f10c6d0ec6fad9bdad256d9f383781d1f375c82d309d76547edf5ec10bdecabc21db4339b68c326e208e
2018-01-24 16:38:11 +01:00
Wladimir J. van der Laan
1e0d6e91c5 tx: Update transifex slug for 0.16
Tree-SHA512: 5c0edca5ef614a72dae5f873328eff8c480cf9198e304022405bd63c380a2e3f6f7f45cfb6a2fc2e02411144fa108b16adca60776c2e1a594f6b26ca4801f6a5
2018-01-24 16:35:40 +01:00
Wladimir J. van der Laan
e37ca2be91 Merge #12250: Make CKey::Load references const
04ededf Make CKey::Load references const (Russell Yanofsky)

Pull request description:

  No change in behavior, this just prevents CKey::Load arguments from looking
  like outputs.

Tree-SHA512: 6d93bce109318e88ddd5c21ad626571344707ae0e6d46e898c76fd95a7afd1c32202a6b3dfab47d6a787c84dfcbb35343cdec898bcf8f668574aa224f2eed977
2018-01-24 16:33:33 +01:00
João Barbosa
886a92f25f [rpc] Add address type option to addmultisigaddress 2018-01-24 14:45:07 +00:00
Wladimir J. van der Laan
95941396ff Merge #12119: [wallet] use P2WPKH change output if any destination is P2WPKH or P2WSH
596c446 [wallet] use P2WPKH change output if any destination is P2WPKH or P2WSH (Sjors Provoost)

Pull request description:

  If `-changetype` is not explicitly set, then regardless of `-addresstype`, the wallet will use a ~`bech32` change address~ `P2WPKH` change output if any destination is `P2WPKH` or `P2WSH`.

  This seems more intuitive to me and more in line with the spirit of [BIP-69](https://github.com/bitcoin/bips/blob/master/bip-0069.mediawiki).

  When combined with #11991 a QT user could opt to use `bech32` exclusively without having to figure out how to launch with `-changetype=bech32`, although so would #11937.

Tree-SHA512: 9238d3ccd1f3be8dfdd43444ccf45d6bdc6584ced3172a3045f3ecfec4a7cc8999db0cdb76ae49236492a84e6dbf3a1fdf18544d3eaf6d518e1f8bd241db33e7
2018-01-24 15:22:42 +01:00
MarcoFalke
126000ba9e Merge #12089: qa: Make TestNodeCLI command optional in send_cli
fae7b14a04 qa: Make TestNodeCLI command optional in send_cli (MarcoFalke)
ffffb10a9f qa: Rename cli.args to cli.options (MarcoFalke)

Pull request description:

  Makes the `command` optional, since there are valid bitcoin-cli calls that have no `command`:

  * `bitcoin-cli -?`
  * `bitcoin-cli -getinfo`
  * ...

  Also, rename self.args to self.options, since that is the name in the `bitcoin-cli -help` documentation.

Tree-SHA512: f49c06024e78423301d70782946d47c0fb97a26876afba0a1f71ed329f5d7124aee4c2df520c7af74079bf9937851902f7be9c54abecc28dc29274584804d46c
2018-01-24 08:49:54 -05:00
Wladimir J. van der Laan
69ec021969 Merge #11415: [RPC] Disallow using addresses in createmultisig
1df206f Disallow using addresses in createmultisig (Andrew Chow)

Pull request description:

  This PR should be the last part of #7965.

  This PR makes createmultisig only accept public keys and marks the old functionality of accepting addresses as deprecated.

  It also splits `_createmultisig_redeemscript` into two functions, `_createmultisig_getpubkeys` and `_createmultisig_getaddr_pubkeys`. `_createmultisig_getpubkeys` retrieves public keys from the RPC parameters and `_createmultisig_getaddr_pubkeys` retrieves addresses' public keys from the wallet. `_createmultisig_getaddr_pubkeys` requires the wallet and is only used by `addwitnessaddress` (except when `createmultisig` is used in deprecated mode).

  `addwitnessaddress`'s API is also changed. Instead of returning just an address, it now returns the same thing as `createmultisig`: a JSON object with two fields, address and redeemscript.

Tree-SHA512: a5796e41935ad5e47d8165ff996a8b20d5112b5fc1a06a6d3c7f5513c13e7628a4fd37ec30fde05d8b15abfed51bc250710140f6834b13f64d0a0e47a3817969
2018-01-24 14:03:40 +01:00
Wladimir J. van der Laan
6e89de5ba7 Merge #11512: Use GetDesireableServiceFlags in seeds, dnsseeds, fixing static seed adding
2b839ab Update chainparams comment for more info on service bits per dnsseed (Matt Corallo)
62e7642 Fall back to oneshot for DNS Seeds which don't support filtering. (Matt Corallo)
51ae766 Use GetDesireableServiceFlags in static seeds, document this. (Matt Corallo)
fb6f6b1 bluematt's testnet-seed now supports x9 (and is just a static list) (Matt Corallo)

Pull request description:

  4440710 broke inserting entries into addrman from dnsseeds which
  did not support service bits, as well as static seeds. Static seeds
  were already being filtered by UA for 0.13.1+ (ie NODE_WITNESS), so
  simply changing the default service bits to include NODE_WITNESS
  (and updating docs appropriately) is sufficient. For DNS Seeds, not
  supporting NODE_WITNESS is no longer useful, so instead use
  non-filtering seeds as oneshot hosts irrespective of named proxy.

  I've set my testnet-seed to also support x9, though because it is simply a static host, it may be useful to leave the support off so that it is used as a oneshot to get addresses from a live node instead. I'm fine with either.

Tree-SHA512: 3f17d4d2b0b84d876981c962d2b44cb0c8f95f52c56a48c6b35fd882f6d7a40805f320ec452985a1c0b34aebddb1922709156c3ceccd1b9f8363fd7cb537d21d
2018-01-24 13:07:05 +01:00
Wladimir J. van der Laan
8470e64724 Merge #11281: Avoid permanent cs_main/cs_wallet lock during RescanFromTime
7f81250 Mention that other RPC calls report keys as "imported" while txns are still missing (Jonas Schnelli)
ccd8ef6 Reduce cs_main lock in ReadBlockFromDisk, only read GetBlockPos under the lock (Jonas Schnelli)
bc356b4 Make sure WalletRescanReserver has successfully reserved the rescan (Jonas Schnelli)
dbf8556 Add RAII wallet rescan reserver (Jonas Schnelli)
8d0b610 Avoid pemanent cs_main/cs_wallet lock during wallet rescans (Jonas Schnelli)

Pull request description:

  Right now, we are holding `cs_main`/`cs_wallet` during the whole rescan process (which can take a couple of hours).
  This was probably only done because of laziness and it is an important show-stopper for #11200 (GUI rescan abort).

Tree-SHA512: 0fc3f82d0ee9b2f013e6bacba8d59f7334306660cd676cd64c47bb305c4cb7c7a36219d6a6f76023b74e5fe87f3ab9fc7fd2439e939f71aef653fddb0a1e23b1
2018-01-24 12:56:23 +01:00
Jonas Schnelli
7f812502b7 Mention that other RPC calls report keys as "imported" while txns are still missing 2018-01-23 20:24:53 -10:00
Jonas Schnelli
ccd8ef65f9 Reduce cs_main lock in ReadBlockFromDisk, only read GetBlockPos under the lock 2018-01-23 20:24:53 -10:00
Jonas Schnelli
bc356b4268 Make sure WalletRescanReserver has successfully reserved the rescan 2018-01-23 20:24:18 -10:00
Jonas Schnelli
dbf8556b4d Add RAII wallet rescan reserver 2018-01-23 20:23:57 -10:00
Jonas Schnelli
8d0b610fe8 Avoid pemanent cs_main/cs_wallet lock during wallet rescans 2018-01-23 20:22:33 -10:00
MarcoFalke
fae7b14a04 qa: Make TestNodeCLI command optional in send_cli 2018-01-23 13:57:34 -05:00
MarcoFalke
ffffb10a9f qa: Rename cli.args to cli.options
That is the name in bitcoin-cli -help
2018-01-23 13:55:40 -05:00
Russell Yanofsky
04ededf001 Make CKey::Load references const
No change in behavior, this just prevents CKey::Load arguments from looking
like outputs.
2018-01-23 13:16:56 -05:00
Sjors Provoost
596c44633f [wallet] use P2WPKH change output if any destination is P2WPKH or P2WSH
Only if -changetype is not set and -addresstype is not "legacy".
2018-01-23 17:56:15 +01:00
MarcoFalke
b5e4b9b510 Merge #12187: [Docs] Updating benchmarkmarking.md with an updated sample output
b21244e0be Updating benchmarkmarking.md with an updated sample output and help options (Jeff Rade)

Pull request description:

  This PR is just a documentation update for someone (or myself) that looks into finishing up #7883 in the future.

  Looked through #7883 and appears [ryanofsky's PR](https://github.com/bitcoin/bitcoin/pull/8873) setup the benchmarks, but there are `FIXME` comments to pull in data from `test/` to get a larger data set (assuming reason why 7883 is still open).

Tree-SHA512: d758efc659c75f2b3ceb376f5a466c4234354077e4671ac3eb901c082c4e519ce5ff592cea4742711050b4ce56a1b65ef69433dd74e7db3eb11a8567d517d9e2
2018-01-22 08:44:36 -05:00
MarcoFalke
b987ca4ee4 Merge #12227: test_runner: Readable output if create_cache.py fails
ac96e788fa test_runner: Readable output if create_cache.py fails (Russell Yanofsky)

Pull request description:

  Without this change, create_cache.py process output is shown as a byte() object
  with \n escapes in a single line that is hard to read.

Tree-SHA512: 49cd0fff037c03f558e31a1281712cc4419df6c4ed8b342057a3d54ab6b31180e1a23cb586686952d81b8add5bec07844efa8cdf16ad20f40cc903a19437fda5
2018-01-22 08:28:09 -05:00
MarcoFalke
b03013396c Merge #12241: [trivial][docs] Fix incorrect link in /test/ README.md
bf1897710f [trivial][docs] Fix incorrect link in /test/ README.md (fanquake)

Pull request description:

Tree-SHA512: f9024a5b6b03c591b9e02057aedd862f479d4b38d293dd04a07e411b877c0fb5b4d95ced7d09190bb8a83078fe8c97db24c5dcdac7cbd59d37b41f614d423026
2018-01-22 08:20:28 -05:00
fanquake
bf1897710f [trivial][docs] Fix incorrect link in /test/ README.md 2018-01-22 18:52:55 +08:00
Matt Corallo
2b839abd3e Update chainparams comment for more info on service bits per dnsseed 2018-01-19 12:41:28 -10:00
Matt Corallo
62e764219b Fall back to oneshot for DNS Seeds which don't support filtering.
This allows us to not have to update the chainparams whenever a
DNS Seed changes its filtering support, as well fixes a bug
introduced in 44407100f where returned nodes will never be
attempted.
2018-01-19 12:41:28 -10:00
Matt Corallo
51ae7660b8 Use GetDesireableServiceFlags in static seeds, document this.
44407100f broke inserting entries into addrman from static seeds
(as well as dnsseeds which did not support service bits). Static
seeds were already being filtered by UA for 0.13.1+ (ie
NODE_WITNESS), so simply changing the default service bits to
include NODE_WITNESS (and updating docs appropriately) is
sufficient.

For DNS Seeds, we will later fix by falling back to oneshot if a
seed does not support filtering.
2018-01-19 12:40:05 -10:00
Russell Yanofsky
ac96e788fa test_runner: Readable output if create_cache.py fails
Without this change, create_cache.py process output is shown as a byte() object
with \n escapes in a single line that is hard to read.
2018-01-19 13:04:03 -05:00
Jeff Rade
b21244e0be Updating benchmarkmarking.md with an updated sample output and help options 2018-01-19 11:41:56 -06:00
Wladimir J. van der Laan
f4c942e361 Merge #12220: Error if relative -walletdir is specified
ec527c6 Don't allow relative -walletdir paths (Russell Yanofsky)

Pull request description:

  This makes it an error to explicitly specify a non-absolute -walletdir path, and also adds a debug.log warning if a relative rather than absolute -datadir path is configured.

  Specifying paths relative to the current working directory in a daemon process can be dangerous, because files can fail to be located even if the configuration doesn't change, but the daemon is started up differently.

  Specifying a relative -datadir now adds a warning to the debug log. It would not be backwards-compatible to forbid relative -datadir paths entirely, and it could also be inconvenient for command line testing.

  Specifying a relative -walletdir now results in a startup error. But since the -walletdir option is new in 0.16.0, there should be no compatibility issues. Another reason not to use working directory paths for -walletdir specifically is that the default -walletdir is a "wallets" subdirectory inside the datadir, so it could be surprising that setting -walletdir manually would choose a directory rooted in a completely different location.

Tree-SHA512: 67cbdae677f82487a9031c5ec96b0205a488ab08718a0f4f49365e025119f3d7f6cfc88ba1eba04c1ecd8b9561a5b2c42e2e1a267af7c08c76b83e5e361f5a31
2018-01-19 17:46:17 +01:00
Wladimir J. van der Laan
34328b4980 Use PACKAGE_NAME instead of hardcoding application name in log message 2018-01-19 11:15:01 +01:00
MarcoFalke
9a97f39afa Merge #12212: Trivial: Fix spelling in zapwallettxes test description
7767842600 Trivial: Fix spelling in zapwallettxes test description (Jeremiah Buddenhagen)

Pull request description:

Tree-SHA512: 9b7ff6ac75c8cacfa6ebf7992a1688e109643ea6a43cd7977b1d0f0d5e3ca627c0d8aa55f503a1fb492e7da16a8b97621837230ab42af99dcacc28a0a14ecf5c
2018-01-18 15:43:49 -05:00
Russell Yanofsky
ec527c6c88 Don't allow relative -walletdir paths
Also warn if bitcoind is configured to use a relative -datadir path.

Specifying paths relative to the current working directory in a daemon process
can be dangerous, because files can fail to be located even if the
configuration doesn't change, but the daemon is started up differently.

Specifying a relative -datadir now adds a warning to the debug log. It would
not be backwards-compatible to forbid relative -datadir paths entirely, and it
could also be also inconvenient for command line testing.

Specifying a relative -walletdir now results in a startup error. But since the
-walletdir option is new in 0.16.0, there should be no compatibility issues.
Another reason not to use working directory paths for -walletdir specifically
is that the default -walletdir is a "wallets" subdirectory inside the datadir,
so it could be surprising that setting -walletdir manually would choose a
directory rooted in a completely different location.
2018-01-18 15:09:27 -05:00
Wladimir J. van der Laan
e839d6570d Merge #12166: [docs] Clarify -walletdir usage
97c3cad [docs] Clarify -walletdir usage (John Newbery)

Pull request description:

  After discussion with @ryanofsky around #11687 , I think this documentation is a bit clearer for how the new `-walletdir` argument works.

Tree-SHA512: f279cab82524dbc0d75e6f9891f0e228ec4c8d0df3e16f351057fa243ddd263ff786f05383fd00a09b89edcc07dab211be5b64387f77271edf8af0177bcf667d
2018-01-18 21:09:27 +01:00
Jonas Schnelli
10d10d7fad Merge #12211: Avoid potential null dereference in ReceiveCoinsDialog constructor
cc90a4f46 Avoid potential null dereference in ReceiveCoinsDialog constructor (Russell Yanofsky)

Pull request description:

  Not a bug in practice because current `WalletModel::getDefaultAddressType()` implementation does not dereference its `this` pointer.

  Encountered issue while rebasing #10244 after #11991 was merged.

Tree-SHA512: d76afc410d4a436ec62936196fdac1af89c221d8c0d6e73349024afe55bbf8820f843177a8fe8210aa8021d45a17a0ecd9b6f693381e3edb234d9897cece29d7
2018-01-18 09:46:58 -10:00
Wladimir J. van der Laan
898f560b55 Merge #12206: qa: Sync with validationinterface queue in sync_mempools
fa1e69e qa: Sync with validationinterface queue in sync_mempools (MarcoFalke)

Pull request description:

  Commit e545dedf72 moved `TransactionAddedToMempool` to the background scheduler thread. Thus, adding a transaction to the mempool will no longer add it to the wallet immediately. Functional tests, that `sync_mempools` and then call into wallet rpcs will race against the scheduler thread.

  Fix that race by flushing the scheduler queue.

  Fixes #12205; Fixes #12171;
  References #9584;

Tree-SHA512: 14d99cff9c4756de9fad412f04e6d8e25bb9a0938f24ed8348de79df5b4ee67763dac5214b1a69e77e60787d81ee642976d1482b1b5637edfc4892a238ed22af
2018-01-18 15:05:40 +01:00
Wladimir J. van der Laan
17180fa608 Merge #12210: wallet: Deprecate addwitnessaddress
cdf3e03 wallet: Deprecate addwitnessaddress (Wladimir J. van der Laan)

Pull request description:

  Now that segwit is natively supported by the wallet, deprecate the hack `addwitnessaddress`.

Tree-SHA512: f33b1c33d200fa8f1a0fba424b30e9c2a78147cde8bb0a3fd41194b77980454cddfb23da256cd6fe78726e87161deaa23357d0764e74c3eb83177cc518afa49c
2018-01-18 11:03:53 +01:00
Wladimir J. van der Laan
cdf3e03a72 wallet: Deprecate addwitnessaddress
Now that segwit is natively supported by the wallet, deprecate the hack `addwitnessaddress`.
2018-01-18 10:24:18 +01:00
Jeremiah Buddenhagen
7767842600 Trivial: Fix spelling in zapwallettxes test description
[skip ci]
2018-01-17 16:49:45 -08:00
MarcoFalke
fa1e69e52b qa: Sync with validationinterface queue in sync_mempools 2018-01-17 16:44:32 -05:00
Russell Yanofsky
cc90a4f46b Avoid potential null dereference in ReceiveCoinsDialog constructor
Not a bug in practice because current WalletModel::getDefaultAddressType()
implementation does not dereference its `this` pointer.
2018-01-17 13:23:26 -05:00
Wladimir J. van der Laan
c7978be899 Merge #12101: Clamp walletpassphrase timeout to 2^30 seconds and check its bounds
134cdc7 Test walletpassphrase timeout bounds and clamping (Andrew Chow)
0b63e3c Clamp walletpassphrase timeout to 2^(30) seconds and check its bounds (Andrew Chow)

Pull request description:

  Fixes #12100

  Makes the timeout be clamped to 2^30 seconds to avoid the issue with sign flipping with large timeout values and thus relocking the wallet instantly. Unlocking for at most ~34 years should be sufficient.

  Also checks that the timeout is not negative to avoid instant relocks.

Tree-SHA512: 426922f08c54e323d259e25dcdbebc2cd560708a65111ce6051493a7e7c61e79d9da1ea4026cc0d68807d728f5d7c0d7c58168c6ef4167b94cf6c2877af88794
2018-01-17 12:15:59 +01:00
Wladimir J. van der Laan
adce1de9a6 Merge #12198: rpc: Add deprecation error for getinfo
49e5f3f rpc: Add deprecation error for `getinfo` (Wladimir J. van der Laan)

Pull request description:

  Add a short informative deprecation message when users use `getinfo`, that points them to the new calls
   here to get the different information fields.
  This is meant to be temporary, for one release only.

Tree-SHA512: 4fccd8853762d0740d051d9e74cdea5ad6f8d5c0ba67d69e8dd2ac8a1538d8270c1a1fab755d9f052ff3b3677753b09138c8c5ca0bc92d156de90413cd5c1814
2018-01-17 12:08:59 +01:00
Wladimir J. van der Laan
49e5f3ff7e rpc: Add deprecation error for getinfo
Add a short informative deprecation message when users use `getinfo`,
that points them to the new calls where to get the different information fields.
2018-01-17 10:06:13 +01:00
Jonas Schnelli
062c8b69f4 Merge #11991: [qt] Receive: checkbox for bech32 address
63ac8907c [qt] receive tab: bech32 address opt-in checkbox (Sjors Provoost)

Pull request description:

  <img width="647" alt="schermafbeelding 2018-01-12 om 18 34 48" src="https://user-images.githubusercontent.com/10217/34887691-a6a796fe-f7c7-11e7-8b89-87ce07c61ce3.png">

  Checkbox does what you would expect. Press tab from the amount field to get there.

  It's unchecked by default.

  When launched with `-addresstype=bech32` it's checked by default. When launched with `-addresstype=legacy` it unchecked and disabled.

  The change in `receivecoinsdialog.ui` is smaller than it looks, due to the way git handles XML diffs. I had to add a horizontal spacer to make it look decent, see https://github.com/bitcoin/bitcoin/issues/11950#issuecomment-352870909. This causes column numbers to change in the rest of the grid.

  I recommend testing on at least one other OS than OSX to be on the safe side.

Tree-SHA512: ec4b733b796d9a94278a5d8040a69d9574ef50021e68f94f61f2da75d1bb57f39272cbc9f1f7d34f733a19640daf666a23844fcd132f83bfdaf327d9d1d6f105
2018-01-16 20:48:38 -10:00
Sjors Provoost
63ac8907ce [qt] receive tab: bech32 address opt-in checkbox
When launched with -adresstype=legacy the checkbox will be hidden.
2018-01-16 20:11:40 +00:00
MarcoFalke
cad504bf4c Merge #12177: trivial: fix address_type help text of getnewaddress and getrawchangeaddress
5f911c5cc2 trivial: fix address_type help text of getnewaddress and getrawchangeaddress (mruddy)

Pull request description:

  "p2sh" in the help messages should have been "p2sh-segwit".

  The messages before this patch:

  `help getnewaddress`
  "address_type"   (string, optional) The address type to use. Options are "legacy", "**p2sh**", and "bech32". Default is set by -addresstype.

  `help getrawchangeaddress`
  "address_type"           (string, optional) The address type to use. Options are "legacy", "**p2sh**", and "bech32". Default is set by -changetype.

Tree-SHA512: 6dfc0bebe577995f5521b83a12854045ac3eda4e65c9b92fc581da4ee68ab1218e05af82f2154bb2640a0813c5f79e010cd9e5ada449494c8831b3757bda854c
2018-01-16 08:03:48 -05:00
Wladimir J. van der Laan
0c74e2e890 Log debug build status and warn when running benchmarks
Log whether the starting instance of bitcoin core is a debug or release
build (--enable-debug).

Also warn when running the benchmarks with a debug build, to prevent
mistakes comparing debug to non-debug results.
2018-01-16 11:48:33 +01:00
Wladimir J. van der Laan
66e3af709d Merge #11904: Add a lock to the wallet directory
2f3bd47 Abstract directory locking into util.cpp (MeshCollider)
5260a4a Make .walletlock distinct from .lock (MeshCollider)
64226de Generalise walletdir lock error message for correctness (MeshCollider)
c9ed4bd Add a test for wallet directory locking (MeshCollider)
e60cb99 Add a lock to the wallet directory (MeshCollider)

Pull request description:

  Fixes https://github.com/bitcoin/bitcoin/issues/11888, needs a 0.16 milestone

  Also adds a test that the lock works.

  https://github.com/bitcoin/bitcoin/pull/11687 will probably rework this to a per-wallet lock instead of just the walletdir, but this fixes the current issue

Tree-SHA512: 98e52d67f820e3b8f919cf361ffbb7d928f1bd67603e0ed26c5076ea02d9b3a90c3535ddf7329f3b88171396fa28dd3c87adab3577a8a217bd1e4247bda99138
2018-01-16 11:11:59 +01:00
MeshCollider
2f3bd47d44 Abstract directory locking into util.cpp 2018-01-16 19:05:46 +13:00
MeshCollider
5260a4aca1 Make .walletlock distinct from .lock 2018-01-16 19:05:46 +13:00
MeshCollider
64226de908 Generalise walletdir lock error message for correctness 2018-01-16 19:05:45 +13:00
MeshCollider
c9ed4bd58c Add a test for wallet directory locking 2018-01-16 19:05:45 +13:00
MeshCollider
e60cb99c58 Add a lock to the wallet directory 2018-01-16 19:02:57 +13:00
Wladimir J. van der Laan
bbc91b7699 Merge #12173: [Qt] Use flexible font size for QRCode image address
59f9e2a Use flexible font size for QRCode image address (Jonas Schnelli)

Pull request description:

  Bech32 addresses are currently cut off in the QRCode image in the GUI receive tab.
  This adds a simple font size calculation logic that "must" (down to 4pt) fix into the given image width.

  Examples OSX HiDPI:
  <img width="332" alt="bildschirmfoto 2018-01-12 um 11 25 40" src="https://user-images.githubusercontent.com/178464/34896144-c0c65d76-f78c-11e7-93e1-94dc8e203269.png">
  <img width="322" alt="bildschirmfoto 2018-01-12 um 11 25 46" src="https://user-images.githubusercontent.com/178464/34896145-c0edfe1c-f78c-11e7-8c09-c15155e2160e.png">

  Examples Ubuntu non HIDPI:
  <img width="314" alt="bildschirmfoto 2018-01-12 um 11 27 51" src="https://user-images.githubusercontent.com/178464/34896151-c88347f4-f78c-11e7-8a03-df8049dcfed6.png">
  <img width="322" alt="bildschirmfoto 2018-01-12 um 11 27 42" src="https://user-images.githubusercontent.com/178464/34896152-c8bb881c-f78c-11e7-89d2-6f04ec608a19.png">

Tree-SHA512: d749763fb748b146f77fd8d88fb7d29b07a46cde0b0f303a4006ae9cc3521b3c2e8ab43b828e243514109379898b198552e17b8f316c5a869b0cc8246b054b86
2018-01-15 23:33:43 +01:00
Jonas Schnelli
59f9e2aaf3 Use flexible font size for QRCode image address 2018-01-15 09:33:46 -10:00
John Newbery
97c3cada92 [docs] Clarify -walletdir usage 2018-01-15 10:26:15 -05:00
Wladimir J. van der Laan
44080a90a2 Merge #12118: Sort mempool by min(feerate, ancestor_feerate)
0a22a52 Use mempool's ancestor sort in transaction selection (Suhas Daftuar)
7abfa53 Add test for new ancestor feerate sort behavior (Suhas Daftuar)
9a51319 Sort mempool by min(feerate, ancestor_feerate) (Suhas Daftuar)
6773f92 Refactor CompareTxMemPoolEntryByDescendantScore (Suhas Daftuar)

Pull request description:

  This more closely approximates the desirability of a given transaction for
  mining, and should result in less re-sorting when transactions get removed from
  the mempool after being mined.

  I measured this as approximately a 5% speedup in removeForBlock.

Tree-SHA512: ffa36b567c5dfe3e8908c545a459b6a5ec0de26e7dc81b1050dd235cac9046564b4409a3f8c5ba97bd8b30526e8fec8f78480a912e317979467f32305c3dd37b
2018-01-15 15:36:35 +01:00
Wladimir J. van der Laan
4db16ec827 Merge #11796: [tests] Functional test naming convention
5fecd84 [tests] Remove redundant import in blocktools.py test (Anthony Towns)
9b20bb4 [tests] Check tests conform to naming convention (Anthony Towns)
7250b4e [tests] README.md nit fixes (Anthony Towns)
82b2712 [tests] move witness util functions to blocktools.py (John Newbery)
1e10854 [tests] [docs] update README for new test naming scheme (John Newbery)

Pull request description:

  Splitting #11774 into two parts -- this part updates the README with the proposed naming convention, and adds some checks to test_runner.py that the number of tests violating the naming convention doesn't increase too much. Idea is this part of the change should not introduce merge conflicts or require much rebasing, so reviews of the complicated bits won't become invalidated too often; while the second part will just be file renames, which will require regular rebasing and will introduce merge conflicts with pending PRs, but can be merged later, and should also be much easier to review, since it will only include relatively trivial changes.

Tree-SHA512: b96557d41714addbbfe2aed62fb5a48639eaeb1eb3aba30ac1b3a86bb3cb8d796c6247f9c414c4695c4bf54c0ec9968ac88e2f88fb62483bc1a2f89368f7fc80
2018-01-15 10:38:01 +01:00
Wladimir J. van der Laan
9501dc27b3 Merge #12127: Remove unused mempool index
8e617e3 Remove unused mempool index (Suhas Daftuar)

Pull request description:

  We haven't used the "mining_score" index since 0.12, so remove it.

Tree-SHA512: ae37b8663194986eaeecfc2bbeca7ecb4ae6f0d8384515fa218cbc939a580d4b9f7f997c5297c3f1b3c3a0651edb092f373ac9a4808aaec30d38cb99d5f3ed70
2018-01-15 09:57:24 +01:00
Suhas Daftuar
0a22a52918 Use mempool's ancestor sort in transaction selection
Transaction selection for mining tracks ancestor feerates that are
modified based on transactions that have already been selected.  This
commit de-duplicates the code so that the ancestor feerate sorting used
by the mempool can also be directly applied to the miner.
2018-01-13 15:57:30 -05:00
mruddy
5f911c5cc2 trivial: fix address_type help text of getnewaddress and getrawchangeaddress 2018-01-13 10:49:46 -05:00
MarcoFalke
45cf8a03cb Merge #12168: Trivial: Fix #include sys/fcntl.h to just fcntl.h (without sys/)
648bdc8cc0 Trivial: Fix #include sys/fcntl.h to just fcntl.h (without sys/) (Jan Sarenik)

Pull request description:

  http://pubs.opengroup.org/onlinepubs/009695399/functions/fcntl.html
  http://man7.org/linux/man-pages/man2/fcntl.2.html

Tree-SHA512: 82c7e0aba55f34a6fec60bdecb712b65c84422461454f0ae9eed5e1bb31bf585c5a65f49bbdd5a89feb59140a998ad6fcd5573ede123a12b2ba2ff677d95cc2b
2018-01-13 09:32:41 -05:00
MarcoFalke
b7450cdbd8 Merge #11970: Add test coverage for bitcoin-cli multiwallet calls
a14dbff39e Allow multiwallet.py to be used with --usecli (Russell Yanofsky)
f6ade9ce1a [tests] allow tests to be run with --usecli (John Newbery)
ff9a363ff7 TestNodeCLI batch emulation (Russell Yanofsky)
ca9085afc5 Prevent TestNodeCLI.args mixups (Russell Yanofsky)
fcfb952bca Improve TestNodeCLI output parsing (Russell Yanofsky)

Pull request description:

  Lack of test coverage was pointed out by @jnewbery in https://github.com/bitcoin/bitcoin/pull/11687#discussion_r158133900

Tree-SHA512: 5f10e31abad11a5edab0da4e2515e39547adb6ab9e55e50427ab2eb7ec9a43d6b896b579b15863e5edc9beee7d8bf1c84d9dabd247be0760a1b9ae39e1e8ee02
2018-01-12 17:25:01 -05:00
Suhas Daftuar
7abfa538b5 Add test for new ancestor feerate sort behavior 2018-01-12 12:40:55 -05:00
Jan Sarenik
648bdc8cc0 Trivial: Fix #include sys/fcntl.h to just fcntl.h (without sys/)
http://pubs.opengroup.org/onlinepubs/009695399/functions/fcntl.html
http://man7.org/linux/man-pages/man2/fcntl.2.html
2018-01-12 11:22:54 +00:00
Andrew Chow
134cdc7cee Test walletpassphrase timeout bounds and clamping 2018-01-11 23:58:54 -05:00
Andrew Chow
0b63e3c7b2 Clamp walletpassphrase timeout to 2^(30) seconds and check its bounds
Clamps the timeout of walletpassphrase to 2^(30) seconds, which is
~34 years. Any number greater than that will be forced to be
2^(30). This avoids the sign flipping problem with large values which
can result in a negative time used.

Also perform bounds checks to ensure that the timeout is positive
to avoid immediate relocking of the wallet.
2018-01-11 23:57:38 -05:00
Alin Rus
a73aab7cd8 Use the character based overload for std::string::find.
std::string::find has a character based overload as can be seen here
(4th oveload): http://www.cplusplus.com/reference/string/string/find/

Use that instead of constantly allocating temporary strings.
2018-01-11 21:40:51 +01:00
Andrew Chow
1df206f854 Disallow using addresses in createmultisig
Make createmultisig only accept public keys with the old functionality
marked as deprecated.

Splits _createmultisig_redeemscript into two functions, one for
getting public keys from UniValue and one for getting addresses
from UniValue and then their respective public keys. The one for
retrieving address's public keys is located in rpcwallet.cpp

Changes addwitnessaddress's output to be a JSON object with
two fields, address and redeemscript.

Adds a test to deprecated_rpc.py for testing the deprecation.

Update the tests to use addwitnessaddress or give only public keys
to createmultisig. Anything that used addwitnessaddress was also
updated to reflect the new API.
2018-01-11 14:13:24 -05:00
MarcoFalke
0910cbe4ef Merge #12082: Adding test case for SINGLE|ANYONECANPAY hash type in tx_valid.json
18be3ab139 Adding test case for SINGLE|ANYONECANPAY hash type in tx_valid.json (Chris Stewart)

Pull request description:

  We are missing a test vector for SINGLE|ANYONECANPAY inside of tx_valid.json. This addresses the issue #12060

Tree-SHA512: e3526113477dbf575c4a844cf489dcfa2c037c6d928af6f97413edc1a8d29cdf2143da96471cdfd3de08bf5ed178117ed67926fd70fd42ca391ac0bb0d08f3fd
2018-01-11 12:36:45 -05:00
Wladimir J. van der Laan
1d2eaba300 Merge #12133: [qa] Fix rare failure in p2p-segwit.py
35c2b1f Fix rare failure in p2p-segwit.py (Suhas Daftuar)

Pull request description:

  Avoid creating very small utxos that would violate an assumption in
  test_non_standard_witness.

  Fixes #11953

Tree-SHA512: 5fb7ae68f8731df819bab365923a84568b57227e4112f711fc2574767d15be83acd3e99d0d5bac94a42411a958b13a2119468babefed14efcfdda180004d4166
2018-01-11 14:47:34 +01:00
MarcoFalke
92a810d04b Merge #12150: Fix ListCoins test failure due to unset g_address_type, g_change_type
f765bb3788 Fix ListCoins test failure due to unset g_address_type, g_change_type (Russell Yanofsky)

Pull request description:

  New global variables were introduced in #11403 and not setting them causes:

  ```
  test_bitcoin: wallet/wallet.cpp:4199: CTxDestination GetDestinationForKey(const CPubKey&, OutputType): Assertion `false' failed.
  unknown location(0): fatal error in "ListCoins": signal: SIGABRT (application abort requested)
  ```

  It's possible to reproduce the failure reliably by running:

  ```
  src/test/test_bitcoin --log_level=test_suite --run_test=wallet_tests/ListCoins
  ```

  Failures happen nondeterministically because boost test framework doesn't run tests in a specified order, and tests that run previously can set the global variables and mask the bug.

  Example travis failure: https://travis-ci.org/bitcoin/bitcoin/builds/327642495

Tree-SHA512: 3e0875716f66bc0304cf92a26457e6b54ecfe15ed962f4343577b05fc56bb577554422b7f53949ad6085ac5798ad7816b8176c5b01e050ddbfbb925d2732767a
2018-01-11 08:37:29 -05:00
Wladimir J. van der Laan
3c6286873e Merge #12112: Docs: Remove the ending slashes from RPC URI format.
2be2b5d Remove the ending slashes from RPC URI format. (Jacky C)

Pull request description:

  This resolves #11861 (A confusion caused by incorrect information in the release notes).

  More information can be found at #11861.

Tree-SHA512: 35f85854b01a84acd5358e0c9deff881205111120277fa7cdf270801933c2603c2ae04fa4d55d233675c7298c2d37cc60c919f89e7e6091f5c61884025775ab0
2018-01-11 14:16:19 +01:00
Russell Yanofsky
f765bb3788 Fix ListCoins test failure due to unset g_address_type, g_change_type
New global variables were introduced in #11403 and not setting them causes:

    test_bitcoin: wallet/wallet.cpp:4199: CTxDestination GetDestinationForKey(const CPubKey&, OutputType): Assertion `false' failed.
    unknown location(0): fatal error in "ListCoins": signal: SIGABRT (application abort requested)

It's possible to reproduce the failure reliably by running:

    src/test/test_bitcoin --log_level=test_suite --run_test=wallet_tests/ListCoins

Failures happen nondeterministically because boost test framework doesn't run
tests in a specified order, and tests that run previously can set the global
variables and mask the bug.
2018-01-11 07:56:11 -05:00
Jonas Schnelli
d889c036cd Merge #11403: SegWit wallet support
b224a47a1 Add address_types test (Pieter Wuille)
7ee54fd7c Support downgrading after recovered keypool witness keys (Pieter Wuille)
940a21932 SegWit wallet support (Pieter Wuille)
f37c64e47 Implicitly know about P2WPKH redeemscripts (Pieter Wuille)
57273f2b3 [test] Serialize CTransaction with witness by default (Pieter Wuille)
cf2c0b6f5 Support P2WPKH and P2SH-P2WPKH in dumpprivkey (Pieter Wuille)
37c03d3e0 Support P2WPKH addresses in create/addmultisig (Pieter Wuille)
3eaa003c8 Extend validateaddress information for P2SH-embedded witness (Pieter Wuille)
30a27dc5b Expose method to find key for a single-key destination (Pieter Wuille)
985c79552 Improve witness destination types and use them more (Pieter Wuille)
cbe197470 [refactor] GetAccount{PubKey,Address} -> GetAccountDestination (Pieter Wuille)
0c8ea6380 Abstract out IsSolvable from Witnessifier (Pieter Wuille)

Pull request description:

  This implements a minimum viable implementation of SegWit wallet support, based on top of #11389, and includes part of the functionality from #11089.

  Two new configuration options are added:
  * `-addresstype`, with options `legacy`, `p2sh`, and `bech32`. It controls what kind of addresses are produced by `getnewaddress`, `getaccountaddress`, and `createmultisigaddress`.
  * `-changetype`, with the same options, and by default equal to `-addresstype`, that controls what kind of change is used.

  All wallet private and public keys can be used for any type of address. Support for address types dependent on different derivation paths will need a major overhaul of how our internal detection of outputs work. I expect that that will happen for a next major version.

  The above also applies to imported keys, as having a distinction there but not for normal operations is a disaster for testing, and probably for comprehension of users. This has some ugly effects, like needing to associate the provided label to `importprivkey` with each style address for the corresponding key.

  To deal with witness outputs requiring a corresponding redeemscript in wallet, three approaches are used:
  * All SegWit addresses created through `getnewaddress` or multisig RPCs explicitly get their redeemscripts added to the wallet file. This means that downgrading after creating a witness address will work, as long as the wallet file is up to date.
  * All SegWit keys in the wallet get an _implicit_ redeemscript added, without it being written to the file. This means recovery of an old backup will work, as long as you use new software.
  * All keypool keys that are seen used in transactions explicitly get their redeemscripts added to the wallet files. This means that downgrading after recovering from a backup that includes a witness address will work.

  These approaches correspond to solutions 3a, 1a, and 5a respectively from https://gist.github.com/sipa/125cfa1615946d0c3f3eec2ad7f250a2. As argued there, there is no full solution for dealing with the case where you both downgrade and restore a backup, so that's also not implemented.

  `dumpwallet`, `importwallet`, `importmulti`, `signmessage` and `verifymessage` don't work with SegWit addresses yet. They're remaining TODOs, for this PR or a follow-up. Because of that, several tests unexpectedly run with `-addresstype=legacy` for now.

Tree-SHA512: d425dbe517c0422061ab8dacdc3a6ae47da071450932ed992c79559d922dff7b2574a31a8c94feccd3761c1dffb6422c50055e6dca8e3cf94a169bc95e39e959
2018-01-10 20:55:41 -10:00
Jonas Schnelli
b0d626d10f Merge #12143: [Doc] Fix link for BIP-159 pull request
91769d6e2 [Doc] Fix link for bip 159 pull request (azuchi)

Pull request description:

  The link of the pull request for BIP-159 described in bips.md was a different link.

Tree-SHA512: 818ea29259ff84a55282df8b0c59fc4ccd3af08d124a104005ac48e67da4155a8b071b980b1d12c35af3f4a008ba77e5b4ee3242292f6c034cb0006b5532ce69
2018-01-10 20:31:15 -10:00
azuchi
91769d6e28 [Doc] Fix link for bip 159 pull request 2018-01-11 11:39:10 +09:00
Pieter Wuille
b224a47a1a Add address_types test
Improvements and cleanups by John Newbery
2018-01-09 15:35:31 -08:00
Pieter Wuille
7ee54fd7c7 Support downgrading after recovered keypool witness keys 2018-01-09 15:35:31 -08:00
Pieter Wuille
940a21932b SegWit wallet support
This introduces two command line flags (-addresstype and -changetype) which control
the type of addresses/outputs created by the GUI and RPCs. Certain RPCs allow
overriding these (`getnewaddress` and `getrawchangeaddress`). Supported types
are "legacy" (P2PKH and P2SH-multisig), "p2sh-segwit" (P2SH-P2WPKH and P2SH-P2WSH-multisig),
and "bech32" (P2WPKH and P2WSH-multisig).

A few utility functions are added to the wallet to construct different address type
and to add the necessary entries to the wallet file to be compatible with earlier
versions (see `CWallet::LearnRelatedScripts`, `GetDestinationForKey`,
`GetAllDestinationsForKey`, `CWallet::AddAndGetDestinationForScript`).
2018-01-09 15:35:31 -08:00
Pieter Wuille
f37c64e477 Implicitly know about P2WPKH redeemscripts
Make CKeyStore automatically known about the redeemscripts necessary for P2SH-P2WPKH
(and due to the extra checks in IsMine, also P2WPKH) spending.
2018-01-09 15:35:27 -08:00
Pieter Wuille
57273f2b30 [test] Serialize CTransaction with witness by default 2018-01-09 15:27:55 -08:00
Pieter Wuille
cf2c0b6f5c Support P2WPKH and P2SH-P2WPKH in dumpprivkey 2018-01-09 15:27:55 -08:00
Pieter Wuille
37c03d3e05 Support P2WPKH addresses in create/addmultisig 2018-01-09 15:27:51 -08:00
Suhas Daftuar
35c2b1fe3b Fix rare failure in p2p-segwit.py
Avoid creating very small utxos that would violate an assumption in
test_non_standard_witness.
2018-01-09 14:13:10 -05:00
Suhas Daftuar
9a51319578 Sort mempool by min(feerate, ancestor_feerate)
This more closely approximates the desirability of a given transaction for
mining.
2018-01-09 12:27:57 -05:00
Suhas Daftuar
6773f92b30 Refactor CompareTxMemPoolEntryByDescendantScore 2018-01-09 11:53:40 -05:00
Suhas Daftuar
8e617e3708 Remove unused mempool index 2018-01-09 08:59:21 -05:00
Russell Yanofsky
a14dbff39e Allow multiwallet.py to be used with --usecli
Add test coverage for bitcoin-cli multiwallet calls.
2018-01-08 17:35:27 -05:00
John Newbery
f6ade9ce1a [tests] allow tests to be run with --usecli
test_framework accepts a new --usecli parameter. Running the test with
this parameter will cause all RPCs to be sent through bitcoin-cli rather
than directly over http. By default, individual test cases do not
support --usecli, and self.supports_cli must be set to True in the
set_test_params method.

We can make supports_cli default to True in future once we know which
tests will fail with use_cli.
2018-01-08 17:35:27 -05:00
Russell Yanofsky
ff9a363ff7 TestNodeCLI batch emulation
Support same get_request and batch methods as AuthServiceProxy
2018-01-08 15:17:14 -05:00
Russell Yanofsky
ca9085afc5 Prevent TestNodeCLI.args mixups
Change TestNodeCLI.__call__() to return a new instance instead of modifying the
existing instance. This way, it's possible to create different cli objects that
have their own options (for example -rpcwallet options to connect to different
wallets), and options set for a single call (`node.cli(options).method(args)`)
will no longer leak into future calls.
2018-01-08 15:17:14 -05:00
Russell Yanofsky
fcfb952bca Improve TestNodeCLI output parsing
Parse JSONRPCException errors, and avoid JSON decode exception if RPC method
returns a plain string.
2018-01-08 15:17:14 -05:00
Jacky C
2be2b5d58a Remove the ending slashes from RPC URI format. 2018-01-08 10:11:02 +08:00
donaloconnor
30ded3e3d8 [Refactor] Remove unused fQuit var from checkqueue.h 2018-01-07 20:44:21 +00:00
MarcoFalke
45173fa6fc Merge #12079: Improve prioritisetransaction test coverage
7f67dd0aa6 [qa] Improve prioritisetransaction functional test (João Barbosa)

Pull request description:

Tree-SHA512: 7a5c446772069cd9ace085ae2635e1f61870c597e2216614628f4b6ebfe209b29f381a182a6f60d09f43f22bb82b59bb573b5441fa8e7b958a5fd0d5aad80d86
2018-01-06 03:28:23 -09:00
Pieter Wuille
b3ecb7bab6 Merge #10677: RPC Docs: addmultisigaddress is intended for non-watchonly addresses
73041c3c99 RPC Docs: addmultisigaddress is intended for non-watchonly addresses (Gregory Sanders)

Pull request description:

  Spent a couple hours debugging why my p2sh watchonly funds were not appearing in various accounting calls when address was imported via `addmultisigaddress`.

Tree-SHA512: 0673e276e5ca8cdc4c9357bd835a29bd5a994520a78179600944932c700917142930288bf179f5e89b0874beaf1a88bd70129f3a297a46df42a10bab847017bb
2018-01-06 02:54:33 -08:00
MarcoFalke
fd4ca17360 Merge #12092: [qt] Replaces numbered place marker %2 with %1.
8a93543419 Replaces numbered place marker %2 with %1. (251)

Pull request description:

  This PR closes #12015 in which @chen610620 suggests to replace numbered place marker `%2` with `%1`.

  Calling member function`QString::arg()` on a `QString` object with one arbitrary numbered place marker within the range [1,99] works, because `QString::arg()` replaces the _lowest_ numbered place marker in the `QString` object it is called on.

  [QString::arg documentation:](http://doc.qt.io/qt-5/qstring.html#arg)
  > Returns a copy of this string with the lowest numbered place marker replaced by string a, i.e., %1, %2, ..., %99.

  I suspect that the `%2` marker is just an unfortunate typo or the remainder of a string that used to have multiple numbered place markers.

  This PR replaces the numbered place marker `%2` with `%1` to avoid any confusion in the future.

Tree-SHA512: 0bb40cf3b9824e1eeba0a184e72358b30d20e8261e12deb287155b7cc8317ad0b0787ef1d0671325eb8bccc9e51b3037d737015749338c31cf400930840e56b6
2018-01-05 12:38:22 -09:00
João Barbosa
7f67dd0aa6 [qa] Improve prioritisetransaction functional test 2018-01-05 15:34:43 +00:00
fanquake
f3196a03aa [contrib] Add --disable-replication to install_db4 2018-01-05 08:37:22 +08:00
fanquake
311a423bd8 [contrib] Use BDB_LIBS/CFLAGS in install_db4 2018-01-05 08:36:42 +08:00
Jonas Schnelli
56910285fa Merge #12093: Fix incorrect Markdown link
4aa64557b Fix incorrect Markdown link (practicalswift)

Pull request description:

  Fix incorrect Markdown link.

Tree-SHA512: c6c4e4ddf215fdffa49aa55aed590656356bb7e898b2843a7a6c669eff9f401fe4772a9298893e9fe7f7bc5ea25f7dd87f792241c09e4cd83e7609633556a5bb
2018-01-04 13:49:12 -10:00
practicalswift
4aa64557b5 Fix incorrect Markdown link 2018-01-04 23:55:13 +01:00
251
8a93543419 Replaces numbered place marker %2 with %1.
Replaces numbered place marker %2 with %1, because the QString::arg() member function is called once on the string used to create the QString object.
2018-01-04 20:57:22 +01:00
MarcoFalke
ddff3447f2 Merge #11997: [tests] util_tests.cpp: actually check ignored args
c99a3c32c8 [tests] util_tests.cpp: actually check ignored args (Anthony Towns)

Pull request description:

  An array with 7 elements was setup for checking argument parsing, but
  was passed to ParseParamaeters with argc=5, meaning the interpretation
  of the last two arguments was never actually checked.

Tree-SHA512: 7b81fde49742e524f1bb67e2ec084f5909ae36125f237f0210df4587c62e5a5a8f277f13543f0a85ad145c4bb80d62339a7d50d7ed41659df318c8198ea7f428
2018-01-04 05:08:13 -09:00
MarcoFalke
36a5a44048 Merge #12063: [Trivial] Update license year range to 2018
c9439e735a [Trivial] Update license year range to 2018 (Akira Takizawa)

Pull request description:

  The same as #9617.

  Happy new year! 😃

Tree-SHA512: 4b8fe343bf841da12157595bb51b59ac8e5cfa8ceb5910a499f26cff35c7ef8420dbf3ad8e5dd9f4225441e2fecff7fc6939f1a55f98ea51b57e420d326bda47
2018-01-04 03:13:13 -09:00
Wladimir J. van der Laan
a9a49e6e7e Merge #12001: [RPC] Adding ::minRelayTxFee amount to getmempoolinfo and updating help
aad3090 [rpc] Adding ::minRelayTxFee amount to getmempoolinfo and updating mempoolminfee help description (Jeff Rade)

Pull request description:

  These are RPC document changes from #11475 which is now merged.  Took into consideration comments from #11475 and #6941 for this PR.

  Biggest change here is when calling `getmempoolinfo`, will now show the `minrelaytxfee` in the JSON reponse (see below):

  ```
  $ bitcoin-cli getmempoolinfo
  {
    "size": 50,
    "bytes": 13102,
    "usage": 70480,
    "maxmempool": 300000000,
    "mempoolminfee": 0.00001000,
    "minrelaytxfee": 0.00001000
  }
  ```

  Fixes #8953

Tree-SHA512: 5ca583961365ee1cfe6e0d19afb0b41d542e179efee3b3c5f3fcf7d3ebca9cc3eedfd1434a0da40c5eed84fba98b35646fda201e6e61c689b58bee9cbea44b9e
2018-01-04 09:22:53 +01:00
Jonas Schnelli
eeb6d5271d Merge #12035: [qt] change µBTC to bits
ebcee1de2 bips: add bip176 (Bits Denomination) (William Casarin)
275b2eeed [qt] change µBTC to bits (William Casarin)

Pull request description:

  Now that we have bip176, change "µBTC" to the more colloquial "bits"

Tree-SHA512: eba5e5f89c392728a4f0a3bd81a9779a117b8d72a490390fd031d4e7cc56c2bfee0016aba7ef9535903e8cf2262ce46497283424e378906d0e3bf5b0d2d981c7
2018-01-03 22:16:13 -10:00
Jonas Schnelli
a1136f0cb4 Merge #12074: [qt] Optimizes boolean expression model && model->haveWatchOnly()
6dda059bd [qt] Simplifies boolean expression model && model->haveWatchOnly() (251)

Pull request description:

  This PR optimizes the boolean expression `model && model->haveWatchOnly()` to `model->haveWatchOnly()`.

  The boolean expression can be optimized because the method `TransactionView::exportClicked` already guards against a potential dereferenced null pointer by returning early if `model` is null.
  63a4dc1087/src/qt/transactionview.cpp (L351-L353)

Tree-SHA512: 8bdd0d05bf879745fa39d3ca7524471720ae08ceee9427d5a08776e7b56d18542ae87a6991cd6779e232305f504fdfc77223702b72ecbe231f5f5e98453456dd
2018-01-03 21:58:46 -10:00
Chris Stewart
18be3ab139 Adding test case for SINGLE|ANYONECANPAY hash type in tx_valid.json 2018-01-03 11:07:29 -06:00
MarcoFalke
c991b304de Merge #12075: [scripts] Add missing univalue file to copyright_header.py
415f86c6ae [scripts] Add missing univalue file to copyright_header.py (fanquake)

Pull request description:

  This needs to be added so that PRs like #12062 don't modify the subtree.

Tree-SHA512: 3642bdb0c8271ae700857a79fa5800b0c26c4b3f126d4406f224293817fb74d498fa1fc581d576ae747fbbb6952d4369fc4ab823ab48fd0946c1e8ccbe93cee6
2018-01-03 06:03:03 -09:00
Anthony Towns
c99a3c32c8 [tests] util_tests.cpp: actually check ignored args
An array with 7 elements was setup for checking argument parsing, but
was passed to ParseParamaeters with argc=5, meaning the interpretation
of the last two arguments was never actually checked.
2018-01-04 00:02:52 +10:00
Pieter Wuille
3eaa003c88 Extend validateaddress information for P2SH-embedded witness
This adds new fields 'pubkeys' and 'embedded' to the RPC's output, and improves the
documentation for previously added 'witness_version' and 'witness_program' fields.
2018-01-03 05:43:06 -08:00
Pieter Wuille
30a27dc5b1 Expose method to find key for a single-key destination 2018-01-03 05:43:06 -08:00
Pieter Wuille
985c79552c Improve witness destination types and use them more 2018-01-03 05:43:06 -08:00
Pieter Wuille
cbe197470e [refactor] GetAccount{PubKey,Address} -> GetAccountDestination 2018-01-03 05:42:57 -08:00
Wladimir J. van der Laan
5961b23898 Merge #12062: Increment MIT Licence copyright header year on files modified in 2017
595a7ba Increment MIT Licence copyright header year on files modified in 2017 (Akira Takizawa)

Pull request description:

  Edited via:

  $ contrib/devtools/copyright_header.py update .

  ps) It is the same commit as #9450

Tree-SHA512: 274bfcd6cf2914315ed52f6db773a68800ce9d6bd225a3142654483f0bbc3fd865009e62f9d954f65765d038c626e55d2a64e37e16843809adc2f67abe659b6d
2018-01-03 14:33:28 +01:00
Pieter Wuille
0c8ea6380c Abstract out IsSolvable from Witnessifier 2018-01-03 05:32:00 -08:00
MarcoFalke
d38d1a3e75 Merge #11965: qa: Note on test order in test_runner
fadf60e381 qa: Note on test order in test_runner (MarcoFalke)

Pull request description:

  C.f. #11964

Tree-SHA512: 5f087965093722d9e7a3febddcc187e412bd0636a7ed2da60111668fe3bba6668110e25a38ddcccc0d0aae132611c56fa72f3f0c473fb3fb59e38be445edfcd5
2018-01-03 12:07:52 +02:00
Wladimir J. van der Laan
c04cb48df9 Merge #12077: [Docs] Correct sendmany curl example
0d663f8 Fixes issue #12067 `sendmany` curl example is wrong. (251)

Pull request description:

  The example curl command in the `sendmany` RPC help results in an error:
  ```
  {"result":null,"error":{"code":-1,"message":"JSON value is not an object as expected"},"id":"curltest"}
  ```
  because - as reported in #12067 - the second element in the `params` array should be a JSON object.

  This PR removes the escaped backslash and quote characters that serialize the JSON object to a string and make it a plain JSON object:

  ```
  curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "sendmany", "params": ["", {"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX":0.01,"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz":0.02}, 6, "testing"] }' -H 'content-type: text/plain;' http://127.0.0.1:8332/
  ```

  which (when executed with valid addresses) yields the expected result:

  ```
  {"result":"c446213f06ee4489660ed5dc47d65daca27345d0b5fc5bd344ebca78b2d87356","error":null,"id":"curltest"}
  ```

Tree-SHA512: 9be055515175f633d21cbe2f6735e08709af306639b31e9f2bf83d9eb1cf4dbbf807951728649f3c091fde96dbf4ea732ee903dec9589f90ea1e046b832b90d0
2018-01-03 10:21:15 +01:00
Anthony Towns
5fecd842a6 [tests] Remove redundant import in blocktools.py test 2018-01-03 16:16:56 +10:00
251
0d663f8197 Fixes issue #12067 sendmany curl example is wrong.
This commit removes the escaped backslash and quote characters from the keys in the JSON object to make it a plain JSON object.
2018-01-02 20:53:30 +01:00
Akira Takizawa
595a7bab23 Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
fanquake
415f86c6ae [scripts] Add missing univalue file to copyright_header.py 2018-01-02 10:20:50 +08:00
251
6dda059bde [qt] Simplifies boolean expression model && model->haveWatchOnly()
The boolean expression model && model->haveWatchOnly() can be simplified to model->haveWatchOnly(), because if (!model || !model->getOptionsModel()) { return; } guards against a potential dereferenced null pointer.
2018-01-02 01:06:23 +01:00
Akira Takizawa
c9439e735a [Trivial] Update license year range to 2018 2018-01-01 04:33:09 +09:00
William Casarin
ebcee1de26 bips: add bip176 (Bits Denomination)
For the implementation in #12035.
Note that this only applies to the QT GUI at this time.

Signed-off-by: William Casarin <jb55@jb55.com>
2017-12-30 10:45:50 -08:00
Wladimir J. van der Laan
63a4dc1087 Merge #12027: [Docs] Remove boost --c++ flag from osx build instructions
5ec3eae remove brew c++ flag (Pablo Fernandez)

Pull request description:

  the c++ is not needed since the listed brew formulas no longer have this option. It also raises a warning that may generate confusion.

Tree-SHA512: 37c0ebee2901947a21abfcd646ae0c7e73293568f37db9b130d1c521aa4222b0e82e21614e6ac60bb5347c34ef15bbd24eb8066ebf576ea3da9f365be9a4d062
2017-12-30 13:55:10 +01:00
Wladimir J. van der Laan
efae3663a7 Merge #11984: doc: Update OpenBSD build instructions for 6.2 (cont'd)
6915f93 doc: Update OpenBSD build instructions for 6.2 (Wladimir J. van der Laan)

Pull request description:

  (this continues #11442)
  There is no more need to install a new compiler. This simplifies instructions a lot.

  From discussion with @fanquake on IRC I first wanted to add a new section for 6.2, but that made the document a complex mess. I think it's good enough (and more maintainable too) to only support the most recent release.

  Includes #11976.

  I moved the "resource limits" section to the end as I didn't seem to need it with clang, but this may vary based on source changes and the phase of the moon so it's good to keep it as optional extra information.

Tree-SHA512: 15794afec6d682323d0aa13c7616d009acb7fce8b0ef5d2106261f2ebd86b7b2fe66040c04860d9bf2f0c1934fbdc2b594b8c09a98accfaac04f3daf9a6cadf3
2017-12-30 10:36:37 +01:00
MarcoFalke
a332a7d5a1 Merge #11291: Fix string concatenation to os.path.join and add exception case
a3ac7672ed Fix string concatenation to os.path.join and add exception case (dongsamb)

Pull request description:

  Solved some warnings for [Python PEP 8 convention](https://www.python.org/dev/peps/pep-0008/)

  - [Method Names and Instance Variables](https://www.python.org/dev/peps/pep-0008/#method-names-and-instance-variables)
  lowercase with words separated by underscores as necessary to improve readability.

      - `testDir` to `test_dir`
      - `inputData` to `input_data`
      - ...

  - [Blank Lines](https://www.python.org/dev/peps/pep-0008/#blank-lines)
  Surround top-level function and class definitions with two blank lines.

  - [Exception Names](https://www.python.org/dev/peps/pep-0008/#exception-names)

  and added verification logic about referenced before assignment for `output_type`

Tree-SHA512: 346d08799f03077a2b7257ccdca123b4945b89dbf0677dba452d96b81ce186ec7b5dcdb10b8bb59cfce657a7aedbb7df64921036cbd1bf4ad8bd313d40faa796
2017-12-30 00:19:38 -05:00
Jeff Rade
aad309065d [rpc] Adding ::minRelayTxFee amount to getmempoolinfo and updating mempoolminfee help description 2017-12-29 08:56:44 -06:00
Pieter Wuille
d9fdac130a Merge #11824: Block ActivateBestChain to empty validationinterface queue
97d2b09c12 Add helper to wait for validation interface queue to catch up (Matt Corallo)
36137497f1 Block ActivateBestChain to empty validationinterface queue (Matt Corallo)
5a933cefcc Add an interface to get the queue depth out of CValidationInterface (Matt Corallo)
a99b76f269 Require no cs_main lock for ProcessNewBlock/ActivateBestChain (Matt Corallo)
a734896038 Avoid cs_main in net_processing ActivateBestChain calls (Matt Corallo)
66aa1d58a1 Refactor ProcessGetData in anticipation of avoiding cs_main for ABC (Matt Corallo)
818075adac Create new mutex for orphans, no cs_main in PLV::BlockConnected (Matt Corallo)

Pull request description:

  This should fix #11822.

  It ended up bigger than I hoped for, but its not too gnarly. Note that "
  Require no cs_main lock for ProcessNewBlock/ActivateBestChain" is mostly pure code-movement.

Tree-SHA512: 1127688545926f6099449dca6a4e6609eefc3abbd72f1c66e03d32bd8c7b31e82097d8307822cfd1dec0321703579cfdd82069cab6e17b1024e75eac694122cb
2017-12-29 01:51:23 -08:00
William Casarin
275b2eeed4 [qt] change µBTC to bits
* Now that we have bip176, change "µBTC" to the more colloquial "bits"

* We retain the `µBTC (bits)` description in dropdowns and status bars.
  The more concise "bits" is used when appended to numbers.

Signed-off-by: William Casarin <jb55@jb55.com>
2017-12-28 09:54:58 -08:00
Pablo Fernandez
5ec3eae393 remove brew c++ flag
the c++ is not needed since the listed brew formulas no longer have this option. It also raises a warning that may generate confusion.
2017-12-26 14:23:58 -03:00
Matt Corallo
97d2b09c12 Add helper to wait for validation interface queue to catch up 2017-12-26 11:56:00 -05:00
Matt Corallo
36137497f1 Block ActivateBestChain to empty validationinterface queue 2017-12-26 11:54:49 -05:00
Matt Corallo
5a933cefcc Add an interface to get the queue depth out of CValidationInterface 2017-12-26 11:54:49 -05:00
Matt Corallo
a99b76f269 Require no cs_main lock for ProcessNewBlock/ActivateBestChain
This requires the removal of some very liberal (incorrect) cs_mains
sprinkled in some tests. It adds some chainActive.Tip() races, but
the tests are all single-threaded anyway.
2017-12-26 11:54:43 -05:00
Matt Corallo
a734896038 Avoid cs_main in net_processing ActivateBestChain calls 2017-12-24 13:20:52 -05:00
Matt Corallo
66aa1d58a1 Refactor ProcessGetData in anticipation of avoiding cs_main for ABC 2017-12-24 13:08:38 -05:00
Matt Corallo
fb6f6b1519 bluematt's testnet-seed now supports x9 (and is just a static list) 2017-12-24 11:47:19 -05:00
Wladimir J. van der Laan
5180a86c96 Merge #11517: Tests: Improve benchmark precision
760af84 Removed CCheckQueueSpeed benchmark (Martin Ankerl)
00721e6 Improved microbenchmarking with multiple features. (Martin Ankerl)

Pull request description:

  The benchmark's KeepRunning() used to make a function call for each call, inflating measurement times for short running code. This change inlines the critical code that is executed each run and moves the slow timer updates into a new function.

  This change increases the average runtime for Trig from 0.000000082339208 sec to 0.000000080948591.

Tree-SHA512: 36b3bc55fc9b1d4cbf526b7103af6af18e9783e6b8f3ad3adbd09fac0bf9401cfefad58fd1e6fa2615d3c4e677998f912f3323d61d7b00b1c660d581c257d577
2017-12-23 14:53:05 +01:00
Wladimir J. van der Laan
20166f8a44 Merge #11748: [Tests] Adding unit tests for GetDifficulty in blockchain.cpp.
3e1ee31 [Tests] Adding unit tests for GetDifficulty in blockchain.cpp. (sean)

Pull request description:

  blockchain.cpp has low unit test coverage. This commit is intended
  to start improving its code coverage to reasonable levels. One or more
  follow up commits will complete the task that this commit is starting
  (though the usefulness of this commit is not dependent upon later
  commits).

  Note that these tests were not written based upon a specification of how
  GetDifficulty *should* work, but rather how it actually *does* work. As
  a result, if there are any bugs in the current GetDifficulty
  implementation, these unit tests serve to lock them in rather than
  expose them.

  -- Why has blockchain.cpp been modified if this is a unit testing change?

  Since the existing GetDifficulty function relies on a global variable,
  chainActive, it was not suitable for unit testing purposes. Both the
  existing GetDifficulty function and the unit tests now call through to
  a new, more modular version of GetDifficulty that can work on any chain,
  not just chainActive.

  -- Why does blockchain_tests.cpp directly include blockchain.cpp instead
  of blockchain.h?

  While the new GetDifficulty function's signature is arguably better than
  the old one's, it still isn't great, and doesn't seem to warrant inclusion
  as part of the blockchain.h API, especially since only test code is
  directly using it. If a better way of exposing the new GetDifficulty
  function to unit tests exists, please mention it and the commit will be
  updated accordingly.

  -- Why is the test fixture named blockchain_difficulty_tests rather than
  blockchain_tests?

  The Bitcoin Core policy for naming unit test files is to match the the
  file under test ("blockchain" becomes "blockchain_tests"). While this
  commit complies with that, blockchain.cpp is a massive file, such that
  having all of the unit tests in one file will tend towards disorder.
  Since there will be a lot more tests added to this file, the intention
  is to divide up different types of tests into different test fixtures
  within the same file.

Tree-SHA512: a7dda9c2a9414d4819b4d2911f5637891dc19cecbecfc1463846161d2a78793151927a5ab911c69a5d3013f7668e75a1d78a65667cb9d83910cda439cbe84d62
2017-12-23 11:22:18 +01:00
Martin Ankerl
760af84072 Removed CCheckQueueSpeed benchmark
This benchmark's runtime was rather unpredictive on different machines, not really a useful benchmark.
2017-12-23 11:03:17 +01:00
Martin Ankerl
00721e69f8 Improved microbenchmarking with multiple features.
* inline performance critical code
* Average runtime is specified and used to calculate iterations.
* Console: show median of multiple runs
* plot: show box plot
* filter benchmarks
* specify scaling factor
* ignore src/test and src/bench in command line check script
* number of iterations instead of time
* Replaced runtime in BENCHMARK makro number of iterations.
* Added -? to bench_bitcoin
* Benchmark plotly.js URL, width, height can be customized
* Fixed incorrect precision warning
2017-12-23 11:03:17 +01:00
Wladimir J. van der Laan
9bad8d6472 Merge #11475: [rpc] mempoolinfo should take ::minRelayTxFee into account
149dffd [rpc] mempoolinfo should take ::minRelayTxFee into account (Cristian Mircea Messel)

Pull request description:

  Fixes #6941 following https://github.com/bitcoin/bitcoin/pull/11410#issuecomment-332991078 's suggestion

  This takes care of the mentioned ticket without changing the behavior of https://github.com/bitcoin/bitcoin/pull/11410/files#diff-24efdb00bfbe56b140fb006b562cc70bL629

  By modifying 5a9da37fb3/src/txmempool.cpp (L984) the syncing mempools becomes problematic as per https://github.com/bitcoin/bitcoin/pull/11410#issuecomment-333868390

  ~~Same code causes different tests to fail: https://travis-ci.org/bitcoin/bitcoin/jobs/286128241 https://travis-ci.org/bitcoin/bitcoin/jobs/286128241 . I can't reproduce the problems locally, am I doing something wrong?~~ travis sometimes fails unexpectedly

Tree-SHA512: fd81628da6a3eff51bd09e5342d781bac0710f79d6b330b1df3662756ecaceb2e1682bf9768b5f8edbcba6479a3223dfa6604d37c9e9d37d00d077172da4f6ea
2017-12-23 10:00:24 +01:00
Jonas Schnelli
8f68fd281e Merge #11903: [trivial] Add required package dependencies for depends cross compilation
31a013563 Add required package dependencies for depends cross compilation [skip-ci] (Jonas Schnelli)

Pull request description:

  Stumbled over this during a setup of a new depends compile system.
  Related to #8913.

Tree-SHA512: 67e2fdf9ca3cbedeb02982fa73771dd36978b319e9291ea5a41ede7fdf772c4505ccc9523b48fe66ead927f141efefbdf1e3eaa19a9d8a1304861a8ede040056
2017-12-22 09:49:28 -10:00
Wladimir J. van der Laan
f19ca129ff Merge #11605: [Wallet] Enable RBF by default in QT
5cbbbd7 [Wallet] Use RBF by default in QT only (Sjors Provoost)

Pull request description:

  ~If there are no objections, this would supersede #11556.~

  Enabling RBF by default avoids the need to explain all possible use cases of RBF.

  This PR does not change the default RPC wallet behavior, as this could break implementations that depend on it and it's not clear what happens when automated services suddenly switch on RBF on a large scale.

  After trying various approaches, we settled on just having QT ignore `-walletrbf`.

  Send screen:
  <img width="388" alt="send" src="https://user-images.githubusercontent.com/10217/34251097-329c8dee-e63f-11e7-9e14-d7f55d2b52cc.png">

  Confirmation screen by default (with RBF):
  <img width="429" alt="rbf yes" src="https://user-images.githubusercontent.com/10217/32442799-f50d54aa-c2fc-11e7-9392-96339d0f1f74.png">

  Confirmation screen without RBF:
  <img width="431" alt="rf no" src="https://user-images.githubusercontent.com/10217/32442793-ef30bc34-c2fc-11e7-8ca2-e86a97175278.png">

Tree-SHA512: 53efb5d277144478143e69dcae8112c1b9c2beb981fdd0fe778592e5f7d5bf838f73d48052ead874586a75b944e8af469b25e5f376c135cf48cc3598e77f5891
2017-12-22 13:15:31 +01:00
Sjors Provoost
ac5104f886 [build] .gitignore: add QT Creator artifacts 2017-12-22 12:37:00 +01:00
Wladimir J. van der Laan
6915f93cc9 doc: Update OpenBSD build instructions for 6.2
There is no more need to install a compiler. This simplifies
instructions a lot.
2017-12-22 10:08:53 +01:00
Wladimir J. van der Laan
180a25596a Merge #11981: Fix gitian build after libzmq bump
a6365c5 depends: fix libzmq's needless linking against libstdc++ (Cory Fields)

Pull request description:

  Broken gitian builds were introduced with #9254. Big thanks to @jonasschnelli for narrowing down the bisection.

  This is broken for a number of reasons, including:
  - g++ understands "-static-libstdc++ -lstdc++" to mean "link against whatever libstdc++ exists, probably shared", which in itself is buggy.
  - another stdlib (libc++ for example) may be in use

Tree-SHA512: d84968ee680f32ea799034ee516e9477fff2b1ef1b7c9a8ef1941631520ab196ecd50f5d64f3ed1c84113ead44be5e3ddf6ff2ae0277625bdeed05f1da89e017
2017-12-22 09:23:20 +01:00
Sjors Provoost
5cbbbd7143 [Wallet] Use RBF by default in QT only
GUI wallet uses RBF by default, regardless of -walletrbf.

RPC and debug console in the GUI remain unchanged; they don't
use RBF by default, unless launched with -walletrbf=1.
2017-12-22 09:18:05 +01:00
Cory Fields
a6365c5c3d depends: fix libzmq's needless linking against libstdc++
This is broken for a number of reasons, including:
- g++ understands "-static-libstdc++ -lstdc++" to mean "link against whatever
  libstdc++ exists, probably shared", which in itself is buggy.
- another stdlib (libc++ for example) may be in use
2017-12-21 18:01:08 -05:00
MarcoFalke
fadf60e381 qa: Note on test order in test_runner 2017-12-21 08:56:40 -05:00
Wladimir J. van der Laan
711d16ca4a Merge #11667: Add scripts to dumpwallet RPC
656fde5 Add script birthtime metadata to dump and import wallet (MeshCollider)
1bab9b2 Add script dump note to RPC help text and release notes (MeshCollider)
68c1e00 Add test for importwallet (MeshCollider)
9e1184d Add dumpwallet scripts test (MeshCollider)
ef0c730 Add scripts to importwallet RPC (MeshCollider)
b702ae8 Add CScripts to dumpwallet RPC (MeshCollider)
cdc260a Add GetCScripts to CBasicKeyStore (MeshCollider)

Pull request description:

  As discussed in https://github.com/bitcoin/bitcoin/pull/11289#issuecomment-334600457, adds the CScripts from the wallet to the `dumpwallet` RPC and then allows them to be imported with the `importwallet` RPC. Includes a basic test, and modifies the helptext of the dumpwallet RPC.

  Notes:
  - Reviewers: use `?w=1` to avoid the indentation-only change in commit `Add scripts to importwallet RPC `
  - currently the scripts are followed with `# addr=` comments just as the other keys are, unsure if this might confuse users into thinking all the scripts are for valid P2SH addresses though, but I don't think that should be an issue.
  - there are no birthtimes for scripts, so script imports don't affect rescans
  - `importwallet` imports the CScripts but I'm not sure how to approach specifying whether scripts are for P2SH addresses, BIP173 addresses, etc. whether that matters or not. Otherwise the RPC helptext might just need modification.

  Fixes #11715

Tree-SHA512: 36c55837b3a58b9d3499d4c0c2ae82153d62aa71919e751574651b63a1d2b8ecc83796db4553cc65dad9b5341c3a42ae2fcf4d62598c30af267f8e1461ba8272
2017-12-21 13:03:26 +01:00
Wladimir J. van der Laan
7a11ba7e01 Merge #11945: Improve BSD compatibility of contrib/install_db4.sh
2712742 doc: Update FreeBSD build instructions to use bdb4 (Wladimir J. van der Laan)
d95c83d contrib: FreeBSD compatibility in install_db4.sh (Wladimir J. van der Laan)
c0298b0 contrib: Make X=Y arguments work in install_db4 (Wladimir J. van der Laan)
b798f9b contrib: New clang patch for install_db4 (Wladimir J. van der Laan)

Pull request description:

  This PR improves the BSD compatibility of the bdb4 installer script.

  See #11921, #11868.

  I've tested this on OpenBSD 6.2 (clang) and Ubuntu 16.04 (gcc).

  This needs testing on OSX at least, ~~and on gcc/Linux to make sure that applying the patch unconditionally doesn't negatively affect gcc~~.

  ~~NB: this is not yet sufficient to make `install_db4.sh` work on FreeBSD, as we need to use yet another `sha256` tool there. But it's a step in the right direction.~~

  ### contrib: New clang patch for install_db4

  Replace the clang patch with a new and improved version that also fixes the build issues with OpenBSD and FreeBSD's clang, and apply it unconditionally.

  Thanks to @fanquake for finding the patch.

  ### contrib: Make X=Y arguments work in install_db4

  Trailing X=Y arguments are supposed to be passed through unchanged to bdb's configure. This was not the case, at least with OpenBSD 6.2's shell.

  Fix this by not storing the arguments in a temporary variable but passing "$@" through directly.

  ### contrib: FreeBSD compatibility in install_db4.sh

  Unfortunately, FreeBSD uses yet another syntax for `sha256`.

  Support FreeBSD's syntax too. Using `uname` is a bit of a hack but it works and I found no way to distinguish the two.

Tree-SHA512: 12461a58dfeb4834701891762efc747c8187d834f41d98c8451edee1402a3958c4842bbc02c61bacbc7b0d90cc6b020a2ca158b65304d9760c9f0d2052ff36d4
2017-12-21 09:30:25 +01:00
MarcoFalke
604e08c83c Merge #11726: Cleanups + nit fixes for walletdir PR
aac6b3f067 Update files.md for new wallets/ subdirectory (MeshCollider)
b67342906c Cleanups for walletdir PR (MeshCollider)

Pull request description:

  This addresses the remaining nits from https://github.com/bitcoin/bitcoin/pull/11466

  - Updates `doc/files.md` with respect to the new default wallet directory
  - Fixes @promag and @laanwj's error message nit, and Jonas' release notes nit
  - ~Addresses @laanwj's net-specific wallet subdirectory concern in the case that a walletdir is specified~
  - Changes the #includes from "" to <> style after #11651

Tree-SHA512: b86bf5fdc4de54c1b0f65b60a83af3cf82b35d216ce9c0de724803bfba6934796238b6c412659dcc29ae2e3e856d4eb97ae777c80f36f4089d8acecfddefe9aa
2017-12-20 17:37:57 -05:00
Wladimir J. van der Laan
79399c8cd0 Merge #10657: Utils: Improvements to ECDSA key-handling code
63179d0 Scope the ECDSA constant sizes to CPubKey / CKey classes (Jack Grigg)
1ce9f0a Ensure that ECDSA constant sizes are correctly-sized (Jack Grigg)
48abe78 Remove redundant `= 0` initialisations (Jack Grigg)
17fa391 Specify ECDSA constant sizes as constants (Jack Grigg)
e4a1086 Update Debian copyright list (Jack Grigg)
e181dbe Add comments (Jack Grigg)
a3603ac Fix potential overflows in ECDSA DER parsers (Jack Grigg)

Pull request description:

  Mostly trivial, but includes fixes to potential overflows in the ECDSA DER parsers.

  Cherry-picked from Zcash PR https://github.com/zcash/zcash/pull/2335

Tree-SHA512: 8fcbd51b0bd6723e5d33fa5d592f7cb68ed182796a9b837ecc8217991ad69d6c970258617dc00eb378c8caa4cec5d6b304d9d2c066acd40cda98e4da68e0caa4
2017-12-20 18:00:32 +01:00
Wladimir J. van der Laan
bc66765144 Merge #11917: Add testnet DNS seed: seed.testnet.bitcoin.sprovoost.nl
f455a24 [net] add seed.testnet.bitcoin.sprovoost.nl to testnet DNS seeds (Sjors Provoost)

Pull request description:

  I tested it myself by:
  * `dig seed.testnet.bitcoin.sprovoost.nl`  (should have propagated by now, but if you only see two records with `A 66.111... ` try again later)
  * deleting the other seeds and all data in `.../testnet3`, recompiling and then starting the node. Log shows `21 addresses found from DNS seeds`.

  ACK https://github.com/bitcoin/bitcoin/blob/master/doc/dnsseed-policy.md

  I'm willing to keep it up and running at least throughout 2018, unless something bad happens.

  About my setup:
  * Amazon EC2 instance in Europe, running Ubuntu 16.04; I use this instance for some other chores, but only port 53 is world reachable (for mainnet I'd probably run a dedicated instance, and perhaps a location I have physical control over)
  * running [sipa/bitcoin-seeder](https://github.com/sipa/bitcoin-seeder) with default settings (and the non-root port redirect)
  * feedback about my domain / DNS setup is welcome, I can provide more details via private email

  I can use guidance on _Any hosting services contracted by the operator are equally expected to uphold these expectations_. Although I assume the requirements for testnet are less strict than for mainnet, in case I want to pursue the latter in the future: what unpleasant things can Amazon, my domain registrar and other intermediaries do? How would I mitigate that?

  Also note that The Netherlands passed some pretty onerous legislation creating uncertainty over what the secret service can compel people like myself to do. However these laws won't take effect before mid 2018, there's probably more interesting targets than myself to go after, and it's easier for them to just monitor all unencrypted P2P traffic everywhere, or monitor some intermediary I depend on.

  Any good tools for monitoring uptime?

Tree-SHA512: 386fe688e5006ab8352d93ab3954fc07dc566876ae002891baa51acfaa5bb113f51b1f5ca08c7394a530b10a2f5008c56d57153af3ed07544a305586dda06b97
2017-12-20 17:04:22 +01:00
Wladimir J. van der Laan
d4e404a3af Merge #11879: [tests] remove redundant univalue_tests.cpp
2862b56 [tests] remove redundant univalue_tests.cpp (John Newbery)

Pull request description:

  univalue unit tests were added in #4730 , and exist at `/src/test/univalue_tests.cpp` (outside the univalue tree). That test was brought into the univalue repository in https://github.com/bitcoin-core/univalue/pull/4 , which was pulled into the github repository in https://github.com/bitcoin/bitcoin/pull/11420.

  That means that the univalue test exists in two places:
  1. `/src/test/univalue_tests.cpp`
  2. `/src/univalue/test/object.cpp`

  (2) is a strict superset of (1). It adds some macros to work around boost not being a univalue dependency, and adds a few extra lines of test.

  Therefore remove `/src/test/univalue_tests.cpp`

Tree-SHA512: 3747b10bbf62e9f12363905488b29945ad559ddca68c5c03d8a362de612a51f408f41a04d3712c6889bfc1632fb1a5fa0d7df0fbf02c322b3981a6d698f501b0
2017-12-20 16:53:02 +01:00
Wladimir J. van der Laan
9ab9963386 Merge #11952: [qa] univalue: Bump subtree
88411e9 Squashed 'src/univalue/' changes from fe805ea74f..07947ff2da (MarcoFalke)

Pull request description:

  Pulls in the test changes to the univalue subtree.

  Beside looking at the code, reviewers should refer to https://github.com/bitcoin/bitcoin/blob/master/contrib/devtools/README.md#git-subtree-checksh on how to verify the subtree pull.

Tree-SHA512: 09493625a573dca1140570326ee90c1bb84e4893e1dab2cdd51bc23ae1fba1e33c43ed771ca9e112ac71b0242e8a8d058071334562c738d502587eadd5a0f114
2017-12-20 16:51:39 +01:00
Wladimir J. van der Laan
2712742ef2 doc: Update FreeBSD build instructions to use bdb4
Use Berkeley DB 4 as recommended on other platforms.
2017-12-20 15:16:01 +01:00
Wladimir J. van der Laan
d95c83d193 contrib: FreeBSD compatibility in install_db4.sh
Unfortunately, FreeBSD uses yet another syntax for `sha256`.

Support FreeBSD's syntax too. Using `uname` is a bit of a hack but it
works and I found no way to distinguish the two.
2017-12-20 14:58:39 +01:00
Wladimir J. van der Laan
4307062ee2 Merge #11960: [Doc] Fix link to installation script
3d3e58e [Doc] Fix link to installation script (laudaa)

Pull request description:

  While trying to set up a fresh build by following the Doc, I've noticed that the scripts to the installation script are broken. They try to go to:
  https://github.com/bitcoin/bitcoin/blob/master/doc/contrib/install_db4.sh, but should go to:
  https://github.com/bitcoin/bitcoin/blob/master/contrib/install_db4.sh

Tree-SHA512: db7df9dbfdd946c6edc07e10b6717cbb82083f974f11765dc2b6942d20d1569f54bf63da34cf29ee12ba2217e342574d382e4dc61ee2d2617f40e87b538ab76a
2017-12-20 14:37:24 +01:00
laudaa
3d3e58e46c [Doc] Fix link to installation script 2017-12-20 13:39:16 +01:00
Wladimir J. van der Laan
1fb34e0d1f Merge #11951: Remove dead feeest-file read code for old versions
62e7c04 Remove dead feeest-file read code for old versions (Matt Corallo)

Pull request description:

  0.15.0 introduced a new feeest file format, and support for parsing
  old versions was never fully added. We now simply fail to read the
  old format, so remove the dead partial-implementation.

  Follow up to #11273.

Tree-SHA512: c291ce51b7cb0c93479c18a1885dd646cbe03e4c7d12df03c0e99c0634e1bf9f9e41facf54a645227154bab58b9988f21b928cf3fc0520087c4eede4258c8861
2017-12-20 10:41:37 +01:00
Wladimir J. van der Laan
cfd99ddc3c Merge #11883: Add configuration file/argument testing
be9a13c Add configuration/argument testing (MeshCollider)

Pull request description:

  Adds a new functional test for testing various command line and configuration file argument interactions, that aren't specific enough to other functionality to be placed in other tests.

  Currently this tests the error messages for non-existent datadir, which would have caught the bug fixed in https://github.com/bitcoin/bitcoin/pull/11829. It also tests that command line arguments override the ones in the config file.

  I plan on working on a fix for https://github.com/bitcoin/bitcoin/issues/11819 / https://github.com/bitcoin/bitcoin/issues/1044 and then expanding this test with cases for that.

Tree-SHA512: 97aea18c67d331db3ca3d0c99c79267cf012df67fddafc9fac63d392f5c3a6469aa14d93b5865c3bbe561461648d2485367978a77446483b8df53d1916f1c8e8
2017-12-20 09:37:36 +01:00
MeshCollider
656fde53a3 Add script birthtime metadata to dump and import wallet 2017-12-20 20:24:37 +13:00
MeshCollider
1bab9b23af Add script dump note to RPC help text and release notes 2017-12-20 18:47:56 +13:00
MeshCollider
68c1e00a00 Add test for importwallet 2017-12-20 18:47:56 +13:00
MeshCollider
9e1184dd54 Add dumpwallet scripts test 2017-12-20 18:47:56 +13:00
MeshCollider
ef0c730220 Add scripts to importwallet RPC 2017-12-20 18:47:56 +13:00
MeshCollider
b702ae812c Add CScripts to dumpwallet RPC 2017-12-20 18:47:56 +13:00
MeshCollider
cdc260afd5 Add GetCScripts to CBasicKeyStore 2017-12-20 18:47:55 +13:00
MeshCollider
be9a13c8a0 Add configuration/argument testing 2017-12-20 12:23:12 +13:00
MarcoFalke
fad349c507 univalue: Bump subtree 2017-12-19 16:44:57 -05:00
MarcoFalke
88411e98e5 Squashed 'src/univalue/' changes from fe805ea74f..07947ff2da
07947ff2da Merge #9: [tests] Fix BOOST_CHECK_THROW macro
ec849d9a28 [tests] Fix BOOST_CHECK_THROW macro
31bc9f5a49 Merge #8: Remove unused Homebrew workaround
fa042093d1 Remove HomeBrew workaround
a523e08ae4 Merge #7: Declare single-argument (non-converting) constructors "explicit"
a9e53b38ba Merge #4: Pull upstream
16a1f7f6e9 Merge #3: Pull upstream
daf1285af6 Merge pull request #2 from jgarzik/master
f32df99e96 Merge branch '2016_04_unicode' into bitcoin
280b191cb1 Merge remote-tracking branch 'jgarzik/master' into bitcoin
2740c4f712 Merge branch '2015_11_escape_plan' into bitcoin

git-subtree-dir: src/univalue
git-subtree-split: 07947ff2da9ef02a9dfa13346bc5545708e3ebe7
2017-12-19 16:44:08 -05:00
MarcoFalke
18a1bbad98 Merge #11867: Improve node network test
ee5efad6cf [tests] refactor node_network_limited (John Newbery)
b425131f5a [tests] remove redundant duplicate tests from node_network_limited (John Newbery)
2e02984591 [tests] node_network_limited - remove race condition (John Newbery)
dbfe294805 [tests] define NODE_NETWORK_LIMITED in test framework (John Newbery)
1285312048 [tests] fix flake8 warnings in node_network_limited.py (John Newbery)

Pull request description:

  Fixes race condition in the node_network_limited test case introduced in #11740. Also tidies up the test and removes redundant duplicate tests.

Tree-SHA512: a5240fe35509d81a47c3d3b141a956378675926093e658d24be43027b20d3b5f0ba7c6017c8208487a1849d4fdfb911a361911d571423db7c50711250aba3011
2017-12-19 15:16:33 -05:00
John Newbery
ee5efad6cf [tests] refactor node_network_limited 2017-12-19 11:20:12 -05:00
John Newbery
b425131f5a [tests] remove redundant duplicate tests from node_network_limited 2017-12-19 11:20:12 -05:00
John Newbery
2e02984591 [tests] node_network_limited - remove race condition
node_network_limited had a race condition, since wait_for_block()
doesn't do what you might expect. It only checks the most recent block
received over the P2P interface (perhaps we should rename the method
wait_for_most_recent_block() to avoid future confusion). The test can
fail if the node sends us invs for other blocks, we respond with a
getdata, and the node sends us one of those blocks in the 0.05 second
wait_until loop window.

Fix this by not responding to inv messages with getdata messages.
2017-12-19 11:20:12 -05:00
John Newbery
dbfe294805 [tests] define NODE_NETWORK_LIMITED in test framework 2017-12-19 11:19:55 -05:00
John Newbery
1285312048 [tests] fix flake8 warnings in node_network_limited.py 2017-12-19 11:19:55 -05:00
Matt Corallo
62e7c04fb8 Remove dead feeest-file read code for old versions
0.15.0 introduced a new feeest file format, and support for parsing
old versions was never fully added. We now simply fail to read the
old format, so remove the dead partial-implementation.
2017-12-19 11:19:28 -05:00
Wladimir J. van der Laan
cdd6bbf10a Merge #11273: Ignore old format estimation file
3a3a9f9 Ignore old format estimation file (Murch)

Pull request description:

  The fee estimation data format changed from 0.14.x to 0.15.0, so we should no longer read the old data. H/T @jnewbery, @morcos

  Pending testing.

Tree-SHA512: c8e3824dbdd8f6730133d5ad20b00995e9a63ab54431158a91e2f4d2aba5763b8aa698bce1fffca2713ba3a162e23d8fcd6e3efb9847b015c2e1e8725398150b
2017-12-19 17:09:59 +01:00
Wladimir J. van der Laan
81c89e966e Merge #11923: Wallet : remove unused fNoncriticalErrors variable from CWalletDB::FindWalletTx
ecf9b25 remove unused fNoncriticalErrors variable from CWalletDB::FindWalletTx (Pierre Rochard)

Pull request description:

  The `CWalletDB::FindWalletTx` method was patterned after `CWalletDB::LoadWallet`, where `fNoncriticalErrors` is used when a tx check fails in `ReadKeyValue`.

  Since `FindWalletTx` is only used by methods which are zapping txs, it makes sense that `ReadKeyValue` is not called and the tx is not checked, so I think that deleting the unused `fNoncriticalErrors` boolean variable and its conditional statement is appropriate.

Tree-SHA512: 0976eae97522719fdaeca1fb3f4a080561e46c06d0b8dc75e14262c6bc242998db3f7057183a230a1d7e4ac5fc348e9059f545b7d718ebbcdf6dcdfc63bcc286
2017-12-19 16:16:39 +01:00
MarcoFalke
8049241e22 Merge #11946: tests: Remove unused variable (firstAddrnServices)
bdaed47558 tests: Remove unused variable (firstAddrnServices) (practicalswift)

Pull request description:

  Remove unused variable (`firstAddrnServices`).

Tree-SHA512: 7075952b392227c00fcb22adb1fd3f7ef31d7fd7101fbeff632beeea814c70beaef5c9957736eff2451976c8b43b950fc949642e608b610c5fefd150282eafb0
2017-12-19 08:12:53 -05:00
MarcoFalke
797441ee99 Merge #11947: test: Fix rawtransactions test
4508519250 test: Fix rawtransactions test (Wladimir J. van der Laan)

Pull request description:

  Looks like another `assert_raises_jsonrpc` snuck in with #11178. Change it to `assert_raises_rpc_error`.

Tree-SHA512: c2c2fb78be5dcc490981896cf60be1fba0b41c385a4f18de084b2e0a042c5b06bf6da617d3bf3b7e585b728554f5c8e1814b85045ba542cca9dfb7b826fda75a
2017-12-19 08:08:51 -05:00
Wladimir J. van der Laan
4508519250 test: Fix rawtransactions test
Looks like another `assert_raises_jsonrpc` snuck in with #11178.
Change it to `assert_raises_rpc_error`.
2017-12-19 13:24:51 +01:00
practicalswift
bdaed47558 tests: Remove unused variable (firstAddrnServices) 2017-12-19 13:17:58 +01:00
Wladimir J. van der Laan
2971fd030f Merge #11220: Check specific validation error in miner tests
12781db [Tests] check specific validation error in miner tests (Sjors Provoost)

Pull request description:

  ## Problem

  `BOOST_CHECK_THROW` merely checks that some `std::runtime_error` is
  thrown, but not which one.

  Here's an example of how this can cause a test to pass when a developer
  introduces a consensus bug. The test for the sigops limit assumes
  that `CreateNewBlock` fails with `bad-blk-sigops`. However it can
  also fail with bad-txns-vout-negative, if a naive developer lowers
  `BLOCKSUBSIDY` to `1*COIN`.

  ## Solution

  `BOOST_CHECK_EXCEPTION` allows an additional predicate function. This
  commit uses this for all exceptions that are checked for in
  `miner_tets.cpp`:
  * `bad-blk-sigops`
  * `bad-cb-multiple`
  * `bad-txns-inputs-missingorspent`
  * `block-validation-failed`

  If the function throws a different error, the test will fail. Although the message produced by Boost is a bit [confusing](http://boost.2283326.n4.nabble.com/Test-BOOST-CHECK-EXCEPTION-error-message-still-vague-tt4683257.html#a4683554), it does show which error was actually thrown. Here's what the above `1*COIN` bug would result in:

  <img width="1134" alt="schermafbeelding 2017-09-02 om 23 42 29" src="https://user-images.githubusercontent.com/10217/29998976-815cabce-9038-11e7-9c46-f5f6cfb0ca7d.png">

  ## Other considerations

  A more elegant solution in my opinion would be to subclass `std::runtime_error` for each `INVALID_TRANSACTION` type, but this would involve touching consensus code.

  I put the predicates in `test_bitcoin.h` because I assume they can be reused in other test files. However [serialize_tests.cpp](https://github.com/bitcoin/bitcoin/blob/v0.15.0rc3/src/test/serialize_tests.cpp#L245) also uses `BOOST_CHECK_EXCEPTION` and it defines the predicate in the test file itself.

  Instead of four `IsRejectInvalidReasonX(std::runtime_error const& e)` functions, I'd prefer something reusable like `bool IsRejectInvalidReason(String reason)(std::runtime_error const& e)`, which would be used like `BOOST_CHECK_EXCEPTION(functionThatThrows(), std::runtime_error, IsRejectInvalidReason("bad-blk-sigops")`. I couldn't figure out how to do that in C++.

Tree-SHA512: e364f19b4ac19f910f6e8d6533357f57ccddcbd9d53dcfaf923d424d2b9711446d6f36da193208b35788ca21863eadaa7becd9ad890334d334bccf8c2e63dee1
2017-12-19 13:06:01 +01:00
Wladimir J. van der Laan
c0298b06e5 contrib: Make X=Y arguments work in install_db4
Trailing X=Y arguments are supposed to be passed through unchanged
to bdb's configure. This was not the case, at least with OpenBSD
6.2's shell.

Fix this by not storing the arguments in a temporary variable but
passing "$@" through directly.
2017-12-19 12:53:45 +01:00
Wladimir J. van der Laan
b798f9bab9 contrib: New clang patch for install_db4
Replace the clang patch with a new and improved version that also fixes
the build issues with OpenBSD and FreeBSD's clang, and apply it
unconditionally.

This needs testing on OSX.
2017-12-19 12:53:34 +01:00
Wladimir J. van der Laan
1808660c8d Merge #11943: contrib: fix typo in install_db4.sh help message
ce552b6 contrib: fix typo in install_db4.sh help message (Wladimir J. van der Laan)

Pull request description:

  It installs db4, not db5.

Tree-SHA512: c503819bd46da1fc5bd386fbf7cab1702ed8a9f0532a5f9e81f8737dfc1c7883eddf54d7de78418f327e60627ed344f94b1c2819101971e0f170b2c4c0ba4efe
2017-12-19 11:33:16 +01:00
Wladimir J. van der Laan
ce552b62e4 contrib: fix typo in install_db4.sh help message
It installs db4, not db5.
2017-12-19 10:00:25 +01:00
Wladimir J. van der Laan
fee0370fd6 Merge #11178: Add iswitness parameter to decode- and fundrawtransaction RPCs
6f39ac0 Add test for decoderawtransaction bool (MeshCollider)
bbdbe80 Add iswitness parameter to decode- and fundrawtransaction RPCs (MeshCollider)

Pull request description:

  Suggested in https://github.com/bitcoin/bitcoin/pull/10481#issuecomment-325244946, this adds the option to explicitly choose whether a serialized transaction should be decoded as a witness or non-witness transaction rather than relying on the heuristic checks in #10481. The parameter defaults to relying on #10481 if not included, but it overrides that if included.

Tree-SHA512: d4846a5bb7d64dc19c516445488b00af329fc1f4181d9dfdf9f2382a086568edc98250a4ac7594e24a1bc231dfdee53c699b12c8380c355b920a67cc6770b7a9
2017-12-19 09:55:11 +01:00
Wladimir J. van der Laan
483bb67253 Merge #11936: [build] Warn that only libconsensus can be built without Boost
3eb4d45 [build] Warn that only libconsensus can be built without boost (Varunram)

Pull request description:

  This replaces the "configure: error: Could not find a version of the boost_system library!" message you receive when trying to build without Boost, with "only libbitcoinconsensus can be built without boost".

  `./configure --with-utils=no --disable-bench --disable-gui-tests --disable-tests --with-daemon=no --without-gui --disable-wallet --with-boost=no` builds libconsensus.

  `./configure --with-boost=no` should always fail with:
  ```
  checking whether to build Bitcoin Core GUI... yes (Qt5)
  configure: error: only libbitcoinconsensus can be built without boost
  ```

  For anyone wondering why the check comes after the AX_BOOST_BASE check, see this [comment](https://github.com/bitcoin/bitcoin/pull/11806#discussion_r155359394). "the AX_BOOST_BASE macro that does the --with-boost handling (along with the actual checks), and sets "want_boost". "

  Fixes #10826, replaces #11806.

  @theuni if you re-ACK we can get this merged.

Tree-SHA512: f0b8f483586465187ca6689e731b24ff77da41a06fb5c9d6390c82990719911dd54ebcccaf6d4fcea2be92986cc7fa88ed979e6cb9d77917920181e5e5188067
2017-12-19 09:18:44 +01:00
Varunram
3eb4d4595c [build] Warn that only libconsensus can be built without boost 2017-12-18 14:32:22 +08:00
Pierre Rochard
ecf9b25a03 remove unused fNoncriticalErrors variable from CWalletDB::FindWalletTx 2017-12-17 11:01:23 -05:00
MarcoFalke
62fdf9b070 Merge #11916: Typo fix
58c909d8d1 Typo fix (flack)

Pull request description:

Tree-SHA512: 8ed89086230a257f4e3261972420feef60ceb618bfe75e0392a1c0cef72c20a55259bc9aec4fa79ef27c6ac8e7aec1275ff442efa539c5951b6e7c695883ab1b
2017-12-16 13:38:22 -05:00
Sjors Provoost
f455a24da7 [net] add seed.testnet.bitcoin.sprovoost.nl to testnet DNS seeds 2017-12-16 16:48:48 +01:00
flack
58c909d8d1 Typo fix 2017-12-16 13:29:26 +01:00
Matt Corallo
818075adac Create new mutex for orphans, no cs_main in PLV::BlockConnected
This should (marginally) speed up validationinterface queue
draining by avoiding a cs_main lock in one client.
2017-12-15 15:27:45 -05:00
Wladimir J. van der Laan
df71819524 Merge #11886: Clarify getbalance meaning a tiny bit in response to questions.
c79d73d Clarify getbalance meaning a tiny bit in response to questions. (Matt Corallo)

Pull request description:

  Someone was asking why getbalance "*" was more "correct" than getbalance, which should rarely be true...spendzeroconfchange was the issue.

Tree-SHA512: 90201cad1acec5161aee469fb4c6d737a0eb90f8380ac93abf0e41e0f02d120afcc3e2e873e5096d3655bb63bbd16fe99e72452f308d72e69139c7f6bb2d745e
2017-12-15 13:53:07 +01:00
Wladimir J. van der Laan
8585bb8f05 Merge #11616: Update ban-state in case of dirty-state during periodic sweep
57ac471 Call BannedListChanged outside of cs_setBanned lock (Jonas Schnelli)
c853812 Update ban-state in case of dirty-state during periodic sweep (Jonas Schnelli)

Pull request description:

  We do currently not update the UI during periodic ban list sweeps (via dump banlist).
  Fixes #11612

Tree-SHA512: bffbdcc03c63042177bdd511b0a9187c211c2b5011178481e8ee3e43a71eef1e4cd6b72f73672babab142b644f62f8b56f0aac1d26d3f19372b1f8644fec9395
2017-12-15 10:43:34 +01:00
Jonas Schnelli
31a0135633 Add required package dependencies for depends cross compilation
[skip-ci]
2017-12-14 20:45:35 -10:00
Wladimir J. van der Laan
c66adb286a Merge #10839: Don't use pass by reference to const for cheaply-copied types (bool, char, etc.)
99ba0c3 Don't use pass by reference to const for cheaply-copied types (bool, char, etc.). (practicalswift)

Pull request description:

  Don't use pass by reference to const for cheaply-copied types (`bool`, `char`, etc.).

Tree-SHA512: ccad5e2695dff0b3d6de3e713ff3448f2981168cdac72d73bee10ad346b9919d8d4d588933369e54657a244b8b222fa0bef919bc56d983e1fa64b2004e51b225
2017-12-14 18:28:01 +01:00
Wladimir J. van der Laan
3c8f0a3b8e Merge #11842: [build] Add missing stuff to clean-local
b341143 [build] Add missing stuff to clean-local - test/functional/test_framework/__pycache__ - test/cache (Karl-Johan Alm)

Pull request description:

  After doing
  ```
  ./autogen.sh && ./configure && make
  make clean
  make distclean
  ```
  and moving `.gitignore` aside, the following files still remain after this patch:
  ```
  	Makefile.in
  	aclocal.m4
  	autom4te.cache/
  	build-aux/compile
  	build-aux/config.guess
  	build-aux/config.sub
  	build-aux/depcomp
  	build-aux/install-sh
  	build-aux/ltmain.sh
  	build-aux/m4/libtool.m4
  	build-aux/m4/ltoptions.m4
  	build-aux/m4/ltsugar.m4
  	build-aux/m4/ltversion.m4
  	build-aux/m4/lt~obsolete.m4
  	build-aux/missing
  	build-aux/test-driver
  	configure
  	doc/man/Makefile.in
  	src/Makefile.in
  	src/config/bitcoin-config.h.in
  ```

  Most are automake related so I guess it's fine if they litter around.

Tree-SHA512: 7566f56a79932cc1d6ee6ff487d121e3909db57167775e1b27209d93bcc1c14e47b0fcc9c0c272c4b9df907c1bc0664f02006a21b3b6939fa50fc2a5762729e4
2017-12-14 17:42:35 +01:00
Wladimir J. van der Laan
66479c0e61 Merge #11884: Remove unused include in hash.cpp
3f09e03 Remove unused include in hash.cpp (Karl-Johan Alm)

Pull request description:

Tree-SHA512: 543a72656460fba1c5498a0b85c49601d9b0399a4ecc49f4acf4715c258918da729df388e3be724c3161438e903ee16ad3c50626a71483aa6d85ffdbb827742d
2017-12-14 17:01:05 +01:00
Wladimir J. van der Laan
2ae58d5bfb Merge #11864: Make CWallet::FundTransaction atomic
03a5dc9 [wallet] Make CWallet::FundTransaction atomic (João Barbosa)
95d4450 [wallet] Tidy up CWallet::FundTransaction (João Barbosa)

Pull request description:

  This PR fixes a race for `setLockedCoins` when `lockUnspents` is true. For instance, it should not be possible to use the same unspent in concurrent `fundrawtransaction` calls.

  Now the `cs_main` and `cs_wallet` locks are held during `CreateTransaction` and `LockCoin`(s). Also added some style nits around the change.

Tree-SHA512: ccf383c0c5f6db775655a3e9ccd200c3bd831a83afae2b7c389564c74f7227f5bea86a4775727de2c3603b188f383f8a12d3f9d6d94f7887865c31c94ce95ef6
2017-12-14 10:38:20 +01:00
João Barbosa
03a5dc9c3c [wallet] Make CWallet::FundTransaction atomic 2017-12-14 03:18:29 +00:00
João Barbosa
95d4450a41 [wallet] Tidy up CWallet::FundTransaction 2017-12-14 03:17:58 +00:00
Matt Corallo
c79d73dc94 Clarify getbalance meaning a tiny bit in response to questions. 2017-12-13 12:18:33 -05:00
Wladimir J. van der Laan
d4991c0cbb Merge #11877: Improve createrawtransaction functional tests
88af502 test: Add createrawtransaction functional tests (João Barbosa)
27c6199 test: Add multidict to support dictionary with duplicate key (laanwj) (João Barbosa)
320669a rpc: Validate replaceable type in createrawtransaction (João Barbosa)

Pull request description:

  This was motivated by the `Invalid parameter, duplicated address` test.

  Credit to @laanwj for `multidict` implementation.

Tree-SHA512: a87139ae11004b73b467db1e8a072b75e23a0622b173a5668eed383b3575d8abc709817ddd2dfdc53f55afc90750fb61331199ad5de38c1ef6d482f2bc220f74
2017-12-13 17:34:08 +01:00
João Barbosa
88af5028ad test: Add createrawtransaction functional tests 2017-12-13 14:51:46 +00:00
João Barbosa
27c6199373 test: Add multidict to support dictionary with duplicate key (laanwj) 2017-12-13 14:51:46 +00:00
Wladimir J. van der Laan
68e021e3a3 Merge #11558: Minimal code changes to allow msvc compilation
fbf327b Minimal code changes to allow msvc compilation. (Aaron Clauson)

Pull request description:

  These changes are required to allow the Bitcoin source to build with Microsoft's C++ compiler (#11562 is also required).

  I looked around for a better place for the typedef of ssize_t which is in random.h. The best candidate looks like src/compat.h but I figured including that header in random.h is a bigger change than the typedef. Note that the same typedef is in at least two other places including the OpenSSL and Berkeley DB headers so some of the Bitcoin code already picks it up.

Tree-SHA512: aa6cc6283015e08ab074641f9abdc116c4dc58574dc90f75e7a5af4cc82946d3052370e5cbe855fb6180c00f8dc66997d3724ff0412e4b7417e51b6602154825
2017-12-13 14:05:25 +01:00
Karl-Johan Alm
3f09e03e0f Remove unused include in hash.cpp 2017-12-13 20:08:49 +09:00
MeshCollider
aac6b3f067 Update files.md for new wallets/ subdirectory 2017-12-13 23:36:43 +13:00
MeshCollider
b67342906c Cleanups for walletdir PR 2017-12-13 23:36:43 +13:00
Wladimir J. van der Laan
ba2f19504c Merge #11363: net: Split socket create/connect
3830b6e net: use CreateSocket for binds (Cory Fields)
df3bcf8 net: pass socket closing responsibility up to caller for outgoing connections (Cory Fields)
9e3b2f5 net: Move IsSelectableSocket check into socket creation (Cory Fields)
1729c29 net: split socket creation out of connection (Cory Fields)

Pull request description:

  Requirement for #11227.

  We'll need to create sockets and perform the actual connect in separate steps, so break them up.

  #11227 adds an RAII wrapper around connection attempts, as a belt-and-suspenders in case a CloseSocket is missed.

Tree-SHA512: de675bb718cc56d68893c303b8057ca062c7431eaa17ae7c4829caed119fa3f15b404d8f52aca22a6bca6e73a26fb79e898b335d090ab015bf6456cf417fc694
2017-12-13 05:42:32 +01:00
Cory Fields
3830b6e065 net: use CreateSocket for binds 2017-12-12 15:25:25 -05:00
Cory Fields
df3bcf89e4 net: pass socket closing responsibility up to caller for outgoing connections
This allows const references to be passed around, making it clear where the
socket may and may not be invalidated.
2017-12-12 15:25:25 -05:00
Cory Fields
9e3b2f576b net: Move IsSelectableSocket check into socket creation
We use select in ConnectSocketDirectly, so this check needs to happen before
that.

IsSelectableSocket will not be relevant after upcoming changes to remove select.
2017-12-12 15:25:25 -05:00
Cory Fields
1729c29ded net: split socket creation out of connection
Also, check for the correct error during socket creation
2017-12-12 15:25:25 -05:00
Wladimir J. van der Laan
ef8ba7d73a Merge #11870: wallet: Remove unnecessary mempool lock in ReacceptWalletTransactions
5b25293 wallet: Remove unnecessary mempool lock in ReacceptWalletTransactions (João Barbosa)

Pull request description:

Tree-SHA512: 13b922c6c9b5ca95a77742050f449366b80bdd7819c34e7ca09af8a4bd68085f4d0c6e0cde119c403f661499f97f2c465071a8047a7d794268e8d2dfe909e6d5
2017-12-12 20:26:55 +01:00
Wladimir J. van der Laan
22149540f9 Merge #11854: Split up key and script metadata for better type safety
9c8eca7 Split up key and script metadata for better type safety (Russell Yanofsky)

Pull request description:

  Suggested by @TheBlueMatt
  https://github.com/bitcoin/bitcoin/pull/11403#discussion_r155599383

  Combining the maps was probably never a good arrangement but is more
  problematic now in presence of WitnessV0ScriptHash and WitnessV0KeyHash types.

Tree-SHA512: 9263e9c01090fb49221e91d88a88241a9691dda3e92d86041c8e284306a64d3af5e2438249f9dcc3e6e4a5c11c1a89f975a86d55690adf95bf2636f15f99f92a
2017-12-12 19:57:43 +01:00
John Newbery
2862b562cc [tests] remove redundant univalue_tests.cpp 2017-12-12 12:45:53 -05:00
João Barbosa
320669a363 rpc: Validate replaceable type in createrawtransaction 2017-12-12 14:57:03 +00:00
Wladimir J. van der Laan
5d132e8b97 Merge #10574: Remove includes in .cpp files for things the corresponding .h file already included
a720b92 Remove includes in .cpp files for things the corresponding .h file already included (practicalswift)

Pull request description:

  Remove includes in .cpp files for things the corresponding .h file already included.

  Example case:
  * `addrdb.cpp` includes `addrdb.h` and `fs.h`
  * `addrdb.h` includes `fs.h`

  Then remove the direct inclusion of `fs.h` in `addrman.cpp` and rely on the indirect inclusion of `fs.h` via the included `addrdb.h`.

  In line with the header include guideline (see #10575).

Tree-SHA512: 8704b9de3011a4c234db336a39f7d2c139e741cf0f7aef08a5d3e05197e1e18286b863fdab25ae9638af4ff86b3d52e5cab9eed66bfa2476063aa5c79f9b0346
2017-12-12 14:56:25 +01:00
Wladimir J. van der Laan
214046f69b Merge #10279: Add a CChainState class to validation.cpp to take another step towards clarifying internal interfaces
22fddde Avoid calling GetSerializeSize on each tx in a block if !fTxIndex (Matt Corallo)
2862aca Move some additional variables into CChainState private (Matt Corallo)
fd4d80a Create initial CChainState to hold chain state information (Matt Corallo)
e104f0f Move block writing out of AcceptBlock (Matt Corallo)
50701ba Move txindex/undo data disk location stuff out of ConnectBlock (Matt Corallo)
93a34cf Make DisconnectBlock unaware of where undo data resides on disk (Matt Corallo)

Pull request description:

  CChainState should eventually, essentially, be our exposed "libconsensus", but we're probably a few releases away, so the real goal is to clarify our internal interfaces. The main split was a big step, but validation.cpp is still a somewhat ranomly-mixed bag of functions that are pure functions which validate inputs (which should probably either merge with their callers or move into another file in consensus/), read/write data from disk, manipulate our current chain state (which moves into CChainState), and do mempool transaction validation.

  Obviously this is only a small step, but some effort is made to clean up what functions the functions in CChainState call, and obviously as things are added its easy to keep clear "CChainState::* cannot call anything except via callbacks through CValidationInterface, pure functions, or disk read/write things". Right now there are some glaring violations in mempool callbacks, and general flushing logic needs cleaning up (FlushStateToDisk maybe shouldnt be called, and there should be an API towards setDirtyBlockIndex, but I'll leave that for after @sipa's current changesets land).

Tree-SHA512: 69b8ec191b36b19c9492b4dee74c8057621fb6ec98ad219e8da0b2ed5c3ad711b10b5af9ff1117e8807ccf88918eeeab573be8448baecc9a59f099c53095985b
2017-12-12 14:36:57 +01:00
Wladimir J. van der Laan
ad1820cbad Merge #11849: [tests] Assert that only one NetworkThread exists
5c8ff26 [tests] Add NetworkThread assertions (John Newbery)
34e08b3 [tests] Fix network threading in functional tests (John Newbery)
74e64f2 [tests] Use network_thread_start() in tests. (John Newbery)
5fc6e71 [tests] Add network_thread_ utility functions. (John Newbery)

Pull request description:

  Add assert that only one NetworkThread exists at any time in functional tests, and fix cases where that wasn't true.

  fixes #11776

Tree-SHA512: fe5d1c59005f94bf66e11bb23ccf274b1cd9913741b56ea11dbcd21db4cc0b53b4413c0c4c16dbcd6ac611adad5e5cc2baaa39720598ce7b6393889945d06298
2017-12-12 13:09:52 +01:00
Wladimir J. van der Laan
d48ab83f00 Merge #11831: Always return true if AppInitMain got to the end
07c4838 Always return true if AppInitMain got to the end (Matt Corallo)

Pull request description:

  This should fix a rare zapwallettxes failure on travis, but also
  avoids having init operations (re-adding wallet transactions to
  mempool) running after RPC is free'd.

  I believe this was the failure at https://travis-ci.org/bitcoin/bitcoin/jobs/311747844 (from #11605).

Tree-SHA512: f0fea8c1b9265e2eeda57043d541380a3e58e4d9388fa24628a52fd56324257fcd7df0ca02e8f77f66fadd68d951893bab0f610ed9fd0a89b2ccd6bad1efa351
2017-12-12 10:27:53 +01:00
Wladimir J. van der Laan
c0902624b0 Merge #10699: Make all script validation flags backward compatible
01013f5 Simplify tx validation tests (Pieter Wuille)
2dd6f80 Add a test that all flags are softforks (Pieter Wuille)
2851b77 Make all script verification flags softforks (Pieter Wuille)

Pull request description:

  This change makes `SCRIPT_VERIFY_UPGRADABLE_NOPS` not apply to `OP_CHECKLOCKTIMEVERIFY` and `OP_CHECKSEQUENCEVERIFY`. This is a no-op as `UPGRADABLE_NOPS` is only set for mempool transactions, and those always have `SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY` and `SCRIPT_VERIFY_CHECKSEQUENCEVERIFY` set as well. The advantage is that setting more flags now always results in a reduction in acceptable scripts (=softfork).

  This results in a nice and testable property for validation, for which a new test is added.

  This also means that the introduction of a new definition for a NOP or witness version will likely need the following procedure (example OP_NOP8 here)
  * Remove OP_NOP8 from being affected by `SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS`.
  * Add a `SCRIPT_VERIFY_DISCOURAGE_NOP8`, which only applies to `OP_NOP8`.
  * Add a `SCRIPT_VERIFY_NOP8` which implements the new consensus logic.
  * Before activation, add `SCRIPT_VERIFY_DISCOURAGE_NOP8` to the mempool flags.
  * After activation, add `SCRIPT_VERIFY_NOP8` to both the mempool and consensus flags.

Tree-SHA512: d3b4538986ecf646aac9dba13a8d89318baf9e308e258547ca3b99e7c0509747f323edac6b1fea4e87e7d3c01b71193794b41679ae4f86f6e11ed6be3fd62c72
2017-12-12 10:11:00 +01:00
Wladimir J. van der Laan
0e722e8879 Merge #11516: crypto: Add test cases covering the relevant HMAC-SHA{256,512} key length boundaries
a3f5657 Add test cases covering the relevant key length boundaries: 64 bytes +/- 1 byte for HMAC-SHA256 and 128 bytes +/- 1 byte for HMAC-SHA512 (practicalswift)

Pull request description:

  * Add test cases covering the relevant key length boundaries: 64 bytes +/- 1 byte for HMAC-SHA256 and 128 bytes +/- 1 byte for HMAC-SHA512.
  * ~~Avoid creating a one-past-the-end pointer in the case of key length 64 (HMAC-SHA256) and key length 128 (HMAC-SHA512).~~
  * ~~Avoid performing a noop memset call (zero length argument) in the case of key length 64 (HMAC-SHA256) and key length 128 (HMAC-SHA512).~~

Tree-SHA512: 48ff9ab79d41aab97b5b8f6496cc08a39955a07eb424f74ada6440d3b168b6204d3527fa677e175c47e40142f9d62c7456ae162e5a2f5b557e90fb353beef1d0
2017-12-12 09:57:12 +01:00
João Barbosa
5b25293436 wallet: Remove unnecessary mempool lock in ReacceptWalletTransactions 2017-12-11 23:43:31 +00:00
Wladimir J. van der Laan
d44535d818 Merge #11836: Rename rpcuser.py to rpcauth.py
3121d76 doc: Update release notes for share/rpcauth/rpcauth.py rename (Henrik Jonsson)
3fdb297 Rename rpcuser.py to rpcauth.py (Henrik Jonsson)

Pull request description:

  This script creates `rpcauth` entries for bitcoin.conf, not the deprecated `rpcuser` entry, so this changes the name of the script to match.

  As discussed in #11830.

Tree-SHA512: cd71c2a4043ef1381d3810b057cc83be3fac612df576b91b683ef91fdb7998c534b3b97a3313845eb867dc4bf7cc42a1250474d2261ab3f9ed2f884ca8ebd9f4
2017-12-11 17:59:01 +01:00
Wladimir J. van der Laan
37ffa16933 Merge #11583: Do not make it trivial for inbound peers to generate log entries
be9f38c Do not make it trivial for inbound peers to generate log entries (Matt Corallo)

Pull request description:

  Based on #11580 because I'm lazy.

  We should generally avoid writing to debug.log unconditionally for
  inbound peers which misbehave (the peer being about to be banned
  being an exception, since they cannot do this twice).

Tree-SHA512: 8e59c8d08d00b1527951b30f4842d010a4c2fc440503ade112baa2c1b9afd0e0d1c5c2df83dde25183a242af45089cf9b9f873b71796771232ffb6c5fc6cc0cc
2017-12-11 17:06:22 +01:00
Wladimir J. van der Laan
8ab6c0b09e Merge #11839: don't attempt mempool entry for wallet transactions on startup if alr…
6697a70 add test for unconfirmed balance between restarts (Gregory Sanders)
6ba8f30 don't attempt mempool entry for wallet transactions on startup if already in mempool (Gregory Sanders)

Pull request description:

  …eady in mempool

  Mempool loads first, wallet second. Second attempt fails, marking that transaction !fInMempool. Those funds will disappear until confirmation is reached.

Tree-SHA512: 955f0565ec1dc1ba395e0b803a98c07b7cd00c8cac5ec618ed832fed259a856fb7bbbe41310cf6a4e43c0435e09b156109d2a4467d403811dc8379d2caebeede
2017-12-11 16:21:03 +01:00
John Newbery
5c8ff26b2f [tests] Add NetworkThread assertions
Check that P2PConnections aren't created after the NetworkThread
has started and that at any time only one NetworkThread is running.
2017-12-11 09:17:21 -05:00
John Newbery
34e08b3510 [tests] Fix network threading in functional tests
assumevalid.py, example_test.py and p2p-acceptblocks.py add
p2p_connections after the NetworkThread has been started. This isn't
permitted. Fix test to restart the network thread when adding new
connections.

p2p-leaktest.py had a potential race condition if the NetworkThread
hadn't terminated by the time we tried to restart it.
2017-12-11 09:17:21 -05:00
John Newbery
74e64f24b8 [tests] Use network_thread_start() in tests. 2017-12-11 09:17:21 -05:00
John Newbery
5fc6e71d19 [tests] Add network_thread_ utility functions.
Add network thread_start(), network_thread_running() and
network_thread_join() utility functions in mininode.py and use
network_thread_running() in network thread assertions.
2017-12-11 09:16:44 -05:00
Gregory Sanders
6697a70894 add test for unconfirmed balance between restarts 2017-12-11 09:14:50 -05:00
Gregory Sanders
6ba8f30e7b don't attempt mempool entry for wallet transactions on startup if already in mempool 2017-12-11 09:08:54 -05:00
MarcoFalke
f60b4ad579 Merge #11835: Add Travis check for unused Python imports
d60b32074 Add Travis check for unused Python imports (practicalswift)
c7399e708 Remove unused Python imports (practicalswift)

Pull request description:

  Add Travis check for unused Python imports.

  ```
  $ contrib/devtools/lint-python.sh
  ./test/functional/example_test.py:18:1: F401 'test_framework.mininode.NODE_NETWORK' imported but unused
  ./test/functional/test_framework/messages.py:27:1: F401 'test_framework.util.wait_until' imported but unused
  ./test/functional/test_framework/test_framework.py:16:1: F401 'traceback' imported but unused
  ```

Tree-SHA512: 78e50fb1488abe3ebe365e766cb8d6d448cf1bd16c8691e102cb9bf7c202988bdf6e10b25ff772c62e05c72568168462e88cdc7ad98069d9eb3be727735b2d56
2017-12-10 18:33:02 -05:00
practicalswift
d60b320740 Add Travis check for unused Python imports 2017-12-10 11:49:43 +01:00
practicalswift
c7399e7082 Remove unused Python imports 2017-12-10 11:48:36 +01:00
Wladimir J. van der Laan
59d3dc85b6 Merge #11740: Implement BIP159 NODE_NETWORK_LIMITED (pruned peers) *signaling only*
de74c62 [Doc] Update bip.md, add support for BIP 159 (Jonas Schnelli)
e054d0e [QA] Add node_network_limited test (Jonas Schnelli)
bd09416 Avoid leaking the prune height through getdata (fingerprinting countermeasure) (Jonas Schnelli)
27df193 Always set NODE_NETWORK_LIMITED bit (Jonas Schnelli)
7caba38 Add NODE_NETWORK_LIMITED flags and min block amount constants (Jonas Schnelli)

Pull request description:

  Extracted from #10387.
  Does implement BIP159, but only the signalling part. No connections are made to NODE_NETWORK_LIMITED in this PR.

  The address relay and connection work (the more complicated part) can then be separated (probably in #10387).

Tree-SHA512: e3218eb4789a9320b0f42dc10f62d30c13c49bdef00443fbe653bee22933477adcfc1cf8f6a95269324560b5721203ed41f3c5e2dd8a98ec2791f6a9d8346b1a
2017-12-09 08:38:36 +01:00
dongsamb
a3ac7672ed Fix string concatenation to os.path.join and add exception case 2017-12-09 15:14:41 +09:00
Russell Yanofsky
9c8eca7704 Split up key and script metadata for better type safety
Suggested by Matt Corallo <git@bluematt.me>
https://github.com/bitcoin/bitcoin/pull/11403#discussion_r155599383

Combining the maps was probably never a good arrangement but is more
problematic now in presence of WitnessV0ScriptHash and WitnessV0KeyHash types.
2017-12-08 12:50:46 -05:00
Wladimir J. van der Laan
4ef4dfebbc Merge #11847: Make boost::multi_index comparators const
1ec0c0a Make boost::multi_index comparators const (Suhas Daftuar)

Pull request description:

  This fixes compatibility with boost 1.66.

  Fixes #11837

Tree-SHA512: 3181336fcc159aa7ee70c843d76f2a063e4a401f427c218d7f856a3548ca70eaf8eee9d20abb73be259a5656273d3a65aa748e946e09cf656de5f50e6d4eb880
2017-12-07 18:37:43 +01:00
Wladimir J. van der Laan
80f9dad0b7 Merge #11809: gui: Fix proxy setting options dialog crash
f05d349 gui: Fix proxy setting options dialog crash (Wladimir J. van der Laan)

Pull request description:

  This fixes a crash bug when opening the options dialog.

  - Check the return value of split() to avoid segmentation faults due to   out of bounds when the user manages to enter invalid proxy settings.  This is reported resonably often.

  - Move the default proxy/port to a constant instead of hardcoding magic values.

  - Factor out some common code.

  - Revert #11448 because this proves a more robust replacement, it is no longer necessary and didn't generally solve the issue.

  No attempt is made to do full sanity checking on the proxy, so it can still be rejected by the core with an InitError message.

Tree-SHA512: 72b700b7d6c4d3e3410f0c60e9e4facf93d7c6c1a1b6b23957c48b074a045970f518166952859d1ebca8620062cb70d222670a7310bbd6fe50550ec6d04417b5
2017-12-07 17:40:11 +01:00
Wladimir J. van der Laan
3e50024120 Merge #11838: qa: Add getrawtransaction in_active_chain=False test
fa4c16d qa: Add getrawtransaction in_active_chain=False test (MarcoFalke)

Pull request description:

  #10275 accidentally forgot to add a test for `in_active_chain==False`.

  This adds a test and also removes the special casing of `blockhash.IsNull()`, which makes no sense imo.

Tree-SHA512: 6c51295820b3dcd53b0b48020ab2b8c8f5864cd5061ddab2b35d35d643eb3e60ef95ff20c06c985a2e47f7080e82f27f3e00ee61c85dce627776d5ea6febee8f
2017-12-07 17:37:32 +01:00
Wladimir J. van der Laan
f05d349887 gui: Fix proxy setting options dialog crash
This fixes a crash bug when opening the options dialog.

- Check the return value of split() to avoid segmentation faults due to
  out of bounds when the user manages to enter invalid proxy settings.
  This is reported resonably often.

- Move the default proxy/port to a constant instead of hardcoding magic
  values.

- Factor out some common code.

- Revert #11448 because this proves a more robust replacement, it is no
  longer necessary and didn't generally solve the issue.

No attempt is made to do full sanity checking on the proxy, so it can
still be rejected by the core with an InitError message.
2017-12-07 17:34:16 +01:00
Anthony Towns
9b20bb40fb [tests] Check tests conform to naming convention
Extra-Author: John Newbery <john@johnnewbery.com>
2017-12-08 01:50:02 +10:00
Suhas Daftuar
1ec0c0a01c Make boost::multi_index comparators const
This fixes compatibility with boost 1.66
2017-12-07 10:06:38 -05:00
Wladimir J. van der Laan
7630a1fe9a Merge #11829: Test datadir specified in conf file exists
529b866 Test datadir in conf file exists (MeshCollider)

Pull request description:

  Provoked by Nick ODell's discovery here: https://bitcoin.stackexchange.com/questions/64189/when-running-bitcoind-i-keep-getting-boostfilesystemspace-operation-not-p/64210#64210

  If a custom data directory is specified using `-datadir` argument, its existence is checked before the conf file is loaded. But if the conf file then specifies a different non-existent `datadir`, that isn't tested, and results in esoteric errors like:

      EXCEPTION: N5boost10filesystem16filesystem_errorE
      boost::filesystem::space: Operation not permitted

  This just adds a check for the datadir existence at the end of `ReadConfigFile()`

Tree-SHA512: e488618c40aa356263f94040ae00aa4be98038abef66e8674b01032d22a5553a7fafcb8fe2d1f095865b39fb138c07b7a94415a00ef837573f92f95af065f712
2017-12-07 14:09:09 +01:00
Jonas Schnelli
de74c62583 [Doc] Update bip.md, add support for BIP 159 2017-12-06 21:13:53 -10:00
Jonas Schnelli
e054d0e532 [QA] Add node_network_limited test 2017-12-06 21:13:48 -10:00
Karl-Johan Alm
b3411435ae [build] Add missing stuff to clean-local
- test/functional/test_framework/__pycache__
- test/cache
2017-12-07 14:13:57 +09:00
Henrik Jonsson
3121d76ba1 doc: Update release notes for share/rpcauth/rpcauth.py rename 2017-12-06 18:53:12 +00:00
MarcoFalke
fa4c16d2e7 qa: Add getrawtransaction in_active_chain=False test 2017-12-06 11:00:08 -05:00
Henrik Jonsson
3fdb29778a Rename rpcuser.py to rpcauth.py
This script creates `rpcauth` entries for bitcoin.conf,
not the deprecated `rpcuser` entry, so this changes the name
of the script to match.
2017-12-06 13:11:02 +00:00
Wladimir J. van der Laan
497d0e014c Merge #10275: [rpc] Allow fetching tx directly from specified block in getrawtransaction
434526a [test] Add tests for getrawtransaction with block hash. (Karl-Johan Alm)
b167951 [rpc] Allow getrawtransaction to take optional blockhash to fetch transaction from a block directly. (Karl-Johan Alm)
a5f5a2c [rpc] Fix fVerbose parsing (remove excess if cases). (Karl-Johan Alm)

Pull request description:

  [Reviewer hint: use [?w=1](https://github.com/bitcoin/bitcoin/pull/10275/files?w=1) to avoid seeing a bunch of indentation changes.]

  Presuming a user knows the block hash of the block containing a given transaction, this PR allows them to fetch the raw transaction, even without `-txindex`. It also enables support for getting transactions that are in orphaned blocks.

  Note that supplying a block hash will override mempool and txindex support in `GetTransaction`. The rationale behind this is that a transaction may be in multiple places (orphaned blocks) and if the user supplies an explicit block hash it should be adhered to.

  ```Bash
  $ # a41.. is a tx inside an orphan block ..3c6f.. -- first try getting it normally
  $ ./bitcoin-cli getrawtransaction a41e66ee1341aa9fb9475b98cfdc1fe1261faa56c0a49254f33065ec90f7cd79 1
  error code: -5
  error message:
  No such mempool transaction. Use -txindex to enable blockchain transaction queries. Use gettransaction for wallet transactions.
  $ # now try with block hash
  $ ./bitcoin-cli getrawtransaction a41e66ee1341aa9fb9475b98cfdc1fe1261faa56c0a49254f33065ec90f7cd79 1 0000000000000000003c6fe479122bfa4a9187493937af1734e1e5cd9f198ec7
  {
    "hex": "01000000014e7e81144e42f6d65550e59b715d470c9301fd7ac189[...]90488ac00000000",
    "inMainChain": false,
    "txid": "a41e66ee1341aa9fb9475b98cfdc1fe1261faa56c0a49254f33065ec90f7cd79",
    "hash": "a41e66ee1341aa9fb9475b98cfdc1fe1261faa56c0a49254f33065ec90f7cd79",
    "size": 225,
  [...]
  }
  $ # another tx 6c66... in block 462000
  $ ./bitcoin-cli getrawtransaction 6c66b98191e9d6cc671f6817142152ebf6c5cab2ef008397b5a71ac13255a735 1 00000000000000000217f2c12922e321f6d4aa933ce88005a9a493c503054a40
  {
    "hex": "0200000004d157[...]88acaf0c0700",
    "inMainChain": true,
    "txid": "6c66b98191e9d6cc671f6817142152ebf6c5cab2ef008397b5a71ac13255a735",
    "hash": "6c66b98191e9d6cc671f6817142152ebf6c5cab2ef008397b5a71ac13255a735",
    "size": 666,
  [...]
  }
  $
  ```

Tree-SHA512: 279be3818141edd3cc194a9ee65929331920afb30297ab2d6da07293a2d7311afee5c8b00c6457477d9f1f86e86786a9b56878ea3ee19fa2629b829d042d0cda
2017-12-06 12:10:21 +01:00
Wladimir J. van der Laan
a13e443851 Merge #11830: rpcuser.py: Use 'python' not 'python2'
6d2f277 rpcuser.py: Use 'python' not 'python2' (Henrik Jonsson)

Pull request description:

  Note that `rpcuser.py` seems to handle either version when called explicitly like `python2 rpcuser.py` / `python3 rpcuser.py`. This change allows the user's `python` to be used to interpret the script.

  There's not always a `python2` installed, e.g. if only Python 3.0+ is installed as `python` / `python3`, like on Arch Linux (https://github.com/hkjn/src/blob/master/bitcoin/Dockerfile#L14) but `python` is almost always present.

  # Tested

  Script is already compatible with both major versions:
  ```
  $ python2 share/rpcuser/rpcuser.py foobar
  String to be appended to bitcoin.conf:
  rpcauth=foobar:2951d04c215769c8887c1fa4a8f712c$63c9a08e3b69f811e3837c0d5b6a355b7f798afc7094d80008f5c56a056c387f
  Your password:
  TV4I54T6W38v1sj3iF4Xsw7A-wYav-Cn8uTr8qv4xZ8=

  $ python3 share/rpcuser/rpcuser.py foobar
  String to be appended to bitcoin.conf:
  rpcauth=foobar:129afbbd214c1f85fb6b9941402506f$4c5af73a2f3fd0a1d8232c28bc5c36f9b0cffd62b7b139beb328d089b16028dc
  Your password:
  qqbeWrGHqbYL1tUDh1wHKkejzxiGvOa3SPkDbbCwBfs=

  $ python2 --version
  Python 2.7.12

  $ python3 --version
  Python 3.5.2
  ```

Tree-SHA512: b5d6de15507cfd8dbb520325cf0b67fa471fa4fe3661de4ea6841fadb6ec9ba65d0c4f545f58578168c9ce9f6e483d613cce31ab3dd28117510bf9cada3b7b91
2017-12-06 12:04:44 +01:00
Pieter Wuille
5bea05bc1d Merge #11834: [verify-commits] Fix gpg.sh's echoing for commits with '\n'
a38686cea [verify-commits] Fix gpg.sh's echoing for commits with '\n' (Matt Corallo)

Pull request description:

  Should fix master travis failures

Tree-SHA512: 1e96476e4db0474f1dc2c6973cdb1154316b7cec13d3fe46f3383cfe4f1ed30c2eee08a0d047931f20b2fa83baaacb4687f39e1cab6f264009cd0292134facdd
2017-12-05 13:32:44 -08:00
Jonas Schnelli
bd09416524 Avoid leaking the prune height through getdata (fingerprinting countermeasure) 2017-12-05 11:08:34 -10:00
Jonas Schnelli
27df193efd Always set NODE_NETWORK_LIMITED bit
The current pruning implementation does ensure to always conform to BIP159
2017-12-05 11:03:59 -10:00
Jonas Schnelli
7caba38568 Add NODE_NETWORK_LIMITED flags and min block amount constants 2017-12-05 11:03:59 -10:00
Matt Corallo
a38686cea0 [verify-commits] Fix gpg.sh's echoing for commits with '\n' 2017-12-05 15:21:23 -05:00
Matt Corallo
07c483895d Always return true if AppInitMain got to the end
This should fix a very rare travis failure in zapwallettxes, but
is also more correct, as you can currently race
ReacceptWalletTransactions with stop RPC calls to get bitcoind to
(IMO) eroneously return a non-0 exit code.
2017-12-05 10:39:44 -05:00
Henrik Jonsson
6d2f277b19 rpcuser.py: Use 'python' not 'python2' 2017-12-05 14:47:56 +00:00
MeshCollider
529b866759 Test datadir in conf file exists 2017-12-06 00:24:06 +13:00
Jonas Schnelli
91eeaa0335 Merge #11556: [Qt] Improved copy for RBF checkbox and tooltip
db0b7373f [Qt] Improved copy: RBF checkbox, tooltip and confirmation screen (Sjors Provoost)

Pull request description:

  Fixes #11344 and replaces #11428.

  **Before**:
  <img width="588" alt="before" src="https://user-images.githubusercontent.com/10217/31984211-3299e81a-b993-11e7-94e9-bf63d2fed4bd.png">

  **After**:
  <img width="578" alt="after" src="https://user-images.githubusercontent.com/10217/31984404-11f839da-b994-11e7-86ad-4c17a7d44b86.png">

Tree-SHA512: 04876b2f2eab53c8d4fd4279e8384fd4869af7e15de7648b2689092f800b6ae9c890c01c26c2f7deffe79a1d70c6440d702cbe420e44fe3ded25c5b83d44ecfa
2017-12-04 21:30:25 -10:00
Karl-Johan Alm
434526aba6 [test] Add tests for getrawtransaction with block hash. 2017-12-05 12:28:06 +09:00
Karl-Johan Alm
b167951677 [rpc] Allow getrawtransaction to take optional blockhash to fetch transaction from a block directly. 2017-12-05 11:03:24 +09:00
Pieter Wuille
c17f11f7b4 Merge #10773: Shell script cleanups
13a81b19d Add quotes to variable assignment (as requested by @TheBlueMatt) (practicalswift)
683b9d280 Fix valid path output (practicalswift)
193c2fb4c Use bash instead of POSIX sh. POSIX sh does not support arrays. (practicalswift)
80f5f28d3 Fix incorrect quoting of quotes (the previous quotes had no effect beyond unquoting) (practicalswift)
564a172df Add required space to [[ -n "$1" ]] (previously [[ -n"$1" ]]) (practicalswift)
1e44ae0e1 Add error handling: exit if cd fails (practicalswift)
b9e79ab41 Remove "\n" from echo argument. echo does not support escape sequences. (practicalswift)
f6b3382fa Remove unused variables (practicalswift)

Pull request description:

  Shell script cleanups:
  * Add required space to `[ -n ]`.
  * Avoid quote within quote.
  * Exit if `cd` fails.
  * Remove `\n` which is not handled by `echo`.
  * ~~Remove redundant `$` in arithmetic variable expression.~~
  * ~~Use `$(command)` instead of legacy form `` `command` ``.~~
  * Arrays are not supported in POSIX `sh`. Use `bash` when arrays are used.
  * ~~`[ foo -a bar ]` is not well defined, use `[ foo ] && [ bar ]` instead.~~
  * ~~`[ foo -o bar ]` is not well defined, use `[ foo ] || [ bar ]` instead.~~

Tree-SHA512: 80f6ded58bce625b15b4da30d69d2714c633e184e62b21ed67d2c58e2ebaa08b4147593324012694d02bf4f1f252844cdff2fd1cf5e817ddb07e2777db7a6390
2017-12-04 15:52:11 -08:00
Wladimir J. van der Laan
24df9af816 Merge #11781: Add -debuglogfile option
5a7c09a test: Add tests for `-debuglogfile` with subdirs (Anthony Towns)
4158734 doc: Update release notes for `-debuglogfile` (Wladimir J. van der Laan)
2323242 test: Add test for `-debuglogfile` (Wladimir J. van der Laan)
cf5f432 Add `-debuglogfile` option (Wladimir J. van der Laan)

Pull request description:

  This patch adds an option to configure the name and/or directory of the debug log file.

  The user can specify either a relative path, in which case the path is relative to the (network specific) data directory. They can also specify an absolute path to put the log anywhere else in the file system.

  Alternative to #11741 that gets rid of the concept of a "log directory" by specifying the path for the specific kind of log, the debug log. Which happens to be the only kind of log we have at this point*, but a hypothetical new kind of log (say, an audit log) would get a new option. This has more flexibility than specifying a directory which has to contain all of them.

  \* excluding `db.log` which is internally generated by the wallet database library, but that one moves along with `-walletdir`.

Tree-SHA512: 4434d0e598dc23504e5c9e67fdbaef56db4f0fd490f9f54fd503e69d4dda9b5b69c539e1794ed841e72161b7b1dc3374d2f1193dd431b057566750e56fd8f24b
2017-12-04 18:55:17 +01:00
Matt Corallo
22fdddeabb Avoid calling GetSerializeSize on each tx in a block if !fTxIndex 2017-12-04 09:39:21 -05:00
Matt Corallo
2862aca40f Move some additional variables into CChainState private 2017-12-04 09:39:20 -05:00
Matt Corallo
fd4d80a2f8 Create initial CChainState to hold chain state information 2017-12-04 09:34:46 -05:00
Matt Corallo
e104f0fb7e Move block writing out of AcceptBlock 2017-12-04 09:33:10 -05:00
Matt Corallo
50701ba5fc Move txindex/undo data disk location stuff out of ConnectBlock 2017-12-04 09:33:10 -05:00
Matt Corallo
93a34cfeec Make DisconnectBlock unaware of where undo data resides on disk 2017-12-04 09:33:10 -05:00
Wladimir J. van der Laan
00d25e90db Merge #11804: [docs] Fixed outdated link with archive.is
bf20a7d [docs] Fixed outdated link with archive.is (Tim Shimmin)

Tree-SHA512: 7d316aa4c462213578a9a1e71b06a459924ed3bb681a0469cc3719b21a871a6350fff4656696057e362561ee10dc10e933fe1328ef454ab7e133ecf05549ec1c
2017-12-01 15:28:53 +01:00
Tim Shimmin
bf20a7d640 [docs] Fixed outdated link with archive.is
The listed link is directing to an empty page, at least content-wise. I found the same page on archive.is and linked to that instead.
2017-12-01 15:26:53 +01:00
Wladimir J. van der Laan
0d7e0a3289 Merge #11337: Fix code constness in CBlockIndex::GetAncestor() overloads
b4058ed Fix code constness in CBlockIndex::GetAncestor() overloads (Dan Raviv)

Pull request description:

  Make the non-const overload of `CBlockIndex::GetAncestor()` reuse the const overload implementation instead of the other way around. This way, the constness of the const overload implementation is guaranteed. The other way around, it was possible to implement the non-const overload in a way which mutates the object, and since that implementation would be called even for const objects (due to the reuse), we would get undefined behavior.

Tree-SHA512: 545a8639bc52502ea06dbd924e8fabec6274fa69b43e3b8966a7987ce4dae6fb2498f623730fde7ed0e47478941c7f8baa2e76a12018134ff7c14c0dfa25ba3a
2017-12-01 15:19:07 +01:00
Anthony Towns
5a7c09aebf test: Add tests for -debuglogfile with subdirs 2017-12-01 11:28:23 +01:00
Wladimir J. van der Laan
4158734946 doc: Update release notes for -debuglogfile 2017-12-01 11:28:23 +01:00
Wladimir J. van der Laan
23232422e5 test: Add test for -debuglogfile 2017-12-01 11:28:13 +01:00
Wladimir J. van der Laan
cf5f432c69 Add -debuglogfile option
This patch adds an option to configure the name and/or directory of the
debug log.

The user can specify either a relative path, in which case the path
is relative to the data directory. They can also specify an absolute
path to put the log anywhere else in the file system.
2017-11-30 11:16:02 +01:00
Anthony Towns
7250b4e563 [tests] README.md nit fixes 2017-11-30 19:59:39 +10:00
Karl-Johan Alm
a5f5a2ce53 [rpc] Fix fVerbose parsing (remove excess if cases). 2017-11-29 17:52:13 +09:00
sean
3e1ee31043 [Tests] Adding unit tests for GetDifficulty in blockchain.cpp.
blockchain.cpp has low unit test coverage. This commit is intended
to start improving its code coverage to reasonable levels. One or more
follow up commits will complete the task that this commit is starting
(though the usefulness of this commit is not dependent upon later
commits).

Note that these tests were not written based upon a specification of how
GetDifficulty *should* work, but rather how it actually *does* work. As
a result, if there are any bugs in the current GetDifficulty
implementation, these unit tests serve to lock them in rather than
expose them.

-- Why has blockchain.cpp been modified if this is a unit testing change?

Since the existing GetDifficulty function relies on a global variable,
chainActive, it was not suitable for unit testing purposes. Both the
existing GetDifficulty function and the unit tests now call through to
a new, more modular version of GetDifficulty that can work on any chain,
not just chainActive.

-- Why does blockchain_tests.cpp directly include blockchain.cpp instead
of blockchain.h?

While the new GetDifficulty function's signature is arguably better than
the old one's, it still isn't great, and doesn't seem to warrant inclusion
as part of the blockchain.h API, especially since only test code is
directly using it. If a better way of exposing the new GetDifficulty
function to unit tests exists, please mention it and the commit will be
updated accordingly.

-- Why is the test fixture named blockchain_difficulty_tests rather than
blockchain_tests?

The Bitcoin Core policy for naming unit test files is to match the the
file under test ("blockchain" becomes "blockchain_tests"). While this
commit complies with that, blockchain.cpp is a massive file, such that
having all of the unit tests in one file will tend towards disorder.
Since there will be a lot more tests added to this file, the intention
is to divide up different types of tests into different test fixtures
within the same file.
2017-11-22 15:48:14 -08:00
Jonas Schnelli
57ac471a29 Call BannedListChanged outside of cs_setBanned lock 2017-11-19 12:51:44 -10:00
Sjors Provoost
db0b7373fc [Qt] Improved copy: RBF checkbox, tooltip and confirmation screen
Opt-in RBF checkbox uses less technical jargon and emphasises
the fee bump functionality (at the expense of not mentioning
other uses of RBF).

The transaction confirmation screen uses copy consistent with this.
2017-11-18 13:12:07 +01:00
Werner Lemberg
06abcbf9ba scripted-diff: Orthogonalize string quoting
Add double qoutes to string tests where arguments could (theoretically)
contain spaces.

Remove double quotes where not necessary.

-BEGIN VERIFY SCRIPT-
sed -iE -e 's/"x\(yes\|no\|auto\)\?"/x\1/g' -e 's/test \(x\$[^ ]*\)/test "\1"/g' build-aux/m4/bitcoin_qt.m4
-END VERIFY SCRIPT-
2017-11-17 22:21:53 +08:00
Werner Lemberg
e0496d3b9a bitcoin_qt.m4: Add missing dollar sign for variable. 2017-11-17 22:18:55 +08:00
Werner Lemberg
079f4b2a24 bitcoin_qt.m4: Add missing braces around variables in autoconf messages. 2017-11-17 22:18:55 +08:00
Werner Lemberg
8695315fb2 bitcoin_qt.m4: Use correct M4 quoting characters. 2017-11-17 22:18:55 +08:00
Werner Lemberg
db32a4fd6b bitcoin_qt.m4: Improve QT_VERSION tests.
Use '<QtCore/qconfig.h> and '<QtCore/qglobal.h>' for testing QT_VERSION.
This makes the tests work with both Qt4 and Qt5, even if '-fPIC' or '-fPIE'
is not used (the compiler might choke otherwise if QT_REDUCE_RELOCATIONS is
active).
2017-11-17 22:18:55 +08:00
practicalswift
a720b928c8 Remove includes in .cpp files for things the corresponding .h file already included 2017-11-16 22:26:34 +01:00
Matt Corallo
be9f38c613 Do not make it trivial for inbound peers to generate log entries
We should generally avoid writing to debug.log unconditionally for
inbound peers which misbehave (the peer being about to be banned
being an exception, since they cannot do this twice).

To avoid removing logs for outbound peers, a new log is added to
notify users when a new outbound peer is connected which mimics
the version print.
2017-11-09 18:41:18 -05:00
Aaron Clauson
fbf327b138 Minimal code changes to allow msvc compilation. 2017-11-10 07:06:49 +11:00
Jonas Schnelli
c8538123a7 Update ban-state in case of dirty-state during periodic sweep 2017-11-09 09:04:40 -10:00
Sjors Provoost
12781db058 [Tests] check specific validation error in miner tests
BOOST_CHECK_THROW merely checks that some std::runtime_error is
thrown, but not which one.

One example of how this could lead to a test passing when a developer
introduces a consensus bug: the test for the sigops limit assumes
that CreateNewBlock fails with bad-blk-sigops. However it can
also fail with bad-txns-vout-negative, e.g. if a naive developer lowers
BLOCKSUBSIDY to 1*COIN in the test.

BOOST_CHECK_EXCEPTION allows an additional predicate function. This
commit uses this for all exceptions that are checked for in
miner_tets.cpp:
* bad-blk-sigops
* bad-cb-multiple
* bad-txns-inputs-missingorspent
* block-validation-failed

An instance of the CheckRejectInvalid class (for a given validation string)
is passed to BOOST_CHECK_EXCEPTION.
2017-11-09 12:02:46 +01:00
practicalswift
6eddd43e6d Fix warnings when building with DEBUG_ADDRMAN
Warnings prior to this commit:

```
addrman.cpp:390:24: warning: comparison of integers of different signs: 'size_type' (aka 'unsigned long') and 'int' [-Wsign-compare]
    if (vRandom.size() != nTried + nNew)
        ~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~
addrman.cpp:411:52: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned long') [-Wsign-compare]
        if (info.nRandomPos < 0 || info.nRandomPos >= vRandom.size() || vRandom[info.nRandomPos] != n)
                                   ~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~
addrman.cpp:419:25: warning: comparison of integers of different signs: 'size_type' (aka 'unsigned long') and 'int' [-Wsign-compare]
    if (setTried.size() != nTried)
        ~~~~~~~~~~~~~~~ ^  ~~~~~~
addrman.cpp:421:23: warning: comparison of integers of different signs: 'size_type' (aka 'unsigned long') and 'int' [-Wsign-compare]
    if (mapNew.size() != nNew)
        ~~~~~~~~~~~~~ ^  ~~~~
4 warnings generated.
```
2017-10-30 10:29:27 +01:00
practicalswift
a3f56578ab Add test cases covering the relevant key length boundaries: 64 bytes +/- 1 byte for HMAC-SHA256 and 128 bytes +/- 1 byte for HMAC-SHA512 2017-10-18 17:27:15 +02:00
practicalswift
13a81b19df Add quotes to variable assignment (as requested by @TheBlueMatt) 2017-10-18 17:10:23 +02:00
practicalswift
683b9d280b Fix valid path output 2017-10-18 17:10:23 +02:00
practicalswift
193c2fb4c8 Use bash instead of POSIX sh. POSIX sh does not support arrays. 2017-10-18 17:10:23 +02:00
practicalswift
80f5f28d38 Fix incorrect quoting of quotes (the previous quotes had no effect beyond unquoting) 2017-10-18 17:10:23 +02:00
practicalswift
564a172dfd Add required space to [[ -n "$1" ]] (previously [[ -n"$1" ]]) 2017-10-18 17:09:36 +02:00
practicalswift
1e44ae0e19 Add error handling: exit if cd fails 2017-10-18 17:09:36 +02:00
practicalswift
b9e79ab415 Remove "\n" from echo argument. echo does not support escape sequences. 2017-10-18 17:09:36 +02:00
practicalswift
f6b3382fa3 Remove unused variables 2017-10-18 17:09:36 +02:00
Cristian Mircea Messel
149dffd3b2 [rpc] mempoolinfo should take ::minRelayTxFee into account 2017-10-11 23:39:47 +03:00
John Newbery
82b2712a66 [tests] move witness util functions to blocktools.py
This avoids importing from segwit.py to bumpfee.py
2017-10-10 09:12:01 -04:00
John Newbery
1e10854038 [tests] [docs] update README for new test naming scheme 2017-10-10 09:12:01 -04:00
Jack Grigg
63179d0283 Scope the ECDSA constant sizes to CPubKey / CKey classes 2017-10-04 14:41:40 +01:00
Dan Raviv
b4058ed9c6 Fix code constness in CBlockIndex::GetAncestor() overloads
Make the non-const overload of CBlockIndex::GetAncestor() reuse the const overload implementation instead of the other way around. This way, the constness of the const overload implementation is guaranteed. The other way around, it was possible to implement the non-const overload in a way which mutates the object, and since that implementation would be called even for const objects (due to the reuse), we would get undefined behavior.
2017-09-15 11:13:25 +03:00
Murch
3a3a9f978b Ignore old format estimation file 2017-09-07 15:58:36 -07:00
MeshCollider
6f39ac0437 Add test for decoderawtransaction bool 2017-09-06 11:24:59 +12:00
MeshCollider
bbdbe805a2 Add iswitness parameter to decode- and fundrawtransaction RPCs 2017-09-06 11:24:59 +12:00
practicalswift
99ba0c3008 Don't use pass by reference to const for cheaply-copied types (bool, char, etc.). 2017-08-14 17:46:15 +02:00
Jack Grigg
1ce9f0a952 Ensure that ECDSA constant sizes are correctly-sized 2017-07-17 11:57:23 -05:00
Jack Grigg
48abe78e51 Remove redundant = 0 initialisations 2017-07-17 11:57:23 -05:00
Jack Grigg
17fa3913ef Specify ECDSA constant sizes as constants 2017-07-17 11:57:23 -05:00
Jack Grigg
e4a10860a4 Update Debian copyright list 2017-07-17 11:55:05 -05:00
Jack Grigg
e181dbe748 Add comments 2017-07-17 11:55:05 -05:00
Jack Grigg
a3603ac6f0 Fix potential overflows in ECDSA DER parsers 2017-07-17 11:55:05 -05:00
Pieter Wuille
01013f5d2f Simplify tx validation tests 2017-06-30 16:18:57 -07:00
Pieter Wuille
2dd6f80680 Add a test that all flags are softforks 2017-06-30 16:14:13 -07:00
Pieter Wuille
2851b77312 Make all script verification flags softforks 2017-06-30 16:14:13 -07:00
Gregory Sanders
73041c3c99 RPC Docs: addmultisigaddress is intended for non-watchonly addresses 2017-06-27 08:39:16 -04:00
682 changed files with 67624 additions and 17094 deletions

6
.gitignore vendored
View File

@@ -44,6 +44,12 @@ src/qt/forms/ui_*.h
src/qt/test/moc*.cpp
src/qt/bitcoin-qt.config
src/qt/bitcoin-qt.creator
src/qt/bitcoin-qt.creator.user
src/qt/bitcoin-qt.files
src/qt/bitcoin-qt.includes
.deps
.dirstamp
.libs

View File

@@ -7,6 +7,8 @@ cache:
- depends/built
- depends/sdk-sources
- $HOME/.ccache
git:
depth: false # full clone for git subtree check, this works around issue #12388
env:
global:
- MAKEJOBS=-j3
@@ -21,7 +23,7 @@ env:
- WINEDEBUG=fixme-all
matrix:
# ARM
- HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf" DEP_OPTS="NO_QT=1" CHECK_DOC=1 GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
- HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf python3-pip" DEP_OPTS="NO_QT=1" CHECK_DOC=1 GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
# Win32
- HOST=i686-w64-mingw32 DPKG_ADD_ARCH="i386" DEP_OPTS="NO_QT=1" PACKAGES="python3 nsis g++-mingw-w64-i686 wine1.6" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-reduce-exports"
# Qt4 & system libs
@@ -43,6 +45,7 @@ install:
- if [ -n "$DPKG_ADD_ARCH" ]; then sudo dpkg --add-architecture "$DPKG_ADD_ARCH" ; fi
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get update; fi
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES; fi
- if [ "$CHECK_DOC" = 1 -a "$TRAVIS_EVENT_TYPE" = "pull_request" ]; then travis_retry pip3 install flake8 --user; fi
before_script:
- if [ "$CHECK_DOC" = 1 -a "$TRAVIS_EVENT_TYPE" = "pull_request" ]; then contrib/devtools/commit-script-check.sh $TRAVIS_COMMIT_RANGE; fi
- if [ "$CHECK_DOC" = 1 ]; then contrib/devtools/git-subtree-check.sh src/crypto/ctaes; fi
@@ -61,7 +64,6 @@ before_script:
- if [ "$NEED_XVFB" = 1 ]; then export DISPLAY=:99.0; /sbin/start-stop-daemon --start --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac; fi
script:
- if [ "$CHECK_DOC" = 1 -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then while read LINE; do travis_retry gpg --keyserver hkp://subset.pool.sks-keyservers.net --recv-keys $LINE; done < contrib/verify-commits/trusted-keys; fi
- if [ "$CHECK_DOC" = 1 -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then git fetch --unshallow; fi
- if [ "$CHECK_DOC" = 1 -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then contrib/verify-commits/verify-commits.sh; fi
- export TRAVIS_COMMIT_LOG=`git log --format=fuller -1`
- if [ -n "$USE_SHELL" ]; then export CONFIG_SHELL="$USE_SHELL"; fi
@@ -77,7 +79,7 @@ script:
- make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && make $GOAL V=1 ; false )
- export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib
- if [ "$RUN_TESTS" = "true" ]; then travis_wait 30 make $MAKEJOBS check VERBOSE=1; fi
- if [ "$TRAVIS_EVENT_TYPE" = "cron" ]; then extended="--extended --exclude pruning,dbcrash"; fi
- if [ "$TRAVIS_EVENT_TYPE" = "cron" ]; then extended="--extended --exclude feature_pruning,feature_dbcrash"; fi
- if [ "$RUN_TESTS" = "true" ]; then test/functional/test_runner.py --combinedlogslen=4000 --coverage --quiet ${extended}; fi
after_script:
- echo $TRAVIS_COMMIT_RANGE

View File

@@ -1,7 +1,7 @@
[main]
host = https://www.transifex.com
[bitcoin.qt-translation-014x]
[bitcoin.qt-translation-016x]
file_filter = src/qt/locale/bitcoin_<lang>.ts
source_file = src/qt/locale/bitcoin_en.ts
source_lang = en

View File

@@ -1,7 +1,7 @@
The MIT License (MIT)
Copyright (c) 2009-2017 The Bitcoin Core developers
Copyright (c) 2009-2017 Bitcoin Developers
Copyright (c) 2009-2018 The Bitcoin Core developers
Copyright (c) 2009-2018 Bitcoin Developers
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -46,7 +46,7 @@ DIST_CONTRIB = $(top_srcdir)/contrib/bitcoin-cli.bash-completion \
$(top_srcdir)/contrib/rpm
DIST_SHARE = \
$(top_srcdir)/share/genbuild.sh \
$(top_srcdir)/share/rpcuser
$(top_srcdir)/share/rpcauth
BIN_CHECKS=$(top_srcdir)/contrib/devtools/symbol-check.py \
$(top_srcdir)/contrib/devtools/security-check.py
@@ -279,4 +279,4 @@ DISTCHECK_CONFIGURE_FLAGS = --enable-man
clean-local:
rm -rf coverage_percent.txt test_bitcoin.coverage/ total.coverage/ test/tmp/ cache/ $(OSX_APP)
rm -rf test/functional/__pycache__
rm -rf test/functional/__pycache__ test/functional/test_framework/__pycache__ test/cache

View File

@@ -64,7 +64,7 @@ AC_DEFUN([BITCOIN_FIND_BDB48],[
if test "x$BDB_LIBS" = "x"; then
# TODO: Ideally this could find the library version and make sure it matches the headers being used
for searchlib in db_cxx-4.8 db_cxx; do
for searchlib in db_cxx-4.8 db_cxx db4_cxx; do
AC_CHECK_LIB([$searchlib],[main],[
BDB_LIBS="-l${searchlib}"
break

View File

@@ -5,8 +5,8 @@ dnl file COPYING or http://www.opensource.org/licenses/mit-license.php.
dnl Helper for cases where a qt dependency is not met.
dnl Output: If qt version is auto, set bitcoin_enable_qt to false. Else, exit.
AC_DEFUN([BITCOIN_QT_FAIL],[
if test "x$bitcoin_qt_want_version" = "xauto" && test x$bitcoin_qt_force != xyes; then
if test x$bitcoin_enable_qt != xno; then
if test "x$bitcoin_qt_want_version" = xauto && test "x$bitcoin_qt_force" != xyes; then
if test "x$bitcoin_enable_qt" != xno; then
AC_MSG_WARN([$1; bitcoin-qt frontend will not be built])
fi
bitcoin_enable_qt=no
@@ -17,7 +17,7 @@ AC_DEFUN([BITCOIN_QT_FAIL],[
])
AC_DEFUN([BITCOIN_QT_CHECK],[
if test "x$bitcoin_enable_qt" != "xno" && test x$bitcoin_qt_want_version != xno; then
if test "x$bitcoin_enable_qt" != xno && test "x$bitcoin_qt_want_version" != xno; then
true
$1
else
@@ -35,12 +35,12 @@ dnl Inputs: $4: If "yes", don't fail if $2 is not found.
dnl Output: $1 is set to the path of $2 if found. $2 are searched in order.
AC_DEFUN([BITCOIN_QT_PATH_PROGS],[
BITCOIN_QT_CHECK([
if test "x$3" != "x"; then
if test "x$3" != x; then
AC_PATH_PROGS($1,$2,,$3)
else
AC_PATH_PROGS($1,$2)
fi
if test "x$$1" = "x" && test "x$4" != "xyes"; then
if test "x$$1" = x && test "x$4" != xyes; then
BITCOIN_QT_FAIL([$1 not found])
fi
])
@@ -57,7 +57,7 @@ AC_DEFUN([BITCOIN_QT_INIT],[
[build bitcoin-qt GUI (default=auto, qt5 tried first)])],
[
bitcoin_qt_want_version=$withval
if test x$bitcoin_qt_want_version = xyes; then
if test "x$bitcoin_qt_want_version" = xyes; then
bitcoin_qt_force=yes
bitcoin_qt_want_version=auto
fi
@@ -89,11 +89,11 @@ dnl Outputs: bitcoin_enable_qt, bitcoin_enable_qt_dbus, bitcoin_enable_qt_test
AC_DEFUN([BITCOIN_QT_CONFIGURE],[
use_pkgconfig=$1
if test x$use_pkgconfig = x; then
if test "x$use_pkgconfig" = x; then
use_pkgconfig=yes
fi
if test x$use_pkgconfig = xyes; then
if test "x$use_pkgconfig" = xyes; then
BITCOIN_QT_CHECK([_BITCOIN_QT_FIND_LIBS_WITH_PKGCONFIG([$2])])
else
BITCOIN_QT_CHECK([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG])
@@ -113,39 +113,45 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
TEMP_CXXFLAGS=$CXXFLAGS
CPPFLAGS="$QT_INCLUDES $CPPFLAGS"
CXXFLAGS="$PIC_FLAGS $CXXFLAGS"
if test x$bitcoin_qt_got_major_vers = x5; then
if test "x$bitcoin_qt_got_major_vers" = x5; then
_BITCOIN_QT_IS_STATIC
if test x$bitcoin_cv_static_qt = xyes; then
if test "x$bitcoin_cv_static_qt" = xyes; then
_BITCOIN_QT_FIND_STATIC_PLUGINS
AC_DEFINE(QT_STATICPLUGIN, 1, [Define this symbol if qt plugins are static])
AC_CACHE_CHECK(for Qt < 5.4, bitcoin_cv_need_acc_widget,[AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
[[#include <QtCore>]],[[
#if QT_VERSION >= 0x050400
choke;
#endif
AC_CACHE_CHECK(for Qt < 5.4, bitcoin_cv_need_acc_widget,[
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <QtCore/qconfig.h>
#ifndef QT_VERSION
# include <QtCore/qglobal.h>
#endif
]],
[[
#if QT_VERSION >= 0x050400
choke
#endif
]])],
[bitcoin_cv_need_acc_widget=yes],
[bitcoin_cv_need_acc_widget=no])
])
if test "x$bitcoin_cv_need_acc_widget" = "xyes"; then
if test "x$bitcoin_cv_need_acc_widget" = xyes; then
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(AccessibleFactory)], [-lqtaccessiblewidgets])
fi
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QMinimalIntegrationPlugin)],[-lqminimal])
AC_DEFINE(QT_QPA_PLATFORM_MINIMAL, 1, [Define this symbol if the minimal qt platform exists])
if test x$TARGET_OS = xwindows; then
if test "x$TARGET_OS" = xwindows; then
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)],[-lqwindows])
AC_DEFINE(QT_QPA_PLATFORM_WINDOWS, 1, [Define this symbol if the qt platform is windows])
elif test x$TARGET_OS = xlinux; then
elif test "x$TARGET_OS" = xlinux; then
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)],[-lqxcb -lxcb-static])
AC_DEFINE(QT_QPA_PLATFORM_XCB, 1, [Define this symbol if the qt platform is xcb])
elif test x$TARGET_OS = xdarwin; then
elif test "x$TARGET_OS" = xdarwin; then
AX_CHECK_LINK_FLAG([[-framework IOKit]],[QT_LIBS="$QT_LIBS -framework IOKit"],[AC_MSG_ERROR(could not iokit framework)])
_BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QCocoaIntegrationPlugin)],[-lqcocoa])
AC_DEFINE(QT_QPA_PLATFORM_COCOA, 1, [Define this symbol if the qt platform is cocoa])
fi
fi
else
if test x$TARGET_OS = xwindows; then
if test "x$TARGET_OS" = xwindows; then
AC_DEFINE(QT_STATICPLUGIN, 1, [Define this symbol if qt plugins are static])
_BITCOIN_QT_CHECK_STATIC_PLUGINS([
Q_IMPORT_PLUGIN(qcncodecs)
@@ -160,24 +166,29 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
CXXFLAGS=$TEMP_CXXFLAGS
])
if test x$use_pkgconfig$qt_bin_path = xyes; then
if test x$bitcoin_qt_got_major_vers = x5; then
if test "x$use_pkgconfig$qt_bin_path" = xyes; then
if test "x$bitcoin_qt_got_major_vers" = x5; then
qt_bin_path="`$PKG_CONFIG --variable=host_bins Qt5Core 2>/dev/null`"
fi
fi
if test x$use_hardening != xno; then
if test "x$use_hardening" != xno; then
BITCOIN_QT_CHECK([
AC_MSG_CHECKING(whether -fPIE can be used with this Qt config)
TEMP_CPPFLAGS=$CPPFLAGS
TEMP_CXXFLAGS=$CXXFLAGS
CPPFLAGS="$QT_INCLUDES $CPPFLAGS"
CXXFLAGS="$PIE_FLAGS $CXXFLAGS"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <QtCore/qconfig.h>]],
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <QtCore/qconfig.h>
#ifndef QT_VERSION
# include <QtCore/qglobal.h>
#endif
]],
[[
#if defined(QT_REDUCE_RELOCATIONS)
choke;
#endif
#if defined(QT_REDUCE_RELOCATIONS)
choke
#endif
]])],
[ AC_MSG_RESULT(yes); QT_PIE_FLAGS=$PIE_FLAGS ],
[ AC_MSG_RESULT(no); QT_PIE_FLAGS=$PIC_FLAGS]
@@ -190,11 +201,16 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
AC_MSG_CHECKING(whether -fPIC is needed with this Qt config)
TEMP_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$QT_INCLUDES $CPPFLAGS"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <QtCore/qconfig.h>]],
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <QtCore/qconfig.h>
#ifndef QT_VERSION
# include <QtCore/qglobal.h>
#endif
]],
[[
#if defined(QT_REDUCE_RELOCATIONS)
choke;
#endif
#if defined(QT_REDUCE_RELOCATIONS)
choke
#endif
]])],
[ AC_MSG_RESULT(no)],
[ AC_MSG_RESULT(yes); QT_PIE_FLAGS=$PIC_FLAGS]
@@ -230,18 +246,18 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
BITCOIN_QT_CHECK([
bitcoin_enable_qt=yes
bitcoin_enable_qt_test=yes
if test x$have_qt_test = xno; then
if test "x$have_qt_test" = xno; then
bitcoin_enable_qt_test=no
fi
bitcoin_enable_qt_dbus=no
if test x$use_dbus != xno && test x$have_qt_dbus = xyes; then
if test "x$use_dbus" != xno && test "x$have_qt_dbus" = xyes; then
bitcoin_enable_qt_dbus=yes
fi
if test x$use_dbus = xyes && test x$have_qt_dbus = xno; then
AC_MSG_ERROR("libQtDBus not found. Install libQtDBus or remove --with-qtdbus.")
if test "x$use_dbus" = xyes && test "x$have_qt_dbus" = xno; then
AC_MSG_ERROR([libQtDBus not found. Install libQtDBus or remove --with-qtdbus.])
fi
if test x$LUPDATE = x; then
AC_MSG_WARN("lupdate is required to update qt translations")
if test "x$LUPDATE" = x; then
AC_MSG_WARN([lupdate is required to update qt translations])
fi
],[
bitcoin_enable_qt=no
@@ -269,13 +285,15 @@ dnl Requires: INCLUDES must be populated as necessary.
dnl Output: bitcoin_cv_qt5=yes|no
AC_DEFUN([_BITCOIN_QT_CHECK_QT5],[
AC_CACHE_CHECK(for Qt 5, bitcoin_cv_qt5,[
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
[[#include <QtCore>]],
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <QtCore/qconfig.h>
#ifndef QT_VERSION
# include <QtCore/qglobal.h>
#endif
]],
[[
#if QT_VERSION < 0x050000
choke me
#else
return 0;
choke
#endif
]])],
[bitcoin_cv_qt5=yes],
@@ -289,19 +307,21 @@ dnl Output: bitcoin_cv_static_qt=yes|no
dnl Output: Defines QT_STATICPLUGIN if plugins are static.
AC_DEFUN([_BITCOIN_QT_IS_STATIC],[
AC_CACHE_CHECK(for static Qt, bitcoin_cv_static_qt,[
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
[[#include <QtCore>]],
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <QtCore/qconfig.h>
#ifndef QT_VERSION
# include <QtCore/qglobal.h>
#endif
]],
[[
#if defined(QT_STATIC)
return 0;
#else
choke me
#if !defined(QT_STATIC)
choke
#endif
]])],
[bitcoin_cv_static_qt=yes],
[bitcoin_cv_static_qt=no])
])
if test xbitcoin_cv_static_qt = xyes; then
if test "x$bitcoin_cv_static_qt" = xyes; then
AC_DEFINE(QT_STATICPLUGIN, 1, [Define this symbol for static Qt plugins])
fi
])
@@ -330,44 +350,50 @@ dnl Inputs: bitcoin_qt_got_major_vers. 4 or 5.
dnl Inputs: qt_plugin_path. optional.
dnl Outputs: QT_LIBS is appended
AC_DEFUN([_BITCOIN_QT_FIND_STATIC_PLUGINS],[
if test x$bitcoin_qt_got_major_vers = x5; then
if test x$qt_plugin_path != x; then
if test "x$bitcoin_qt_got_major_vers" = x5; then
if test "x$qt_plugin_path" != x; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/platforms"
if test -d "$qt_plugin_path/accessible"; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/accessible"
fi
fi
if test x$use_pkgconfig = xyes; then
if test "x$use_pkgconfig" = xyes; then
: dnl
m4_ifdef([PKG_CHECK_MODULES],[
PKG_CHECK_MODULES([QTPLATFORM], [Qt5PlatformSupport], [QT_LIBS="$QTPLATFORM_LIBS $QT_LIBS"])
if test x$TARGET_OS = xlinux; then
if test "x$TARGET_OS" = xlinux; then
PKG_CHECK_MODULES([X11XCB], [x11-xcb], [QT_LIBS="$X11XCB_LIBS $QT_LIBS"])
if ${PKG_CONFIG} --exists "Qt5Core >= 5.5" 2>/dev/null; then
PKG_CHECK_MODULES([QTXCBQPA], [Qt5XcbQpa], [QT_LIBS="$QTXCBQPA_LIBS $QT_LIBS"])
fi
elif test x$TARGET_OS = xdarwin; then
elif test "x$TARGET_OS" = xdarwin; then
PKG_CHECK_MODULES([QTPRINT], [Qt5PrintSupport], [QT_LIBS="$QTPRINT_LIBS $QT_LIBS"])
fi
])
else
if test x$TARGET_OS = xwindows; then
AC_CACHE_CHECK(for Qt >= 5.6, bitcoin_cv_need_platformsupport,[AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
[[#include <QtCore>]],[[
#if QT_VERSION < 0x050600
choke;
#endif
if test "x$TARGET_OS" = xwindows; then
AC_CACHE_CHECK(for Qt >= 5.6, bitcoin_cv_need_platformsupport,[
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <QtCore/qconfig.h>
#ifndef QT_VERSION
# include <QtCore/qglobal.h>
#endif
]],
[[
#if QT_VERSION < 0x050600
choke
#endif
]])],
[bitcoin_cv_need_platformsupport=yes],
[bitcoin_cv_need_platformsupport=no])
])
if test x$bitcoin_cv_need_platformsupport = xyes; then
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}PlatformSupport],[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXPlatformSupport not found)))
if test "x$bitcoin_cv_need_platformsupport" = xyes; then
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}PlatformSupport],[main],,BITCOIN_QT_FAIL(lib${QT_LIB_PREFIX}PlatformSupport not found)))
fi
fi
fi
else
if test x$qt_plugin_path != x; then
if test "x$qt_plugin_path" != x; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/accessible"
QT_LIBS="$QT_LIBS -L$qt_plugin_path/codecs"
fi
@@ -385,10 +411,10 @@ dnl Outputs: have_qt_test and have_qt_dbus are set (if applicable) to yes|no.
AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITH_PKGCONFIG],[
m4_ifdef([PKG_CHECK_MODULES],[
auto_priority_version=$1
if test x$auto_priority_version = x; then
if test "x$auto_priority_version" = x; then
auto_priority_version=qt5
fi
if test x$bitcoin_qt_want_version = xqt5 || ( test x$bitcoin_qt_want_version = xauto && test x$auto_priority_version = xqt5 ); then
if test "x$bitcoin_qt_want_version" = xqt5 || ( test "x$bitcoin_qt_want_version" = xauto && test "x$auto_priority_version" = xqt5 ); then
QT_LIB_PREFIX=Qt5
bitcoin_qt_got_major_vers=5
else
@@ -398,28 +424,28 @@ AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITH_PKGCONFIG],[
qt5_modules="Qt5Core Qt5Gui Qt5Network Qt5Widgets"
qt4_modules="QtCore QtGui QtNetwork"
BITCOIN_QT_CHECK([
if test x$bitcoin_qt_want_version = xqt5 || ( test x$bitcoin_qt_want_version = xauto && test x$auto_priority_version = xqt5 ); then
if test "x$bitcoin_qt_want_version" = xqt5 || ( test "x$bitcoin_qt_want_version" = xauto && test "x$auto_priority_version" = xqt5 ); then
PKG_CHECK_MODULES([QT5], [$qt5_modules], [QT_INCLUDES="$QT5_CFLAGS"; QT_LIBS="$QT5_LIBS" have_qt=yes],[have_qt=no])
elif test x$bitcoin_qt_want_version = xqt4 || ( test x$bitcoin_qt_want_version = xauto && test x$auto_priority_version = xqt4 ); then
elif test "x$bitcoin_qt_want_version" = xqt4 || ( test "x$bitcoin_qt_want_version" = xauto && test "x$auto_priority_version" = xqt4 ); then
PKG_CHECK_MODULES([QT4], [$qt4_modules], [QT_INCLUDES="$QT4_CFLAGS"; QT_LIBS="$QT4_LIBS" ; have_qt=yes], [have_qt=no])
fi
dnl qt version is set to 'auto' and the preferred version wasn't found. Now try the other.
if test x$have_qt = xno && test x$bitcoin_qt_want_version = xauto; then
if test x$auto_priority_version = xqt5; then
if test "x$have_qt" = xno && test "x$bitcoin_qt_want_version" = xauto; then
if test "x$auto_priority_version" = xqt5; then
PKG_CHECK_MODULES([QT4], [$qt4_modules], [QT_INCLUDES="$QT4_CFLAGS"; QT_LIBS="$QT4_LIBS" ; have_qt=yes; QT_LIB_PREFIX=Qt; bitcoin_qt_got_major_vers=4], [have_qt=no])
else
PKG_CHECK_MODULES([QT5], [$qt5_modules], [QT_INCLUDES="$QT5_CFLAGS"; QT_LIBS="$QT5_LIBS" ; have_qt=yes; QT_LIB_PREFIX=Qt5; bitcoin_qt_got_major_vers=5], [have_qt=no])
fi
fi
if test x$have_qt != xyes; then
if test "x$have_qt" != xyes; then
have_qt=no
BITCOIN_QT_FAIL([Qt dependencies not found])
fi
])
BITCOIN_QT_CHECK([
PKG_CHECK_MODULES([QT_TEST], [${QT_LIB_PREFIX}Test], [QT_TEST_INCLUDES="$QT_TEST_CFLAGS"; have_qt_test=yes], [have_qt_test=no])
if test x$use_dbus != xno; then
if test "x$use_dbus" != xno; then
PKG_CHECK_MODULES([QT_DBUS], [${QT_LIB_PREFIX}DBus], [QT_DBUS_INCLUDES="$QT_DBUS_CFLAGS"; have_qt_dbus=yes], [have_qt_dbus=no])
fi
])
@@ -440,7 +466,7 @@ AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG],[
CXXFLAGS="$PIC_FLAGS $CXXFLAGS"
TEMP_LIBS="$LIBS"
BITCOIN_QT_CHECK([
if test x$qt_include_path != x; then
if test "x$qt_include_path" != x; then
QT_INCLUDES="-I$qt_include_path -I$qt_include_path/QtCore -I$qt_include_path/QtGui -I$qt_include_path/QtWidgets -I$qt_include_path/QtNetwork -I$qt_include_path/QtTest -I$qt_include_path/QtDBus"
CPPFLAGS="$QT_INCLUDES $CPPFLAGS"
fi
@@ -451,10 +477,10 @@ AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG],[
BITCOIN_QT_CHECK([AC_CHECK_HEADER([QLocalSocket],, BITCOIN_QT_FAIL(QtNetwork headers missing))])
BITCOIN_QT_CHECK([
if test x$bitcoin_qt_want_version = xauto; then
if test "x$bitcoin_qt_want_version" = xauto; then
_BITCOIN_QT_CHECK_QT5
fi
if test x$bitcoin_cv_qt5 = xyes || test x$bitcoin_qt_want_version = xqt5; then
if test "x$bitcoin_cv_qt5" = xyes || test "x$bitcoin_qt_want_version" = xqt5; then
QT_LIB_PREFIX=Qt5
bitcoin_qt_got_major_vers=5
else
@@ -465,11 +491,11 @@ AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG],[
BITCOIN_QT_CHECK([
LIBS=
if test x$qt_lib_path != x; then
if test "x$qt_lib_path" != x; then
LIBS="$LIBS -L$qt_lib_path"
fi
if test x$TARGET_OS = xwindows; then
if test "x$TARGET_OS" = xwindows; then
AC_CHECK_LIB([imm32], [main],, BITCOIN_QT_FAIL(libimm32 not found))
fi
])
@@ -479,26 +505,26 @@ AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG],[
BITCOIN_QT_CHECK(AC_SEARCH_LIBS([jpeg_create_decompress] ,[qtjpeg jpeg],,AC_MSG_WARN([libjpeg not found. Assuming qt has it built-in])))
BITCOIN_QT_CHECK(AC_SEARCH_LIBS([pcre16_exec], [qtpcre pcre16],,AC_MSG_WARN([libpcre16 not found. Assuming qt has it built-in])))
BITCOIN_QT_CHECK(AC_SEARCH_LIBS([hb_ot_tags_from_script] ,[qtharfbuzzng harfbuzz],,AC_MSG_WARN([libharfbuzz not found. Assuming qt has it built-in or support is disabled])))
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Core] ,[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXCore not found)))
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Gui] ,[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXGui not found)))
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Network],[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXNetwork not found)))
if test x$bitcoin_qt_got_major_vers = x5; then
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Widgets],[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXWidgets not found)))
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Core] ,[main],,BITCOIN_QT_FAIL(lib${QT_LIB_PREFIX}Core not found)))
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Gui] ,[main],,BITCOIN_QT_FAIL(lib${QT_LIB_PREFIX}Gui not found)))
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Network],[main],,BITCOIN_QT_FAIL(lib${QT_LIB_PREFIX}Network not found)))
if test "x$bitcoin_qt_got_major_vers" = x5; then
BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Widgets],[main],,BITCOIN_QT_FAIL(lib${QT_LIB_PREFIX}Widgets not found)))
fi
QT_LIBS="$LIBS"
LIBS="$TEMP_LIBS"
BITCOIN_QT_CHECK([
LIBS=
if test x$qt_lib_path != x; then
if test "x$qt_lib_path" != x; then
LIBS="-L$qt_lib_path"
fi
AC_CHECK_LIB([${QT_LIB_PREFIX}Test], [main],, have_qt_test=no)
AC_CHECK_HEADER([QTest],, have_qt_test=no)
QT_TEST_LIBS="$LIBS"
if test x$use_dbus != xno; then
if test "x$use_dbus" != xno; then
LIBS=
if test x$qt_lib_path != x; then
if test "x$qt_lib_path" != x; then
LIBS="-L$qt_lib_path"
fi
AC_CHECK_LIB([${QT_LIB_PREFIX}DBus], [main],, have_qt_dbus=no)

View File

@@ -1,11 +1,11 @@
dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 0)
define(_CLIENT_VERSION_MINOR, 15)
define(_CLIENT_VERSION_REVISION, 99)
define(_CLIENT_VERSION_MINOR, 16)
define(_CLIENT_VERSION_REVISION, 3)
define(_CLIENT_VERSION_BUILD, 0)
define(_CLIENT_VERSION_IS_RELEASE, false)
define(_COPYRIGHT_YEAR, 2017)
define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2018)
define(_COPYRIGHT_HOLDERS,[The %s developers])
define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[Bitcoin Core]])
AC_INIT([Bitcoin Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[https://github.com/bitcoin/bitcoin/issues],[bitcoin],[https://bitcoincore.org/])
@@ -164,7 +164,7 @@ AC_ARG_ENABLE([lcov],
[enable lcov testing (default is no)])],
[use_lcov=$enableval],
[use_lcov=no])
AC_ARG_ENABLE([lcov-branch-coverage],
[AS_HELP_STRING([--enable-lcov-branch-coverage],
[enable lcov testing branch coverage (default is no)])],
@@ -449,6 +449,9 @@ case $host in
*openbsd*)
LEVELDB_TARGET_FLAGS="-DOS_OPENBSD"
;;
*netbsd*)
LEVELDB_TARGET_FLAGS="-DOS_NETBSD"
;;
*)
OTHER_OS=`echo ${host_os} | awk '{print toupper($0)}'`
AC_MSG_WARN([Guessing LevelDB OS as OS_${OTHER_OS}, please check whether this is correct, if not add an entry to configure.ac.])
@@ -761,6 +764,9 @@ define(MINIMUM_REQUIRED_BOOST, 1.47.0)
dnl Check for boost libs
AX_BOOST_BASE([MINIMUM_REQUIRED_BOOST])
if test x$want_boost = xno; then
AC_MSG_ERROR([[only libbitcoinconsensus can be built without boost]])
fi
AX_BOOST_SYSTEM
AX_BOOST_FILESYSTEM
AX_BOOST_PROGRAM_OPTIONS
@@ -1310,7 +1316,7 @@ case ${OS} in
;;
esac
echo
echo
echo "Options used to compile and link:"
echo " with wallet = $enable_wallet"
echo " with gui / qt = $bitcoin_enable_qt"
@@ -1325,7 +1331,7 @@ echo " with upnp = $use_upnp"
echo " use asm = $use_asm"
echo " debug enabled = $enable_debug"
echo " werror = $enable_werror"
echo
echo
echo " target os = $TARGET_OS"
echo " build os = $BUILD_OS"
echo
@@ -1336,4 +1342,4 @@ echo " CXX = $CXX"
echo " CXXFLAGS = $CXXFLAGS"
echo " LDFLAGS = $LDFLAGS"
echo " ARFLAGS = $ARFLAGS"
echo
echo

View File

@@ -5,7 +5,7 @@ Upstream-Contact: Satoshi Nakamoto <satoshin@gmx.com>
Source: https://github.com/bitcoin/bitcoin
Files: *
Copyright: 2009-2017, Bitcoin Core Developers
Copyright: 2009-2018, Bitcoin Core Developers
License: Expat
Comment: The Bitcoin Core Developers encompasses the current developers listed on bitcoin.org,
as well as the numerous contributors to the project.
@@ -15,6 +15,14 @@ Copyright: 2010-2011, Jonas Smedegaard <dr@jones.dk>
2011, Matt Corallo <matt@bluematt.me>
License: GPL-2+
Files: src/secp256k1/build-aux/m4/ax_jni_include_dir.m4
Copyright: 2008 Don Anderson <dda@sleepycat.com>
License: GNU-All-permissive-License
Files: src/secp256k1/build-aux/m4/ax_prog_cc_for_build.m4
Copyright: 2008 Paolo Bonzini <bonzini@gnu.org>
License: GNU-All-permissive-License
Files: src/qt/res/icons/add.png
src/qt/res/icons/address-book.png
src/qt/res/icons/chevron.png
@@ -106,6 +114,12 @@ License: Expat
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
License: GNU-All-permissive-License
Copying and distribution of this file, with or without modification, are
permitted in any medium without royalty provided the copyright notice
and this notice are preserved. This file is offered as-is, without any
warranty.
License: GPL-2+
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the

View File

@@ -77,9 +77,9 @@
#rpcpassword=YourSuperGreatPasswordNumber_DO_NOT_USE_THIS_OR_YOU_WILL_GET_ROBBED_385593
#
# The second method `rpcauth` can be added to server startup argument. It is set at initialization time
# using the output from the script in share/rpcuser/rpcuser.py after providing a username:
# using the output from the script in share/rpcauth/rpcauth.py after providing a username:
#
# ./share/rpcuser/rpcuser.py alice
# ./share/rpcauth/rpcauth.py alice
# String to be appended to bitcoin.conf:
# rpcauth=alice:f7efda5c189b999524f151318c0c86$d5b51b3beffbc02b724e5d095828e0bc8b2456e9ac8757ae3211a5d9b16a22ae
# Your password:

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python
# Copyright (c) 2015-2016 The Bitcoin Core developers
# Copyright (c) 2015-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python3
# Copyright (c) 2016 The Bitcoin Core developers
# Copyright (c) 2016-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -24,8 +24,10 @@ EXCLUDE = [
'src/secp256k1/src/java/org_bitcoin_NativeSecp256k1.h',
'src/secp256k1/src/java/org_bitcoin_Secp256k1Context.c',
'src/secp256k1/src/java/org_bitcoin_Secp256k1Context.h',
# auto generated:
# univalue:
'src/univalue/test/object.cpp',
'src/univalue/lib/univalue_escapes.h',
# auto generated:
'src/qt/bitcoinstrings.cpp',
'src/chainparamsseeds.h',
# other external copyrights:

View File

@@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/bash
TOPDIR=${TOPDIR:-$(git rev-parse --show-toplevel)}
SRCDIR=${SRCDIR:-$TOPDIR/src}

10
contrib/devtools/lint-python.sh Executable file
View File

@@ -0,0 +1,10 @@
#!/bin/sh
#
# Copyright (c) 2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
#
# Check for specified flake8 warnings in python files.
# F401: module imported but unused
flake8 --ignore=B,C,E,F,I,N,W --select=F401 .

View File

@@ -16,7 +16,7 @@ if [ -z "${TRAVIS_COMMIT_RANGE}" ]; then
fi
showdiff() {
if ! git diff -U0 "${TRAVIS_COMMIT_RANGE}" -- "." ":(exclude)src/leveldb/" ":(exclude)src/secp256k1/" ":(exclude)src/univalue/" ":(exclude)doc/release-notes/"; then
if ! git diff -U0 "${TRAVIS_COMMIT_RANGE}" -- "." ":(exclude)depends/patches/" ":(exclude)src/leveldb/" ":(exclude)src/secp256k1/" ":(exclude)src/univalue/" ":(exclude)doc/release-notes/"; then
echo "Failed to get a diff"
exit 1
fi

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python
# Copyright (c) 2014-2016 The Bitcoin Core developers
# Copyright (c) 2014-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
'''

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python
# Copyright (c) 2015-2016 The Bitcoin Core developers
# Copyright (c) 2015-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
'''

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2015-2016 The Bitcoin Core developers
# Copyright (c) 2015-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
'''

View File

@@ -105,7 +105,7 @@ while :; do
fi
shift
else
echo 'Error: "--os" requires an argument containing an l (for linux), w (for windows), or x (for Mac OSX)\n'
echo 'Error: "--os" requires an argument containing an l (for linux), w (for windows), or x (for Mac OSX)'
exit 1
fi
;;
@@ -188,7 +188,7 @@ then
fi
# Get signer
if [[ -n"$1" ]]
if [[ -n "$1" ]]
then
SIGNER=$1
shift

View File

@@ -7,7 +7,7 @@ set -e
if [ -z "${1}" ]; then
echo "Usage: ./install_db4.sh <base-dir> [<extra-bdb-configure-flag> ...]"
echo
echo "Must specify a single argument: the directory in which db5 will be built."
echo "Must specify a single argument: the directory in which db4 will be built."
echo "This is probably \`pwd\` if you're at the root of the bitcoin repository."
exit 1
fi
@@ -17,7 +17,6 @@ expand_path() {
}
BDB_PREFIX="$(expand_path ${1})/db4"; shift;
BDB_EXTRA_CONFIGURE_FLAGS="${@}"
BDB_VERSION='db-4.8.30.NC'
BDB_HASH='12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef'
BDB_URL="https://download.oracle.com/berkeley-db/${BDB_VERSION}.tar.gz"
@@ -32,7 +31,11 @@ sha256_check() {
if check_exists sha256sum; then
echo "${1} ${2}" | sha256sum -c
elif check_exists sha256; then
echo "${1} ${2}" | sha256 -c
if [ "$(uname)" = "FreeBSD" ]; then
sha256 -c "${1}" "${2}"
else
echo "${1} ${2}" | sha256 -c
fi
else
echo "${1} ${2}" | shasum -a 256 -c
fi
@@ -60,21 +63,17 @@ http_get "${BDB_URL}" "${BDB_VERSION}.tar.gz" "${BDB_HASH}"
tar -xzvf ${BDB_VERSION}.tar.gz -C "$BDB_PREFIX"
cd "${BDB_PREFIX}/${BDB_VERSION}/"
# Apply a patch when building on OS X to make the build work with Xcode.
#
if [ "$(uname)" = "Darwin" ]; then
BDB_OSX_ATOMIC_PATCH_URL='https://raw.githubusercontent.com/narkoleptik/os-x-berkeleydb-patch/0007e2846ae3fc9757849f5277018f4179ad17ef/atomic.patch'
BDB_OSX_ATOMIC_PATCH_HASH='ba0e2b4f53e9cb0ec58f60a979b53b8567b4565f0384886196f1fc1ef111d151'
http_get "${BDB_OSX_ATOMIC_PATCH_URL}" atomic.patch "${BDB_OSX_ATOMIC_PATCH_HASH}"
patch -p1 < atomic.patch
fi
# Apply a patch necessary when building with clang and c++11 (see https://community.oracle.com/thread/3952592)
CLANG_CXX11_PATCH_URL='https://gist.githubusercontent.com/LnL7/5153b251fd525fe15de69b67e63a6075/raw/7778e9364679093a32dec2908656738e16b6bdcb/clang.patch'
CLANG_CXX11_PATCH_HASH='7a9a47b03fd5fb93a16ef42235fa9512db9b0829cfc3bdf90edd3ec1f44d637c'
http_get "${CLANG_CXX11_PATCH_URL}" clang.patch "${CLANG_CXX11_PATCH_HASH}"
patch -p2 < clang.patch
cd build_unix/
"${BDB_PREFIX}/${BDB_VERSION}/dist/configure" \
--enable-cxx --disable-shared --with-pic --prefix="${BDB_PREFIX}" \
"${BDB_EXTRA_CONFIGURE_FLAGS}"
--enable-cxx --disable-shared --disable-replication --with-pic --prefix="${BDB_PREFIX}" \
"${@}"
make install
@@ -84,4 +83,4 @@ echo
echo 'When compiling bitcoind, run `./configure` in the following way:'
echo
echo " export BDB_PREFIX='${BDB_PREFIX}'"
echo ' ./configure LDFLAGS="-L${BDB_PREFIX}/lib/" CPPFLAGS="-I${BDB_PREFIX}/include/" ...'
echo ' ./configure BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" BDB_CFLAGS="-I${BDB_PREFIX}/include" ...'

View File

@@ -2,7 +2,7 @@
#
# linearize-data.py: Construct a linear, no-fork version of the chain.
#
# Copyright (c) 2013-2016 The Bitcoin Core developers
# Copyright (c) 2013-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
#

View File

@@ -2,7 +2,7 @@
#
# linearize-hashes.py: List blocks in a linear, no-fork version of the chain.
#
# Copyright (c) 2013-2016 The Bitcoin Core developers
# Copyright (c) 2013-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
#

View File

@@ -40,7 +40,7 @@ grep CodeResources < "${TEMPLIST}" | while read i; do
RESOURCE="${TEMPDIR}/${OUTROOT}/${TARGETFILE}"
DIRNAME="`dirname "${RESOURCE}"`"
mkdir -p "${DIRNAME}"
echo "Adding resource for: "${TARGETFILE}""
echo "Adding resource for: \"${TARGETFILE}\""
cp "${i}" "${RESOURCE}"
done

View File

@@ -4,7 +4,9 @@ Utility to generate the seeds.txt list that is compiled into the client
(see [src/chainparamsseeds.h](/src/chainparamsseeds.h) and other utilities in [contrib/seeds](/contrib/seeds)).
Be sure to update `PATTERN_AGENT` in `makeseeds.py` to include the current version,
and remove old versions as necessary.
and remove old versions as necessary (at a minimum when GetDesireableServiceFlags
changes its default return value, as those are the services which seeds are added
to addrman with).
The seeds compiled into the release are created from sipa's DNS seed data, like this:

View File

@@ -30,7 +30,7 @@ import collections
PATTERN_IPV4 = re.compile(r"^((\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})):(\d+)$")
PATTERN_IPV6 = re.compile(r"^\[([0-9a-z:]+)\]:(\d+)$")
PATTERN_ONION = re.compile(r"^([abcdefghijklmnopqrstuvwxyz234567]{16}\.onion):(\d+)$")
PATTERN_AGENT = re.compile(r"^(/Satoshi:0.13.(1|2|99)/|/Satoshi:0.14.(0|1|2|99)/)$")
PATTERN_AGENT = re.compile(r"^(/Satoshi:0.13.(1|2|99)/|/Satoshi:0.14.(0|1|2|99)/|/Satoshi:0.15.(0|1|2|99)/)$")
def parseline(line):
sline = line.split()

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
# Copyright (c) 2012-2016 The Bitcoin Core developers
# Copyright (c) 2012-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
'''

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python
# Copyright (c) 2012-2016 The Bitcoin Core developers
# Copyright (c) 2012-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
'''

View File

@@ -4,7 +4,7 @@
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
if [ -d "$1" ]; then
cd "$1"
cd "$1" || exit 1
else
echo "Usage: $0 <datadir>" >&2
echo "Removes obsolete Bitcoin database files" >&2

View File

@@ -9,7 +9,7 @@ REVSIG=false
IFS='
'
if [ "$BITCOIN_VERIFY_COMMITS_ALLOW_SHA1" = 1 ]; then
GPG_RES="$(echo "$INPUT" | gpg --trust-model always "$@" 2>/dev/null)"
GPG_RES="$(printf '%s\n' "$INPUT" | gpg --trust-model always "$@" 2>/dev/null)"
else
# Note how we've disabled SHA1 with the --weak-digest option, disabling
# signatures - including selfsigs - that use SHA1. While you might think that
@@ -24,7 +24,7 @@ else
case "$LINE" in
"gpg (GnuPG) 1.4.1"*|"gpg (GnuPG) 2.0."*)
echo "Please upgrade to at least gpg 2.1.10 to check for weak signatures" > /dev/stderr
GPG_RES="$(echo "$INPUT" | gpg --trust-model always "$@" 2>/dev/null)"
GPG_RES="$(printf '%s\n' "$INPUT" | gpg --trust-model always "$@" 2>/dev/null)"
;;
# We assume if you're running 2.1+, you're probably running 2.1.10+
# gpg will fail otherwise
@@ -32,7 +32,7 @@ else
# gpg will fail otherwise
esac
done
[ "$GPG_RES" = "" ] && GPG_RES="$(echo "$INPUT" | gpg --trust-model always --weak-digest sha1 "$@" 2>/dev/null)"
[ "$GPG_RES" = "" ] && GPG_RES="$(printf '%s\n' "$INPUT" | gpg --trust-model always --weak-digest sha1 "$@" 2>/dev/null)"
fi
for LINE in $(echo "$GPG_RES"); do
case "$LINE" in
@@ -57,8 +57,8 @@ if ! $VALID; then
exit 1
fi
if $VALID && $REVSIG; then
echo "$INPUT" | gpg --trust-model always "$@" 2>/dev/null | grep "\[GNUPG:\] \(NEWSIG\|SIG_ID\|VALIDSIG\)"
printf '%s\n' "$INPUT" | gpg --trust-model always "$@" 2>/dev/null | grep "\[GNUPG:\] \(NEWSIG\|SIG_ID\|VALIDSIG\)"
echo "$GOODREVSIG"
else
echo "$INPUT" | gpg --trust-model always "$@" 2>/dev/null
printf '%s\n' "$INPUT" | gpg --trust-model always "$@" 2>/dev/null
fi

View File

@@ -1 +1 @@
82bcf405f6db1d55b684a1f63a4aabad376cdad7
11049f4fe62606d1b0380a9ef800ac130f0fbadf

View File

@@ -33,10 +33,11 @@ fi
NO_SHA1=1
PREV_COMMIT=""
INITIAL_COMMIT="${CURRENT_COMMIT}"
while true; do
if [ "$CURRENT_COMMIT" = $VERIFIED_ROOT ]; then
echo "There is a valid path from "$CURRENT_COMMIT" to $VERIFIED_ROOT where all commits are signed!"
echo "There is a valid path from \"$INITIAL_COMMIT\" to $VERIFIED_ROOT where all commits are signed!"
exit 0
fi

View File

@@ -33,7 +33,7 @@ if [ ! -d "$WORKINGDIR" ]; then
mkdir "$WORKINGDIR"
fi
cd "$WORKINGDIR"
cd "$WORKINGDIR" || exit 1
#test if a version number has been passed as an argument
if [ -n "$1" ]; then
@@ -87,7 +87,7 @@ WGETOUT=$(wget -N "$HOST1$BASEDIR$SIGNATUREFILENAME" 2>&1)
#and then see if wget completed successfully
if [ $? -ne 0 ]; then
echo "Error: couldn't fetch signature file. Have you specified the version number in the following format?"
echo "[$VERSIONPREFIX]<version>-[$RCVERSIONSTRING[0-9]] (example: "$VERSIONPREFIX"0.10.4-"$RCVERSIONSTRING"1)"
echo "[$VERSIONPREFIX]<version>-[$RCVERSIONSTRING[0-9]] (example: ${VERSIONPREFIX}0.10.4-${RCVERSIONSTRING}1)"
echo "wget output:"
echo "$WGETOUT"|sed 's/^/\t/g'
exit 2

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python3
# Copyright (c) 2014-2016 The Bitcoin Core developers
# Copyright (c) 2014-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python3
# Copyright (c) 2014-2016 The Bitcoin Core developers
# Copyright (c) 2014-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -21,7 +21,6 @@ BUILD_ID_SALT ?= salt
host:=$(BUILD)
ifneq ($(HOST),)
host:=$(HOST)
host_toolchain:=$(HOST)-
endif
ifneq ($(DEBUG),)

View File

@@ -28,6 +28,22 @@ Common `host-platform-triplets` for cross compilation are:
No other options are needed, the paths are automatically configured.
Install the required dependencies: Ubuntu & Debian
--------------------------------------------------
For macOS cross compilation:
sudo apt-get install curl librsvg2-bin libtiff-tools bsdmainutils cmake imagemagick libcap-dev libz-dev libbz2-dev python-setuptools
For Win32/Win64 cross compilation:
- see [build-windows.md](../doc/build-windows.md#cross-compilation-for-ubuntu-and-windows-subsystem-for-linux)
For linux (including i386, ARM) cross compilation:
sudo apt-get install curl g++-aarch64-linux-gnu g++-4.8-aarch64-linux-gnu gcc-4.8-aarch64-linux-gnu binutils-aarch64-linux-gnu g++-arm-linux-gnueabihf g++-4.8-arm-linux-gnueabihf gcc-4.8-arm-linux-gnueabihf binutils-arm-linux-gnueabihf g++-4.8-multilib gcc-4.8-multilib binutils-gold bsdmainutils
Dependency Options:
The following can be set when running make: make FOO=bar

View File

@@ -1,3 +1,7 @@
ifneq ($(host),$(build))
host_toolchain:=$(host)-
endif
default_host_CC = $(host_toolchain)gcc
default_host_CXX = $(host_toolchain)g++
default_host_AR = $(host_toolchain)ar

View File

@@ -1,6 +1,6 @@
package=expat
$(package)_version=2.2.1
$(package)_download_path=https://downloads.sourceforge.net/project/expat/expat/$($(package)_version)
$(package)_download_path=https://github.com/libexpat/libexpat/releases/download/R_2_2_1/
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
$(package)_sha256_hash=1868cadae4c82a018e361e2b2091de103cd820aaacb0d6cfa49bd2cd83978885

View File

@@ -47,6 +47,7 @@ $(package)_config_opts_linux=-fPIC -Wa,--noexecstack
$(package)_config_opts_x86_64_linux=linux-x86_64
$(package)_config_opts_i686_linux=linux-generic32
$(package)_config_opts_arm_linux=linux-generic32
$(package)_config_opts_armv7l_linux=linux-generic32
$(package)_config_opts_aarch64_linux=linux-generic64
$(package)_config_opts_mipsel_linux=linux-generic32
$(package)_config_opts_mips_linux=linux-generic32

View File

@@ -1,6 +1,6 @@
PACKAGE=qt
$(package)_version=5.7.1
$(package)_download_path=http://download.qt.io/official_releases/qt/5.7/$($(package)_version)/submodules
$(package)_download_path=https://download.qt.io/archive/qt/5.7/$($(package)_version)/submodules
$(package)_suffix=opensource-src-$($(package)_version).tar.gz
$(package)_file_name=qtbase-$($(package)_suffix)
$(package)_sha256_hash=95f83e532d23b3ddbde7973f380ecae1bac13230340557276f75f2e37984e410
@@ -8,7 +8,8 @@ $(package)_dependencies=openssl zlib
$(package)_linux_dependencies=freetype fontconfig libxcb libX11 xproto libXext
$(package)_build_subdir=qtbase
$(package)_qt_libs=corelib network widgets gui plugins testlib
$(package)_patches=mac-qmake.conf mingw-uuidof.patch pidlist_absolute.patch fix-xcb-include-order.patch fix_qt_pkgconfig.patch
$(package)_patches=mac-qmake.conf mingw-uuidof.patch pidlist_absolute.patch fix-xcb-include-order.patch
$(package)_patches+=fix_qt_pkgconfig.patch fix-cocoahelpers-macos.patch qfixed-coretext.patch
$(package)_qttranslations_file_name=qttranslations-$($(package)_suffix)
$(package)_qttranslations_sha256_hash=3a15aebd523c6d89fb97b2d3df866c94149653a26d27a00aac9b6d3020bc5a1d
@@ -140,6 +141,8 @@ define $(package)_preprocess_cmds
patch -p1 < $($(package)_patch_dir)/pidlist_absolute.patch && \
patch -p1 < $($(package)_patch_dir)/fix-xcb-include-order.patch && \
patch -p1 < $($(package)_patch_dir)/fix_qt_pkgconfig.patch && \
patch -p1 < $($(package)_patch_dir)/fix-cocoahelpers-macos.patch && \
patch -p1 < $($(package)_patch_dir)/qfixed-coretext.patch && \
echo "!host_build: QMAKE_CFLAGS += $($(package)_cflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
echo "!host_build: QMAKE_CXXFLAGS += $($(package)_cxxflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
echo "!host_build: QMAKE_LFLAGS += $($(package)_ldflags)" >> qtbase/mkspecs/common/gcc-base.conf && \

View File

@@ -29,5 +29,6 @@ define $(package)_stage_cmds
endef
define $(package)_postprocess_cmds
sed -i.old "s/ -lstdc++//" lib/pkgconfig/libzmq.pc && \
rm -rf bin share
endef

View File

@@ -0,0 +1,70 @@
From 0707260a4f8e64dfadf1df5f935e74cabb7c7d27 Mon Sep 17 00:00:00 2001
From: Jake Petroules <jake.petroules@qt.io>
Date: Sun, 1 Oct 2017 21:48:17 -0700
Subject: [PATCH] Fix build error with macOS 10.13 SDK
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit
Several of these variables/macros are no longer defined. We didn't
validate the preconditions on iOS, tvOS, or watchOS, so no
need to bother validating them on macOS either. Nor did we check the
OSStatus result on any platform anyways.
Task-number: QTBUG-63401
Change-Id: Ife64dff767cf6d3f4b839fc53ec486181c176bf3
(cherry-picked from 861544583511d4e6f7745d2339b26ff1cd44132b)
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
---
src/plugins/platforms/cocoa/qcocoahelpers.h | 2 +-
src/plugins/platforms/cocoa/qcocoahelpers.mm | 13 +------------
2 files changed, 2 insertions(+), 13 deletions(-)
diff --git old/qtbase/src/plugins/platforms/cocoa/qcocoahelpers.h new/qtbase/src/plugins/platforms/cocoa/qcocoahelpers.h
index bbb3793..74371d5 100644
--- old/qtbase/src/plugins/platforms/cocoa/qcocoahelpers.h
+++ new/qtbase/src/plugins/platforms/cocoa/qcocoahelpers.h
@@ -80,7 +80,7 @@ QColor qt_mac_toQColor(CGColorRef color);
// Creates a mutable shape, it's the caller's responsibility to release.
HIMutableShapeRef qt_mac_QRegionToHIMutableShape(const QRegion &region);
-OSStatus qt_mac_drawCGImage(CGContextRef inContext, const CGRect *inBounds, CGImageRef inImage);
+void qt_mac_drawCGImage(CGContextRef inContext, const CGRect *inBounds, CGImageRef inImage);
NSDragOperation qt_mac_mapDropAction(Qt::DropAction action);
NSDragOperation qt_mac_mapDropActions(Qt::DropActions actions);
diff --git old/qtbase/src/plugins/platforms/cocoa/qcocoahelpers.mm new/qtbase/src/plugins/platforms/cocoa/qcocoahelpers.mm
index cd73148..3f8429e 100644
--- old/qtbase/src/plugins/platforms/cocoa/qcocoahelpers.mm
+++ new/qtbase/src/plugins/platforms/cocoa/qcocoahelpers.mm
@@ -544,15 +544,8 @@ NSRect qt_mac_flipRect(const QRect &rect)
return NSMakeRect(rect.x(), flippedY, rect.width(), rect.height());
}
-OSStatus qt_mac_drawCGImage(CGContextRef inContext, const CGRect *inBounds, CGImageRef inImage)
+void qt_mac_drawCGImage(CGContextRef inContext, const CGRect *inBounds, CGImageRef inImage)
{
- // Verbatim copy if HIViewDrawCGImage (as shown on Carbon-Dev)
- OSStatus err = noErr;
-
- require_action(inContext != NULL, InvalidContext, err = paramErr);
- require_action(inBounds != NULL, InvalidBounds, err = paramErr);
- require_action(inImage != NULL, InvalidImage, err = paramErr);
-
CGContextSaveGState( inContext );
CGContextTranslateCTM (inContext, 0, inBounds->origin.y + CGRectGetMaxY(*inBounds));
CGContextScaleCTM(inContext, 1, -1);
@@ -560,10 +553,6 @@ OSStatus qt_mac_drawCGImage(CGContextRef inContext, const CGRect *inBounds, CGIm
CGContextDrawImage(inContext, *inBounds, inImage);
CGContextRestoreGState(inContext);
-InvalidImage:
-InvalidBounds:
-InvalidContext:
- return err;
}
Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum)
--
2.7.4

View File

@@ -0,0 +1,34 @@
From dbdd5f0ffbce52c8b789ed09f1aa3f1da6c02e23 Mon Sep 17 00:00:00 2001
From: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Date: Fri, 30 Mar 2018 11:58:16 -0700
Subject: [PATCH] QCoreTextFontEngine: Fix build with Xcode 9.3
Apple LLVM version 9.1.0 (clang-902.0.39.1)
Error message:
.../qfontengine_coretext.mm:827:20: error: qualified reference to
'QFixed' is a constructor name rather than a type in this context
return QFixed::QFixed(int(CTFontGetUnitsPerEm(ctfont)));
Change-Id: Iebe26b3b087a16b10664208fc8851cbddb47f043
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
---
src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git old/qtbase/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm new/qtbase/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
index 25ff69d877d..98b753eff96 100644
--- old/qtbase/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
+++ new/qtbase/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
@@ -824,7 +824,7 @@ void QCoreTextFontEngine::getUnscaledGlyph(glyph_t glyph, QPainterPath *path, gl
QFixed QCoreTextFontEngine::emSquareSize() const
{
- return QFixed::QFixed(int(CTFontGetUnitsPerEm(ctfont)));
+ return QFixed(int(CTFontGetUnitsPerEm(ctfont)));
}
QFontEngine *QCoreTextFontEngine::cloneWithSize(qreal pixelSize) const
--
2.16.3

View File

@@ -4,24 +4,49 @@ Benchmarking
Bitcoin Core has an internal benchmarking framework, with benchmarks
for cryptographic algorithms such as SHA1, SHA256, SHA512 and RIPEMD160. As well as the rolling bloom filter.
Running
---------------------
After compiling bitcoin-core, the benchmarks can be run with:
`src/bench/bench_bitcoin`
src/bench/bench_bitcoin
The output will look similar to:
```
#Benchmark,count,min,max,average
RIPEMD160,448,0.001245033173334,0.002638196945190,0.002461894814457
RollingBloom-refresh,1,0.000635000000000,0.000635000000000,0.000635000000000
RollingBloom-refresh,1,0.000108000000000,0.000108000000000,0.000108000000000
RollingBloom-refresh,1,0.000107000000000,0.000107000000000,0.000107000000000
RollingBloom-refresh,1,0.000204000000000,0.000204000000000,0.000204000000000
SHA1,640,0.000909024336207,0.001938136418660,0.001843086257577
SHA256,256,0.002209486499909,0.008500099182129,0.004300644621253
SHA512,384,0.001319904176016,0.002813005447388,0.002615700786312
Sleep100ms,10,0.205592155456543,0.210056066513062,0.104166316986084
Trig,67108864,0.000000014997003,0.000000015448112,0.000000015188842
# Benchmark, evals, iterations, total, min, max, median
Base58CheckEncode, 5, 320000, 120.772, 7.49351e-05, 7.59374e-05, 7.54759e-05
Base58Decode, 5, 800000, 122.833, 3.0467e-05, 3.11732e-05, 3.06304e-05
Base58Encode, 5, 470000, 137.094, 5.81061e-05, 5.85109e-05, 5.84462e-05
BenchLockedPool, 5, 530, 34.2023, 0.0128247, 0.0129613, 0.0129026
CCheckQueueSpeedPrevectorJob, 5, 1400, 26.1762, 0.00365048, 0.00388629, 0.00367108
CCoinsCaching, 5, 170000, 48.1074, 5.60229e-05, 5.72316e-05, 5.66214e-05
CoinSelection, 5, 650, 34.6426, 0.0105801, 0.0107699, 0.010664
DeserializeAndCheckBlockTest, 5, 160, 39.2084, 0.0483662, 0.0494199, 0.0490138
DeserializeBlockTest, 5, 130, 23.8129, 0.0357731, 0.0373763, 0.0365858
FastRandom_1bit, 5, 440000000, 38.1609, 1.72974e-08, 1.73882e-08, 1.73478e-08
FastRandom_32bit, 5, 110000000, 72.8237, 1.29992e-07, 1.37014e-07, 1.30115e-07
MempoolEviction, 5, 41000, 89.8883, 0.000432748, 0.000446857, 0.000438483
PrevectorClear, 5, 5600, 47.9229, 0.00169952, 0.0017455, 0.00170315
PrevectorDestructor, 5, 5700, 44.5498, 0.0015561, 0.00156977, 0.00156469
RIPEMD160, 5, 440, 135.988, 0.0615496, 0.062268, 0.0617779
RollingBloom, 5, 1500000, 36.5109, 4.80961e-06, 4.97463e-06, 4.85811e-06
SHA1, 5, 570, 51.808, 0.018065, 0.0182623, 0.0181865
SHA256, 5, 340, 8.31841, 0.00483231, 0.00499803, 0.00485486
SHA256_32b, 5, 4700000, 10.469, 4.43441e-07, 4.47611e-07, 4.45223e-07
SHA512, 5, 330, 33.3408, 0.02017, 0.0202554, 0.0201921
SipHash_32b, 5, 40000000, 38.7088, 1.91103e-07, 1.96998e-07, 1.93792e-07
Sleep100ms, 5, 10, 5.01062, 0.100131, 0.100368, 0.100147
Trig, 5, 12000000, 5.95494, 9.78115e-08, 1.04354e-07, 9.80682e-08
VerifyScriptBench, 5, 6300, 9.02493, 0.000285566, 0.000288433, 0.000286175
```
Help
---------------------
`-?` will print a list of options and exit:
src/bench/bench_bitcoin -?
Notes
---------------------
More benchmarks are needed for, in no particular order:
- Script Validation
- CCoinDBView caching

View File

@@ -1,4 +1,4 @@
BIPs that are implemented by Bitcoin Core (up-to-date up to **v0.13.0**):
BIPs that are implemented by Bitcoin Core (up-to-date up to **v0.16.0**):
* [`BIP 9`](https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki): The changes allowing multiple soft-forks to be deployed in parallel have been implemented since **v0.12.1** ([PR #7575](https://github.com/bitcoin/bitcoin/pull/7575))
* [`BIP 11`](https://github.com/bitcoin/bips/blob/master/bip-0011.mediawiki): Multisig outputs are standard since **v0.6.0** ([PR #669](https://github.com/bitcoin/bitcoin/pull/669)).
@@ -33,3 +33,6 @@ BIPs that are implemented by Bitcoin Core (up-to-date up to **v0.13.0**):
* [`BIP 145`](https://github.com/bitcoin/bips/blob/master/bip-0145.mediawiki): getblocktemplate updates for Segregated Witness as of **v0.13.0** ([PR 8149](https://github.com/bitcoin/bitcoin/pull/8149)).
* [`BIP 147`](https://github.com/bitcoin/bips/blob/master/bip-0147.mediawiki): NULLDUMMY softfork as of **v0.13.1** ([PR 8636](https://github.com/bitcoin/bitcoin/pull/8636) and [PR 8937](https://github.com/bitcoin/bitcoin/pull/8937)).
* [`BIP 152`](https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki): Compact block transfer and related optimizations are used as of **v0.13.0** ([PR 8068](https://github.com/bitcoin/bitcoin/pull/8068)).
* [`BIP 159`](https://github.com/bitcoin/bips/blob/master/bip-0159.mediawiki): NODE_NETWORK_LIMITED service bit [signaling only] is supported as of **v0.16.0** ([PR 11740](https://github.com/bitcoin/bitcoin/pull/11740)).
* [`BIP 173`](https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki): Bech32 addresses for native Segregated Witness outputs are supported as of **v0.16.0** ([PR 11167](https://github.com/bitcoin/bitcoin/pull/11167)).
* [`BIP 176`](https://github.com/bitcoin/bips/blob/master/bip-0176.mediawiki): Bits Denomination [QT only] is supported as of **v0.16.0** ([PR 12035](https://github.com/bitcoin/bitcoin/pull/12035)).

49
doc/build-netbsd.md Normal file
View File

@@ -0,0 +1,49 @@
NetBSD build guide
======================
(updated for NetBSD 7.0)
This guide describes how to build bitcoind and command-line utilities on NetBSD.
This guide does not contain instructions for building the GUI.
Preparation
-------------
You will need the following modules, which can be installed via pkgsrc or pkgin:
```
autoconf
automake
boost
db4
git
gmake
libevent
libtool
python27
```
Download the source code:
```
git clone https://github.com/bitcoin/bitcoin
```
See [dependencies.md](dependencies.md) for a complete overview.
### Building Bitcoin Core
**Important**: Use `gmake` (the non-GNU `make` will exit with an error).
With wallet:
```
./autogen.sh
./configure CPPFLAGS="-I/usr/pkg/include" LDFLAGS="-L/usr/pkg/lib" BOOST_CPPFLAGS="-I/usr/pkg/include" BOOST_LDFLAGS="-L/usr/pkg/lib"
gmake
```
Without wallet:
```
./autogen.sh
./configure --disable-wallet CPPFLAGS="-I/usr/pkg/include" LDFLAGS="-L/usr/pkg/lib" BOOST_CPPFLAGS="-I/usr/pkg/include" BOOST_LDFLAGS="-L/usr/pkg/lib"
gmake
```

View File

@@ -23,47 +23,31 @@ git clone https://github.com/bitcoin/bitcoin.git
See [dependencies.md](dependencies.md) for a complete overview.
GCC
-------
The default C++ compiler that comes with OpenBSD 6.2 is g++ 4.2.1. This version is old (from 2007), and is not able to compile the current version of Bitcoin Core because it has no C++11 support. We'll install a newer version of GCC:
```bash
pkg_add g++
```
This compiler will not overwrite the system compiler, it will be installed as `egcc` and `eg++` in `/usr/local/bin`.
**Important**: From OpenBSD 6.2 onwards a C++11-supporting clang compiler is
part of the base image, and while building it is necessary to make sure that this
compiler is used and not ancient g++ 4.2.1. This is done by appending
`CC=cc CXX=c++` to configuration commands. Mixing different compilers
within the same executable will result in linker errors.
### Building BerkeleyDB
BerkeleyDB is only necessary for the wallet functionality. To skip this, pass `--disable-wallet` to `./configure`.
BerkeleyDB is only necessary for the wallet functionality. To skip this, pass
`--disable-wallet` to `./configure` and skip to the next section.
It is recommended to use Berkeley DB 4.8. You cannot use the BerkeleyDB library
from ports, for the same reason as boost above (g++/libstd++ incompatibility).
If you have to build it yourself, you can use [the installation script included
in contrib/](contrib/install_db4.sh) like so
in contrib/](/contrib/install_db4.sh) like so
```shell
./contrib/install_db4.sh `pwd` CC=egcc CXX=eg++ CPP=ecpp
./contrib/install_db4.sh `pwd` CC=cc CXX=c++
```
from the root of the repository.
from the root of the repository. Then set `BDB_PREFIX` for the next section:
### Resource limits
The standard ulimit restrictions in OpenBSD are very strict:
data(kbytes) 1572864
This, unfortunately, may no longer be enough to compile some `.cpp` files in the project,
at least with GCC 4.9.4 (see issue [#6658](https://github.com/bitcoin/bitcoin/issues/6658)).
If your user is in the `staff` group the limit can be raised with:
ulimit -d 3000000
The change will only affect the current shell and processes spawned by it. To
make the change system-wide, change `datasize-cur` and `datasize-max` in
`/etc/login.conf`, and reboot.
```shell
export BDB_PREFIX="$PWD/db4"
```
### Building Bitcoin Core
@@ -79,13 +63,13 @@ Make sure `BDB_PREFIX` is set to the appropriate path from the above steps.
To configure with wallet:
```bash
./configure --with-gui=no CC=egcc CXX=eg++ CPP=ecpp \
./configure --with-gui=no CC=cc CXX=c++ \
BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" BDB_CFLAGS="-I${BDB_PREFIX}/include"
```
To configure without wallet:
```bash
./configure --disable-wallet --with-gui=no CC=egcc CXX=eg++ CPP=ecpp
./configure --disable-wallet --with-gui=no CC=cc CXX=c++
```
Build and run the tests:
@@ -94,13 +78,23 @@ gmake # use -jX here for parallelism
gmake check
```
Clang
------------------------------
Resource limits
-------------------
```bash
pkg_add llvm
If the build runs into out-of-memory errors, the instructions in this section
might help.
The standard ulimit restrictions in OpenBSD are very strict:
data(kbytes) 1572864
This, unfortunately, in some cases not enough to compile some `.cpp` files in the project,
(see issue [#6658](https://github.com/bitcoin/bitcoin/issues/6658)).
If your user is in the `staff` group the limit can be raised with:
ulimit -d 3000000
The change will only affect the current shell and processes spawned by it. To
make the change system-wide, change `datasize-cur` and `datasize-max` in
`/etc/login.conf`, and reboot.
./configure --disable-wallet --with-gui=no CC=clang CXX=clang++
gmake # use -jX here for parallelism
gmake check
```

View File

@@ -16,7 +16,7 @@ Then install [Homebrew](https://brew.sh).
Dependencies
----------------------
brew install automake berkeley-db4 libtool boost --c++11 miniupnpc openssl pkg-config protobuf python3 qt libevent
brew install automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf python3 qt libevent
See [dependencies.md](dependencies.md) for a complete overview.
@@ -29,7 +29,7 @@ NOTE: Building with Qt4 is still supported, however, could result in a broken UI
Berkeley DB
-----------
It is recommended to use Berkeley DB 4.8. If you have to build it yourself,
you can use [the installation script included in contrib/](contrib/install_db4.sh)
you can use [the installation script included in contrib/](/contrib/install_db4.sh)
like so
```shell

View File

@@ -166,7 +166,7 @@ turned off by default. See the configure options for upnp behavior desired:
Berkeley DB
-----------
It is recommended to use Berkeley DB 4.8. If you have to build it yourself,
you can use [the installation script included in contrib/](contrib/install_db4.sh)
you can use [the installation script included in contrib/](/contrib/install_db4.sh)
like so
```shell
@@ -312,17 +312,13 @@ You need to use GNU make (`gmake`) instead of `make`.
For the wallet (optional):
pkg install db5
This will give a warning "configure: WARNING: Found Berkeley DB other
than 4.8; wallets opened by this build will not be portable!", but as FreeBSD never
had a binary release, this may not matter. If backwards compatibility
with 4.8-built Bitcoin Core is needed follow the steps under "Berkeley DB" above.
./contrib/install_db4.sh `pwd`
setenv BDB_PREFIX $PWD/db4
Then build using:
./autogen.sh
./configure --with-incompatible-bdb BDB_CFLAGS="-I/usr/local/include/db5" BDB_LIBS="-L/usr/local/lib -ldb_cxx-5"
./configure BDB_CFLAGS="-I${BDB_PREFIX}/include" BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx"
gmake
*Note on debugging*: The version of `gdb` installed by default is [ancient and considered harmful](https://wiki.freebsd.org/GdbRetirement).

View File

@@ -5,7 +5,7 @@ Below are some notes on how to build Bitcoin Core for Windows.
The options known to work for building Bitcoin Core on Windows are:
* On Linux using the [Mingw-w64](https://mingw-w64.org/doku.php) cross compiler tool chain. Ubuntu Trusty 14.04 is recommended
* On Linux using the [Mingw-w64](https://mingw-w64.org/doku.php) cross compiler tool chain. Ubuntu Bionic 18.04 is required
and is the platform used to build the Bitcoin Core Windows release binaries.
* On Windows using [Windows
Subsystem for Linux (WSL)](https://msdn.microsoft.com/commandline/wsl/about) and the Mingw-w64 cross compiler tool chain.
@@ -39,10 +39,10 @@ To install WSL on Windows 10 with Fall Creators Update installed (version >= 162
* Click OK
* Restart if necessary
2. Install Ubuntu
* Open Microsoft Store and search for Ubuntu or use [this link](https://www.microsoft.com/store/productId/9NBLGGH4MSV6)
* Open Microsoft Store and search for "Ubuntu 18.04" or use [this link](https://www.microsoft.com/store/productId/9N9TNGVNDL3Q)
* Click Install
3. Complete Installation
* Open a cmd prompt and type "Ubuntu"
* Open a cmd prompt and type "Ubuntu1804"
* Create a new UNIX user account (this is a separate account from your Windows account)
After the bash shell is active, you can follow the instructions below, starting
@@ -52,11 +52,6 @@ recommended but it is possible to compile the 32-bit version.
Cross-compilation for Ubuntu and Windows Subsystem for Linux
------------------------------------------------------------
At the time of writing the Windows Subsystem for Linux installs Ubuntu Xenial 16.04. The Mingw-w64 package
for Ubuntu Xenial does not produce working executables for some of the Bitcoin Core applications.
It is possible to build on Ubuntu Xenial by installing the cross compiler packages from Ubuntu Zesty, see the steps below.
Building on Ubuntu Zesty 17.04 up to 17.10 has been verified to work.
The steps below can be performed on Ubuntu (including in a VM) or WSL. The depends system
will also work on other Linux distributions, however the commands for
installing the toolchain will be different.
@@ -73,26 +68,11 @@ See also: [dependencies.md](dependencies.md).
## Building for 64-bit Windows
The first step is to install the mingw-w64 cross-compilation tool chain. Due to different Ubuntu
packages for each distribution and problems with the Xenial packages the steps for each are different.
Common steps to install mingw32 cross compiler tool chain:
The first step is to install the mingw-w64 cross-compilation tool chain.
sudo apt install g++-mingw-w64-x86-64
Ubuntu Trusty 14.04:
No further steps required
Ubuntu Xenial 16.04 and Windows Subsystem for Linux <sup>[1](#footnote1),[2](#footnote2)</sup>:
sudo apt install software-properties-common
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu zesty universe"
sudo apt update
sudo apt upgrade
sudo update-alternatives --config x86_64-w64-mingw32-g++ # Set the default mingw32 g++ compiler option to posix.
Ubuntu Zesty 17.04 <sup>[2](#footnote2)</sup>:
Ubuntu Bionic 18.04 <sup>[1](#footnote1)</sup>:
sudo update-alternatives --config x86_64-w64-mingw32-g++ # Set the default mingw32 g++ compiler option to posix.
@@ -124,7 +104,7 @@ To build executables for Windows 32-bit, install the following dependencies:
sudo apt install g++-mingw-w64-i686 mingw-w64-i686-dev
For Ubuntu Xenial 16.04, Ubuntu Zesty 17.04 and Windows Subsystem for Linux <sup>[2](#footnote2)</sup>:
For Ubuntu Bionic 18.04 and Windows Subsystem for Linux <sup>[1](#footnote1)</sup>:
sudo update-alternatives --config i686-w64-mingw32-g++ # Set the default mingw32 g++ compiler option to posix.
@@ -165,14 +145,7 @@ way. This will install to `c:\workspace\bitcoin`, for example:
Footnotes
---------
<a name="footnote1">1</a>: There is currently a bug in the 64 bit Mingw-w64 cross compiler packaged for WSL/Ubuntu Xenial 16.04 that
causes two of the bitcoin executables to crash shortly after start up. The bug is related to the
-fstack-protector-all g++ compiler flag which is used to mitigate buffer overflows.
Installing the Mingw-w64 packages from the Ubuntu 17 distribution solves the issue, however, this is not
an officially supported approach and it's only recommended if you are prepared to reinstall WSL/Ubuntu should
something break.
<a name="footnote2">2</a>: Starting from Ubuntu Xenial 16.04 both the 32 and 64 bit Mingw-w64 packages install two different
<a name="footnote1">1</a>: Starting from Ubuntu Xenial 16.04 both the 32 and 64 bit Mingw-w64 packages install two different
compiler options to allow a choice between either posix or win32 threads. The default option is win32 threads which is the more
efficient since it will result in binary code that links directly with the Windows kernel32.lib. Unfortunately, the headers
required to support win32 threads conflict with some of the classes in the C++11 standard library in particular std::mutex.

View File

@@ -493,7 +493,7 @@ namespace {
- *Rationale*: Avoids confusion about the namespace context
- Prefer `#include <primitives/transaction.h>` bracket syntax instead of
`#include "primitives/transactions.h"`` quote syntax when possible.
`#include "primitives/transactions.h"` quote syntax when possible.
- *Rationale*: Bracket syntax is less ambiguous because the preprocessor
searches a fixed list of include directories without taking location of the

View File

@@ -6,13 +6,16 @@
* blocks/rev000??.dat; block undo data (custom); since 0.8.0 (format changed since pre-0.8)
* blocks/index/*; block index (LevelDB); since 0.8.0
* chainstate/*; block chain state database (LevelDB); since 0.8.0
* database/*: BDB database environment; only used for wallet since 0.8.0
* db.log: wallet database log file
* database/*: BDB database environment; only used for wallet since 0.8.0; moved to wallets/ directory on new installs since 0.16.0
* db.log: wallet database log file; moved to wallets/ directory on new installs since 0.16.0
* debug.log: contains debug information and general logging generated by bitcoind or bitcoin-qt
* fee_estimates.dat: stores statistics used to estimate minimum transaction fees and priorities required for confirmation; since 0.10.0
* mempool.dat: dump of the mempool's transactions; since 0.14.0.
* peers.dat: peer IP address database (custom format); since 0.7.0
* wallet.dat: personal wallet (BDB) with keys and transactions
* wallet.dat: personal wallet (BDB) with keys and transactions; moved to wallets/ directory on new installs since 0.16.0
* wallets/database/*: BDB database environment; used for wallets since 0.16.0
* wallets/db.log: wallet database log file; since 0.16.0
* wallets/wallet.dat: personal wallet (BDB) with keys and transactions; since 0.16.0
* .cookie: session RPC authentication cookie (written at start when cookie authentication is used, deleted on shutdown): since 0.12.0
* onion_private_key: cached Tor hidden service private key for `-listenonion`: since 0.12.0
* guisettings.ini.bak: backup of former GUI settings after `-resetguisettings` is used

View File

@@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.4.
.TH BITCOIN-CLI "1" "September 2017" "bitcoin-cli v0.15.99.0" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
.TH BITCOIN-CLI "1" "September 2018" "bitcoin-cli v0.16.3.0" "User Commands"
.SH NAME
bitcoin-cli \- manual page for bitcoin-cli v0.15.99.0
bitcoin-cli \- manual page for bitcoin-cli v0.16.3.0
.SH DESCRIPTION
Bitcoin Core RPC client version v0.15.99.0
Bitcoin Core RPC client version v0.16.3.0
.SS "Usage:"
.TP
bitcoin\-cli [options] <command> [params]
@@ -25,6 +25,14 @@ Specify configuration file (default: bitcoin.conf)
\fB\-datadir=\fR<dir>
.IP
Specify data directory
.HP
\fB\-getinfo\fR
.IP
Get general information from the remote server. Note that unlike
server\-side RPC calls, the results of \fB\-getinfo\fR is the result of
multiple non\-atomic requests. Some entries in the result may
represent results from different states (e.g. wallet balance may
be as of a different block from the chain state reported)
.PP
Chain selection options:
.HP
@@ -88,7 +96,7 @@ Send RPC for non\-default wallet on RPC server (argument is wallet
filename in bitcoind directory, required if bitcoind/\-Qt runs
with multiple wallets)
.SH COPYRIGHT
Copyright (C) 2009-2017 The Bitcoin Core developers
Copyright (C) 2009-2018 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org> for further information about the software.

View File

@@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.4.
.TH BITCOIN-QT "1" "September 2017" "bitcoin-qt v0.15.99.0" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
.TH BITCOIN-QT "1" "September 2018" "bitcoin-qt v0.16.3.0" "User Commands"
.SH NAME
bitcoin-qt \- manual page for bitcoin-qt v0.15.99.0
bitcoin-qt \- manual page for bitcoin-qt v0.16.3.0
.SH DESCRIPTION
Bitcoin Core version v0.15.99.0 (64\-bit)
Bitcoin Core version v0.16.3.0 (64\-bit)
Usage:
.IP
bitcoin\-qt [command\-line options]
@@ -32,7 +32,7 @@ block hash)
If this block is in the chain assume that it and its ancestors are valid
and potentially skip their script verification (0 to verify all,
default:
0000000000000000003b9ce759c2a087d52abc4266f8f4ebd6d768b89defa50a,
0000000000000000005214481d2d96f898e3d5416e43359c145944a909d242e0,
testnet:
0000000002e9e7b00e1f6dc5123a04aad68dd0f0968d8c7aa45f6640795c37b1)
.HP
@@ -52,6 +52,11 @@ Set database cache size in megabytes (4 to 16384, default: 450)
.IP
Imports blocks from external blk000??.dat file on startup
.HP
\fB\-debuglogfile=\fR<file>
.IP
Specify location of debug log file: this can be an absolute path or a
path relative to the data directory (default: debug.log)
.HP
\fB\-maxorphantx=\fR<n>
.IP
Keep at most <n> unconnectable transactions in memory (default: 100)
@@ -76,7 +81,7 @@ Extra transactions to keep in memory for compact block reconstructions
.HP
\fB\-par=\fR<n>
.IP
Set the number of script verification threads (\fB\-2\fR to 16, 0 = auto, <0 =
Set the number of script verification threads (\fB\-6\fR to 16, 0 = auto, <0 =
leave that many cores free, default: 0)
.HP
\fB\-pid=\fR<file>
@@ -92,7 +97,7 @@ blocks if a target size in MiB is provided. This mode is
incompatible with \fB\-txindex\fR and \fB\-rescan\fR. Warning: Reverting this
setting requires re\-downloading the entire blockchain. (default:
0 = disable pruning blocks, 1 = allow manual pruning via RPC,
>550 = automatically prune block files to stay under the
>=550 = automatically prune block files to stay under the
specified target size in MiB)
.HP
\fB\-reindex\-chainstate\fR
@@ -117,7 +122,8 @@ Connection options:
.HP
\fB\-addnode=\fR<ip>
.IP
Add a node to connect to and attempt to keep the connection open
Add a node to connect to and attempt to keep the connection open (see
the `addnode` RPC command help for more info)
.HP
\fB\-banscore=\fR<n>
.IP
@@ -136,7 +142,8 @@ for IPv6
\fB\-connect=\fR<ip>
.IP
Connect only to the specified node(s); \fB\-connect\fR=\fI\,0\/\fR disables automatic
connections
connections (the rules for this peer are the same as for
\fB\-addnode\fR)
.HP
\fB\-discover\fR
.IP
@@ -258,6 +265,18 @@ Tries to keep outbound traffic under the given target (in MiB per 24h),
.PP
Wallet options:
.HP
\fB\-addresstype\fR
.IP
What type of addresses to use ("legacy", "p2sh\-segwit", or "bech32",
default: "p2sh\-segwit")
.HP
\fB\-changetype\fR
.IP
What type of change to use ("legacy", "p2sh\-segwit", or "bech32").
Default is same as \fB\-addresstype\fR, except when
\fB\-addresstype\fR=\fI\,p2sh\-segwit\/\fR a native segwit output is used when
sending to a native segwit address)
.HP
\fB\-disablewallet\fR
.IP
Do not load the wallet and disable wallet RPC calls
@@ -307,7 +326,7 @@ confirmation on average within n blocks (default: 6)
.HP
\fB\-walletrbf\fR
.IP
Send transactions with full\-RBF opt\-in enabled (default: 0)
Send transactions with full\-RBF opt\-in enabled (RPC only, default: 0)
.HP
\fB\-upgradewallet\fR
.IP
@@ -321,6 +340,11 @@ Specify wallet file (within data directory) (default: wallet.dat)
.IP
Make the wallet broadcast transactions (default: 1)
.HP
\fB\-walletdir=\fR<dir>
.IP
Specify directory to hold wallets (default: <datadir>/wallets if it
exists, otherwise <datadir>)
.HP
\fB\-walletnotify=\fR<cmd>
.IP
Execute command when a wallet transaction changes (%s in cmd is replaced
@@ -445,11 +469,6 @@ Block creation options:
.IP
Set maximum BIP141 block weight (default: 3996000)
.HP
\fB\-blockmaxsize=\fR<n>
.IP
Set maximum BIP141 block weight to this * 4. Deprecated, use
blockmaxweight
.HP
\fB\-blockmintxfee=\fR<amt>
.IP
Set lowest fee rate (in BTC/kB) for transactions to be included in block
@@ -542,7 +561,7 @@ Show splash screen on startup (default: 1)
.IP
Reset all settings changed in the GUI
.SH COPYRIGHT
Copyright (C) 2009-2017 The Bitcoin Core developers
Copyright (C) 2009-2018 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org> for further information about the software.

View File

@@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.4.
.TH BITCOIN-TX "1" "September 2017" "bitcoin-tx v0.15.99.0" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
.TH BITCOIN-TX "1" "September 2018" "bitcoin-tx v0.16.3.0" "User Commands"
.SH NAME
bitcoin-tx \- manual page for bitcoin-tx v0.15.99.0
bitcoin-tx \- manual page for bitcoin-tx v0.16.3.0
.SH DESCRIPTION
Bitcoin Core bitcoin\-tx utility version v0.15.99.0
Bitcoin Core bitcoin\-tx utility version v0.16.3.0
.SS "Usage:"
.TP
bitcoin\-tx [options] <hex\-tx> [commands]
@@ -112,7 +112,7 @@ set=NAME:JSON\-STRING
.IP
Set register NAME to given JSON\-STRING
.SH COPYRIGHT
Copyright (C) 2009-2017 The Bitcoin Core developers
Copyright (C) 2009-2018 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org> for further information about the software.

View File

@@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.4.
.TH BITCOIND "1" "September 2017" "bitcoind v0.15.99.0" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
.TH BITCOIND "1" "September 2018" "bitcoind v0.16.3.0" "User Commands"
.SH NAME
bitcoind \- manual page for bitcoind v0.15.99.0
bitcoind \- manual page for bitcoind v0.16.3.0
.SH DESCRIPTION
Bitcoin Core Daemon version v0.15.99.0
Bitcoin Core Daemon version v0.16.3.0
.SS "Usage:"
.TP
bitcoind [options]
@@ -33,7 +33,7 @@ block hash)
If this block is in the chain assume that it and its ancestors are valid
and potentially skip their script verification (0 to verify all,
default:
0000000000000000003b9ce759c2a087d52abc4266f8f4ebd6d768b89defa50a,
0000000000000000005214481d2d96f898e3d5416e43359c145944a909d242e0,
testnet:
0000000002e9e7b00e1f6dc5123a04aad68dd0f0968d8c7aa45f6640795c37b1)
.HP
@@ -57,6 +57,11 @@ Set database cache size in megabytes (4 to 16384, default: 450)
.IP
Imports blocks from external blk000??.dat file on startup
.HP
\fB\-debuglogfile=\fR<file>
.IP
Specify location of debug log file: this can be an absolute path or a
path relative to the data directory (default: debug.log)
.HP
\fB\-maxorphantx=\fR<n>
.IP
Keep at most <n> unconnectable transactions in memory (default: 100)
@@ -81,7 +86,7 @@ Extra transactions to keep in memory for compact block reconstructions
.HP
\fB\-par=\fR<n>
.IP
Set the number of script verification threads (\fB\-2\fR to 16, 0 = auto, <0 =
Set the number of script verification threads (\fB\-6\fR to 16, 0 = auto, <0 =
leave that many cores free, default: 0)
.HP
\fB\-pid=\fR<file>
@@ -97,7 +102,7 @@ blocks if a target size in MiB is provided. This mode is
incompatible with \fB\-txindex\fR and \fB\-rescan\fR. Warning: Reverting this
setting requires re\-downloading the entire blockchain. (default:
0 = disable pruning blocks, 1 = allow manual pruning via RPC,
>550 = automatically prune block files to stay under the
>=550 = automatically prune block files to stay under the
specified target size in MiB)
.HP
\fB\-reindex\-chainstate\fR
@@ -122,7 +127,8 @@ Connection options:
.HP
\fB\-addnode=\fR<ip>
.IP
Add a node to connect to and attempt to keep the connection open
Add a node to connect to and attempt to keep the connection open (see
the `addnode` RPC command help for more info)
.HP
\fB\-banscore=\fR<n>
.IP
@@ -141,7 +147,8 @@ for IPv6
\fB\-connect=\fR<ip>
.IP
Connect only to the specified node(s); \fB\-connect\fR=\fI\,0\/\fR disables automatic
connections
connections (the rules for this peer are the same as for
\fB\-addnode\fR)
.HP
\fB\-discover\fR
.IP
@@ -263,6 +270,18 @@ Tries to keep outbound traffic under the given target (in MiB per 24h),
.PP
Wallet options:
.HP
\fB\-addresstype\fR
.IP
What type of addresses to use ("legacy", "p2sh\-segwit", or "bech32",
default: "p2sh\-segwit")
.HP
\fB\-changetype\fR
.IP
What type of change to use ("legacy", "p2sh\-segwit", or "bech32").
Default is same as \fB\-addresstype\fR, except when
\fB\-addresstype\fR=\fI\,p2sh\-segwit\/\fR a native segwit output is used when
sending to a native segwit address)
.HP
\fB\-disablewallet\fR
.IP
Do not load the wallet and disable wallet RPC calls
@@ -312,7 +331,7 @@ confirmation on average within n blocks (default: 6)
.HP
\fB\-walletrbf\fR
.IP
Send transactions with full\-RBF opt\-in enabled (default: 0)
Send transactions with full\-RBF opt\-in enabled (RPC only, default: 0)
.HP
\fB\-upgradewallet\fR
.IP
@@ -326,6 +345,11 @@ Specify wallet file (within data directory) (default: wallet.dat)
.IP
Make the wallet broadcast transactions (default: 1)
.HP
\fB\-walletdir=\fR<dir>
.IP
Specify directory to hold wallets (default: <datadir>/wallets if it
exists, otherwise <datadir>)
.HP
\fB\-walletnotify=\fR<cmd>
.IP
Execute command when a wallet transaction changes (%s in cmd is replaced
@@ -450,11 +474,6 @@ Block creation options:
.IP
Set maximum BIP141 block weight (default: 3996000)
.HP
\fB\-blockmaxsize=\fR<n>
.IP
Set maximum BIP141 block weight to this * 4. Deprecated, use
blockmaxweight
.HP
\fB\-blockmintxfee=\fR<amt>
.IP
Set lowest fee rate (in BTC/kB) for transactions to be included in block
@@ -521,7 +540,7 @@ non\-verbose mode, non\-segwit(0) or segwit(1) (default: 1)
.IP
Set the number of threads to service RPC calls (default: 4)
.SH COPYRIGHT
Copyright (C) 2009-2017 The Bitcoin Core developers
Copyright (C) 2009-2018 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org> for further information about the software.

View File

@@ -1,12 +1,9 @@
(note: this is a temporary file, to be added-to by anybody, and moved to
release-notes at release time)
Bitcoin Core version 0.16.x is now available from:
Bitcoin Core version *version* is now available from:
<https://bitcoincore.org/bin/bitcoin-core-0.16.x/>
<https://bitcoin.org/bin/bitcoin-core-*version*/>
This is a new major version release, including new features, various bugfixes
and performance improvements, as well as updated translations.
This is a new minor version release, with various bugfixes
as well as updated translations.
Please report bugs using the issue tracker at GitHub:
@@ -24,25 +21,21 @@ 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, your chainstate database will be converted to a
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. Upgrading
directly from 0.7.x and earlier without redownloading the blockchain is not supported.
automatic upgrade code from before version 0.8 to version 0.15.0 or higher. Upgrading
directly from 0.7.x and earlier without re-downloading the blockchain is not supported.
However, as usual, old wallet versions are still supported.
Downgrading warning
-------------------
The chainstate database for this release is not compatible with previous
releases, so if you run 0.15 and then decide to switch back to any
older version, you will need to run the old release with the `-reindex-chainstate`
option to rebuild the chainstate data structures in the old format.
If your node has pruning enabled, this will entail re-downloading and
processing the entire blockchain.
Wallets created in 0.16 and later are not compatible with versions prior to 0.16
and will not work if you try to use newly created wallets in older versions. Existing
wallets that were created with older versions are not affected by this.
Compatibility
==============
@@ -56,45 +49,22 @@ frequently tested on them.
Notable changes
===============
GCC 4.8.x
--------------
The minimum version of GCC required to compile Bitcoin Core is now 4.8. No effort will be
made to support older versions of GCC. See discussion in issue #11732 for more information.
(to be filled in)
HD-wallets by default
---------------------
Due to a backward-incompatible change in the wallet database, wallets created
with version 0.16.0 will be rejected by previous versions. Also, version 0.16.0
will only create hierarchical deterministic (HD) wallets.
Custom wallet directories
---------------------
The ability to specify a directory other than the default data directory in which to store
wallets has been added. An existing directory can be specified using the `-walletdir=<dir>`
argument. Wallets loaded via `-wallet` arguments must be in this wallet directory. Care should be taken
when choosing a wallet directory location, as if it becomes unavailable during operation,
funds may be lost.
Default wallet directory change
--------------------------
On new installations (if the data directory doesn't exist), wallets will now be stored in a
new `wallets/` subdirectory inside the data directory. If this `wallets/` subdirectory
doesn't exist (i.e. on existing nodes), the current datadir root is used instead, as it was.
Low-level RPC changes
----------------------
- The deprecated RPC `getinfo` was removed. It is recommended that the more specific RPCs are used:
* `getblockchaininfo`
* `getnetworkinfo`
* `getwalletinfo`
* `getmininginfo`
- The wallet RPC `getreceivedbyaddress` will return an error if called with an address not in the wallet.
0.16.x change log
------------------
(to be filled in)
Credits
=======
Thanks to everyone who directly contributed to this release:
(to be filled in)
And to those that reported security issues:
(to be filled in)
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).

View File

@@ -151,8 +151,8 @@ Multi-wallet is enabled by using more than one `-wallet` argument when starting
Bitcoin Core 0.15.0 contains the following changes to the RPC interface and `bitcoin-cli` for multi-wallet:
* When running Bitcoin Core with a single wallet, there are **no** changes to the RPC interface or `bitcoin-cli`. All RPC calls and `bitcoin-cli` commands continue to work as before.
* When running Bitcoin Core with multi-wallet, all *node-level* RPC methods continue to work as before. HTTP RPC requests should be send to the normal `<RPC IP address>:<RPC port>/` endpoint, and `bitcoin-cli` commands should be run as before. A *node-level* RPC method is any method which does not require access to the wallet.
* When running Bitcoin Core with multi-wallet, *wallet-level* RPC methods must specify the wallet for which they're intended in every request. HTTP RPC requests should be send to the `<RPC IP address>:<RPC port>/wallet/<wallet name>/` endpoint, for example `127.0.0.1:8332/wallet/wallet1.dat/`. `bitcoin-cli` commands should be run with a `-rpcwallet` option, for example `bitcoin-cli -rpcwallet=wallet1.dat getbalance`.
* When running Bitcoin Core with multi-wallet, all *node-level* RPC methods continue to work as before. HTTP RPC requests should be send to the normal `<RPC IP address>:<RPC port>` endpoint, and `bitcoin-cli` commands should be run as before. A *node-level* RPC method is any method which does not require access to the wallet.
* When running Bitcoin Core with multi-wallet, *wallet-level* RPC methods must specify the wallet for which they're intended in every request. HTTP RPC requests should be send to the `<RPC IP address>:<RPC port>/wallet/<wallet name>` endpoint, for example `127.0.0.1:8332/wallet/wallet1.dat`. `bitcoin-cli` commands should be run with a `-rpcwallet` option, for example `bitcoin-cli -rpcwallet=wallet1.dat getbalance`.
* A new *node-level* `listwallets` RPC method is added to display which wallets are currently loaded. The names returned by this method are the same as those used in the HTTP endpoint and for the `rpcwallet` argument.
Note that while multi-wallet is now fully supported, the RPC multi-wallet interface should be considered unstable for version 0.15.0, and there may backwards-incompatible changes in future versions.

View File

@@ -4,7 +4,7 @@
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
if [ $# -gt 1 ]; then
cd "$2"
cd "$2" || exit 1
fi
if [ $# -gt 0 ]; then
FILE="$1"

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python
# Copyright (c) 2012-2016 The Bitcoin Core developers
# Copyright (c) 2012-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
'''

10
share/rpcauth/README.md Normal file
View File

@@ -0,0 +1,10 @@
RPC Tools
---------------------
### [RPCAuth](/share/rpcauth) ###
Create login credentials for a JSON-RPC user.
Usage:
./rpcauth.py <username>

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2015-2016 The Bitcoin Core developers
#!/usr/bin/env python
# Copyright (c) 2015-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -1,10 +0,0 @@
RPC Tools
---------------------
### [RPCUser](/share/rpcuser) ###
Create an RPC user login credential.
Usage:
./rpcuser.py <username>

View File

@@ -20,7 +20,8 @@ SetCompressor /SOLID lzma
!define MUI_STARTMENUPAGE_REGISTRY_KEY ${REGKEY}
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME StartMenuGroup
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "@PACKAGE_NAME@"
!define MUI_FINISHPAGE_RUN $INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@
!define MUI_FINISHPAGE_RUN "$WINDIR\explorer.exe"
!define MUI_FINISHPAGE_RUN_PARAMETERS $INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "@abs_top_srcdir@/share/pixmaps/nsis-wizard.bmp"
!define MUI_UNFINISHPAGE_NOAUTOCLOSE

View File

@@ -133,6 +133,7 @@ BITCOIN_CORE_H = \
rpc/safemode.h \
rpc/server.h \
rpc/register.h \
rpc/util.h \
scheduler.h \
script/sigcache.h \
script/sign.h \
@@ -352,6 +353,7 @@ libbitcoin_util_a_SOURCES = \
fs.cpp \
random.cpp \
rpc/protocol.cpp \
rpc/util.cpp \
support/cleanse.cpp \
sync.cpp \
threadinterrupt.cpp \

View File

@@ -9,22 +9,29 @@ EXTRA_LIBRARIES += qt/libbitcoinqt.a
QT_TS = \
qt/locale/bitcoin_af.ts \
qt/locale/bitcoin_af_ZA.ts \
qt/locale/bitcoin_am.ts \
qt/locale/bitcoin_ar.ts \
qt/locale/bitcoin_be_BY.ts \
qt/locale/bitcoin_bg_BG.ts \
qt/locale/bitcoin_bg.ts \
qt/locale/bitcoin_bn.ts \
qt/locale/bitcoin_bs.ts \
qt/locale/bitcoin_ca_ES.ts \
qt/locale/bitcoin_ca.ts \
qt/locale/bitcoin_ca@valencia.ts \
qt/locale/bitcoin_cs_CZ.ts \
qt/locale/bitcoin_cs.ts \
qt/locale/bitcoin_cy.ts \
qt/locale/bitcoin_da.ts \
qt/locale/bitcoin_de_DE.ts \
qt/locale/bitcoin_de.ts \
qt/locale/bitcoin_el_GR.ts \
qt/locale/bitcoin_el.ts \
qt/locale/bitcoin_en_AU.ts \
qt/locale/bitcoin_en_GB.ts \
qt/locale/bitcoin_en.ts \
qt/locale/bitcoin_eo.ts \
qt/locale/bitcoin_es_419.ts \
qt/locale/bitcoin_es_AR.ts \
qt/locale/bitcoin_es_CL.ts \
qt/locale/bitcoin_es_CO.ts \
@@ -44,44 +51,64 @@ QT_TS = \
qt/locale/bitcoin_fr_FR.ts \
qt/locale/bitcoin_fr.ts \
qt/locale/bitcoin_gl.ts \
qt/locale/bitcoin_he_IL.ts \
qt/locale/bitcoin_he.ts \
qt/locale/bitcoin_hi_IN.ts \
qt/locale/bitcoin_hr.ts \
qt/locale/bitcoin_hu_HU.ts \
qt/locale/bitcoin_hu.ts \
qt/locale/bitcoin_id_ID.ts \
qt/locale/bitcoin_id.ts \
qt/locale/bitcoin_is.ts \
qt/locale/bitcoin_it_IT.ts \
qt/locale/bitcoin_it.ts \
qt/locale/bitcoin_ja_JP.ts \
qt/locale/bitcoin_ja.ts \
qt/locale/bitcoin_ka.ts \
qt/locale/bitcoin_kk_KZ.ts \
qt/locale/bitcoin_km_KH.ts \
qt/locale/bitcoin_ko_KR.ts \
qt/locale/bitcoin_ko.ts \
qt/locale/bitcoin_ku_IQ.ts \
qt/locale/bitcoin_ky.ts \
qt/locale/bitcoin_la.ts \
qt/locale/bitcoin_lt.ts \
qt/locale/bitcoin_lv_LV.ts \
qt/locale/bitcoin_mk_MK.ts \
qt/locale/bitcoin_ml.ts \
qt/locale/bitcoin_mn.ts \
qt/locale/bitcoin_mr_IN.ts \
qt/locale/bitcoin_ms_MY.ts \
qt/locale/bitcoin_ms.ts \
qt/locale/bitcoin_my.ts \
qt/locale/bitcoin_nb_NO.ts \
qt/locale/bitcoin_nb.ts \
qt/locale/bitcoin_ne.ts \
qt/locale/bitcoin_nl_NL.ts \
qt/locale/bitcoin_nl.ts \
qt/locale/bitcoin_pam.ts \
qt/locale/bitcoin_pl_PL.ts \
qt/locale/bitcoin_pl.ts \
qt/locale/bitcoin_pt_BR.ts \
qt/locale/bitcoin_pt_PT.ts \
qt/locale/bitcoin_pt.ts \
qt/locale/bitcoin_ro_RO.ts \
qt/locale/bitcoin_ro.ts \
qt/locale/bitcoin_ru_RU.ts \
qt/locale/bitcoin_ru.ts \
qt/locale/bitcoin_si.ts \
qt/locale/bitcoin_sk.ts \
qt/locale/bitcoin_sl_SI.ts \
qt/locale/bitcoin_sn.ts \
qt/locale/bitcoin_sq.ts \
qt/locale/bitcoin_sr@latin.ts \
qt/locale/bitcoin_sr.ts \
qt/locale/bitcoin_sv.ts \
qt/locale/bitcoin_ta_IN.ts \
qt/locale/bitcoin_ta.ts \
qt/locale/bitcoin_te.ts \
qt/locale/bitcoin_th_TH.ts \
qt/locale/bitcoin_th.ts \
qt/locale/bitcoin_tr_TR.ts \
qt/locale/bitcoin_tr.ts \
qt/locale/bitcoin_uk.ts \
@@ -90,6 +117,7 @@ QT_TS = \
qt/locale/bitcoin_vi.ts \
qt/locale/bitcoin_vi_VN.ts \
qt/locale/bitcoin_zh_CN.ts \
qt/locale/bitcoin_zh-Hans.ts \
qt/locale/bitcoin_zh_HK.ts \
qt/locale/bitcoin_zh.ts \
qt/locale/bitcoin_zh_TW.ts

View File

@@ -33,6 +33,7 @@ BITCOIN_TESTS =\
test/base64_tests.cpp \
test/bech32_tests.cpp \
test/bip32_tests.cpp \
test/blockchain_tests.cpp \
test/blockencodings_tests.cpp \
test/bloom_tests.cpp \
test/bswap_tests.cpp \
@@ -82,10 +83,10 @@ BITCOIN_TESTS =\
test/transaction_tests.cpp \
test/txvalidation_tests.cpp \
test/txvalidationcache_tests.cpp \
test/versionbits_tests.cpp \
test/uint256_tests.cpp \
test/univalue_tests.cpp \
test/util_tests.cpp
test/util_tests.cpp \
test/validation_block_tests.cpp \
test/versionbits_tests.cpp
if ENABLE_WALLET
BITCOIN_TESTS += \

View File

@@ -1,5 +1,5 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Copyright (c) 2009-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -8,7 +8,6 @@
#include <addrman.h>
#include <chainparams.h>
#include <clientversion.h>
#include <fs.h>
#include <hash.h>
#include <random.h>
#include <streams.h>

View File

@@ -1,5 +1,5 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Copyright (c) 2009-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -1,5 +1,5 @@
// Copyright (c) 2012 Pieter Wuille
// Copyright (c) 2012-2016 The Bitcoin Core developers
// Copyright (c) 2012-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -387,7 +387,7 @@ int CAddrMan::Check_()
std::set<int> setTried;
std::map<int, int> mapNew;
if (vRandom.size() != nTried + nNew)
if (vRandom.size() != (size_t)(nTried + nNew))
return -7;
for (const auto& entry : mapInfo) {
@@ -408,7 +408,7 @@ int CAddrMan::Check_()
}
if (mapAddr[info] != n)
return -5;
if (info.nRandomPos < 0 || info.nRandomPos >= vRandom.size() || vRandom[info.nRandomPos] != n)
if (info.nRandomPos < 0 || (size_t)info.nRandomPos >= vRandom.size() || vRandom[info.nRandomPos] != n)
return -14;
if (info.nLastTry < 0)
return -6;
@@ -416,9 +416,9 @@ int CAddrMan::Check_()
return -8;
}
if (setTried.size() != nTried)
if (setTried.size() != (size_t)nTried)
return -9;
if (mapNew.size() != nNew)
if (mapNew.size() != (size_t)nNew)
return -10;
for (int n = 0; n < ADDRMAN_TRIED_BUCKET_COUNT; n++) {

View File

@@ -1,5 +1,5 @@
// Copyright (c) 2012 Pieter Wuille
// Copyright (c) 2012-2016 The Bitcoin Core developers
// Copyright (c) 2012-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -1,5 +1,5 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Copyright (c) 2009-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -1,5 +1,5 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Copyright (c) 2009-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2016 The Bitcoin Core developers
// Copyright (c) 2014-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -1,5 +1,5 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2015 The Bitcoin Core developers
// Copyright (c) 2009-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2015-2016 The Bitcoin Core developers
// Copyright (c) 2015-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -15,7 +15,7 @@ static void Sleep100ms(benchmark::State& state)
}
}
BENCHMARK(Sleep100ms);
BENCHMARK(Sleep100ms, 10);
// Extremely fast-running benchmark:
#include <math.h>
@@ -31,4 +31,4 @@ static void Trig(benchmark::State& state)
}
}
BENCHMARK(Trig);
BENCHMARK(Trig, 12 * 1000 * 1000);

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2016 The Bitcoin Core developers
// Copyright (c) 2016-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -22,7 +22,7 @@ static void Base58Encode(benchmark::State& state)
}
};
while (state.KeepRunning()) {
EncodeBase58(buff.begin(), buff.end());
EncodeBase58(buff.data(), buff.data() + buff.size());
}
}
@@ -54,6 +54,6 @@ static void Base58Decode(benchmark::State& state)
}
BENCHMARK(Base58Encode);
BENCHMARK(Base58CheckEncode);
BENCHMARK(Base58Decode);
BENCHMARK(Base58Encode, 470 * 1000);
BENCHMARK(Base58CheckEncode, 320 * 1000);
BENCHMARK(Base58Decode, 800 * 1000);

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2015-2016 The Bitcoin Core developers
// Copyright (c) 2015-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -8,98 +8,139 @@
#include <assert.h>
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <regex>
#include <numeric>
benchmark::BenchRunner::BenchmarkMap &benchmark::BenchRunner::benchmarks() {
static std::map<std::string, benchmark::BenchFunction> benchmarks_map;
void benchmark::ConsolePrinter::header()
{
std::cout << "# Benchmark, evals, iterations, total, min, max, median" << std::endl;
}
void benchmark::ConsolePrinter::result(const State& state)
{
auto results = state.m_elapsed_results;
std::sort(results.begin(), results.end());
double total = state.m_num_iters * std::accumulate(results.begin(), results.end(), 0.0);
double front = 0;
double back = 0;
double median = 0;
if (!results.empty()) {
front = results.front();
back = results.back();
size_t mid = results.size() / 2;
median = results[mid];
if (0 == results.size() % 2) {
median = (results[mid] + results[mid + 1]) / 2;
}
}
std::cout << std::setprecision(6);
std::cout << state.m_name << ", " << state.m_num_evals << ", " << state.m_num_iters << ", " << total << ", " << front << ", " << back << ", " << median << std::endl;
}
void benchmark::ConsolePrinter::footer() {}
benchmark::PlotlyPrinter::PlotlyPrinter(std::string plotly_url, int64_t width, int64_t height)
: m_plotly_url(plotly_url), m_width(width), m_height(height)
{
}
void benchmark::PlotlyPrinter::header()
{
std::cout << "<html><head>"
<< "<script src=\"" << m_plotly_url << "\"></script>"
<< "</head><body><div id=\"myDiv\" style=\"width:" << m_width << "px; height:" << m_height << "px\"></div>"
<< "<script> var data = ["
<< std::endl;
}
void benchmark::PlotlyPrinter::result(const State& state)
{
std::cout << "{ " << std::endl
<< " name: '" << state.m_name << "', " << std::endl
<< " y: [";
const char* prefix = "";
for (const auto& e : state.m_elapsed_results) {
std::cout << prefix << std::setprecision(6) << e;
prefix = ", ";
}
std::cout << "]," << std::endl
<< " boxpoints: 'all', jitter: 0.3, pointpos: 0, type: 'box',"
<< std::endl
<< "}," << std::endl;
}
void benchmark::PlotlyPrinter::footer()
{
std::cout << "]; var layout = { showlegend: false, yaxis: { rangemode: 'tozero', autorange: true } };"
<< "Plotly.newPlot('myDiv', data, layout);"
<< "</script></body></html>";
}
benchmark::BenchRunner::BenchmarkMap& benchmark::BenchRunner::benchmarks()
{
static std::map<std::string, Bench> benchmarks_map;
return benchmarks_map;
}
benchmark::BenchRunner::BenchRunner(std::string name, benchmark::BenchFunction func)
benchmark::BenchRunner::BenchRunner(std::string name, benchmark::BenchFunction func, uint64_t num_iters_for_one_second)
{
benchmarks().insert(std::make_pair(name, func));
benchmarks().insert(std::make_pair(name, Bench{func, num_iters_for_one_second}));
}
void
benchmark::BenchRunner::RunAll(benchmark::duration elapsedTimeForOne)
void benchmark::BenchRunner::RunAll(Printer& printer, uint64_t num_evals, double scaling, const std::string& filter, bool is_list_only)
{
perf_init();
if (std::ratio_less_equal<benchmark::clock::period, std::micro>::value) {
if (!std::ratio_less_equal<benchmark::clock::period, std::micro>::value) {
std::cerr << "WARNING: Clock precision is worse than microsecond - benchmarks may be less accurate!\n";
}
std::cout << "#Benchmark" << "," << "count" << "," << "min(ns)" << "," << "max(ns)" << "," << "average(ns)" << ","
<< "min_cycles" << "," << "max_cycles" << "," << "average_cycles" << "\n";
#ifdef DEBUG
std::cerr << "WARNING: This is a debug build - may result in slower benchmarks.\n";
#endif
for (const auto &p: benchmarks()) {
State state(p.first, elapsedTimeForOne);
p.second(state);
std::regex reFilter(filter);
std::smatch baseMatch;
printer.header();
for (const auto& p : benchmarks()) {
if (!std::regex_match(p.first, baseMatch, reFilter)) {
continue;
}
uint64_t num_iters = static_cast<uint64_t>(p.second.num_iters_for_one_second * scaling);
if (0 == num_iters) {
num_iters = 1;
}
State state(p.first, num_evals, num_iters, printer);
if (!is_list_only) {
p.second.func(state);
}
printer.result(state);
}
printer.footer();
perf_fini();
}
bool benchmark::State::KeepRunning()
bool benchmark::State::UpdateTimer(const benchmark::time_point current_time)
{
if (count & countMask) {
++count;
return true;
}
time_point now;
if (m_start_time != time_point()) {
std::chrono::duration<double> diff = current_time - m_start_time;
m_elapsed_results.push_back(diff.count() / m_num_iters);
uint64_t nowCycles;
if (count == 0) {
lastTime = beginTime = now = clock::now();
lastCycles = beginCycles = nowCycles = perf_cpucycles();
}
else {
now = clock::now();
auto elapsed = now - lastTime;
auto elapsedOne = elapsed / (countMask + 1);
if (elapsedOne < minTime) minTime = elapsedOne;
if (elapsedOne > maxTime) maxTime = elapsedOne;
// We only use relative values, so don't have to handle 64-bit wrap-around specially
nowCycles = perf_cpucycles();
uint64_t elapsedOneCycles = (nowCycles - lastCycles) / (countMask + 1);
if (elapsedOneCycles < minCycles) minCycles = elapsedOneCycles;
if (elapsedOneCycles > maxCycles) maxCycles = elapsedOneCycles;
if (elapsed*128 < maxElapsed) {
// If the execution was much too fast (1/128th of maxElapsed), increase the count mask by 8x and restart timing.
// The restart avoids including the overhead of this code in the measurement.
countMask = ((countMask<<3)|7) & ((1LL<<60)-1);
count = 0;
minTime = duration::max();
maxTime = duration::zero();
minCycles = std::numeric_limits<uint64_t>::max();
maxCycles = std::numeric_limits<uint64_t>::min();
return true;
}
if (elapsed*16 < maxElapsed) {
uint64_t newCountMask = ((countMask<<1)|1) & ((1LL<<60)-1);
if ((count & newCountMask)==0) {
countMask = newCountMask;
}
if (m_elapsed_results.size() == m_num_evals) {
return false;
}
}
lastTime = now;
lastCycles = nowCycles;
++count;
if (now - beginTime < maxElapsed) return true; // Keep going
--count;
assert(count != 0 && "count == 0 => (now == 0 && beginTime == 0) => return above");
// Output results
// Duration casts are only necessary here because hardware with sub-nanosecond clocks
// will lose precision.
int64_t min_elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(minTime).count();
int64_t max_elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(maxTime).count();
int64_t avg_elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>((now-beginTime)/count).count();
int64_t averageCycles = (nowCycles-beginCycles)/count;
std::cout << std::fixed << std::setprecision(15) << name << "," << count << "," << min_elapsed << "," << max_elapsed << "," << avg_elapsed << ","
<< minCycles << "," << maxCycles << "," << averageCycles << "\n";
std::cout.copyfmt(std::ios(nullptr));
return false;
m_num_iters_left = m_num_iters - 1;
return true;
}

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2015-2016 The Bitcoin Core developers
// Copyright (c) 2015-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -9,6 +9,7 @@
#include <limits>
#include <map>
#include <string>
#include <vector>
#include <chrono>
#include <boost/preprocessor/cat.hpp>
@@ -32,64 +33,110 @@ static void CODE_TO_TIME(benchmark::State& state)
... do any cleanup needed...
}
BENCHMARK(CODE_TO_TIME);
// default to running benchmark for 5000 iterations
BENCHMARK(CODE_TO_TIME, 5000);
*/
namespace benchmark {
// In case high_resolution_clock is steady, prefer that, otherwise use steady_clock.
struct best_clock {
using hi_res_clock = std::chrono::high_resolution_clock;
using steady_clock = std::chrono::steady_clock;
using type = std::conditional<hi_res_clock::is_steady, hi_res_clock, steady_clock>::type;
};
using clock = best_clock::type;
using time_point = clock::time_point;
using duration = clock::duration;
// In case high_resolution_clock is steady, prefer that, otherwise use steady_clock.
struct best_clock {
using hi_res_clock = std::chrono::high_resolution_clock;
using steady_clock = std::chrono::steady_clock;
using type = std::conditional<hi_res_clock::is_steady, hi_res_clock, steady_clock>::type;
};
using clock = best_clock::type;
using time_point = clock::time_point;
using duration = clock::duration;
class State {
std::string name;
duration maxElapsed;
time_point beginTime, lastTime;
duration minTime, maxTime;
uint64_t count;
uint64_t countMask;
uint64_t beginCycles;
uint64_t lastCycles;
uint64_t minCycles;
uint64_t maxCycles;
public:
State(std::string _name, duration _maxElapsed) :
name(_name),
maxElapsed(_maxElapsed),
minTime(duration::max()),
maxTime(duration::zero()),
count(0),
countMask(1),
beginCycles(0),
lastCycles(0),
minCycles(std::numeric_limits<uint64_t>::max()),
maxCycles(std::numeric_limits<uint64_t>::min()) {
}
bool KeepRunning();
};
class Printer;
typedef std::function<void(State&)> BenchFunction;
class State
{
public:
std::string m_name;
uint64_t m_num_iters_left;
const uint64_t m_num_iters;
const uint64_t m_num_evals;
std::vector<double> m_elapsed_results;
time_point m_start_time;
class BenchRunner
bool UpdateTimer(time_point finish_time);
State(std::string name, uint64_t num_evals, double num_iters, Printer& printer) : m_name(name), m_num_iters_left(0), m_num_iters(num_iters), m_num_evals(num_evals)
{
typedef std::map<std::string, BenchFunction> BenchmarkMap;
static BenchmarkMap &benchmarks();
}
public:
BenchRunner(std::string name, BenchFunction func);
inline bool KeepRunning()
{
if (m_num_iters_left--) {
return true;
}
static void RunAll(duration elapsedTimeForOne = std::chrono::seconds(1));
bool result = UpdateTimer(clock::now());
// measure again so runtime of UpdateTimer is not included
m_start_time = clock::now();
return result;
}
};
typedef std::function<void(State&)> BenchFunction;
class BenchRunner
{
struct Bench {
BenchFunction func;
uint64_t num_iters_for_one_second;
};
typedef std::map<std::string, Bench> BenchmarkMap;
static BenchmarkMap& benchmarks();
public:
BenchRunner(std::string name, BenchFunction func, uint64_t num_iters_for_one_second);
static void RunAll(Printer& printer, uint64_t num_evals, double scaling, const std::string& filter, bool is_list_only);
};
// interface to output benchmark results.
class Printer
{
public:
virtual ~Printer() {}
virtual void header() = 0;
virtual void result(const State& state) = 0;
virtual void footer() = 0;
};
// default printer to console, shows min, max, median.
class ConsolePrinter : public Printer
{
public:
void header();
void result(const State& state);
void footer();
};
// creates box plot with plotly.js
class PlotlyPrinter : public Printer
{
public:
PlotlyPrinter(std::string plotly_url, int64_t width, int64_t height);
void header();
void result(const State& state);
void footer();
private:
std::string m_plotly_url;
int64_t m_width;
int64_t m_height;
};
}
// BENCHMARK(foo) expands to: benchmark::BenchRunner bench_11foo("foo", foo);
#define BENCHMARK(n) \
benchmark::BenchRunner BOOST_PP_CAT(bench_, BOOST_PP_CAT(__LINE__, n))(BOOST_PP_STRINGIZE(n), n);
// BENCHMARK(foo, num_iters_for_one_second) expands to: benchmark::BenchRunner bench_11foo("foo", num_iterations);
// Choose a num_iters_for_one_second that takes roughly 1 second. The goal is that all benchmarks should take approximately
// the same time, and scaling factor can be used that the total time is appropriate for your system.
#define BENCHMARK(n, num_iters_for_one_second) \
benchmark::BenchRunner BOOST_PP_CAT(bench_, BOOST_PP_CAT(__LINE__, n))(BOOST_PP_STRINGIZE(n), n, (num_iters_for_one_second));
#endif // BITCOIN_BENCH_BENCH_H

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2015-2016 The Bitcoin Core developers
// Copyright (c) 2015-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -10,16 +10,62 @@
#include <util.h>
#include <random.h>
#include <boost/lexical_cast.hpp>
#include <memory>
static const int64_t DEFAULT_BENCH_EVALUATIONS = 5;
static const char* DEFAULT_BENCH_FILTER = ".*";
static const char* DEFAULT_BENCH_SCALING = "1.0";
static const char* DEFAULT_BENCH_PRINTER = "console";
static const char* DEFAULT_PLOT_PLOTLYURL = "https://cdn.plot.ly/plotly-latest.min.js";
static const int64_t DEFAULT_PLOT_WIDTH = 1024;
static const int64_t DEFAULT_PLOT_HEIGHT = 768;
int
main(int argc, char** argv)
{
gArgs.ParseParameters(argc, argv);
if (gArgs.IsArgSet("-?") || gArgs.IsArgSet("-h") || gArgs.IsArgSet("-help")) {
std::cout << HelpMessageGroup(_("Options:"))
<< HelpMessageOpt("-?", _("Print this help message and exit"))
<< HelpMessageOpt("-list", _("List benchmarks without executing them. Can be combined with -scaling and -filter"))
<< HelpMessageOpt("-evals=<n>", strprintf(_("Number of measurement evaluations to perform. (default: %u)"), DEFAULT_BENCH_EVALUATIONS))
<< HelpMessageOpt("-filter=<regex>", strprintf(_("Regular expression filter to select benchmark by name (default: %s)"), DEFAULT_BENCH_FILTER))
<< HelpMessageOpt("-scaling=<n>", strprintf(_("Scaling factor for benchmark's runtime (default: %u)"), DEFAULT_BENCH_SCALING))
<< HelpMessageOpt("-printer=(console|plot)", strprintf(_("Choose printer format. console: print data to console. plot: Print results as HTML graph (default: %s)"), DEFAULT_BENCH_PRINTER))
<< HelpMessageOpt("-plot-plotlyurl=<uri>", strprintf(_("URL to use for plotly.js (default: %s)"), DEFAULT_PLOT_PLOTLYURL))
<< HelpMessageOpt("-plot-width=<x>", strprintf(_("Plot width in pixel (default: %u)"), DEFAULT_PLOT_WIDTH))
<< HelpMessageOpt("-plot-height=<x>", strprintf(_("Plot height in pixel (default: %u)"), DEFAULT_PLOT_HEIGHT));
return 0;
}
SHA256AutoDetect();
RandomInit();
ECC_Start();
SetupEnvironment();
fPrintToDebugLog = false; // don't want to write to debug.log file
benchmark::BenchRunner::RunAll();
int64_t evaluations = gArgs.GetArg("-evals", DEFAULT_BENCH_EVALUATIONS);
std::string regex_filter = gArgs.GetArg("-filter", DEFAULT_BENCH_FILTER);
std::string scaling_str = gArgs.GetArg("-scaling", DEFAULT_BENCH_SCALING);
bool is_list_only = gArgs.GetBoolArg("-list", false);
double scaling_factor = boost::lexical_cast<double>(scaling_str);
std::unique_ptr<benchmark::Printer> printer(new benchmark::ConsolePrinter());
std::string printer_arg = gArgs.GetArg("-printer", DEFAULT_BENCH_PRINTER);
if ("plot" == printer_arg) {
printer.reset(new benchmark::PlotlyPrinter(
gArgs.GetArg("-plot-plotlyurl", DEFAULT_PLOT_PLOTLYURL),
gArgs.GetArg("-plot-width", DEFAULT_PLOT_WIDTH),
gArgs.GetArg("-plot-height", DEFAULT_PLOT_HEIGHT)));
}
benchmark::BenchRunner::RunAll(*printer, evaluations, scaling_factor, regex_filter, is_list_only);
ECC_Stop();
}

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2016 The Bitcoin Core developers
// Copyright (c) 2016-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -84,4 +84,4 @@ static void CCoinsCaching(benchmark::State& state)
}
}
BENCHMARK(CCoinsCaching);
BENCHMARK(CCoinsCaching, 170 * 1000);

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2016 The Bitcoin Core developers
// Copyright (c) 2016-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -52,5 +52,5 @@ static void DeserializeAndCheckBlockTest(benchmark::State& state)
}
}
BENCHMARK(DeserializeBlockTest);
BENCHMARK(DeserializeAndCheckBlockTest);
BENCHMARK(DeserializeBlockTest, 130);
BENCHMARK(DeserializeAndCheckBlockTest, 160);

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2015 The Bitcoin Core developers
// Copyright (c) 2015-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -12,51 +12,11 @@
#include <random.h>
// This Benchmark tests the CheckQueue with the lightest
// weight Checks, so it should make any lock contention
// particularly visible
static const int MIN_CORES = 2;
static const size_t BATCHES = 101;
static const size_t BATCH_SIZE = 30;
static const int PREVECTOR_SIZE = 28;
static const int QUEUE_BATCH_SIZE = 128;
static void CCheckQueueSpeed(benchmark::State& state)
{
struct FakeJobNoWork {
bool operator()()
{
return true;
}
void swap(FakeJobNoWork& x){};
};
CCheckQueue<FakeJobNoWork> queue {QUEUE_BATCH_SIZE};
boost::thread_group tg;
for (auto x = 0; x < std::max(MIN_CORES, GetNumCores()); ++x) {
tg.create_thread([&]{queue.Thread();});
}
while (state.KeepRunning()) {
CCheckQueueControl<FakeJobNoWork> control(&queue);
// We call Add a number of times to simulate the behavior of adding
// a block of transactions at once.
std::vector<std::vector<FakeJobNoWork>> vBatches(BATCHES);
for (auto& vChecks : vBatches) {
vChecks.resize(BATCH_SIZE);
}
for (auto& vChecks : vBatches) {
// We can't make vChecks in the inner loop because we want to measure
// the cost of getting the memory to each thread and we might get the same
// memory
control.Add(vChecks);
}
// control waits for completion by RAII, but
// it is done explicitly here for clarity
control.Wait();
}
tg.interrupt_all();
tg.join_all();
}
static const unsigned int QUEUE_BATCH_SIZE = 128;
// This Benchmark tests the CheckQueue with a slightly realistic workload,
// where checks all contain a prevector that is indirect 50% of the time
@@ -99,5 +59,4 @@ static void CCheckQueueSpeedPrevectorJob(benchmark::State& state)
tg.interrupt_all();
tg.join_all();
}
BENCHMARK(CCheckQueueSpeed);
BENCHMARK(CCheckQueueSpeedPrevectorJob);
BENCHMARK(CCheckQueueSpeedPrevectorJob, 1400);

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2012-2016 The Bitcoin Core developers
// Copyright (c) 2012-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -56,4 +56,4 @@ static void CoinSelection(benchmark::State& state)
}
}
BENCHMARK(CoinSelection);
BENCHMARK(CoinSelection, 650);

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2016 The Bitcoin Core developers
// Copyright (c) 2016-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -46,9 +46,9 @@ static void SHA256_32b(benchmark::State& state)
{
std::vector<uint8_t> in(32,0);
while (state.KeepRunning()) {
for (int i = 0; i < 1000000; i++) {
CSHA256().Write(in.data(), in.size()).Finalize(in.data());
}
CSHA256()
.Write(in.data(), in.size())
.Finalize(in.data());
}
}
@@ -63,10 +63,9 @@ static void SHA512(benchmark::State& state)
static void SipHash_32b(benchmark::State& state)
{
uint256 x;
uint64_t k1 = 0;
while (state.KeepRunning()) {
for (int i = 0; i < 1000000; i++) {
*((uint64_t*)x.begin()) = SipHashUint256(0, i, x);
}
*((uint64_t*)x.begin()) = SipHashUint256(0, ++k1, x);
}
}
@@ -75,9 +74,7 @@ static void FastRandom_32bit(benchmark::State& state)
FastRandomContext rng(true);
uint32_t x = 0;
while (state.KeepRunning()) {
for (int i = 0; i < 1000000; i++) {
x += rng.rand32();
}
x += rng.rand32();
}
}
@@ -86,18 +83,16 @@ static void FastRandom_1bit(benchmark::State& state)
FastRandomContext rng(true);
uint32_t x = 0;
while (state.KeepRunning()) {
for (int i = 0; i < 1000000; i++) {
x += rng.randbool();
}
x += rng.randbool();
}
}
BENCHMARK(RIPEMD160);
BENCHMARK(SHA1);
BENCHMARK(SHA256);
BENCHMARK(SHA512);
BENCHMARK(RIPEMD160, 440);
BENCHMARK(SHA1, 570);
BENCHMARK(SHA256, 340);
BENCHMARK(SHA512, 330);
BENCHMARK(SHA256_32b);
BENCHMARK(SipHash_32b);
BENCHMARK(FastRandom_32bit);
BENCHMARK(FastRandom_1bit);
BENCHMARK(SHA256_32b, 4700 * 1000);
BENCHMARK(SipHash_32b, 40 * 1000 * 1000);
BENCHMARK(FastRandom_32bit, 110 * 1000 * 1000);
BENCHMARK(FastRandom_1bit, 440 * 1000 * 1000);

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2016 The Bitcoin Core developers
// Copyright (c) 2016-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -43,5 +43,4 @@ static void BenchLockedPool(benchmark::State& state)
addr.clear();
}
BENCHMARK(BenchLockedPool);
BENCHMARK(BenchLockedPool, 530);

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2011-2016 The Bitcoin Core developers
// Copyright (c) 2011-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -111,4 +111,4 @@ static void MempoolEviction(benchmark::State& state)
}
}
BENCHMARK(MempoolEviction);
BENCHMARK(MempoolEviction, 41000);

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2016 The Bitcoin Core developers
// Copyright (c) 2016-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -32,5 +32,5 @@ static void PrevectorClear(benchmark::State& state)
}
}
BENCHMARK(PrevectorDestructor);
BENCHMARK(PrevectorClear);
BENCHMARK(PrevectorDestructor, 5700);
BENCHMARK(PrevectorClear, 5600);

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2016 The Bitcoin Core developers
// Copyright (c) 2016-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -12,8 +12,6 @@ static void RollingBloom(benchmark::State& state)
CRollingBloomFilter filter(120000, 0.000001);
std::vector<unsigned char> data(32);
uint32_t count = 0;
uint32_t nEntriesPerGeneration = (120000 + 1) / 2;
uint32_t countnow = 0;
uint64_t match = 0;
while (state.KeepRunning()) {
count++;
@@ -21,16 +19,8 @@ static void RollingBloom(benchmark::State& state)
data[1] = count >> 8;
data[2] = count >> 16;
data[3] = count >> 24;
if (countnow == nEntriesPerGeneration) {
auto b = benchmark::clock::now();
filter.insert(data);
auto total = std::chrono::duration_cast<std::chrono::nanoseconds>(benchmark::clock::now() - b).count();
std::cout << "RollingBloom-refresh,1," << total << "," << total << "," << total << "\n";
countnow = 0;
} else {
filter.insert(data);
}
countnow++;
filter.insert(data);
data[0] = count >> 24;
data[1] = count >> 16;
data[2] = count >> 8;
@@ -39,4 +29,4 @@ static void RollingBloom(benchmark::State& state)
}
}
BENCHMARK(RollingBloom);
BENCHMARK(RollingBloom, 1500 * 1000);

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2016 The Bitcoin Core developers
// Copyright (c) 2016-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -105,4 +105,4 @@ static void VerifyScriptBench(benchmark::State& state)
}
}
BENCHMARK(VerifyScriptBench);
BENCHMARK(VerifyScriptBench, 6300);

View File

@@ -1,5 +1,5 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Copyright (c) 2009-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -15,6 +15,7 @@
#include <util.h>
#include <utilstrencodings.h>
#include <memory>
#include <stdio.h>
#include <event2/buffer.h>

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Copyright (c) 2009-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -22,6 +22,7 @@
#include <utilmoneystr.h>
#include <utilstrencodings.h>
#include <memory>
#include <stdio.h>
#include <boost/algorithm/string.hpp>
@@ -305,8 +306,8 @@ static void MutateTxAddOutPubKey(CMutableTransaction& tx, const std::string& str
bool bScriptHash = false;
if (vStrInputParts.size() == 3) {
std::string flags = vStrInputParts[2];
bSegWit = (flags.find("W") != std::string::npos);
bScriptHash = (flags.find("S") != std::string::npos);
bSegWit = (flags.find('W') != std::string::npos);
bScriptHash = (flags.find('S') != std::string::npos);
}
if (bSegWit) {
@@ -367,8 +368,8 @@ static void MutateTxAddOutMultiSig(CMutableTransaction& tx, const std::string& s
bool bScriptHash = false;
if (vStrInputParts.size() == numkeys + 4) {
std::string flags = vStrInputParts.back();
bSegWit = (flags.find("W") != std::string::npos);
bScriptHash = (flags.find("S") != std::string::npos);
bSegWit = (flags.find('W') != std::string::npos);
bScriptHash = (flags.find('S') != std::string::npos);
}
else if (vStrInputParts.size() > numkeys + 4) {
// Validate that there were no more parameters passed
@@ -447,8 +448,8 @@ static void MutateTxAddOutScript(CMutableTransaction& tx, const std::string& str
bool bScriptHash = false;
if (vStrInputParts.size() == 3) {
std::string flags = vStrInputParts.back();
bSegWit = (flags.find("W") != std::string::npos);
bScriptHash = (flags.find("S") != std::string::npos);
bSegWit = (flags.find('W') != std::string::npos);
bScriptHash = (flags.find('S') != std::string::npos);
}
if (scriptPubKey.size() > MAX_SCRIPT_SIZE) {

View File

@@ -1,5 +1,5 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Copyright (c) 2009-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -14,7 +14,6 @@
#include <rpc/server.h>
#include <init.h>
#include <noui.h>
#include <scheduler.h>
#include <util.h>
#include <httpserver.h>
#include <httprpc.h>
@@ -40,7 +39,7 @@
* Use the buttons <code>Namespaces</code>, <code>Classes</code> or <code>Files</code> at the top of the page to start navigating the code.
*/
void WaitForShutdown(boost::thread_group* threadGroup)
void WaitForShutdown()
{
bool fShutdown = ShutdownRequested();
// Tell the main threads to shutdown.
@@ -49,11 +48,7 @@ void WaitForShutdown(boost::thread_group* threadGroup)
MilliSleep(200);
fShutdown = ShutdownRequested();
}
if (threadGroup)
{
Interrupt(*threadGroup);
threadGroup->join_all();
}
Interrupt();
}
//////////////////////////////////////////////////////////////////////////////
@@ -62,9 +57,6 @@ void WaitForShutdown(boost::thread_group* threadGroup)
//
bool AppInit(int argc, char* argv[])
{
boost::thread_group threadGroup;
CScheduler scheduler;
bool fRet = false;
//
@@ -165,7 +157,7 @@ bool AppInit(int argc, char* argv[])
// If locking the data directory failed, exit immediately
return false;
}
fRet = AppInitMain(threadGroup, scheduler);
fRet = AppInitMain();
}
catch (const std::exception& e) {
PrintExceptionContinue(&e, "AppInit()");
@@ -175,10 +167,9 @@ bool AppInit(int argc, char* argv[])
if (!fRet)
{
Interrupt(threadGroup);
threadGroup.join_all();
Interrupt();
} else {
WaitForShutdown(&threadGroup);
WaitForShutdown();
}
Shutdown();

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2016 The Bitcoin Core developers
// Copyright (c) 2016-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2016 The Bitcoin Core developers
// Copyright (c) 2016-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2012-2016 The Bitcoin Core developers
// Copyright (c) 2012-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2012-2016 The Bitcoin Core developers
// Copyright (c) 2012-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -1,5 +1,5 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Copyright (c) 2009-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -80,12 +80,13 @@ int static inline GetSkipHeight(int height) {
return (height & 1) ? InvertLowestOne(InvertLowestOne(height - 1)) + 1 : InvertLowestOne(height);
}
CBlockIndex* CBlockIndex::GetAncestor(int height)
const CBlockIndex* CBlockIndex::GetAncestor(int height) const
{
if (height > nHeight || height < 0)
if (height > nHeight || height < 0) {
return nullptr;
}
CBlockIndex* pindexWalk = this;
const CBlockIndex* pindexWalk = this;
int heightWalk = nHeight;
while (heightWalk > height) {
int heightSkip = GetSkipHeight(heightWalk);
@@ -106,9 +107,9 @@ CBlockIndex* CBlockIndex::GetAncestor(int height)
return pindexWalk;
}
const CBlockIndex* CBlockIndex::GetAncestor(int height) const
CBlockIndex* CBlockIndex::GetAncestor(int height)
{
return const_cast<CBlockIndex*>(this)->GetAncestor(height);
return const_cast<CBlockIndex*>(static_cast<const CBlockIndex*>(this)->GetAncestor(height));
}
void CBlockIndex::BuildSkip()

Some files were not shown because too many files have changed in this diff Show More