Commit Graph

14867 Commits

Author SHA1 Message Date
Wladimir J. van der Laan
2559a19e6f Merge #11647: 0.15: Backports
7af2457 contrib/init: Update openrc-run filename (Luke Dashjr)
3f1db56 Wrap dumpwallet warning and note scripts aren't dumped (MeshCollider)
42ea47d Add wallet backup text to import*, add* and dumpwallet RPCs (MeshCollider)
3a6cdd4 Add test for multiwallet batch RPC calls (Russell Yanofsky)
1c8c7f8 Add missing batch rpc calls to python coverage logs (Russell Yanofsky)
1036c43 Add missing multiwallet rpc calls to python coverage logs (Russell Yanofsky)
2eea279 Make AuthServiceProxy._batch method usable (Russell Yanofsky)
305f768 Limit AuthServiceProxyWrapper.__getattr__ wrapping (Russell Yanofsky)
7026845 Fix uninitialized URI in batch RPC requests (Russell Yanofsky)
6372a75 [Wallet] always show help-line of wallet encryption calls (Jonas Schnelli)

Pull request description:

  This fixes some multiwallet issues on the 0.15 branch...

Tree-SHA512: 304a6c6acbce22c8b7338d1e618451978ab2cd04938c71a3daf40fe9996ef14e324645d642fbc21950a5481fb993254082d54da1cb953a739ebaeaab34c080d4
2017-12-17 12:23:25 +01:00
Wladimir J. van der Laan
a69cc077d9 Merge #11662: [0.15] Sanity-check script sizes in bitcoin-tx
f455bfd Sanity-check script sizes in bitcoin-tx (Matt Corallo)

Pull request description:

  Backport of #11554

  Cleanly merges into 0.14 too if we care.

Tree-SHA512: e8aff8bcde5925a73b2b9293f4782cdcf5ebc71a29001a592628b2d77e368db9905823fe7956c8e8b50ae942c77f64d48e6023a58f95b1457e106fca780308a3
2017-11-20 09:57:37 +01:00
Luke Dashjr
7af24577b5 contrib/init: Update openrc-run filename
OpenRC changed their program binary names in 2014 (3 years ago), and using the old names has loud warnings now

Github-Pull: #11676
Rebased-From: 2f041f0e7d
2017-11-13 17:07:04 -05:00
Wladimir J. van der Laan
a81642c650 Doc: Clean out release notes after 0.15.1
Tree-SHA512: 9478e6b5be237961f74e46640bf3a0f91e7a1fc82215572b17aeb1f00b8dc3244358ee15eae5d8dec2ec4cebe37de7e70db8fe95be81ceb8f2a6abb6ddb35856
2017-11-11 15:48:06 +01:00
Matt Corallo
f455bfd78a Sanity-check script sizes in bitcoin-tx
Github-Pull: #11554
Rebased-From: a6f33ea77d
2017-11-11 14:24:38 +00:00
MeshCollider
3f1db56bc1 Wrap dumpwallet warning and note scripts aren't dumped
Github-Pull: #11289
Rebased-From: c098c58196
2017-11-09 14:53:23 -05:00
MeshCollider
42ea47db42 Add wallet backup text to import*, add* and dumpwallet RPCs
Github-Pull: #11289
Rebased-From: a38bfbc51d
2017-11-09 14:52:43 -05:00
Wladimir J. van der Laan
7b57bc998f Merge #11610: [0.15] Update release notes for 0.15.1
4fcb915 Update release notes for 0.15.1 (MeshCollider)

Pull request description:

  Adds info for the more notable changes since 0.15.0.1 to the release notes.

  ~Still needs the list of commits added too.~ (added in 2ce9e586d5)

