Commit graph

2141 commits

Author SHA1 Message Date
Adam Jonas
010eed3ce0 doc: warn that incoming conns are unlikely when not using default ports 2020-12-16 09:24:03 -05:00
Wladimir J. van der Laan
cd03513dc2 init: Signal-safe instant shutdown
Replace the 200ms polling loop with a faster and more efficient waiting
operation.

This was tried a few times before, but given up every time because
solutions use a condition variable which is not safe for use in signals
as they need to be reentrant.

On UNIX-ish OSes, use a safe way: a pipe. When shutdown is requested
write a dummy byte to the pipe. Waiting for shutdown is a matter of a
blocking read from the pipe.

On Windows, there are no signals so using a condition variable is safe.
2020-12-15 17:21:06 +01:00
fanquake
f805933e70
init: set nMaxOutboundLimit connection option directly
DEFAULT_MAX_UPLOAD_TARGET is a compile time constant.
2020-12-13 11:12:05 +08:00
fanquake
173d0d35f1
net: remove nMaxOutboundTimeframe from connection options
It's not actually possible to change this value, so remove the
indirection of it being a conn option.

DEFAULT_MAX_UPLOAD_TIMEFRAME is a compile time constant.
2020-12-13 11:10:40 +08:00
Suhas Daftuar
91d61952a8 Simplify and clarify extra outbound peer counting 2020-12-10 08:41:57 -05:00
John Newbery
34e33ab859 Remove g_relay_txes
Also remove vestigial commend in init.cpp
2020-12-09 18:13:37 +00:00
John Newbery
68334b3944 [net processing] Add m_ignores_incoming_txs to PeerManager and use internally 2020-12-09 18:13:37 +00:00
John Newbery
4d510aa055 [init] Use MakeUnique<> to construct peerman 2020-12-09 18:10:38 +00:00
MarcoFalke
03b1db6114
Merge #18766: Disable fee estimation in blocksonly mode (by removing the fee estimates global)
4e28753f60 feestimator: encapsulate estimation file logic (Antoine Poinsot)
e8ea6ad9c1 init: don't create a CBlockPolicyEstimator if we don't relay transactions (Antoine Poinsot)
86ff2cf202 Remove the remaining fee estimation globals (Antoine Poinsot)
03bfeee957 interface: remove unused estimateSmartFee method from node (Antoine Poinsot)

