Commit Graph

18729 Commits

Author SHA1 Message Date
pasta
9a8b68515d
Merge #6460: chore: Translations 2024-12
1d36a4026c 80%+: it, pl, th, zh_CN (UdjinM6)
adfdb5998c 90%+: fr (UdjinM6)
bfff3c9c76 100%: ru (UdjinM6)
ed5f02db9f en (UdjinM6)
d373f85f6b dashstrings.cpp (UdjinM6)

Pull request description:

  ## Issue being fixed or feature implemented

  ## What was done?

  ## How Has This Been Tested?

  ## Breaking Changes

  ## Checklist:
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [ ] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  knst:
    utACK 1d36a4026c

Tree-SHA512: 5d860d2d78e354eeae2157e5d40e8ff659963a258b9eb216d15ec72c1c589e254c2f246173be9e3d1892f9c18acae6cfecc1f18956460be5ff13c5c84d6d0ba6
2024-12-10 09:32:06 -06:00
pasta
2f71f4d7d0
Merge #6458: chore: bump MIN_MASTERNODE_PROTO_VERSION to latest proto
1ecfb891bc chore: bump MIN_MASTERNODE_PROTO_VERSION to latest proto (pasta)

Pull request description:

  ## Issue being fixed or feature implemented
  Bump minimum master node protocol version to latest protocol.

  ## What was done?

  ## How Has This Been Tested?

  ## Breaking Changes
  Masternodes that don't upgrade will end up getting a PoSe ban

  ## Checklist:
    _Go over all the following points, and put an `x` in all the boxes that apply._
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK 1ecfb891bc
  kwvg:
    utACK 1ecfb891bc

Tree-SHA512: 18e0620370924c4f9b0c72b9f384a7b627b9d395b4a4a942d1eaabd8f4294869fb5831c8d237b825053a0ca5aa143cfbb4726312877670088333faa04ab10ef2
2024-12-10 09:31:58 -06:00
pasta
fa29ed5b5e
Merge #6456: fix(qt): allow refreshing wallet data without crashing
d296005194 fix(qt): allow refreshing wallet data without crashing (UdjinM6)

Pull request description:

  ## Issue being fixed or feature implemented
  We re-use `refreshWallet` method to optimise loading for huge wallets https://github.com/dashpay/dash/pull/5453.
  However gui121 backport (via 25f87b9434) added a condition that prevents this logic. Fix it by allowing explicit wallet refresh (force=true).

  ## What was done?

  ## How Has This Been Tested?
  Open a wallet with 10k+ txes, do `rescanblockchain` via rpc console

  ## Breaking Changes

  ## Checklist:
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [ ] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  PastaPastaPasta:
    utACK d296005194c7bd8c65006ddf1b25052b2655c923;

Tree-SHA512: d308b3fe9c4fbbfbf2e2339aa14c825aa6f69c72d1f04dab7a14dc1c8721138beca47c7b3801db9782d6cecf2c54023a19a6d22e04b84615f9bddb0b8ec1696c
2024-12-06 16:54:31 -06:00
pasta
758cd646a1
Merge #6452: fix: store ready queues on the mixing masternode
24dcce979b fix: store ready queues on the mixing masternode (UdjinM6)