Tree-SHA512: 54d30b1f0105d0d9d86a0dba017471bfa13b6bdd39fc4ee785cb515958c0f72874fb2d1e967076ac61762a16ff7b23b0eebc016f2ab0fb0aa9d6941fd6662042
v0.15.1
2017-11-06 09:46:24 +01:00
MeshCollider
4fcb915944 Update release notes for 0.15.1 2017-11-06 12:13:02 +13:00
Wladimir J. van der Laan
2ce9e586d5 doc: Fill in 0.15.1 changelog and authors in release notes
Tree-SHA512: 569816ca62319650d803b2dd4bc3a8791aaea1f573cd52a9e2cf220dc1ec08180a66fbb0ac44441f6b9f48cb9041ce08f56ff2e864b58510308b9a4b6898f8e8
2017-11-05 14:59:38 +01:00
Pieter Wuille
f518d9ae6a Merge #11592: 0.15: Backports
8195cb0d7 rpc: further constrain the libevent workaround (Cory Fields)
34153a7e4 rpc: work-around an upstream libevent bug (Cory Fields)
fc308a6cd Add unit test for stale tip checking (Suhas Daftuar)
2ed0647ac Add CConnmanTest to mutate g_connman in tests (João Barbosa)
a607a95d8 Connect to an extra outbound peer if our tip is stale (Suhas Daftuar)
459f2db42 Track tip update time and last new block announcement from each peer (Suhas Daftuar)
49bf09018 net: Allow connecting to extra outbound peers (Suhas Daftuar)
bb83fe190 Add release notes describing blockmaxweight deprecation (Matt Corallo)
4c82cea99 Use a sensible default for blockmaxweight (Matt Corallo)
7871a7d3b Deprecate confusing blockmaxsize, fix getmininginfo output (Matt Corallo)
6baa317b5 Fix minchainwork test for 0.15 backport (Suhas Daftuar)
55b7abfa8 Make p2p-acceptablock not an extended test (Matt Corallo)
5bec7744d [qa] test that invalid blocks on an invalid chain get a disconnect (Matt Corallo)
92d6105c4 Reject headers building on invalid chains by tracking invalidity (Matt Corallo)
51001d684 Accept unrequested blocks with work equal to our tip (Matt Corallo)
c6e4d0ce8 Stop always storing blocks from whitelisted peers (Matt Corallo)
e976c36dd Rewrite p2p-acceptblock in preparation for slight behavior changes (Matt Corallo)
ec8dedff4 net: Add missing lock in ProcessHeadersMessage(...) (practicalswift)
59b210d9a Disconnect outbound peers relaying invalid headers (Suhas Daftuar)
fc966bbd2 moveonly: factor out headers processing into separate function (Suhas Daftuar)
e3272242e Add unit test for outbound peer eviction (Suhas Daftuar)
9961abf9e Permit disconnection of outbound peers on bad/slow chains (Suhas Daftuar)
bf191a718 Disconnecting from bad outbound peers in IBD (Suhas Daftuar)
d570aa429 Fix uninitialized g_connman crash in Shutdown() (MeshCollider)
0a5477c7e net: stop both net/net_processing before destroying them (Cory Fields)
b4136f21c net: drop unused connman param (Cory Fields)
dc897e53d net: use an interface class rather than signals for message processing (Cory Fields)
8aee55af3 net: pass CConnman via pointer rather than reference (Cory Fields)
6f279652b Rename fAddnode to a more-descriptive "manual_connection" (Matt Corallo)
ffb6ea4e5 Add comment explaining forced processing of compact blocks (Suhas Daftuar)
2df65eeb9 qa: add test for minchainwork use in acceptblock (Suhas Daftuar)
3acec3878 Don't process unrequested, low-work blocks (Suhas Daftuar)
0e9d04bf0 [qa] Test nMinimumChainWork (Suhas Daftuar)
da4908c3a Allow setting nMinimumChainWork on command line (Suhas Daftuar)
41088795d qa: Remove never used return value of sync_with_ping (MarcoFalke)
f3457d0e8 qa: Make tmpdir option an absolute path (MarcoFalke)
9c8006dc3 Avoid opening copied wallet databases simultaneously (Russell Yanofsky)
de7053f11 [wallet] Fix leak in CDB constructor (João Barbosa)
fd79ed6b2 Ensure backupwallet fails when attempting to backup to source file (Tomas van der Wansem)
d94fc336c scripted-diff: rename assert_raises_jsonrpc to assert_raises_rpc error (John Newbery)
623de0acb [tests] do not allow assert_raises_message to be called with JSONRPCException (John Newbery)
5b728c8e9 [tests] remove direct testing on JSONRPCException from individual test cases (John Newbery)

Pull request description:

