Commit Graph

22258 Commits

Author SHA1 Message Date
PastaPastaPasta
2fbf76368b
Refactor: minor misc coinjoin refactoring (#5053)
* refactor: add more [[nodiscard]]

* refactor: drop unneeded .get()

* refactor: use functional style int cast

* refactor: use std::numeric_limits::max()

* refactor: use GetRand instead of GetRandInt
2022-10-19 21:43:33 +03:00
PastaPastaPasta
ad660554aa
refactor/fix: use the shared_ptr<CWallet> where possible instead of getting the underlying pointer (#5052)
* refactor/fix: use the shared_ptr<CWallet> where possible instead of getting the underlying pointer

This is also a fix in regards to the rpcevo.cpp file where the old code could result in a dangling pointer that could result in a crash as the shared_ptr we get back is discarded while the underlying ptr is still being used

* refactor: remove unneeded line

Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>

Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2022-10-19 21:42:40 +03:00
PastaPastaPasta
f4bb06985f
refactor: use std::optional in some spork code (#4736)
* refactor: use std::optional in some spork code

* fix: return std::nullopt
2022-10-19 21:37:28 +03:00
PastaPastaPasta
ad88fab80d
test/refactor: upgrade to cppcheck 2.9 and fix warnings (#5049)
* refactor: resolve warnings thrown by cppcheck 2.9

* test: upgrade cppcheck to version 2.9
2022-10-18 13:24:00 +03:00
PastaPastaPasta
0a61b95d44
chore: bump version to 18.2.0 (#5048) 2022-10-17 23:59:08 +03:00
UdjinM6
3e2a7bbb7f
Merge pull request #5047 from UdjinM6/merge_master_18.1.0
Merge master 18.1.0 back into develop
2022-10-17 23:56:51 +03:00
UdjinM6
3ff6bd13df
Merge branch 'master' into merge_master_18.1.0 2022-10-17 23:47:08 +03:00
PastaPastaPasta
ba7d5dc6c2
Merge pull request #4877 from Munkybooty/backports-0.20-pr5
Backports 0.20 pr5
2022-10-17 15:42:57 -05:00
MeshCollider
ccfe4b76c6 Merge #16239: wallet/rpc: follow-up clean-up/fixes to avoid_reuse
71d0344cf25d3aaf60112c5248198c444bc98105 docs: release note wording (Karl-Johan Alm)
3d2ff379131a01e4e9f9648b150e806104a23795 wallet/rpc: use static help text (Karl-Johan Alm)
53c3c1ea9e20f881c843a9219e48cec202e962f8 wallet/rpc/getbalances: add entry for 'mine.used' balance in results (Karl-Johan Alm)

Pull request description:

  This addresses a few remaining issues pointed out in #13756:

  * First commit addresses https://github.com/bitcoin/bitcoin/pull/13756#discussion_r284907468
  * Second commit addresses https://github.com/bitcoin/bitcoin/pull/13756#discussion_r294868973

  Ping jnewbery and achow101 as they pointed out these issues.

ACKs for commit 71d034:
  jnewbery:
    ACK 71d0344cf25d3aaf60112c5248198c444bc98105
  meshcollider:
    re-utACK 71d0344cf2

Tree-SHA512: 5e28822af0574ad07dbbed21aa2fe7866bf5770b4c0a1c150ad0da8af3152bcfb7170330a7497fa500326c594740ecf63733cf58325821e2811d7b911d5783a0
2022-10-17 15:41:14 -05:00
Wladimir J. van der Laan
078094b2aa Merge #15930: rpc: Add balances RPC
facfb4111d14a3b06c46690a2cca7ca91cea8a96 rpc: Deprecate getunconfirmedbalance and getwalletinfo balances (MarcoFalke)
999931cf8f167c7547f1015cdf05437a460c27f0 rpc: Add getbalances RPC (MarcoFalke)
fad13e925e197163a942f3f0d1ba2c95a2b65a56 rpcwallet: Make helper methods const on CWallet (MarcoFalke)
fad40ec9151248c6e8225e14980424f581d23e02 wallet: Use IsValidNumArgs in getwalletinfo rpc (MarcoFalke)

Pull request description:

  This exposes the `CWallet::GetBalance()` struct over RPC.

  In the future, incorrectly named rpcs such as `getunconfirmedbalance` or rpcs redundant to this such as `getbalance` could be removed.

ACKs for commit facfb4:
  jnewbery:
    utACK facfb4111d14a3b06c46690a2cca7ca91cea8a96

Tree-SHA512: 1f54fedce55df9a8ea82d2b6265354b39a956072621876ebaee2355aac0e23c7b64340c3279502415598c095858529e18b50789be956250aafda1cd3a8d948a5
2022-10-17 15:41:14 -05:00
Samuel Dobson
ad68327f38 Merge #17889: wallet: Improve CWallet:MarkDestinationsDirty
2b1641492fbf81e2c5a95f3e580811ca8700adc5 wallet: Improve CWallet:MarkDestinationsDirty (João Barbosa)

Pull request description:

  Improve `CWallet:MarkDestinationsDirty` by skipping transactions that already have the cache invalidated. Skipping a transaction avoids at worst case extracting all output destinations.

ACKs for top commit:
  meshcollider:
    re-utACK 2b1641492fbf81e2c5a95f3e580811ca8700adc5

Tree-SHA512: 479dc2dde4b653b856e3d6a0c59a34fe33e963eb131a2d88552a8b30471b8725a087888fe5d7db6e4ee19b74072fe64441497f033be7d1931637f756e0d8fef5
2022-10-17 15:41:14 -05:00
Samuel Dobson
3b5b8d0a94 Merge #17843: wallet: Reset reused transactions cache
6fc554f591d8ea1681b8bb25aa12da8d4f023f66 wallet: Reset reused transactions cache (Fabian Jahr)

Pull request description:

  Fixes #17603 (together with #17824)

  `getbalances` is using the cache within `GetAvailableCredit` under certain conditions [here](35fff5be60/src/wallet/wallet.cpp (L1826)). For a wallet with `avoid_reuse` activated this can lead to inconsistent reporting of `used` transactions/balances between `getbalances` and `listunspent` as pointed out in #17603. When an address is reused before the first transaction is spending from this address, the cache is not updated even after the transaction is sent. This means the remaining outputs at the reused address are not showing up as `used` in `getbalances`.

  With this change, any newly incoming transaction belonging to the wallet marks all the other outputs at the same address as dirty.

ACKs for top commit:
  kallewoof:
    Code review re-ACK 6fc554f591d8ea1681b8bb25aa12da8d4f023f66
  promag:
    ACK 6fc554f591d8ea1681b8bb25aa12da8d4f023f66.
  achow101:
    Re-ACK 6fc554f591d8ea1681b8bb25aa12da8d4f023f66
  meshcollider:
    Code review ACK 6fc554f591d8ea1681b8bb25aa12da8d4f023f66

Tree-SHA512: c4cad2c752176d16d77b4a4202291d20baddf9f27250896a40274d74a6945e0f6b34be04c2f9b1b2e756d3ac669b794969df8f82a98e0b16f10e92f276649ea2
2022-10-17 15:41:14 -05:00
MarcoFalke
44fec4395a Merge #17502: test: add unit test for non-standard bare multisig txs
1bb5d517aa616c1d5b5801d2ea36a2de5fb61eba test: add unit test for non-standard bare multisig txs (Sebastian Falbesoner)

Pull request description:

  Approaches another missing unit test of issue #17394: Checks that the function `IsStandardTx()` returns rejection reason `"bare-multisig"` if any one of the outputs' scriptPubKey has bare multisignature format (i.e. `M <PubKey1> <PubKey2> ... <PubKeyN> N OP_CHECKSIG`, not P2SH!) and the policy flag `fIsBareMultisigStd` is set to false.

ACKs for top commit:
  instagibbs:
    utACK 1bb5d517aa

Tree-SHA512: d7c95e35da16520d6dcd2b4278e2426fedd13f68d1f23c90e85e929774e123fbfcfbccc26df6ad1c0dd61780896fa4b4b3d4e8280c647bb06df2bfcf2ba572fb
2022-10-17 15:41:14 -05:00
fanquake
10d3849271 Merge #17532: test: add functional test for non-standard txs with too large scriptSig
8f2d7737cc236b6122f30e31856eb3181960fba1 test: add functional test for non-standard txs with too large scriptSig (Sebastian Falbesoner)

Pull request description:

  Approaches another missing functional test of issue #17394 (counterpart to unit test in PR #17480, Commit 5e8a56348b): A transaction is rejected by the mempool with reason `"scriptsig-size"` if any of the inputs' scriptSig is larger than 1650 bytes.

ACKs for top commit:
  MarcoFalke:
    ACK 8f2d7737cc236b6122f30e31856eb3181960fba1
  instagibbs:
    ACK 8f2d7737cc

Tree-SHA512: 7a45b8a4181158be3e3b91756783ddf032f132ca8780dc35fac91b2df2149268f784d28ac56005135c4d86a357c57805c5a54b8155f0d049932844b18dc03992
2022-10-17 15:41:14 -05:00
MarcoFalke
ed70a2fe78 Merge #17480: test: add unit test for non-standard txs with too large scriptSig
5e8a56348b5e1026e9ddcae0b2fa2a68faf4439e test: add unit test for non-standard txs with too large scriptSig (Sebastian Falbesoner)

Pull request description:

  Approaches the first missing test of issue #17394: Checks that the function `IsStandardTx()` returns rejection reason `"scriptsig-size"` if any one the inputs' scriptSig is larger than 1650 bytes.

ACKs for top commit:
  MarcoFalke:
    ACK 5e8a56348b5e1026e9ddcae0b2fa2a68faf4439e
  instagibbs:
    ACK 5e8a56348b

Tree-SHA512: 79977b12ddea9438a37cefdbb48cc551e4ad02a8ccfaa2d2837ced9f3a185e2e07cc366c243b9e3c7736245e90e315d7b4110efc6b440c63dbef7ee2c9d78a73
2022-10-17 15:41:14 -05:00
Wladimir J. van der Laan
f94a833add Merge #17945: doc: Fix doxygen errors
297e09855793feb94c3229ed989bef8b1eac864e Fix doxygen errors (Ben Woosley)

Pull request description:

  These are all the remaining errors identified via -Werror=documentation, e.g.:
  ```
    ./rpc/rawtransaction_util.h:31:13: error: parameter 'prevTxs' not found in the function declaration [-Werror,-Wdocumentation]
      * @param  prevTxs       Array of previous txns outputs that tx depends on but may not yet be in the block chain
                ^~~~~~~
    ./rpc/rawtransaction_util.h:31:13: note: did you mean 'prevTxsUnival'?
      * @param  prevTxs       Array of previous txns outputs that tx depends on but may not yet be in the block chain
                ^~~~~~~
                prevTxsUnival

    netbase.cpp:766:11: error: parameter 'outProxyConnectionFailed[out]' not found in the function declaration [-Werror,-Wdocumentation]
     * @param outProxyConnectionFailed[out] Whether or not the connection to the
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    netbase.cpp:766:11: note: did you mean 'outProxyConnectionFailed'?
     * @param outProxyConnectionFailed[out] Whether or not the connection to the
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              outProxyConnectionFailed
  ```

  You can use this to run with `-Wdocumentation` yourself: #14920

ACKs for top commit:
  laanwj:
    ACK 297e09855793feb94c3229ed989bef8b1eac864e

Tree-SHA512: a232d893b170873d923e77fa56c56a6567e7fd120b5af1f52cfeeae1093eec55621604cc80a523678f6fedc8bbb31228c4aa8dc2a630ce9ffc91525988522af7
2022-10-17 15:41:14 -05:00
Wladimir J. van der Laan
8c6fb5622d Merge #17823: scripts: Read suspicious hosts from a file instead of hardcoding
e1c582cbaa4c094d204da34c3b1fdd0d4c557519 contrib: makeseeds: Read suspicious hosts from a file instead of hardcoding (Sanjay K)

Pull request description:

  referring to: https://github.com/bitcoin/bitcoin/issues/17020
  good first issue: reading SUSPICIOUS_HOSTS from a file.
  I haven't changed the base hosts that were included in the original source, just made it readable from a file.

ACKs for top commit:
  practicalswift:
    ACK e1c582cbaa4c094d204da34c3b1fdd0d4c557519 -- diff looks correct

Tree-SHA512: 18684abc1c02cf52d63f6f6ecd98df01a9574a7c470524c37e152296504e2e3ffbabd6f3208214b62031512aeb809a6d37446af82c9f480ff14ce4c42c98e7c2
2022-10-17 15:41:14 -05:00
MarcoFalke
038eae1b4b Merge #17541: test: add functional test for non-standard bare multisig txs
1be0b1fb2adcf95d76f879195564c0bf84162e31 test: add functional test for non-standard bare multisig txs (Sebastian Falbesoner)

Pull request description:

  Approaches another missing functional test of issue #17394 (counterpart to unit test in PR #17502): A transaction is rejected by the mempool with reason `"bare-multisig"` if any of the outputs' scriptPubKey has bare multisig format (`M <PubKey1> <PubKey2> ... <PubKeyN> N OP_CHECKSIG`) and bitcoind is started with the argument `-permitbaremultisig=0`.

ACKs for top commit:
  instagibbs:
    utACK 1be0b1fb2a
  kristapsk:
    ACK 1be0b1fb2adcf95d76f879195564c0bf84162e31

Tree-SHA512: 2cade68c4454029b62278b38d0f137c2605a0e4450c435cdda2833667234edd4406f017ed12fa8df9730618654acbaeb68b16dcabb9f5aa84bad9f1c76c6d476
2022-10-17 15:41:14 -05:00
Wladimir J. van der Laan
6fb0941ca7 Merge #17910: build: remove double LIBBITCOIN_SERVER linking
831e1220bc151b1016412359775406b34cb8f52c build: remove double LIBBITCOIN_SERVER linking (fanquake)

Pull request description:

  Seems that this is no longer required. Have tested building on macOS and Debian.

ACKs for top commit:
  promag:
    ACK 831e1220bc151b1016412359775406b34cb8f52c.
  practicalswift:
    ACK 831e1220bc151b1016412359775406b34cb8f52c
  laanwj:
    ACK 831e1220bc151b1016412359775406b34cb8f52c

Tree-SHA512: d226d9fa0292189fae7e2af14781a511c3633f1352324f19ae642e941d06c34e2abf8b1df97d2330d76dba6024a93d8d341e02cc4882d7066f97e82585631fe1
2022-10-17 15:41:14 -05:00
MarcoFalke
f181b0284a Merge #16851: Continue relaying transactions after they expire from mapRelay
168b781fe7f3f13b24c52a151f36de4cdd0a340a Continue relaying transactions after they expire from mapRelay (Anthony Towns)

Pull request description:

  This change allows peers to request transactions even after they've expired from mapRelay and even if they're not doing mempool requests. This is intended to allow for CPFP of old transactions -- if parent tx P wasn't relayed due to low fees, then a higher fee rate child C is relayed, peers will currently request the parent P, but we prior to this patch, we will not relay it due to it not being in mapRelay.

ACKs for top commit:
  MarcoFalke:
    re-ACK 168b781fe7f3f13b24c52a151f36de4cdd0a340a (only change is comment fixup)
  sdaftuar:
    re-ACK 168b781fe7f3f13b24c52a151f36de4cdd0a340a
  sipa:
    ACK 168b781fe7f3f13b24c52a151f36de4cdd0a340a

Tree-SHA512: b206666dd1450cd0a161ae55fd1a7eda2c3d226842ba27d91fe463b551fd924b65b92551b14d6786692e15cf9a9a989666550dfc980b48ab0f8d4ca305bc7762
2022-10-17 15:41:14 -05:00
MarcoFalke
7d687f916d Partial Merge #17517: ci: Bump to clang-8 for asan build to avoid segfaults on ppc64le
fa40e48c50d8ccf42ce5e66c12390e2ed4b60e75 ci: Remove unparseable lines from supp file for old xenial clang tsan (MarcoFalke)
fa1bfc476c9208a4c412c8ca74d05f52bb47766f ci: ubsan report_error_type=1 and add suppressions (MarcoFalke)
fa69cef13e5aab8264339eb3d50a9e89d59efd87 test: Print stderr when subprocess fails (MarcoFalke)
2222c305866a77065ab5be24c1c252bae252bb59 test: Use char instead of unsigned char (MarcoFalke)
faa8023ce9a47b282e1fac3ca8b3a7bb0042935a ci: Bump to clang-8 for asan build to avoid segfaults on ppc64le (MarcoFalke)

Pull request description:

  Use clang-8 instead of default clang (which is clang-6 on Bionic) to avoid spurious segfaults when running the ci system on ppc64le

ACKs for top commit:
  practicalswift:
    ACK fa40e48c50d8ccf42ce5e66c12390e2ed4b60e75 assuming Travis is happy -- diff looks correct :)

Tree-SHA512: f4f26232d3a0ef38da245869340f723d279a3db9823befbc735fb5a00024dae041c7306d7ae55d2488e6f86aa96cdea155b007aefb561fba505141e8dbc717dc
2022-10-17 15:41:14 -05:00
UdjinM6
b6e4815196
Merge branch 'v18.1.x' 2022-10-17 23:10:50 +03:00
UdjinM6
a02f25826e
Revert "Merge pull request #5029 from PastaPastaPasta/backport/18.0.2-backports"
This reverts commit 4d4ebfa7e3, reversing
changes made to 75298fce5e.
2022-10-17 23:10:31 +03:00
UdjinM6
007e24eb50
Merge pull request #5046 from PastaPastaPasta/release/v18.1.0
release: release notes and bumps for v18.1.0 release
2022-10-17 19:53:30 +03:00
UdjinM6
47ab151ed5
fix(gui): Fix crashes when trying to run dash-qt with --disablewallet (#5041)
* fix(gui): Fix crashes when trying to run `dash-qt` with `--disablewallet`

* use enableWallet
2022-10-17 11:31:27 -05:00
Oleg Girko
0b162ff599
fix(build): Fix incorrect type conversion (#5037)
It's incorrect to convert between different enum classes using
initialisation.
However, it's OK to convert between different enum classes using the
same underlying type using static_cast.

Signed-off-by: Oleg Girko <ol@infoserver.lv>

Signed-off-by: Oleg Girko <ol@infoserver.lv>
Co-authored-by: Oleg Girko <ol@infoserver.lv>
2022-10-17 11:31:27 -05:00
pasta
d8991c7f3d
docs: write release notes 2022-10-17 11:31:26 -05:00
PastaPastaPasta
5260ebf525
Merge pull request #4919 from kittywhiskers/bdb3
backport: bitcoin#15454, #16681, #16798, #16900, #18727, #19619, #20034, #20581, partial #17371, #18115 (berkeley db refactoring: part 3)
2022-10-17 10:23:33 -05:00
UdjinM6
1be9ae4986
docs: archive 18.0.2 release notes 2022-10-17 09:45:04 -05:00
UdjinM6
6e8d6aab63
Merge pull request #5040 from UdjinM6/merge_master_18.0.2
Merge master 18.0.2 back into develop
2022-10-17 09:45:03 -05:00
pasta
ae2f9d7e6b
chore: set VERSION_IS_RELEASE to true 2022-10-17 10:30:35 +03:00
pasta
d784277b86
chore: bump nMinimumChainWork and defaultAssumeValid for mainnet and testnet 2022-10-17 10:30:35 +03:00
Kittywhiskers Van Gogh
f27ef79e4c merge bitcoin#20186: Make -wallet setting not create wallets
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2022-10-17 08:03:13 +05:30
Kittywhiskers Van Gogh
e8bf39f2dc merge bitcoin#19967: Replace (dis)?connect_nodes globals with TestFramework methods
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2022-10-17 08:03:12 +05:30
Kittywhiskers Van Gogh
c4ec55f807 merge bitcoin#19198: Check that peers with forcerelay permission are not asked to feefilter 2022-10-17 08:03:12 +05:30
Kittywhiskers Van Gogh
c5fc646ef1 merge bitcoin#18890: disconnect_nodes should warn if nodes were already disconnected 2022-10-17 08:03:12 +05:30
Kittywhiskers Van Gogh
40c270030e merge bitcoin#20581: Don't make "in" parameters look like "out"/"in-out" parameters: pass by ref to const instead of ref to non-const 2022-10-17 08:03:12 +05:30
Kittywhiskers Van Gogh
1a2dbc81c5 merge bitcoin#20034: Get rid of default wallet hacks
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2022-10-17 08:03:12 +05:30
Kittywhiskers Van Gogh
cda49c34a3 merge bitcoin#13339: Replace %w by wallet name in -walletnotify script 2022-10-17 08:03:11 +05:30
Kittywhiskers Van Gogh
b71ee6cbee merge bitcoin#15454: Remove the automatic creation and loading of the default wallet
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2022-10-17 08:03:11 +05:30
Kittywhiskers Van Gogh
273f1bca76 merge bitcoin#19619: Remove wallet.dat path handling from wallet.cpp, rpcwallet.cpp
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2022-10-17 08:03:10 +05:30
Kittywhiskers Van Gogh
c8fdfc4fb3 merge bitcoin#18727: Add CreateWalletFromFile test
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2022-10-17 07:57:53 +05:30
Kittywhiskers Van Gogh
a9cfb5a1ea partial bitcoin#18115: Pass in transactions and messages for signing instead of exporting the private keys
Contains only 2c52b59d0a44a86d94fee4e437978d822862c542

Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2022-10-17 07:57:14 +05:30
Kittywhiskers Van Gogh
a62017de2c partial bitcoin#17371: Require scriptPubKey to get wallet SigningProvider
Contains only 4b0c718f8f48c678cbe4575e9a9cf9e62a30f0da
2022-10-17 07:54:40 +05:30
UdjinM6
8f3a53da04
fix(gui): Fix crashes when trying to run dash-qt with --disablewallet (#5041)
* fix(gui): Fix crashes when trying to run `dash-qt` with `--disablewallet`

* use enableWallet
2022-10-16 18:31:07 -05:00
UdjinM6
dfec021d01
Merge pull request #5024 from Munkybooty/backports-0.20-pr7
Backports 0.20 pr7
2022-10-17 01:58:25 +03:00
fanquake
2447425762 Merge #18062: gui: Fix unintialized WalletView::progressDialog
acf8abc7f3cf7efa418a46f9f69f23f1a5035582 gui: Fix unintialized WalletView::progressDialog (João Barbosa)

Pull request description:

  #17911 shows that it's possible to read the unintialized `progressDialog` in f32564f0a7/src/qt/walletview.cpp (L296-L297).

  And the debugger shows
  ```
  (gdb) bt
  #0  0x0000555556687c60 in QProgressDialog::wasCanceled() const ()
  #1  0x000055555572989f in WalletView::showProgress (this=0x5555577d7a70,
      title=..., nProgress=1) at qt/walletview.cpp:322
  ```

  Closes #17911.

ACKs for top commit:
  hebasto:
    ACK acf8abc7f3cf7efa418a46f9f69f23f1a5035582, I have reviewed the code and it looks OK, I agree it can be merged.
  elichai:
    utACK acf8abc7f3cf7efa418a46f9f69f23f1a5035582
  kristapsk:
    ACK acf8abc7f3cf7efa418a46f9f69f23f1a5035582
  MarcoFalke:
    ACK acf8abc7f3cf7efa418a46f9f69f23f1a5035582

Tree-SHA512: f5e6d873192d08d1a572e66e17c2e06d1ce27d01aa196b2a7ed591008641295bb02cda8ac90919ff2d2fc778316c2e143f8d36599e0d377779758853dfaf0a31
2022-10-16 13:06:40 -05:00
Wladimir J. van der Laan
54f74ba539 Merge #17482: util: Disallow network-qualified command line options
900d8f6f70859f528e84c5c38d0332f81d19df55 util: Disallow network-qualified command line options (Russell Yanofsky)

Pull request description:

  Previously these were allowed but ignored.

  This change implements one of the settings simplifications listed in #17508. Change includes release notes.

ACKs for top commit:
  laanwj:
    ACK 900d8f6f70859f528e84c5c38d0332f81d19df55

Tree-SHA512: ab020a16a86c1e8ec709fbf798d533879d32c565eceeb7eb785c33042c49c6b4d1108c5453d8166e4a2abffc2c8802fbb6d3b895e0ddeefa8f274fd647e3c8ad
2022-10-16 13:06:40 -05:00
fanquake
8c3fcf162c Merge #18060: gui: Drop PeerTableModel dependency to ClientModel
ff59bcd3213ef61f2167c0aa60fcaf5afbc20c61 gui: Drop PeerTableModel dependency to ClientModel (João Barbosa)

Pull request description:

  Class `PeerTableModel` doesn't actually depend on `ClientModel`.

ACKs for top commit:
  Empact:
    Code Review ACK ff59bcd321
  hebasto:
    ACK ff59bcd3213ef61f2167c0aa60fcaf5afbc20c61, tested on Linux Mint 19.3. No changes in behavior are observed.

Tree-SHA512: 29fa3c316c05b8f7b9340e5859bbb8c3a0b826aa7c865c892cfa13b5ad30f822fcaae4e01555f7860cd1727f20b7ef555a808235522a04a6eebaaa7b605f8595
2022-10-16 13:06:40 -05:00
Wladimir J. van der Laan
6376fa035c Merge #16974: Walk pindexBestHeader back to ChainActive().Tip() if it is invalid
0a50019fde7781263e0c8f041d1d9dcb0dee77e8 Walk pindexBestHeader back to ChainActive().Tip() if it is invalid (Matt Corallo)

Pull request description:

  Instead of keeping pindexBestHeader set to the best header we've
  ever seen, reset it back to our validated tip if we find an ancestor
  of it turns out to be invalid. While the name is now a bit confusing,
  this matches much better with how it is used in practice, see below.
  Further, this opens up more use-cases for it in the future, namely
  aggressively searching for new peers in case we have discovered
  (possibly via some covert channel) headers which we do not know to be
  invalid, but which we cannot find block data for.

  Places pindexBestHeader is used:

   * Various GUI displays of the best header and getblockchaininfo["headers"],
     I don't think changing this is bad, and if anything this is less confusing
     in the presence of an invalid block.
   * IsCurrentForFeeEstimation(): If anything I think ensuring pindexBestHeader
     isn't some crazy invalid chain is better than the alternative, even in the
     case where you are rejecting the current chain due to hardware error (since
     hopefully in that case you won't get any new blocks anyway).
   * ConnectBlock assumevalid checks: We use pindexBestHeader to check that the
     block we're connecting leads to something with nMinimumChainWork (preventing
     a user-set assumevalid from having bogus work) and that the block we're
     connecting leads to pindexBestHeader (I'm not too worried about this one -
     it's nice to "disable" assumevalid if we have a long invalid headers chain,
     but I don't see it as a critical protection).
   * BlockRequestAllowed() uses pindexBestHeader as its target to ensure the
     requested block is within a month of the "current chain". I don't think this
     is a meaningful difference, if we're rejecting the current tip we're
     trivially fingerprintable anyway, and if the chain really does have a bunch
     of invalid crap near the tip, using the best not-invalid header is likely a
     better criteria.
   * ProcessGetBlockData uses pindexBestHeader as the "current chain" definition
     of whether a block request is "historical" for the purpose of bandwidth
     limiting. Similarly, I don't see why this is a meaningful change.
   * We use pindexBestHeader for requesting missing headers on receipt of a
     headers/compact block message or block inv as well as for initial getheaders.
     I think this is definitely wrong, using the best not-invalid header for such
     requests is much better.
   * We use pindexBestHeader to define the "current chain" for deciding when
     we're close to done with initial headers sync. I don't think this is a
     meaningful change.
   * We use pindexBestHeader to decide if initial headers sync has timed out. If
     we're rejecting the chain due to hardware error this may result in
     additional cases where we ban a peer, but this is already true, so I think
     its fine.

ACKs for top commit:
  fjahr:
    ACK 0a50019fde7781263e0c8f041d1d9dcb0dee77e8
  kallewoof:
    ACK 0a50019fde7781263e0c8f041d1d9dcb0dee77e8
  ariard:
    utACK 0a50019

Tree-SHA512: 2ecfa973a9878a00313ae7ede94a9bd7710e0caf55b544b10bbc46dc463a0478cbaf477e6cdd072356d5a0c5fb3848e9339284af785a2995c20bae8bd23f23e5
2022-10-16 13:06:40 -05:00