Pull request description:

  ## Issue being fixed or feature implemented
  We normally do not re-relay/store "ready" `dsq`-s because these are ment to be relayed between mixing clients and the mixing masternode only. I works ok when you simply send `dsq` messages because no extra steps are required. However since 70235 we send `dsq` _`inv`-s_ first and we send actual `dsq`-s only if they are requested via `getdata`. The problem here is that `ProcessGetData()` queries `vecCoinJoinQueue` via `GetQueueFromHash()` to get the data to send back but there is none because we never saved it.

  ## What was done?

  ## How Has This Been Tested?
  To test this patch you need a MN but you can test 2 cases _without this patch_ to indirectly test the idea:
  1. try mixing on develop: almost no mixing txes, maybe 10 or so in an hour if you are lucky to mix on an old MN that often
  2. ignore old MNs (`MIN_PEER_PROTO_VERSION = 70235`): 0 mixing txes, no matter how long you wait
  3. pretend being an old client to receive no-inv `dsq` only (`PROTOCOL_VERSION = 70233`): no issues, mixing on these nodes is as fast as usual, several txes per block (need a couple of nodes like that on the network so that a mixing session could be completed, I'm running one node for now so that anyone could join and test it)

  I'm running a testnet MN with this fix and applied "ignore old mn" patch on my local machine. Local wallet got mixing tx when it finally hit the patched mn. Also confirmed this via MN`debug.log` (`Create`/`Relay`/`CommitFinalTransaction` in logs).

  ## Breaking Changes

  ## Checklist:
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [ ] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  PastaPastaPasta:
    utACK 24dcce979b

Tree-SHA512: 69cee5401d26eec3f66166a754b8020e7f550dac4a0fdea8ec48ea1082f1286e647ac0a26a189c4d39e1a9da4e7ac36f71913684b13ea0fb4b3cfe831174970e
2024-12-05 19:44:10 -06:00
pasta
395447bf30
Merge #6451: depends: update 'src/dashbls' to dashpay/bls-signatures@7e747e8a as 62fa6652
f25a93647b build: stop tracking cmake dependency relic_conf.h.in (Kittywhiskers Van Gogh)
62fa66524c Squashed 'src/dashbls/' changes from 4e070243ae..7e747e8a07 (Kittywhiskers Van Gogh)
b1b3840ac5 revert: stop tracking cmake dependency relic_conf.h.in (Kittywhiskers Van Gogh)

Pull request description:

  ## Additional Information

  * Closes https://github.com/dashpay/dash/issues/6343
  * Includes [bls-signatures#102](https://github.com/dashpay/bls-signatures/pull/102) and [bls-signatures#104](https://github.com/dashpay/bls-signatures/pull/104)

  ## Breaking Changes

  None expected.

  ## Checklist:

  - [x] I have performed a self-review of my own code **(note: N/A)**
  - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)**
  - [x] I have added or updated relevant unit/integration/functional/e2e tests **(note: N/A)**
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  PastaPastaPasta:
    utACK f25a93647b
  UdjinM6:
    utACK f25a93647b

Tree-SHA512: 394a02a50f57538e9d12f836fd1ea1598d8a20e2d0079fcb44bb317a42a64a638a1ef906222f2d3bab06d2c0b8cfac43c6e0055d87fbdb86abe680c53ecd6b7a
2024-12-05 19:44:09 -06:00
pasta
c7b0d80939
Merge #6441: fix: hold wallet shared pointer in CJ Manager/Sessions to prevent concurrent unload
2d7c7f81b8 fix: do not transfer wallet ownership to CTransactionBuilder{Output} (UdjinM6)
0aeeb8583a fix: add missing `AddWallet` call in `TestLoadWallet` (UdjinM6)
e800d9d09c fix: hold wallet shared pointer in CJ Manager/Sessions to prevent concurrent unload (UdjinM6)

Pull request description:

  ## Issue being fixed or feature implemented
  https://github.com/dashpay/dash/pull/6440#discussion_r1865042366

  ## What was done?

  ## How Has This Been Tested?

  ## Breaking Changes

  ## Checklist:
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [ ] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  PastaPastaPasta:
    utACK 2d7c7f81b8

Tree-SHA512: 308e3bed077baa2167b7f9d81b87e5a61a113e4d465706548f303dfc499bc072d4e823e85772e591a879986b0fb0413d5afe0e3995e1f939fa772b29adc0300d
2024-12-03 08:45:43 -06:00
pasta
c074e0965b
Merge #6444: fix: add platform transfer to "most common" filter
36893e4ba4 fix: add platform transfer to "most common" filter on transactions tab (Konstantin Akimov)
d033a3ae06 refactor: change mask from Dec presentation to Hex for transaction filter (Konstantin Akimov)

Pull request description:

  ## Issue being fixed or feature implemented
  Follow-up https://github.com/dashpay/dash/pull/6131 - missing 'Platform Transfer' in the list of most common. Reported by splawik.

  ## What was done?
  Updated filter, added comment to prevent similar mistakes in future, present filter in hex for better readability.

  ## How Has This Been Tested?
  Transaction with platform transfer appeared in filter "Most Common"
  ![image](https://github.com/user-attachments/assets/ccc17553-d71a-45f8-be2f-8ce5fb699c1a)
  Also they are added to Overview page (compare screenshots by 'address' field)
  ![image](https://github.com/user-attachments/assets/ea657672-46c8-4a66-a972-15768feb4d57)

  ## Breaking Changes
  N/A

  ## Checklist:
  - [x] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone

ACKs for top commit:
  UdjinM6:
    utACK 36893e4ba4
  PastaPastaPasta:
    utACK 36893e4ba4

Tree-SHA512: e072b78e257b2c262a912a3cc0daebde93aca655edfee9bbf4869f2528f10377d7d234c73c4fd7ab6006e87607d5a7c4eddd7634d55b16d1b3885d0bc48f225a
2024-12-03 08:38:18 -06:00
pasta
cb04114143
Merge #6442: fix: coin selection with include_unsafe option should respect nCoinType
e5114da325 fix: coin selection with `include_unsafe` option should respect `nCoinType` (UdjinM6)

Pull request description:

  ## Issue being fixed or feature implemented
  The issue was introduced in #6074 via 69c5aa8947

  ## What was done?

  ## How Has This Been Tested?

  ## Breaking Changes

  ## Checklist:
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [ ] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  PastaPastaPasta:
    utACK e5114da325
  kwvg:
    utACK e5114da325

Tree-SHA512: 5d4e22f9d2cecf2239185e0f4c9d8b29b995b25b4f53a74d6c9b7929aac6ec918ebfb4029a83b72a003fe42fe82619f7ab4892d620bf5846cadf99f1f0cb0969
2024-12-03 08:38:08 -06:00
pasta
db5b53a9a7
Merge #6434: fix: early EHF and buried EHF are indistinguish
4629bb9ba5 fix: add missing cs_main annotation for ForceSignalDBUpdate (Konstantin Akimov)
05041a4572 fix: force ehf signal db update (UdjinM6)
94d80323d4 fix: typo name of key (Konstantin Akimov)
9ceba88cdb style: clang suggestion (Konstantin Akimov)
c6bb9a5685 perf: re-use evo data about signals between v20 and mn_rr as non-corrupted (Konstantin Akimov)
7a7c9f12a4 fix: early EHF and buried EHF are indistinguish (Konstantin Akimov)

Pull request description:

  ## Issue being fixed or feature implemented
  It seems as EHF signal will be mined before node is updated, this signal is lost and node can't activate hard-fork anymore.

  ## What was done?
  EHF signals doesn't expire anymore.
  To avoid full re-index key in database is changed.
  Client with enabled "pruned mode" will be required to do re-index.

  Alternate solution - revert this commit 4b046bb608 and introduce time-out for expiring EHF signals.

  ## How Has This Been Tested?
  Test on my local instance with testnet and mainnet.

  Testing on miner-1 on testnet is done.
  First start of miner took 50 seconds, 29 of them the node was re-scanning blockchain and looking for EHF transaction

  ## Breaking Changes
  It requires re-index for nodes with enabled pruning of blocks.

  ## Checklist:
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  PastaPastaPasta:
    utACK [4629bb9](4629bb9ba5)
  UdjinM6:
    utACK 4629bb9ba5

Tree-SHA512: 189533da5726edbcf2d9cf0e9a3957a10ebc223c25fd88aec3aa9095ae2e7d955ea1f7a1384bc2c97a0cc06110c9e38845a8cafdbd56ff9637bb907ddc639850
2024-12-03 08:37:57 -06:00
pasta
8b88ff7ed6
Merge #6414: chore: bump seeds for v22
5741d5da28 chore: update seeds (Kittywhiskers Van Gogh)
2d732fc66e chore: drop defunct onion seeds, add new existing onion hosts as seeds (pasta)

Pull request description:

  ## Issue being fixed or feature implemented
  Update onion seeds for upcoming version

  ## What was done?
  Update onion seeds to reflect latest status

  ## How Has This Been Tested?
  As of today, all of these are able to be connected to on port 9999; I've not actually connected to all of them and verified they're on latest core or something like that; but their addresses my core knows about, and are able to be trivially connected to

  ## Breaking Changes

  ## Checklist:
  - [x] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  kwvg:
    utACK 5741d5da28
  UdjinM6:
    utACK 5741d5da28

Tree-SHA512: 541bcc510b2ebf6de08ac91f2b7e5b1c910536dca9bab0b38930d6e5cfa1cd05e8c014ba4c74c14c43ed211cda3275fffb5baaf1489bbd1221567130d804b0ec
2024-11-26 23:13:07 +07:00
pasta
02ad523a22
Merge #6411: chore: update nMinimumChainWork, defaultAssumeValid, checkpointData, chainTxData for mainnet and testnet
31243ca313 chore: update nMinimumChainWork, defaultAssumeValid, checkpointData, chainTxData for mainnet and testnet (pasta)

Pull request description:

  ## Issue being fixed or feature implemented
  Bump chainparams in prep for v22

  ## What was done?

  ## How Has This Been Tested?

  ## Breaking Changes

  ## Checklist:
    _Go over all the following points, and put an `x` in all the boxes that apply._
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK 31243ca313

Tree-SHA512: 6a01bbbaefb69437e053340b968e0ce68e2bd9e5e5fd2900864d88ffc21c5cd3f9c2a50d8f5b19f16515cd4c62a4a8fc2d981dd6d0456e86ef96f40e350e786a
2024-11-26 23:12:36 +07:00
pasta
18f636f9a4
Merge #6426: fix: respect SENDDSQUEUE message, move DSQ relay into net processing / peerman
dafa7363a3 fix: respect SENDDSQUEUE message, move DSQ relay into net processing / peerman (pasta)

Pull request description:

  ## Issue being fixed or feature implemented
  in #6148, I broke the functionality where a peer must opt in / opt out of DSQUEUE messages. This was mostly ok, and not immediately detected, as with this bug, simply everyone would receive DSQ messages over inventory (or classically, old proto versions were not affected by this bug). But this still would result in quite a bit of wasted bandwidth for peers which may not care about DSQ at all.

  ## What was done?
  This commit should restore the prior functionality, where a node should send the SENDDSQUEUE message if they wish to receive DSQs. Once they've sent that, depending on their protocol version, they will either have the messages pushed to them as available, or on modern protocols, they will thereafter receive DSQs over the inventory system.

  NOTE: I also refactor the code in this commit, moving some network proccessing into.... wait for it... net_processing.cpp! This allowed us to remove some dependencies in coinjoin.h. DSQ messages are now relayed to peers by calling peer_manager.RelayDSQ

  ## How Has This Been Tested?
  I have not yet mixed on testnet with this; we should include it in rc.2 and test

  ## Breaking Changes
  Slightly breaking for v22.0.x (so rc.1), as they in theory could be relying on this new logic of always receiving the DSQ inv. But I don't think anyone besides core is using this new protocol.

  ## Checklist:
    _Go over all the following points, and put an `x` in all the boxes that apply._
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone

ACKs for top commit:
  UdjinM6:
    light ACK dafa7363a3
  kwvg:
    utACK dafa7363a3

Tree-SHA512: 18f9b0dfe05cde19db451653db9bb9a00352efd1bc37adffd83f74958010475f2782b1111b1c0d2dd967e7a851c3c4795fa55033b4bd0cc810aa293e754ce314
2024-11-26 23:12:36 +07:00
pasta
9fed4564f4
Merge #6407: fix: dataraces
5078baea2b fix(test): wait for chainlock before mining a block we expect to include said chainlock (pasta)
f39c1e6f4c fix: guard m_can_tx_relay behind m_tx_relay_mutex; make it private; add additional annotations (pasta)

Pull request description:

  ## Issue being fixed or feature implemented
  See each commit; fixes two bugs, both discovered while running feature_llmq_chainlocks.py with tsan / debug.

  one a datarace in net_processing.cpp and the other in the test I was using to ensure this fix was correct, feature_llmq_chainlocks

  ## What was done?
  ### net_processing.cpp
  You can see the datarace here: https://gist.github.com/PastaPastaPasta/c966a9f805758b34524085e3d52ea7f8

  We simply guard it with an existing mutex that is always locked in close proximity.

  ### feature_llmq_chainlocks.py
  Most of the time, while generating the cycle quorum, there is sufficient time to generate a chainlock; however, this is racey, and I've observed locally where the block gets generated before a chainlock is present and as such `test_coinbase_best_cl` fails. We should instead wait for the chainlock first, and then mine the block. This was we can ensure the mined block will include that chainlock.

  This was observed locally maybe 1/10 times or so

  ## How Has This Been Tested?
  ran feature_llmq_chainlocks.py ~40 times locally with tsan / debug

  ## Breaking Changes
  None

  ## Checklist:
    _Go over all the following points, and put an `x` in all the boxes that apply._
  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  kwvg:
    utACK 5078baea2b
  knst:
    utACK 5078baea2b
  UdjinM6:
    utACK 5078baea2b

Tree-SHA512: b346fc60809df72d0161f625073dce7062bd2641d35e4f80160fac9afeec63707de552e2856940ac2604875908ae3b98a225d352de36bfbfc6ee3fbe1e1538ff
2024-11-26 23:12:36 +07:00
pasta
86105daab3
Merge #6408: refactor: removed pre-MN_RR logic of validation of CL
3f2e064b18 refactor: set `const auto& cbTx` to avoid using optional throughout method (pasta)
0c0d91e491 fix: functional test feature_llmq_chainlocks.py should activate MN_RR instead v20 (Konstantin Akimov)
af93e877f2 refactor: removed pre-MN_RR logic of validation of CL (Konstantin Akimov)

Pull request description:

  ## Issue being fixed or feature implemented
  The fork MN_RR is active awhile on testnet and mainnet and no more need legacy check

  ## What was done?
  Removes legacy version of checks for CL and related functional tests

  ## How Has This Been Tested?
  Run unit / functional test - DONE
  Reindex testnet - DONE
  Reindex mainnet - DONE

  ## Breaking Changes
  Removed pre-mn_rr version of checks for CL.
  It's no more relevant on mainnet and testnet.
  It affects behavior on new devnets and regtest for pre-mn_rr activation blocks.

  ## Checklist:
  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas
  - [x] I have added or updated relevant unit/integration/functional/e2e tests
  - [x] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone

ACKs for top commit:
  UdjinM6:
    utACK 3f2e064b18

Tree-SHA512: 8b4b3a20a54602f4df9d98e17c79004214493b15c0bce9c08c68d667a5cba86b817947f008d646c48ef9f2f86676c02085c7d0ed36e83548ef5425b64faffb89
2024-11-26 23:12:36 +07:00
Kittywhiskers Van Gogh
a014cf3703
refactor: trim and document assumptions for Get*MN* and friends 2024-11-14 10:08:05 +00:00
Kittywhiskers Van Gogh
8c9f57dac4
refactor: trim and document assumptions for GetQuorum and friends
Some portions of the codebase make implicit assumptions that `GetQuorum`
will not return a `nullptr` by not performing checking for it or make
explicit assumptions by `assert`ing not-`nullptr`.

Let's document explicit assumptions, document implicit assumptions and
soften some hard assumptions where softening is possible.
2024-11-14 10:07:34 +00:00
pasta
3aa51d6515
Merge #6376: refactor: a bunch of trivial-ish headers improvements
e9387eef69 refactor: remove unused includes and forward declarations from headers (Konstantin Akimov)
f2a186f3f3 refactor: remove definition IsQuorumDKGEnabled from header (Konstantin Akimov)
8a7941bd0d refactor: merge helper GetCoinbaseTx which is used only once into GetNonNullCoinbaseChainlock (Konstantin Akimov)

Pull request description:

  ## Issue being fixed or feature implemented
  Split from https://github.com/dashpay/dash/pull/6375 and added some extra

  ## What was done?
  Tidy up headers of evo/ and llmq/:
   - removed unused includes and added missing
   - removed unused forward declarations and added missing
   - removed helper GetCoinbaseTx, moved helper IsQuorumDKGEnabled from header to implementation

  ## How Has This Been Tested?
  Run unit and functional tests

  Compilation time _in theory_ should be improved, in really it shaved just 2-5 seconds from 5 minutes by my benchmark.

  ## Breaking Changes
  N/A

  ## Checklist:
  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas
  - [x] I have added or updated relevant unit/integration/functional/e2e tests
  - [x] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK e9387eef69
  PastaPastaPasta:
    utACK e9387eef69

Tree-SHA512: 7b4795fe0bcea23b9f368a962b888d610cac94b42dd6419cfe06977c1a28bbe27a7a2ae2e4cd730ec0ca4f8b333f656a601ebb90bc271f4117dec7a424a08b45
2024-11-12 08:46:07 -06:00
pasta
b12f5f5f7c
Merge #6381: refactor: a bunch of trivial-ish code improvements
c32fac079f refactor: more `CGovernanceVote` cleanups (UdjinM6)
efc8c99139 refactor: Introduce `get_chain_conf_names` (UdjinM6)
519966efff refactor: Refactor `CCbTx` python class to match c++ declaration (UdjinM6)
38a0b5ac04 refactor: Move `HasChainLock()` calls out of loops (UdjinM6)
6370c7a9e5 refactor: Tidy up `CGovernanceVote` a bit (UdjinM6)
ae675d5314 refactor: Drop redundant `SplitBy` (UdjinM6)
88c3a13674 refactor: Use `switch..case` instead of `if` in `AvailableCoins` (UdjinM6)
38b304c7b0 refactor: Make bls worker aggregator batch size const (rename it accordingly) (UdjinM6)
0cf7d4a65e refactor: Turn `ReadResult` into enum class (UdjinM6)
d9aab0fa60 refactor: Rename `masternode_state_t` and turn it into enum class (UdjinM6)

Pull request description:

  ## Issue being fixed or feature implemented

  ## What was done?

  ## How Has This Been Tested?

  ## Breaking Changes

  ## Checklist:
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [ ] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  knst:
    utACK c32fac079f
  PastaPastaPasta:
    utACK c32fac079f

Tree-SHA512: 7a33d2d535f73c858cd01a442fb28793b1ea185a2eb50d6bce86b44be1012b7427649e3496647b4a0a7d7816dbbb50f138fa701d203c2aa1e7a515c9c9a0e931
2024-11-12 08:41:11 -06:00
Konstantin Akimov
e9387eef69
refactor: remove unused includes and forward declarations from headers 2024-11-11 14:41:35 +07:00
Konstantin Akimov
f2a186f3f3
refactor: remove definition IsQuorumDKGEnabled from header 2024-11-11 14:41:19 +07:00
Konstantin Akimov
8a7941bd0d
refactor: merge helper GetCoinbaseTx which is used only once into GetNonNullCoinbaseChainlock 2024-11-11 14:39:56 +07:00
pasta
a8e2316d6f
Merge #6377: depends: update 'src/immer' to arximboldi/immer@5875f773 as c0b716f2
f18e839b2f build: drop symlinks in immer subtree (Kittywhiskers Van Gogh)
d761111f6c build: fix gitian builds (Kittywhiskers Van Gogh)
a9f46b32c3 Squashed 'src/immer/' changes from 9cb6a5a845..5875f7739a (Kittywhiskers Van Gogh)
e4ee302d6e revert: fix gitian builds (Kittywhiskers Van Gogh)
fb00300f30 revert: drop symlinks in immer subtree (Kittywhiskers Van Gogh)

Pull request description:

  ## Additional Information

  * Dependency for https://github.com/dashpay/dash/pull/6380

  https://github.com/dashpay/dash/pull/6380 will be using `std::ranges` as a replacement for [dash#4622](https://github.com/dashpay/dash/pull/4622) and currently, it will fail to compile due to the current version of `immer` (last updated two years ago in https://github.com/dashpay/dash/pull/4911) not meeting constraints ([source](https://en.cppreference.com/w/cpp/language/constraints)) set by `std::ranges` (see below).

  ```
  ./evo/deterministicmns.h:243:16: error: no matching function for call to object of type 'const __count_if_fn'
          return ranges::count_if(mnMap, [](const auto& p) { return IsMNValid(*p.second); });
                 ^~~~~~~~~~~~~~~~
  /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/ranges_algo.h:331:7: note: candidate template ignored: substitution failure [with _Range = const MnMap &, _Proj = identity, _Pred = (lambda at ./evo/deterministicmns.h:243:40)]: constraints not satisfied for alias template 'range_difference_t' [with _Range = const immer::map<uint256, std::shared_ptr<const CDeterministicMN>, CDeterministicMNList::ImmerHasher> &]
        operator()(_Range&& __r, _Pred __pred, _Proj __proj = {}) const
        ^
  /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/ranges_algo.h:316:7: note: candidate function template not viable: requires at least 3 arguments, but 2 were provided
        operator()(_Iter __first, _Sent __last,
        ^
  ```

  This has been resolved by updating `immer` to the latest available release, [v0.8.1](https://github.com/arximboldi/immer/releases/tag/v0.8.1).

  Expected subtree hash **without changes** are `a5ded361aec714bc74149909c5e1984c10ab132c4c539c63fe57362dccd95556` (see [here](https://github.com/dashpay/dash/pull/6323#pullrequestreview-2357380766) for verification instructions).

  ## Breaking Changes

  None expected.

  ## Checklist

  - [x] I have performed a self-review of my own code **(note: N/A)**
  - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)**
  - [x] I have added or updated relevant unit/integration/functional/e2e tests **(note: N/A)**
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  PastaPastaPasta:
    utACK f18e839b2f
  UdjinM6:
    utACK f18e839b2f

Tree-SHA512: 99d1b577eb4cf3fcc3ebfd28f19006700f085d23ccdabe802a2aa5844e4b39314347b0c0e49a352c5fc034d6584a0109edf08fa3c0846514967f1fb16e7f127a
2024-11-04 10:31:26 -06:00
UdjinM6
c32fac079f
refactor: more CGovernanceVote cleanups 2024-11-04 17:27:00 +03:00
Kittywhiskers Van Gogh
f18e839b2f
build: drop symlinks in immer subtree
reverts:
- fb00300f30
2024-11-02 20:19:50 +00:00
Kittywhiskers Van Gogh
d761111f6c
build: fix gitian builds
reverts:
- 47b32efef2
2024-11-02 17:51:13 +00:00
Kittywhiskers Van Gogh
f70157f5bb
depends: update 'src/immer' to arximboldi/immer@5875f773 as a9f46b32 2024-11-02 17:50:50 +00:00
Kittywhiskers Van Gogh
e4ee302d6e
revert: fix gitian builds
reverts:
- 47b32efef2.
2024-11-02 16:39:58 +00:00
Kittywhiskers Van Gogh
fb00300f30
revert: drop symlinks in immer subtree
reverts:
 - c09981d8ad.
2024-11-02 16:39:56 +00:00
UdjinM6
38a0b5ac04
refactor: Move HasChainLock() calls out of loops 2024-11-02 00:18:57 +03:00
UdjinM6
6370c7a9e5
refactor: Tidy up CGovernanceVote a bit 2024-11-01 23:22:06 +03:00
UdjinM6
ae675d5314
refactor: Drop redundant SplitBy 2024-11-01 22:50:37 +03:00
UdjinM6
88c3a13674
refactor: Use switch..case instead of if in AvailableCoins 2024-11-01 22:50:37 +03:00
UdjinM6
38b304c7b0
refactor: Make bls worker aggregator batch size const (rename it accordingly) 2024-11-01 22:50:36 +03:00
UdjinM6
0cf7d4a65e
refactor: Turn ReadResult into enum class 2024-11-01 22:50:36 +03:00
UdjinM6
d9aab0fa60
refactor: Rename masternode_state_t and turn it into enum class 2024-11-01 22:50:36 +03:00
Konstantin Akimov
50ea5e13f5
fix: cbtx tx as special transaction can't be retrieved before DIP0003 is activated
It's true, let's add a check here before asking GetTxPayload which causes assert

    Assertion failure:
      assertion: (tx.nType == T::SPECIALTX_TYPE)
      file: ./evo/specialtx.h, line: 33
      function: std::optional<_Tp> GetTxPayload(const TxType&, bool) [with T = CCbTx; TxType = CTransaction]
       0#: (0x5CE686FB3AB0) stacktraces.cpp:655 - __wrap___assert_fail
       1#: (0x5CE686BB9120) specialtx.h:33      - std::optional<CCbTx> GetTxPayload<CCbTx, CTransaction>(CTransaction const&, bool)
       2#: (0x5CE686BB9120) cbtx.cpp:463        - GetCoinbaseTx(CBlockIndex const*)
       3#: (0x5CE686BB916D) cbtx.cpp:470        - GetNonNullCoinbaseChainlock(CBlockIndex const*)
       4#: (0x5CE686BB92AA) optional:469        - std::_Optional_base_impl<std::pair<CBLSSignature, unsigned int>, std::_Optional_base<std::pair<CBLSSignature, unsigned int>, false, false> >::_M_is_engaged() const
       5#: (0x5CE686BB92AA) optional:986        - std::optional<std::pair<CBLSSignature, unsigned int> >::has_value() const
       6#: (0x5CE686BB92AA) cbtx.cpp:401        - CalcCbTxBestChainlock(llmq::CChainLocksHandler const&, CBlockIndex const*, unsigned int&, CBLSSignature&)
       7#: (0x5CE686D36318) miner.cpp:233       - BlockAssembler::CreateNewBlock(CScript const&)
       8#: (0x5CE6869E450B) stl_tree.h:733      - std::_Rb_tree<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag>, boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag>, std::_Identity<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag> >, CompareIteratorByHash, std::allocator<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag> > >::_M_mbegin() const
       9#: (0x5CE6869E450B) stl_tree.h:737      - std::_Rb_tree<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag>, boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag>, std::_Identity<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag> >, CompareIteratorByHash, std::allocator<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag> > >::_M_begin()
      10#: (0x5CE6869E450B) stl_tree.h:982      - std::_Rb_tree<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag>, boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag>, std::_Identity<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag> >, CompareIteratorByHash, std::allocator<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag> > >::~_Rb_tree()
      11#: (0x5CE6869E450B) stl_set.h:283       - std::set<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag>, CompareIteratorByHash, std::allocator<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag> > >::~set()
      12#: (0x5CE6869E450B) miner.h:146         - BlockAssembler::~BlockAssembler()
      13#: (0x5CE6869E450B) mining.cpp:174      - generateBlocks
      14#: (0x5CE6869E4C6E) prevector.h:479     - prevector<28u, unsigned char, unsigned int, int>::~prevector()
      15#: (0x5CE6869E4C6E) script.h:393        - CScript::~CScript()
      16#: (0x5CE6869E4C6E) mining.cpp:300      - operator()
      17#: (0x5CE6869E4C6E) invoke.h:61         - __invoke_impl<UniValue, generatetoaddress()::<lambda(const RPCHelpMan&, const JSONRPCRequest&)>&, const RPCHelpMan&, const JSONRPCRequest&>
      18#: (0x5CE6869E4C6E) invoke.h:116        - __invoke_r<UniValue, generatetoaddress()::<lambda(const RPCHelpMan&, const JSONRPCRequest&)>&, const RPCHelpMan&, const JSONRPCRequest&>
      19#: (0x5CE6869E4C6E) std_function.h:291  - _M_invoke
      20#: (0x5CE686F48F8E) util.cpp:541        - RPCHelpMan::HandleRequest(JSONRPCRequest const&) const
      21#: (0x5CE68697CD18) univalue.h:17       - UniValue::operator=(UniValue&&)
      22#: (0x5CE68697CD18) server.h:107        - CRPCCommand::CRPCCommand(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, RPCHelpMan (*)())::{lambda(JSONRPCRequest const&, UniValue&, bool)#1}::operator()(JSONRPCRequest const&, UniValue&, bool) const
      23#: (0x5CE68697D100) std_function.h:292  - std::_Function_handler<bool (JSONRPCRequest const&, UniValue&, bool), CRPCCommand::CRPCCommand(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, RPCHelpMan (*)())::{lambda(JSONRPCRequest const&, UniValue&, bool)#1}>::_M_invoke(std::_Any_data const&, JSONRPCRequest const&, UniValue&, bool&&)
      24#: (0x5CE686A876C0) std_function.h:591  - std::function<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool) const
      25#: (0x5CE686A876C0) server.cpp:622      - ExecuteCommand
      26#: (0x5CE686A889C6) server.cpp:511      - ExecuteCommands
      27#: (0x5CE686A889C6) server.cpp:543      - CRPCTable::execute(JSONRPCRequest const&) const
      28#: (0x5CE686C951B5) httprpc.cpp:247     - HTTPReq_JSONRPC
      29#: (0x5CE686CA5406) unique_ptr.h:93     - std::default_delete<HTTPClosure>::operator()(HTTPClosure*) const
      30#: (0x5CE686CA5406) unique_ptr.h:398    - std::unique_ptr<HTTPClosure, std::default_delete<HTTPClosure> >::~unique_ptr()
      31#: (0x5CE686CA5406) httpserver.cpp:107  - WorkQueue<HTTPClosure>::Run()
    dashd: ./evo/specialtx.h:33: std::optional<_Tp> GetTxPayload(const TxType&, bool) [with T = CCbTx; TxType = CTransaction]: Assertion `(tx.nType == T::SPECIALTX_TYPE)' failed.
2024-10-31 21:28:54 +07:00
pasta
5dbe58c996
Merge #6370: backport: merge bitcoin#23499, #23832, #24136, #24265, #23819, #23595, #24486, #15423, #24784, #24956, #25016, #25060 (auxiliary backports: part 21)
02320032c7 merge bitcoin#25060: add LIFETIMEBOUND to GetFirstStoredBlock()::start_time (Kittywhiskers Van Gogh)
cfda9e5eb5 merge bitcoin#25016: GetFirstStoredBlock() and getblockchaininfo follow-ups (Kittywhiskers Van Gogh)
99d028e9e1 merge bitcoin#24956: Call CHECK_NONFATAL only once where needed (Kittywhiskers Van Gogh)
87b556d322 refactor: use loop to iterate through `SoftForkDescPushBack` args (Kittywhiskers Van Gogh)
80615b8c01 merge bitcoin#24784: deduplicate integer serialization in RollingBloom benchmark (Kittywhiskers Van Gogh)
092a11e2d1 merge bitcoin#15423: Query Tor for correct -onion configuration (Kittywhiskers Van Gogh)
74dceb3c5c merge bitcoin#24486: dedup sqlite blob binding (Kittywhiskers Van Gogh)
aa945c2c1d merge bitcoin#23595: Add ParseHex<std::byte>() helper (Kittywhiskers Van Gogh)
c2defe7210 merge bitcoin#23819: don't serialize block hash twice (Kittywhiskers Van Gogh)
9a8d6e149f merge bitcoin#24265: Drop StripRedundantLastElementsOfPath() function (Kittywhiskers Van Gogh)
2d299f128a merge bitcoin#24136: Extract CTxIn::MAX_SEQUENCE_NONFINAL constant, rework BIP 65/68/112 docs (Kittywhiskers Van Gogh)
9aacee78ae merge bitcoin#23832: Changes time variables from int to chrono (Kittywhiskers Van Gogh)
06bf649e1b merge bitcoin#23499: Add interfaces::Node::broadCastTransaction method (Kittywhiskers Van Gogh)

Pull request description:

  ## Breaking Changes

  None expected.

  ## Checklist

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)**
  - [x] I have added or updated relevant unit/integration/functional/e2e tests
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK 02320032c7

Tree-SHA512: b633e1caac95e565d43e28cef7c915f65952fbabdf55624090bc587c75b84fc04474bb6cd8625219ba828da172391c3d2d1aa6db998927312055c82caaad7ba0
2024-10-29 20:12:53 -05:00
pasta
88a8e7a077
Merge #6374: test: optimize feature asset locks test
2d05df04fd refactor: use irange (pasta)
4cc3ee6286 test: update feature_asset_locks.py to reflect changes (pasta)
bfe1d2768d refactor: activate DEPLOYMENT_WITHDRAWALS sooner on regtest (pasta)
c8342e1b55 refactor: pull LimitBlocksToTrace into CChainParams (reduce regtest to 100) (pasta)

Pull request description:

  ## Issue being fixed or feature implemented
  Minimize number of blocks needed to be mined in asset locks test

  Based on CI test goes from about 270s -> 213s

  ## What was done?
  Reduce number of blocks needed by reducing hard fork activation points

  ## How Has This Been Tested?
  Ran test locally, built

  ## Breaking Changes
  Breaking for regtests, nothing else.

  ## Checklist:
    _Go over all the following points, and put an `x` in all the boxes that apply._
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  knst:
    utACK 2d05df04fd
  UdjinM6:
    utACK 2d05df04fd

Tree-SHA512: b52ec2570912ccb578b14baa4ef5c6e69454db7d83e7476c4451bca62b0c57e4c961e4bfafc9e5b0b4eebd6226840ac00505d3787316d7bdaeb64cb66b08fb30
2024-10-29 19:38:46 -05:00
pasta
841ea27d7b
Merge #6364: backport: trivial 2024 10 25 pr3
fbc0bce2e6 Merge bitcoin/bitcoin#29665: build, depends: Fix `libmultiprocess` cross-compilation (fanquake)
59a214590f Merge bitcoin/bitcoin#29747: depends: fix mingw-w64 Qt DEBUG=1 build (fanquake)
bdb2fa6773 Merge bitcoin/bitcoin#29671: index: avoid "failed to commit" errors on initialization (Ava Chow)
65377eab9e Merge bitcoin/bitcoin#29192: Weaken serfloat tests (fanquake)
4122404b81 Merge bitcoin/bitcoin#28891: test: fix `AddNode` unit test failure on OpenBSD (fanquake)
812ef53685 Merge bitcoin/bitcoin#25677: refactor: make active_chain_tip a reference (MacroFake)
34e12fa3e7 Merge bitcoin/bitcoin#24564: doc: Clarify that CheckSequenceLocksAtTip is a validation function (glozow)
d529751f47 Merge bitcoin/bitcoin#24788: doc: Add gpg key import instructions for Windows (fanquake)
61bae780b6 Merge bitcoin/bitcoin#24784: refactor: deduplicate integer serialization in RollingBloom benchmark (MarcoFalke)

Pull request description:

  ## Issue being fixed or feature implemented
  Trivial backports

  ## What was done?

  ## How Has This Been Tested?
  built locally

  ## Breaking Changes

  ## Checklist:
    _Go over all the following points, and put an `x` in all the boxes that apply._
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK fbc0bce2e6

Tree-SHA512: 731f70b747712810d4f74fe64a90139b02ddb62e9ac260705fa2588595feb19bd6e5ffed521fd878bacaab0015683e582fed19ed1855c3e955f93cd223862a17
2024-10-29 17:15:33 -05:00
pasta
5d2fde8fb1
Merge #6373: fix: multiple minor errors for Dash Core pre v22
2026c59d3c perf: re-order functional tests to make slowest one to run faster (Konstantin Akimov)
d35ce1e5d9 fix: uncomment sethdseed to follow-up for #6017 and bitcoin#12560 (Konstantin Akimov)
71cd68d038 feat: run rpc_quorum.py with only one type of wallet (Konstantin Akimov)
af1923f5c2 fix: missing governance.dat, spork.dat do not trigger a loud error message in logs (Konstantin Akimov)
678db6f43e fix: error in log if no masternode's registered yet "ERROR! Failed to get payees for block at height" (Konstantin Akimov)
80c5481c3e fix: use unique port for interface_zmq_dash.py - follow-up for bitcoin/bitcoin#26805 (Konstantin Akimov)
87caafb92f fix: dashify doc/JSON-RPC-interface.md to follow-up bitcoin#27225 (Konstantin Akimov)
237460c533 fix: initialization of CMerkleBlock() due to misusage of default argument to follow-up bitcoin#30552 (Konstantin Akimov)

Pull request description:

  ## Issue being fixed or feature implemented

  It fixes several minor issues:

   - error messages in logs on regtest:

         [httpworker.0] [masternode/payments.cpp:116] [IsTransactionValid] CMNPaymentsProcessor::IsTransactionValid -- ERROR! Failed to get payees for block at height 110
         [httpworker.0] [masternode/payments.cpp:278] [IsBlockPayeeValid] CMNPaymentsProcessor::IsBlockPayeeValid -- Valid masternode payment at height 110: CTransaction(hash=837e35fab5, ver=3, type=5, vin.size=1, vout.size=1, nLockTime=0, vExtraPayload.size=70)
                CTxIn(COutPoint(0000000000000000000000000000000000000000000000000000000000000000, 4294967295), coinbase 016e0101)
                CTxOut(nValue=500.00000000, scriptPubKey=76a9148708dff2bf8b31363cb4201d)

   - error messages for non-existing files for first run:

          [      init] [util/system.h:57] [error] ERROR: CoreRead: Failed to open file DASH/node0/regtest/governance.dat

   - non-dashified `bitcoin-cli` in `doc/JSON-RPC-interface.md`
   - incorrect initialization of `CMerkleBlock` in functional tests which can cause an un-explainable failure
   - use random ports for `interface_zmq_dash.py` to let tests run simultaneously
   - fix missing todo about using `sethdseed` after #6017
   - optimization of local run of functional tests (slowest go first)
  ## What was done?
  See each commit

  ## How Has This Been Tested?
  Run unit/functional tests

  ## Breaking Changes
  N/A

  ## Checklist:
    _Go over all the following points, and put an `x` in all the boxes that apply._
  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas
  - [x] I have added or updated relevant unit/integration/functional/e2e tests
  - [x] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK 2026c59d3c
  PastaPastaPasta:
    utACK 2026c59d3c

Tree-SHA512: 81f7ac0160203bd0a636869402108ca9b94c81aa966263b64ce74cbc69ac6a875ab111cb078a02ddbfd9408caa418c612cb9c7fb9a666786e14095dc378065c4
2024-10-29 13:50:04 -05:00
pasta
2d05df04fd
refactor: use irange 2024-10-29 13:21:05 -05:00
pasta
02ec0fd284
Merge #6372: backport: merge bitcoin#29823, #30270 (update 'src/minisketch' to sipa/minisketch@eb37a9b8)
5e65bb45a7 merge bitcoin#30270: update subtree to eb37a9b8 (Kittywhiskers Van Gogh)
ef10e83d4d Squashed 'src/minisketch/' changes from 3472e2f5ec..eb37a9b8e7 (Kittywhiskers Van Gogh)
94dca7f9ae merge bitcoin#29823: update subtree to 3472e2f5e (Kittywhiskers Van Gogh)
9540ecbc34 Squashed 'src/minisketch/' changes from a571ba20f9..3472e2f5ec (Kittywhiskers Van Gogh)

Pull request description:

  ## Additional information

  Unexpected failure was found in UBSan unit test run originating from minisketch tests ([build](https://gitlab.com/dashpay/dash/-/jobs/8206813511#L3512)), resolved in subtree with https://github.com/sipa/minisketch/pull/81 and updated upstream in https://github.com/bitcoin/bitcoin/pull/29823.  This pull request updates the subtree to latest subtree pulls done on upstream `master` (as of this writing, [`da10e0ba`](da10e0bab4)).

  Special thanks to knst for reporting this bug! 🎉

  ## Breaking Changes

  None expected.

  ## Checklist

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)**
  - [x] I have added or updated relevant unit/integration/functional/e2e tests **(note: N/A)**
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK 5e65bb45a7

Tree-SHA512: be3c75436425c8662d6af46641a6fc744d01043a832884b29aa9767dd4b9090cef93bcb31355032131392a6ccf29cbbcb771a5786c654f26f4fa0a2d5f0e8a5f
2024-10-29 13:07:28 -05:00
Ava Chow
bdb2fa6773
Merge bitcoin/bitcoin#29671: index: avoid "failed to commit" errors on initialization
f65b0f6401091e4a4ca4c9f4db1cf388f0336bad index: Move last_locator_write_time and logging to end of threadsync loop (Fabian Jahr)

Pull request description:

  In the index sync thread, when initializing an index for the first time, stop callng BaseIndex::Commit when m_best_block_index is null, to avoid a spurious "failed to commit" error from that function. This error started happening in commit 7878f97bf1 from https://github.com/bitcoin/bitcoin/pull/25494 and was reported by pstratem in https://github.com/bitcoin/bitcoin/pull/26903 with an alternate fix.

ACKs for top commit:
  achow101:
    ACK f65b0f6401091e4a4ca4c9f4db1cf388f0336bad
  ryanofsky:
    Code review ACK f65b0f6401091e4a4ca4c9f4db1cf388f0336bad. Just moved log "Syncing" log line since last commit to avoid having to call now() twice.
  furszy:
    ACK f65b0f6401091e4a4ca4c9f4db1cf388f0336bad
  TheCharlatan:
    ACK f65b0f6401091e4a4ca4c9f4db1cf388f0336bad

Tree-SHA512: afa8f05786318d36346d167ff53ea0b3bc8abdb0ad04465d199dc3eb91e9f837369e24fcb7e24b5757b02d698ec504e61da6ac365eaf006c874fc07a424a7e20
2024-10-29 13:01:24 -05:00
fanquake
65377eab9e
Merge bitcoin/bitcoin#29192: Weaken serfloat tests
6e873df3478f3ab8f67d1b9339c7e990ae90e95b serfloat: improve/simplify tests (Pieter Wuille)
b45f1f56582fb3a0d17db5014ac57f1fb40a3611 serfloat: do not test encode(bits)=bits anymore (Pieter Wuille)

Pull request description:

  Closes #28941.

  Our current tests for serfloat verify two distinct properties:
  1. Whether they roundtrip `double`->`uint64_t`->`double` (excluding NaN values) on all systems.
  2. Whether on systems with a typical floating point unit that encoding matches the hardware representation, as before v22.0, we would dump the hardware representation directly to disk and we wanted to retain compatibility with that.

  #28941 seems to show that the second property doesn't always hold, but just for "subnormal" numbers (below $2^{-1021}$). Since we don't care about encoding these numbers, we could exclude such subnormal numbers from the hardware-identical representation test, but this PR goes further and just drops the second property entirely, as I don't think we care about edge-case compatibility with pre-v22.0 code for fee_estimates.dat (the only place it is used).

ACKs for top commit:
  glozow:
    ACK 6e873df3478f3ab8f67d1b9339c7e990ae90e95b
  fanquake:
    ACK 6e873df3478f3ab8f67d1b9339c7e990ae90e95b - It's not as much of a priority, but I think we could still backport this.

Tree-SHA512: e18ceee0753a7ee7e999fdfa10b014dc5bb67b6ef79522a0f8c76b889adcfa785772fc26ed7559bcb5a09a9938e243bb54eedd9549bc59080a2c8090155e2267
2024-10-29 13:01:24 -05:00
fanquake
4122404b81
Merge bitcoin/bitcoin#28891: test: fix AddNode unit test failure on OpenBSD
007d6f0e85bc329040bb405ef6016339518caa66 test: fix `AddNode` unit test failure on OpenBSD (Sebastian Falbesoner)

Pull request description:

  On OpenBSD 7.4, the following check of the unit test `test_addnode_getaddednodeinfo_and_connection_detection` currently fails:
  ```
  BOOST_CHECK(!connman->AddNode({/*m_added_node=*/"127.1", /*m_use_v2transport=*/true}));
  ```
  The reason for that is that this OS seemingly doesn't support the IPv4 shorthand notation with omitted zero-bytes:

  ```
  $ ping 127.1
  ping: no address associated with name
  ```

  As a simple fix, this PR skips the check for this with a pre-processor #if. On NetBSD and FreeBSD, `127.1` is resolved correctly to localhost and hence the test passes (thanks to vasild for verifying on the latter!).

ACKs for top commit:
  vasild:
    ACK 007d6f0e85bc329040bb405ef6016339518caa66

Tree-SHA512: 8ab8393c490e1ecc140e8ff74f6fa4d26d0dd77e6a77a241cd198314b8c5afee7422f95351ca05f4c1742433dab77016a8ccb8d28062f8edd4b703a918a2bbda
2024-10-29 13:01:24 -05:00
MacroFake
812ef53685
Merge bitcoin/bitcoin#25677: refactor: make active_chain_tip a reference
9376a6dae41022874df3b9302667796a9fb7b81d refactor: make active_chain_tip a reference (Aurèle Oulès)

Pull request description:

  This PR fixes a TODO introduced in #21055.

  Makes `active_chain_tip` argument in `CheckFinalTxAtTip` function a reference instead of a pointer.

ACKs for top commit:
  dongcarl:
    ACK 9376a6dae41022874df3b9302667796a9fb7b81d

Tree-SHA512: c36d1769e0b9598b7f79334704b26b73e958d54caa3bd7e4eff954f3964fcf3f5e3a44a5a760497afad51b76e1614c86314fe035e4083c855e3574a620de7f4d
2024-10-29 13:01:24 -05:00
glozow
34e12fa3e7
Merge bitcoin/bitcoin#24564: doc: Clarify that CheckSequenceLocksAtTip is a validation function
fa8671018766b2f0e18c94cff3ab2a67c6b3a41d Clarify that CheckSequenceLocksAtTip is a validation function (MarcoFalke)

Pull request description:

  It has been pointed out that a bug in this function can prevent block template creation. ( https://github.com/bitcoin/bitcoin/pull/24080#issuecomment-1065148776 ) So it seems that the scope of this function is more than "policy". Rename it back to "validation", to partially revert commit fa4e30b0f36f2e7a09db7d30dca9008ed9dbcb35.

ACKs for top commit:
  ajtowns:
    ACK fa8671018766b2f0e18c94cff3ab2a67c6b3a41d - looks fine to me
  glozow:
    ACK fa8671018766b2f0e18c94cff3ab2a67c6b3a41d

Tree-SHA512: 2e0df8c70df4cbea857977f140a8616cfa7505e74df66c9c9fbcf184670ce3ce7567183c3f76e6f3fe8ca6de0e065b9babde6352d6cb495e71ea077ddedbc3f4
2024-10-29 13:01:23 -05:00
MarcoFalke
61bae780b6
Merge bitcoin/bitcoin#24784: refactor: deduplicate integer serialization in RollingBloom benchmark
fff91418ffa4911f7262e824418af664b25d4026 refactor: Remove deduplication of data in rollingbloom bench (phyBrackets)

Pull request description:

  Fixed up #24088.

ACKs for top commit:
  vincenzopalazzo:
    ACK fff91418ff

Tree-SHA512: 9fef617bceb74a1aec4f4a1e7c4732c4764af3e8ac2fc02b84ce370e8b97431957ca17ee8f44fb96765f7304f8d7e5bfb951440db98ba40f240612f2232d215e
2024-10-29 13:01:23 -05:00
pasta
bfe1d2768d
refactor: activate DEPLOYMENT_WITHDRAWALS sooner on regtest 2024-10-29 12:54:04 -05:00
pasta
c8342e1b55
refactor: pull LimitBlocksToTrace into CChainParams (reduce regtest to 100) 2024-10-29 12:53:47 -05:00