Pull request description:

  If the `blocksonly` mode is turned on after running with transaction
  relay enabled for a while, the fee estimation will serve outdated data
  to both the internal wallet and to external applications that might be
  feerate-sensitive and make use of `estimatesmartfee` (for example a
  Lightning Network node).

  This has already caused issues (for example https://github.com/bitcoin/bitcoin/issues/16840 (C-lightning), or https://github.com/lightningnetwork/lnd/issues/2562 (LND)) and it seems prudent to fail rather than to give inaccurate values.

  This fixes #16840, and closes #16890 which tried to fix the symptoms (RPC) but not the cause as mentioned by sdaftuar :
  > If this is a substantial problem, then I would think we should take action to protect our own wallet users as well (rather than hide the results of what our fee estimation would do!).

ACKs for top commit:
  MarcoFalke:
    re-ACK 4e28753f60 👋
  jnewbery:
    utACK 4e28753f60

Tree-SHA512: c869cf03b86d8194002970bbc84662dae76874967949b9be0d9a4511a1eabcb1627c38aca3154da9dcece1a4c49ec02bd4f9fcca2ec310986e07904559e63ba8
2020-12-07 12:59:48 +01:00
practicalswift
12dcdaaa54 Don't make "in" parameters look like "out"/"in-out" parameters: pass by ref to const instead of ref to non-const 2020-12-06 00:22:40 +00:00
Antoine Poinsot
4e28753f60
feestimator: encapsulate estimation file logic
This moves the fee_estimates file management to the CBlockPolicyEstimator
Flush() method.

Co-authored-by: John Newbery <john@johnnewbery.com>
Signed-off-by: Antoine Poinsot <darosior@protonmail.com>
2020-12-03 12:56:37 +01:00
Antoine Poinsot
e8ea6ad9c1
init: don't create a CBlockPolicyEstimator if we don't relay transactions
Signed-off-by: Antoine Poinsot <darosior@protonmail.com>
2020-12-03 12:56:37 +01:00
Antoine Poinsot
86ff2cf202
Remove the remaining fee estimation globals
This moves the CBlockPolicyEstimator to the NodeContext, which get rids
of two globals and allows us to conditionally create the
CBlockPolicyEstimator (and to remove a circular dep).

Signed-off-by: Antoine Poinsot <darosior@protonmail.com>
2020-12-03 12:56:37 +01:00
Andrew Poelstra
631d208e8e Merge bcd142e479 into merged_master (Bitcoin PR #20285) 2020-12-02 13:05:54 +00:00
MarcoFalke
cd720337fe
Merge #20222: refactor: CTxMempool constructor clean up
f15e780b9e refactor: Clean up CTxMemPool initializer list (Elle Mouton)
e3310692d0 refactor: Make CTxMemPool::m_check_ratio a const and a constructor argument (Elle Mouton)
9d4b4b2c2c refactor: Avoid double to int cast for nCheckFrequency (Elle Mouton)

Pull request description:

  This PR cleans up the CTxMemPool interface by including the ratio used to determine when a mempool sanity check should run in the constructor of CTxMempool instead of using nCheckFrequency which required a cast from a double to a uint32_t. Since nCheckFrequency (now called m_check_ratio) is set in the constructor and only every read from there after, it can be turned into a const and no longer needs to be guarded by the 'cs' lock.

  Since nCheckFrequency/m_check_ratio no longer needs to lock the 'cs' mutux, mutex lock line in the "CTxMempool::check" function can be moved below where the m_check_ratio variable is checked. Since the variable is 0 by default (meaning that "CTxMempool::check" will most likely not run its logic) this saves us from unnecessarily grabbing the lock.

ACKs for top commit:
  jnewbery:
    utACK f15e780b9e
  MarcoFalke:
    ACK f15e780b9e 👘
  glozow:
    utACK https://github.com/bitcoin/bitcoin/pull/20222/commits/f15e780b9e57554c723bc02aa41150ecf3e3a8c9
  theStack:
    Code Review ACK f15e780b9e

Tree-SHA512: d83f3b5311ca128847b621e5e999c7e1bf0f4e6261d4cc090fb13e229a0f7eecd66ad997f654f50a838baf708d1515740aa3bffc244909a001d01fd5ae398b68
2020-12-01 10:02:56 +01:00
Andrew Poelstra
77c3300ae3 Merge df2129a234 into merged_master (Bitcoin PR #19991)
I had to make up an onion service target port for Liquid and for our custom
params, so I chose 37041 and 37040 to roughly match how signet just adds
30000 to its normal port.
2020-11-30 04:44:21 +00:00
Andrew Poelstra
e5875a75bc Merge 9fc2f011ba into merged_master (Bitcoin PR #20048) 2020-11-30 03:46:23 +00:00
Andrew Poelstra
86c430b852 Merge 3487e421a7 into merged_master (Bitcoin PR #20004) 2020-11-30 03:25:50 +00:00
Andrew Poelstra
c364bcefad Merge 9e6f56f6ea into merged_master (Bitcoin PR #19984) 2020-11-30 00:30:38 +00:00
Andrew Poelstra
64bfdd9af8 Merge 8aa6178961 into merged_master (Bitcoin PR #20003) 2020-11-30 00:24:10 +00:00
Andrew Poelstra
1f47015ba6 Merge 5db44c740e into merged_master (Bitcoin PR #20014) 2020-11-29 23:32:59 +00:00
Andrew Poelstra
e20126cae4 Merge 2552702000 into merged_master (Bitcoin PR #15367) 2020-11-29 23:02:09 +00:00
Andrew Poelstra
d105732185 Merge ec9b28e089 into merged_master (Elements PR #910) 2020-11-29 22:55:33 +00:00
Andrew Poelstra
5f5f4279ed Merge 1b313cacc9 into merged_master (Bitcoin PR #19927) 2020-11-29 21:07:46 +00:00
Andrew Poelstra
7a8f77d7ad Merge 9e217f5a6f into merged_master (Bitcoin PR #19572) 2020-11-29 19:44:31 +00:00
Andrew Poelstra
3a620fbb0a Merge 62e3eb9888 into merged_master (Bitcoin PR #19241)
This caused a segfault because we have no checkpoints. Added a NULL check
which jnewbery suggested on the original PR, but for some reason didn't
get in.
2020-11-29 05:16:14 +00:00
Andrew Poelstra
b657dd4a3a Merge 147d50d63e into merged_master (Bitcoin PR #19791) 2020-11-29 02:07:46 +00:00
Andrew Poelstra
2a0cf12ecc Merge 07087051af into merged_master (Bitcoin PR #19556)
Added a method testPeginClaimAcceptance to interfaces::CChain. It is not clear
to me that this is meaningfully different from the existing method broadcastTransaction
(with the `relay` flag set to false so it doesn't actually broadcast), except
that this method returns the TxValidationState, which we display to the user
in the RPC error. Worth revisiting this.

Another nonobvious change was replacing a block of mempool-searching logic
in wallet/rpcwallet.cpp with the single line `pwallet->chain().findCoins(coins)`.
This I stole from the current state of upstream #17211, our favorite in-progress
PR from which the original logic came.
2020-11-29 01:43:20 +00:00
Andrew Poelstra
30b510767b Merge c157a50694 into merged_master (Bitcoin PR #19840) 2020-11-28 21:07:08 +00:00
Andrew Poelstra
4087c88a7e Merge 269a7ccb27 into merged_master (Bitcoin PR #19099) 2020-11-28 17:53:38 +00:00
Andrew Poelstra
a0c37112ef Merge 5c910a6b7a into merged_master (Bitcoin PR #19826) 2020-11-28 17:34:40 +00:00
Andrew Poelstra
ec3c13988a Merge 6a2ba62685 into merged_master (Bitcoin PR #19779) 2020-11-28 13:07:39 +00:00
Andrew Poelstra
5dd8b96340 Merge 4fefd80f08 into merged_master (Bitcoin PR #19704) 2020-11-28 04:18:46 +00:00
Andrew Poelstra
1aea27d291 Merge b4d0366b47 into merged_master (Bitcoin PR #19070) 2020-11-27 17:48:36 +00:00
Andrew Poelstra
b2c4c2b2b4 Merge 1052b09031 into merged_master (Bitcoin PR #19011) 2020-11-27 17:29:41 +00:00
Andrew Poelstra
f92a3d1ed4 Merge 6ea7348122 into merged_master (Bitcoin PR #19638) 2020-11-27 03:15:08 +00:00
Andrew Poelstra
59aa4e1fba Merge ad2952d17a into merged_master (Bitcoin PR #19604) 2020-11-26 22:45:20 +00:00
Andrew Poelstra
2942044881 Merge 62d137ac3b into merged_master (Bitcoin PR #19561) 2020-11-26 22:20:40 +00:00
Andrew Poelstra
12f11f8f70 Merge 2f71a1ea35 into merged_master (Bitcoin PR #18637) 2020-11-26 20:30:20 +00:00
Andrew Poelstra
e377f4f773 Merge f4cfa6d019 into merged_master (Bitcoin PR #15935) 2020-11-26 18:11:36 +00:00
Andrew Poelstra
db549ccf6f Merge 6ee36a263c into merged_master (Bitcoin PR #19473) 2020-11-26 17:18:17 +00:00
Andrew Poelstra
ed9bb2f2bb Merge 2c0c3f8e8c into merged_master (Bitcoin PR #19217) 2020-11-26 14:59:40 +00:00
practicalswift
4848e71107 scripted-diff: Use [[nodiscard]] (C++17) instead of NODISCARD
-BEGIN VERIFY SCRIPT-
sed -i "s/NODISCARD/[[nodiscard]]/g" $(git grep -l "NODISCARD" ":(exclude)src/bench/nanobench.h" ":(exclude)src/attributes.h")
-END VERIFY SCRIPT-
2020-11-26 09:05:59 +00:00
Andrew Poelstra
0fb616ece5 Merge 834ac4c0f5 into merged_master (Bitcoin PR #19323) 2020-11-26 03:36:32 +00:00
Andrew Poelstra
10eade5ba9 Merge b93c4244b9 into merged_master (Bitcoin PR #19464) 2020-11-26 02:44:00 +00:00
Andrew Poelstra
52c243844d Merge ca055885c6 into merged_master (Bitcoin PR #19474) 2020-11-26 01:09:23 +00:00
Andrew Poelstra
874de6a557 Merge cc9d09e73d into merged_master (Bitcoin PR #19191) 2020-11-26 01:09:22 +00:00
Andrew Poelstra
ceefa62cdb Merge abdfd2d0e3 into merged_master (Bitcoin PR #19219) 2020-11-26 01:09:20 +00:00
Andrew Poelstra
7fabb1de9a Merge 5ec19df687 into merged_master (Bitcoin PR #19277) 2020-11-26 01:09:19 +00:00
Andrew Poelstra
8e770d3f21 Merge 915ac8a861 into merged_master (Bitcoin PR #19413) 2020-11-26 01:09:19 +00:00