Tree-SHA512: 9fdb5c47844a899271023d8d445f7fc728e3ad71916490cd9783464684967594b07cda05dd644b722bfcea9fade74d06cfc501e1a68abf118d6d03fbbf7d7707
v0.15.1rc1
2017-11-03 15:42:50 -07:00
Russell Yanofsky
3a6cdd459c Add test for multiwallet batch RPC calls
Tests bug reported in https://github.com/bitcoin/bitcoin/issues/11257

Github-Pull: #11277
Rebased-From: 4526d21e52
2017-11-03 10:07:59 -04:00
Russell Yanofsky
1c8c7f8af9 Add missing batch rpc calls to python coverage logs
Without this change, batch RPC calls are not included in coverage logs.

Github-Pull: #11277
Rebased-From: 74182f235c
2017-11-03 10:07:59 -04:00
Russell Yanofsky
1036c43fe5 Add missing multiwallet rpc calls to python coverage logs
This fixes a bug in coverage logging that's been around since the logging was
introduced.

Github-Pull: #11277
Rebased-From: 505530c6cf
2017-11-03 10:07:59 -04:00
Russell Yanofsky
2eea279fe6 Make AuthServiceProxy._batch method usable
Split off AuthServiceProxy.get_request method to make it easier to batch RPC
requests without duplicating code and remove leading underscore from _batch
method.

This does not change any existing behavior.

Github-Pull: #11277
Rebased-From: 9f67646f17
2017-11-03 10:07:59 -04:00
Russell Yanofsky
305f768242 Limit AuthServiceProxyWrapper.__getattr__ wrapping
Change AuthServiceProxyWrapper.__getattr__ to only wrap proxied attributes, not
real attributes. This way AuthServiceProxyWrapper can continue logging RPC
calls without complicating other object usages, and special case handling for
the .url property can be dropped.

Github-Pull: #11277
Rebased-From: e02007aade
2017-11-03 10:07:59 -04:00
Russell Yanofsky
70268454e8 Fix uninitialized URI in batch RPC requests
This fixes "Wallet file not specified" errors when making batch wallet RPC
calls with more than one wallet loaded. This issue was reported by
NicolasDorier <nicolas.dorier@gmail.com>
https://github.com/bitcoin/bitcoin/issues/11257

Request URI is not used for anything except multiwallet request dispatching, so
this change has no other effects.

Fixes #11257

Github-Pull: #11277
Rebased-From: edafc718ad
2017-11-03 10:07:59 -04:00
Jonas Schnelli
6372a75581 [Wallet] always show help-line of wallet encryption calls
Github-Pull: #11590
Rebased-From: 720d9e8fa1
2017-11-03 10:07:59 -04:00
Cory Fields
8195cb0d7f rpc: further constrain the libevent workaround
The bug was introduced in 2.1.6-beta, versions before that don't need the
workaround.

Github-Pull: #11593
Rebased-From: 97932cd268
2017-11-02 15:31:39 -04:00
Cory Fields
34153a7e4a rpc: work-around an upstream libevent bug
A rare race condition may trigger while awaiting the body of a message, see
upsteam commit 5ff8eb26371c4dc56f384b2de35bea2d87814779 for details.

This may fix some reported rpc hangs/crashes.

Github-Pull: #11593
Rebased-From: 6b58360f9b
2017-11-02 15:31:18 -04:00
Wladimir J. van der Laan
f224cbc3d8 build: Bump version to 0.15.1
Tree-SHA512: d998b31250208078414a27431d21b847592bdb1e4bd7eb1df6bee7f67671a4124dcaa2971ebef52304528080ab2d2ff6553b7d7138d948a364e64fc4e37dacd3
2017-11-02 20:26:37 +01:00
Suhas Daftuar
fc308a6cdb Add unit test for stale tip checking
Github-Pull: #11560
Rebased-From: 626291508c
2017-11-02 15:18:56 -04:00
João Barbosa
2ed0647ac1 Add CConnmanTest to mutate g_connman in tests
Github-Pull: #11560
Rebased-From: 83df25736e
2017-11-02 15:18:56 -04:00
Suhas Daftuar
a607a95d81 Connect to an extra outbound peer if our tip is stale
If our tip hasn't updated in a while, that may be because our peers are
not relaying blocks to us that we would consider valid. Allow connection
to an additional outbound peer in that circumstance.

Also, periodically check to see if we are exceeding our target number of
outbound peers, and disconnect the one which has least recently
announced a new block to us (choosing the newest such peer in the case
of tie).

Github-Pull: #11560
Rebased-From: ac7b37cd2b
2017-11-02 15:18:56 -04:00
Suhas Daftuar
459f2db425 Track tip update time and last new block announcement from each peer
Github-Pull: #11560
Rebased-From: db32a65897
2017-11-02 15:18:56 -04:00
Suhas Daftuar
49bf090185 net: Allow connecting to extra outbound peers
Github-Pull: #11560
Rebased-From: 2d4327db19
2017-11-02 15:18:56 -04:00
Matt Corallo
bb83fe1902 Add release notes describing blockmaxweight deprecation
Github-Pull: #11100
Rebased-From: 6f703e9bf1
2017-11-02 15:18:56 -04:00
Matt Corallo
4c82cea99b Use a sensible default for blockmaxweight
No sensible user will ever keep the default settings here, so not
having sensible defaults only serves to screw users who are
paying less attention, which makes for terrible defaults.

Github-Pull: #11100
Rebased-From: 3dc263c9b9
2017-11-02 15:18:56 -04:00
Matt Corallo
7871a7d3be Deprecate confusing blockmaxsize, fix getmininginfo output
* This removes block-size-limiting code in favor of GBT clients
  doing the limiting themselves (if at all).
* -blockmaxsize is deprecated and only used to calculate an implied
  blockmaxweight, addressing confusion from multiple users.
* getmininginfo's currentblocksize return value was returning
  garbage values, and has been removed, also removing a
  GetSerializeSize call in some block generation inner loops and
  potentially addressing some performance edge cases.

Github-Pull: #11100
Rebased-From: ba206d2c63
2017-11-02 15:18:56 -04:00
Suhas Daftuar
6baa317b5f Fix minchainwork test for 0.15 backport 2017-11-02 15:02:48 -04:00
Matt Corallo
55b7abfa8a Make p2p-acceptablock not an extended test
Github-Pull: #11531
Rebased-From: f3d4adfa6f
2017-11-02 13:22:25 -04:00
Matt Corallo
5bec7744d1 [qa] test that invalid blocks on an invalid chain get a disconnect
Github-Pull: #11531
Rebased-From: 00dcda60f6
2017-11-02 13:21:23 -04:00
Matt Corallo
92d6105c4e Reject headers building on invalid chains by tracking invalidity
This tracks the set of all known invalid-themselves blocks (ie
blocks which we attempted to connect but which were found to be
invalid). This is used to cheaply check if new headers build on an
invalid chain.

While we're at it we also resolve an edge-case in invalidateblock
on pruned nodes which results in them needing a reindex if they
fail to reorg.

Github-Pull: #11531
Rebased-From: 015a5258ad
2017-11-02 13:21:07 -04:00
Matt Corallo
51001d684b Accept unrequested blocks with work equal to our tip
This is a simple change that makes our accept requirements the
same as our request requirements, (ever so slightly) further
decoupling our consensus logic from our FindNextBlocksToDownload
logic in net_processing.

Github-Pull: #11531
Rebased-From: 932f118e6a
2017-11-02 13:20:53 -04:00
Matt Corallo
c6e4d0ce82 Stop always storing blocks from whitelisted peers
There is no reason to wish to store blocks on disk always just
because a peer is whitelisted. This appears to be a historical
quirk to avoid breaking things when the accept limits were added.

Github-Pull: #11531
Rebased-From: 3d9c70ca0f
2017-11-02 13:20:45 -04:00
Matt Corallo
e976c36ddf Rewrite p2p-acceptblock in preparation for slight behavior changes
Removes checking whitelisted behavior (which will be removed, the
difference in behavior here makes little sense) and no longer
requires that blocks at the same work as our tip be dropped if not
requested (in part because we *do* request those blocks).

Github-Pull: #11531
Rebased-From: 3b4ac43bc3
2017-11-02 13:20:38 -04:00
practicalswift
ec8dedff46 net: Add missing lock in ProcessHeadersMessage(...)
Reading the variable mapBlockIndex requires holding the mutex cs_main.

The new "Disconnect outbound peers relaying invalid headers" code
added in commit 37886d5e2f and merged
as part of #11568 two days ago did not lock cs_main prior to accessing
mapBlockIndex.

Github-Pull: #11578
Rebased-From: 2530bf27b7
2017-11-02 13:20:18 -04:00
Suhas Daftuar
59b210d9a7 Disconnect outbound peers relaying invalid headers
Github-Pull: #11568
Rebased-From: 37886d5e2f
2017-11-02 13:19:57 -04:00
Suhas Daftuar
fc966bbd2b moveonly: factor out headers processing into separate function
ProcessMessages will now return earlier when processing headers
messages, rather than continuing on (and do nothing).

Github-Pull: #11568
Rebased-From: 4637f18522
2017-11-02 13:19:47 -04:00
Suhas Daftuar
e3272242e2 Add unit test for outbound peer eviction
Github-Pull: #11490
Rebased-From: e065249c01
2017-11-02 13:18:44 -04:00
Suhas Daftuar
9961abf9e4 Permit disconnection of outbound peers on bad/slow chains
Currently we have no rotation of outbound peers.  If an outbound peer
stops serving us blocks, or is on a consensus-incompatible chain with
less work than our tip (but otherwise valid headers), then we will never
disconnect that peer, even though that peer is using one of our 8
outbound connection slots.  Because we rely on our outbound peers to
find an honest node in order to reach consensus, allowing an
incompatible peer to occupy one of those slots is undesirable,
particularly if it is possible for all such slots to be occupied by such
peers.

Protect against this by always checking to see if a peer's best known
block has less work than our tip, and if so, set a 20 minute timeout --
if the peer is still not known to have caught up to a chain with as much
work as ours after 20 minutes, then send a single getheaders message,
wait 2 more minutes, and if a better header hasn't been received by then,
disconnect that peer.

Note:

- we do not require that our peer sync to the same tip as ours, just an
equal or greater work tip.  (Doing otherwise would risk partitioning the
network in the event of a chain split, and is also unnecessary.)

- we pick 4 of our outbound peers and do not subject them to this logic,
to be more conservative. We don't wish to permit temporary network
issues (or an attacker) to excessively disrupt network topology.

Github-Pull: #11490
Rebased-From: 5a6d00c6de
2017-11-02 13:18:34 -04:00
Suhas Daftuar
bf191a7183 Disconnecting from bad outbound peers in IBD
When in IBD, we'd like to use all our outbound peers to help us
sync the chain.  Disconnect any outbound peers whose headers have
insufficient work.

Github-Pull: #11490
Rebased-From: c60fd71a65
2017-11-02 13:18:23 -04:00
MeshCollider
d570aa4290 Fix uninitialized g_connman crash in Shutdown()
Github-Pull: #11326
Rebased-From: 77939f27f7
2017-11-02 13:17:58 -04:00
Cory Fields
0a5477c7e3 net: stop both net/net_processing before destroying them
This should avoid either attempting to use an invalid reference/pointer to the
other.

Github-Pull: #10756
Rebased-From: 2525b972af
2017-11-02 13:16:57 -04:00
Cory Fields
b4136f21cf net: drop unused connman param
The copy in PeerLogicValidation can be used instead.

Github-Pull: #10756
Rebased-From: 80e2e9d0ce
2017-11-02 13:16:50 -04:00
Cory Fields
dc897e53d8 net: use an interface class rather than signals for message processing
Drop boost signals in favor of a stateful class. This will allow the message
processing loop to actually move to net_processing in a future step.

Github-Pull: #10756
Rebased-From: 8ad663c1fa
2017-11-02 13:16:28 -04:00
Cory Fields
8aee55af3d net: pass CConnman via pointer rather than reference
There are a few too many edge-cases here to make this a scripted diff.

The following commits will move a few functions into PeerLogicValidation, where
the local connman instance can be used. This change prepares for that usage.

Github-Pull: #10756
Rebased-From: 28f11e9406
2017-11-02 13:15:02 -04:00
Matt Corallo
6f279652b0 Rename fAddnode to a more-descriptive "manual_connection"
Github-Pull: #11456
Rebased-From: 57edc0b0c8
2017-11-02 13:11:54 -04:00
Suhas Daftuar
ffb6ea4e5e Add comment explaining forced processing of compact blocks
Github-Pull: #11458
Rebased-From: 01b52cedd4
2017-11-02 13:09:16 -04:00
Suhas Daftuar
2df65eeb98 qa: add test for minchainwork use in acceptblock
Github-Pull: #11458
Rebased-From: 08fd822771
2017-11-02 13:09:03 -04:00