Commit Graph

27213 Commits

Author SHA1 Message Date
Kittywhiskers Van Gogh
150ca008fe
merge bitcoin#23683: valid but different LockPoints after a reorg 2024-10-05 17:10:03 +00:00
Kittywhiskers Van Gogh
e85862ba11
merge bitcoin#23649: circular dependency followups 2024-10-05 17:10:03 +00:00
Kittywhiskers Van Gogh
8ab99290f9
merge bitcoin#22677: cut the validation <-> txmempool circular dependency 2024-10-05 17:10:03 +00:00
Kittywhiskers Van Gogh
ee49383cd6
merge bitcoin#23211: move update_* structs from txmempool.h to .cpp file 2024-10-05 17:10:03 +00:00
Kittywhiskers Van Gogh
3d769c7a64
merge bitcoin#23249: ParseByteUnits - Parse a string with suffix unit 2024-10-05 17:10:03 +00:00
Kittywhiskers Van Gogh
edd0bab6b5
chore: remove superfluous ParseHDKeypath definition
`ParseHDKeypath` was moved to `bip34.cpp` in bitcoin#14021 (dash#4695),
remove lingering definition from `util/strencodings.h`
2024-10-05 17:10:03 +00:00
Kittywhiskers Van Gogh
0073b66aaa
refactor: migrate some Dash code to use ChainstateManager::ProcessTransaction 2024-10-05 17:10:02 +00:00
Kittywhiskers Van Gogh
c8571c0956
merge bitcoin#23173: Add ChainstateManager::ProcessTransaction
We need to extend `bypass_limits` to `ProcessTransaction()` because
Dash allows the `sendrawtransaction` RPC to bypass limits with the
optional `bypasslimits` boolean (introduced in dash#2110).

The bool arguments are not in alphabetical order to prevent breakage
with Bitcoin code that expects `bypass_limits` to always be false.
2024-10-05 17:10:02 +00:00
Kittywhiskers Van Gogh
a21bfd02e9
merge bitcoin#23157: improve performance of check() and remove dependency on validation 2024-10-05 17:10:02 +00:00
Kittywhiskers Van Gogh
b35dc7236d
merge bitcoin#23185: Add ParseMoney and ParseScript tests 2024-10-05 17:10:02 +00:00
Kittywhiskers Van Gogh
7c03133be3
merge bitcoin#22987: Fix "RuntimeError: Event loop is closed" on Windows 2024-10-05 17:10:02 +00:00
Kittywhiskers Van Gogh
ba60d5459e
merge bitcoin#22772: hasher cleanup (follow-up to bitcoin#19935)
`KeyIDHasher` was never introduced as Dash uses different HD logic.
Therefore, there is no `KeyIDHasher` to remove.
2024-10-05 17:10:02 +00:00
Kittywhiskers Van Gogh
f09752cac1
merge bitcoin#27280: Fix TypeError (expected str instance, bytes found) in wait_for_debug_log 2024-10-05 17:09:35 +00:00
Kittywhiskers Van Gogh
ecb16808a6
merge bitcoin#25294: Fix wait_for_debug_log UnicodeDecodeError 2024-10-05 17:09:35 +00:00
Kittywhiskers Van Gogh
445047db63
merge bitcoin#25192: add coverage for unknown value to -blockfilterindex 2024-10-05 17:09:34 +00:00
Kittywhiskers Van Gogh
f319163815
merge bitcoin#24789: disallow indexes when running reindex-chainstate 2024-10-05 17:09:34 +00:00
Kittywhiskers Van Gogh
51bc29ee59
merge bitcoin#24117: make indices robust against init aborts
continuation of 123cf8d2 (dash#5501)
2024-10-05 17:09:34 +00:00
Kittywhiskers Van Gogh
6645cde0e7
merge bitcoin#24192: Fix feature_init intermittent issues 2024-10-05 17:09:34 +00:00
Kittywhiskers Van Gogh
a6062445be
merge bitcoin#24039: prevent UnicodeDecodeError when opening log file in feature_init.py 2024-10-05 17:09:34 +00:00
Kittywhiskers Van Gogh
d35af87936
merge bitcoin#23737: make feature_init more robust 2024-10-05 17:09:34 +00:00
Kittywhiskers Van Gogh
e17c619ca3
merge bitcoin#23782: include two more interruptions points 2024-10-05 17:09:34 +00:00
Kittywhiskers Van Gogh
577da313df
merge bitcoin#23777: follow-ups from bitcoin#23365 2024-10-05 17:09:34 +00:00
Kittywhiskers Van Gogh
a681750798
merge bitcoin#23365: Fix backwards search for bestblock 2024-10-05 17:09:34 +00:00
Kittywhiskers Van Gogh
2e22fd0ba9
merge bitcoin#23289: add stress tests for initialization 2024-10-05 17:09:33 +00:00
pasta
bda01b19e6
Merge #6315: test: call self.generate() in p2p_net_deadlock.py (follow-up dash#6276)
9b0c506cf0 test: call `self.generate()` in `p2p_net_deadlock.py` (Kittywhiskers Van Gogh)

Pull request description:

  ## Additional Information

  `develop` is currently borked ([build](https://gitlab.com/dashpay/dash/-/jobs/7999893074#L266)) because [dash#6288](https://github.com/dashpay/dash/pull/6288) changed the expected syntax for `generate*` calls and [dash#6276](https://github.com/dashpay/dash/pull/6276) introduced a new test (`p2p_net_deadlock.py`) that was based on a version of `develop` that used the older syntax.

  No conflicts were reported because it was a new file introduced in the latter PR that the former PR did not have knowledge of.

  ## 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 9b0c506cf0
  PastaPastaPasta:
    utACK 9b0c506cf0

Tree-SHA512: 3b49f0ff4fc5beea8bd48019c581577ebb47cf50c5526e60367740e5deea7fc92451a480abd49b2b3b2a7be7fb9ca2a4aca99c565ef7aaee1ba8cce43e0be776
2024-10-05 12:07:28 -05:00
Kittywhiskers Van Gogh
9b0c506cf0
test: call self.generate() in p2p_net_deadlock.py 2024-10-05 09:41:53 +00:00
pasta
74e54b8a12
Merge #6292: refactor: remove dependency of llmq/chainlocks, llmq/quorum_block_processor, ehf_signals on PeerManager
c77216ea80 docs: explain meaning of MessageProcessingResult's members (Konstantin Akimov)
d0f17788fc refactor: drop dependency of EhfSignals on PeerManager (Konstantin Akimov)
1d13f010d0 refactor: remove dependency of QuorumBlockProcessor on PeerManager (Konstantin Akimov)
f1c6d17879 refactor: remove dependency of chainlocks on PeerManager (Konstantin Akimov)
538342138c refactor: HandleNewRecoveredSig return PostProcessingMessage (Konstantin Akimov)
09565fe6cc refactor: new type of message processing result for resolving circular dependency over PeerManager (Konstantin Akimov)
d54b3eeb7b refactor: move ChainLocksSigningEnabled from header to cpp file as static function (Konstantin Akimov)
cab700aae3 refactor: remove unused include spork.h from validation.cpp (Konstantin Akimov)

Pull request description:

  ## Issue being fixed or feature implemented
  It reduces circular dependencies and simplify code.

  ## What was done?
  Removed circular dependency over PeerManager for llmq::QuorumBlockProcessor, llmq::CEhfSignals, llmq::ChainLocks, and several extra useful refactorings: see commits.

  ## How Has This Been Tested?
  Run `test/lint/lint-circular-dependencies.sh`

  ## 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

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

Tree-SHA512: e01829a694c9bfbbe70bc346ef5949b5e9e4532560f4c40ee292952f05f0fd23ecf4bd978e918f74dd3422c1b90231fd7d9984f491f3ab8f7eb08072540406b4
2024-10-04 16:45:02 -05:00
pasta
dc1f566fce
fmt: run clang-format on hash_x11.h 2024-10-04 15:35:45 -05:00
pasta
bd8aa04d44
refactor: segregate x11 hashing 2024-10-04 14:57:07 -05:00
pasta
e5daf4a322
Merge #6301: backport: prereq cmake 4
2f751ed127 fixup! Merge bitcoin/bitcoin#30567: qt, build: Drop `QT_STATICPLUGIN` macro (pasta)
142245d29a Merge bitcoin/bitcoin#29733: build, macos: Drop unused `osx_volname` target (fanquake)
02f81e5e35 Merge bitcoin#23511: require glibc 2.18+ (pasta)
9f0e4ae82a Merge bitcoin/bitcoin#29706: depends: set two CMake options globally (fanquake)
be07bbe87e Merge bitcoin/bitcoin#28846: depends: fix libmultiprocess build on aarch64 (fanquake)
0dea194026 Merge bitcoin/bitcoin#28856: depends: Build the `native_capnp` and `capnp` packages with CMake (fanquake)
a23eee1938 partial Merge bitcoin/bitcoin#23619: build: Propagate user-defined flags to host packages (fanquake)
7cdacdc1ad Merge bitcoin/bitcoin#30513: depends: Bump `libmultiprocess` for CMake fixes (merge-script)
4f44750f9a Merge bitcoin/bitcoin#30491: Fix MSVC warning C4273 "inconsistent dll linkage" (merge-script)
5ba1309b71 Merge bitcoin/bitcoin#30567: qt, build: Drop `QT_STATICPLUGIN` macro (merge-script)

Pull request description:

  ## Issue being fixed or feature implemented
  Batch of more PRs that I found during make work

  ## What was done?

  ## How Has This Been Tested?
  hasn't yet

  ## 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:
  knst:
    utACK 2f751ed127
  UdjinM6:
    utACK 2f751ed127

Tree-SHA512: 1d8433daaf8dc8c8f04beca1cf0281f0dc29a623e5e8ed941bcb556568d72d8ce0ac5b5c001b10645fdffaa4e7083b76d61075049b2418bb8dd9b5ba0f53a8a9
2024-10-04 14:26:52 -05:00
Konstantin Akimov
c77216ea80
docs: explain meaning of MessageProcessingResult's members 2024-10-05 02:23:56 +07:00
pasta
c77994f060
Merge #6288: backport: merge bitcoin#22741, #22788, #23207, #23300, partial bitcoin#22550 (moving generate* to TestFramework)
131d16133c test: cleanup `generate` logic in some governance functional tests (Kittywhiskers Van Gogh)
dfeeb34d18 test: remove redundant sync after `generate*` calls in Bitcoin tests (Kittywhiskers Van Gogh)
a99a39ce8d test: remove redundant sync after `generate*` calls in Dash tests (Kittywhiskers Van Gogh)
1367115f7b test: opt-out of post-`generate*` syncing in some Dash tests (Kittywhiskers Van Gogh)
82da45a8bf test: move differing sync logic into `sync_fun` lambda in Dash tests (Kittywhiskers Van Gogh)
9b3fbdde10 merge bitcoin#23300: Implicitly sync after generate*, unless opted out (Kittywhiskers Van Gogh)
e913a45eaf test: remove redundant `self.nodes` from `self.sync_`{`blocks`,`all`} (Kittywhiskers Van Gogh)
3dcd87506e merge bitcoin#23207: Delete generate* calls from TestNode (Kittywhiskers Van Gogh)
7d3c3b4b64 merge bitcoin#22788: Use generate* from TestFramework (Kittywhiskers Van Gogh)
c17fd8bc59 merge bitcoin#22741: Add generate* calls to test framework (Kittywhiskers Van Gogh)
9938f4438d partial bitcoin#22550: improve `test_signing_with_{csv,cltv}` subtests (Kittywhiskers Van Gogh)

Pull request description:

  ## Additional Information

  * [bitcoin#23207](https://github.com/bitcoin/bitcoin/pull/23207) has been marked partial as `test/functional/wallet_transactiontime_rescan.py` has not been backported yet.
  * [bitcoin#22550](https://github.com/bitcoin/bitcoin/pull/22550) has been partially backported to track changes to `generate_to_height()` made in successive backports.
  * <table>
    <tr>
    <td>

    `develop` ([`5a0479fe`](5a0479fe53), [build](https://gitlab.com/dashpay/dash/-/jobs/7968420284#L640))

    </td>
    <td>

    `dash#6288` ([`ecb51351`](ecb51351d1), [build](https://gitlab.com/dashpay/dash/-/jobs/7968651474#L612))

    </td>
    </tr>
    <tr>
    <td>

    ```
    Running Unit Tests for Test Framework Modules

    ----------------------------------------------------------------------
    Ran 18 tests in 32.370s
    OK
    1/266 - wallet_hd.py --legacy-wallet passed, Duration: 12 s
    [...]
    feature_bind_port_discover.py                      | ○ Skipped | 1 s
    feature_bind_port_externalip.py                    | ○ Skipped | 1 s
    interface_usdt_net.py                              | ○ Skipped | 1 s
    interface_usdt_utxocache.py                        | ○ Skipped | 1 s
    interface_usdt_validation.py                       | ○ Skipped | 1 s
    rpc_bind.py --ipv6                                 | ○ Skipped | 1 s
    ALL                                                | ✓ Passed  | 6961 s (accumulated)
    Runtime: 1779 s
    ```

    </td>
    <td>

    ```
    Running Unit Tests for Test Framework Modules

    ----------------------------------------------------------------------
    Ran 18 tests in 32.318s
    OK
    1/266 - wallet_hd.py --legacy-wallet passed, Duration: 19 s
    [...]
    feature_bind_port_discover.py                      | ○ Skipped | 1 s
    feature_bind_port_externalip.py                    | ○ Skipped | 1 s
    interface_usdt_net.py                              | ○ Skipped | 1 s
    interface_usdt_utxocache.py                        | ○ Skipped | 1 s
    interface_usdt_validation.py                       | ○ Skipped | 1 s
    rpc_bind.py --ipv6                                 | ○ Skipped | 1 s
    ALL                                                | ✓ Passed  | 7048 s (accumulated)
    Runtime: 1825 s
    ```

    </td>
    </tr>
    </table>

  ## 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:
  PastaPastaPasta:
    utACK 131d16133c656adc66717bfc819c5751d59a7f6c; no diff rebase, going to merge

Tree-SHA512: 369c826dae31a5fb605657146394b053f8eeef6051c328be4e44ea31b5fd17d8dfdc4c2772d220be03d7932c3f85d559ac7897be594dbbc9e7e1ce76f52376d4
2024-10-04 14:19:31 -05:00
pasta
cf1db67335
Merge #6187: feat: fire up devnets by block 2 - 1/n
c8f7c28ac8 docs: release notes for devnets fast fork activations (Konstantin Akimov)
2e1cd9c298 feat: quick assemble of devnets (Konstantin Akimov)

Pull request description:

  ## Issue being fixed or feature implemented
  Many hard-forks have been delayed to block-300 on devnet to be compatible with existing devnets.

  Let's make a breaking changes (for devnet) to activate everything as fast as it ready, just from block 2.

  ## What was done?
  Set activation for all buried developments on devnet at the block 2 at the latest.

  ## How Has This Been Tested?
  Run new devnet - charlie - works as expected:
  ```
    "softforks": {
      "bip34": {
        "type": "buried",
        "active": true,
        "height": 1
      },
      "bip66": {
        "type": "buried",
        "active": true,
        "height": 1
      },
      "bip65": {
        "type": "buried",
        "active": true,
        "height": 1
      },
      "bip147": {
        "type": "buried",
        "active": true,
        "height": 1
      },
      "csv": {
        "type": "buried",
        "active": true,
        "height": 1
      },
      "dip0001": {
        "type": "buried",
        "active": true,
        "height": 2
      },
      "dip0003": {
        "type": "buried",
        "active": true,
        "height": 2
      },
      "dip0008": {
        "type": "buried",
        "active": true,
        "height": 2
      },
      "dip0020": {
        "type": "buried",
        "active": true,
        "height": 2
      },
      "dip0024": {
        "type": "buried",
        "active": true,
        "height": 2
      },
      "realloc": {
        "type": "buried",
        "active": true,
        "height": 2
      },
      "v19": {
        "type": "buried",
        "active": true,
        "height": 2
      },
  ...
  ```

  ## Breaking Changes
  Breaking changes on devnet: all buried forks are activated at once

  ## Checklist:
  - [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

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

Tree-SHA512: c7c13e52873b91d25e5502f1f4ad7c91d8f10ec8227dd2f93205d53091b13d7e7f169c022d0182306e8df0f8b9cd409a2d2b67d9023432d375da1750b4612e06
2024-10-04 14:11:53 -05:00
pasta
8cef87d81d
Merge #6276: backport: merge bitcoin#22817, #23042, #22777, #23774, #25443, #26138, #26854, #27128, #27761, #27863, #28287, #30118, partial bitcoin#22778 (auxiliary backports: part 16)
e458adb61c merge bitcoin#30118: improve robustness of connect_nodes() (UdjinM6)
ac94de23ae merge bitcoin#28287: add `sendmsgtopeer` rpc and a test for net-level deadlock situation (Kittywhiskers Van Gogh)
d1fce0b7ca fix: ensure that deadlocks are actually resolved (Kittywhiskers Van Gogh)
19e7bf64c8 merge bitcoin#27863: do not break when addr is not from a distinct network group (Kittywhiskers Van Gogh)
1adb9a232c merge bitcoin#27761: Log addresses of stalling peers (Kittywhiskers Van Gogh)
2854a6aa5a merge bitcoin#27128: fix intermittent issue in `p2p_disconnect_ban` (Kittywhiskers Van Gogh)
d4b0faeae1 merge bitcoin#26854: Fix intermittent timeout in p2p_permissions.py (Kittywhiskers Van Gogh)
892e329ada merge bitcoin#26138: Avoid race in disconnect_nodes helper (Kittywhiskers Van Gogh)
d6ce037814 merge bitcoin#25443: Fail if connect_nodes fails (Kittywhiskers Van Gogh)
60b5392d92 partial bitcoin#22778: Reduce resource usage for inbound block-relay-only connections (Kittywhiskers Van Gogh)
85c4aef9cb merge bitcoin#23774: Add missing assert_equal import to p2p_add_connections.py (Kittywhiskers Van Gogh)
03544175d9 merge bitcoin#22777: don't request tx relay on feeler connections (Kittywhiskers Van Gogh)
7229eb0ae2 merge bitcoin#23042: Avoid logging AlreadyHaveTx when disconnecting misbehaving peer (Kittywhiskers Van Gogh)
05395ff37b merge bitcoin#22817: Avoid race after connect_nodes (Kittywhiskers Van Gogh)

Pull request description:

  ## Additional Information

  * Depends on https://github.com/dashpay/dash/pull/6286

  * Depends on https://github.com/dashpay/dash/pull/6287

  * Depends on https://github.com/dashpay/dash/pull/6289

  * When backporting [bitcoin#28287](https://github.com/bitcoin/bitcoin/pull/28287), `p2p_net_deadlock.py` relies on the function, `random_bytes()`, that is introduced in [bitcoin#25625](https://github.com/bitcoin/bitcoin/pull/25625). Backporting [bitcoin#25625](https://github.com/bitcoin/bitcoin/pull/25625) would attract changes outside the scope of this PR.

    In the interest of brevity, the changes that introduce `random_bytes()` have been included in [bitcoin#28287](https://github.com/bitcoin/bitcoin/pull/28287) instead.

  ## 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 e458adb61c
  PastaPastaPasta:
    utACK e458adb61c

Tree-SHA512: 48494004dddecb31c53f5e19ab0114b92ed7b4381c7977800fd49b7403222badbfdcfe46241e854f5b086c6f54a35f6483f91c6f047b7ac9b1e88e35bb32ad02
2024-10-04 14:09:12 -05:00
pasta
251f16b82b
Merge #6267: feat(stats): split off transmission to RawSender, implement batching and queueing support, add streamlined prefix and suffix support
cc1a75ab3a docs: add release notes (Kittywhiskers Van Gogh)
39625f16f0 stats: drop copyright notice from `stats/client.cpp` (Kittywhiskers Van Gogh)
18a2e48eb9 stats: rename `statsns` to clearer `statsprefix` (Kittywhiskers Van Gogh)
42918c2cdc stats: rename `statshostname` to more appropriate `statssuffix` (Kittywhiskers Van Gogh)
f3a4844b0a stats: implicitly treat stats as enabled if `statshost` is specified (Kittywhiskers Van Gogh)
69603a83fa stats: miscellaneous changes and housekeeping (Kittywhiskers Van Gogh)
3e12ac0e09 stats: deduplicate `send` and `sendDouble` logic (Kittywhiskers Van Gogh)
bf44fc3bf6 feat(stats): introduce support for batching messages (Kittywhiskers Van Gogh)
38b1643fe6 feat(stats): introduce support for queuing messages (Kittywhiskers Van Gogh)
fc4a736e2a stats: move message sending logic to `RawSender` (Kittywhiskers Van Gogh)
92690685be stats: move `statsd_client` to `stats` directory (Kittywhiskers Van Gogh)
f782dfd562 stats: remove double indentation in header file (Kittywhiskers Van Gogh)

Pull request description:

  ## Motivation

  This pull request achieves the goal originally set out in [dash#5167](https://github.com/dashpay/dash/pull/5167), to migrate the base of our Statsd client implementation to one that is actively maintained. Statoshi ([source](54c3ffdcf0/src/statsd_client.cpp)) utilizes [talebook/statsd-client-cpp](https://github.com/talebook/statsd-client-cpp), which in turn is inherited by Dash.

  As Statsd is the only cross-platform reporting mechanism available (USDT requires a Linux host with superuser privileges and RPCs don't provide as much flexibility as desired), emphasis is placed on using Statsd as the primary way for the Dash daemon to report metrics related to node and network health.

  As part of maintaining our Statsd client, this PR aims to migrate the base of our implementation to [vthiery/cpp-statsd-client](https://github.com/vthiery/cpp-statsd-client), a streamlined implementation that embraces C++11 with a thread-safe implementation of queueing and batching, which reduces the number of packets used to transmit stats.

  These capabilities are optional and users can opt not to use them by setting `-statsduration=0` to disable queueing (which will also disable batching) or `-statsbatchsize=0`, which will disable batching (but will not disable queueing unless requested explicitly).

  ## Additional Information

  * Dependent on https://github.com/dashpay/dash/pull/5167
  * `RawSender` (and by extension, `RawMessage`) strive to remain as unopinionated as possible, moving the responsibility to construct valid Statsd messages onto `StatsdClient`. This is to ensure that  `RawSender` can be reused down the line or independently extended without impacting the Statsd client.
    * `RawMessage` exists to provide extensions to `std::vector<uint8_t>` that make it easier to abstract away strings while also implementing some of its semantics like `append()` (and its alias, `+=`).
  * `InitStatsClient()` was introduced to keep `StatsdClient` indifferent to _how_ arguments are obtained and sanitized before they're supplied to the constructor. This is to keep it indifferent to all the backwards-compatibility code for deprecated arguments still work.
  * When constructing the Statsd message, we can use `%f` without having to specify a precision as tinyformat automatically assumes a precision of 6 ([source](17110f50b3/src/tinyformat.h (L673))) and problems don't seem to be observed when using `%f` with integers ([source](https://github.com/dashpay/dash/pull/6267#issuecomment-2345592051)).
    * As a guardrail, there is a `static_assert` to ensure that a specialization of `send()` involving a non-arithmetic type will raise alarm when compiling ([source](a0ce720207/src/stats/client.cpp (L145))).

  ## Breaking changes

  * `-statsenabled` (replaced with specifying `-statshost`), `-statshostname` (replaced by `-statssuffix`) and `-statsns` (replaced by `-statsprefix`) have been deprecated and will be removed in a future release.

  ## 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 **(note: N/A)**
  - [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:
  knst:
    utACK cc1a75ab3a
  UdjinM6:
    utACK cc1a75ab3a

Tree-SHA512: b038419f2b6d807dac40a04d23c5046fbaa95beedb88f5a9e4c06a7042c2f5da7e01c72c4a2744bce10878cafc747136d6599dcd86ae1be0782ad4194d5b7bec
2024-10-04 14:07:13 -05:00
Kittywhiskers Van Gogh
131d16133c
test: cleanup generate logic in some governance functional tests
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2024-10-04 19:01:05 +00:00
Kittywhiskers Van Gogh
dfeeb34d18
test: remove redundant sync after generate* calls in Bitcoin tests 2024-10-04 19:01:05 +00:00
Kittywhiskers Van Gogh
a99a39ce8d
test: remove redundant sync after generate* calls in Dash tests 2024-10-04 19:01:05 +00:00
Kittywhiskers Van Gogh
1367115f7b
test: opt-out of post-generate* syncing in some Dash tests
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2024-10-04 19:01:05 +00:00
Kittywhiskers Van Gogh
82da45a8bf
test: move differing sync logic into sync_fun lambda in Dash tests
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2024-10-04 19:01:05 +00:00
Kittywhiskers Van Gogh
9b3fbdde10
merge bitcoin#23300: Implicitly sync after generate*, unless opted out 2024-10-04 19:01:05 +00:00
Kittywhiskers Van Gogh
e913a45eaf
test: remove redundant self.nodes from self.sync_{blocks,all}
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2024-10-04 19:01:05 +00:00
Kittywhiskers Van Gogh
3dcd87506e
merge bitcoin#23207: Delete generate* calls from TestNode 2024-10-04 19:01:01 +00:00
Kittywhiskers Van Gogh
7d3c3b4b64
merge bitcoin#22788: Use generate* from TestFramework 2024-10-04 19:01:00 +00:00
Kittywhiskers Van Gogh
c17fd8bc59
merge bitcoin#22741: Add generate* calls to test framework 2024-10-04 19:00:57 +00:00
pasta
2f751ed127
fixup! Merge bitcoin/bitcoin#30567: qt, build: Drop QT_STATICPLUGIN macro
continue using logprintf
2024-10-04 12:54:24 -05:00
fanquake
142245d29a
Merge bitcoin/bitcoin#29733: build, macos: Drop unused osx_volname target
eff19fa1c8d736d30dea937ebce0b372c19b7559 build, macos: Drop unused `osx_volname` target (Hennadii Stepanov)

Pull request description:

  The `osx_volname` makefile target was introduced in https://github.com/bitcoin/bitcoin/pull/7192 and was used to pass the package name to Gitian scripts as a content of the `osx_volname` file.

  With the current Guix scripts, the `osx_volname` file is never read. Therefore, its creation might be omitted.

  My Guix builds:
  ```
  x86_64
  5e2d254e207d53784621c8df331c9bf4a969da667d185992402f48a5ac49f563  guix-build-eff19fa1c8d7/output/arm64-apple-darwin/SHA256SUMS.part
  089dba70685893aca5e7c8ce1d53a07380e87ca50eda8b3a2a75aeaeb1d28e48  guix-build-eff19fa1c8d7/output/arm64-apple-darwin/bitcoin-eff19fa1c8d7-arm64-apple-darwin-unsigned.tar.gz
  390c57197c6ab4aefdde1c665d5e4ebdfb4ae5e553f8f93b017f2fad1093d110  guix-build-eff19fa1c8d7/output/arm64-apple-darwin/bitcoin-eff19fa1c8d7-arm64-apple-darwin-unsigned.zip
  e1edde7ca28bf26aea8d956b1d3c1725a475f2a9c148f5c36b651db4b814091c  guix-build-eff19fa1c8d7/output/arm64-apple-darwin/bitcoin-eff19fa1c8d7-arm64-apple-darwin.tar.gz
  d0096ea73a5f75cc4d3cef4ef1761ae3e48c8a63aff918f07371c5c88896e4e6  guix-build-eff19fa1c8d7/output/dist-archive/bitcoin-eff19fa1c8d7.tar.gz
  51b4affb9fd6f8aea05b7d25d29f017d0a0a145395f457caa14b9af9646b035b  guix-build-eff19fa1c8d7/output/x86_64-apple-darwin/SHA256SUMS.part
  b1df081ecf636a92754e673e5388d1d988653d4646f0b0446a4c9f14d865a265  guix-build-eff19fa1c8d7/output/x86_64-apple-darwin/bitcoin-eff19fa1c8d7-x86_64-apple-darwin-unsigned.tar.gz
  62e09926029d176da950d3e3db7ff8ae6cbe4c0b2ea17b084fc1d28565f91475  guix-build-eff19fa1c8d7/output/x86_64-apple-darwin/bitcoin-eff19fa1c8d7-x86_64-apple-darwin-unsigned.zip
  477dcb2382cbd447bd88a3b644b4bd736f5b67d66d42cb73fe31ffc153d3e181  guix-build-eff19fa1c8d7/output/x86_64-apple-darwin/bitcoin-eff19fa1c8d7-x86_64-apple-darwin.tar.gz
  ```

ACKs for top commit:
  Empact:
    ACK eff19fa1c8
  Sjors:
    tACK eff19fa1c8d736d30dea937ebce0b372c19b7559
  TheCharlatan:
    ACK eff19fa1c8d736d30dea937ebce0b372c19b7559

Tree-SHA512: 29714be5c58caa07b3eb99846d71bb83366dade769af022059bb3c499878adcd34cdf03b006c5da561291f373ccc59abdb83c925057ec0049465eaa8dd6ef4e1
2024-10-04 12:54:24 -05:00
pasta
02f81e5e35
Merge bitcoin#23511: require glibc 2.18+
follow to 07bd5977e5
2024-10-04 12:54:24 -05:00
fanquake
9f0e4ae82a
Merge bitcoin/bitcoin#29706: depends: set two CMake options globally
76045bb9d6808931cd0f2933203b5b611e032ec8 depends: always set CMAKE_POSITION_INDEPENDENT_CODE=ON (fanquake)
d04623678c70ff58a20fb5c35d33cb8f483f1efb depends: always set CMAKE_INSTALL_LIBDIR=lib/ (fanquake)

Pull request description:

  Set `CMAKE_INSTALL_LIBDIR=lib/` and `CMAKE_POSITION_INDEPENDENT_CODE=ON` globally in depends, rather than per-package. `CMAKE_INSTALL_LIBDIR=lib/` is needed to override the annoying [`GNUInstallDirs`](https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html) `lib` vs `lib64` behaviour, and we always want PIC code. The PIC commit is the counterpart to the same Autotools change in #29488. I'm PRing these commits as I have a CMake branch building on top, and want to avoid adding the same workarounds to every package we are going to touch, but these can go in separately as the build should be tested for existing packages (i.e multiprocess).

ACKs for top commit:
  hebasto:
    re-ACK 76045bb9d6808931cd0f2933203b5b611e032ec8.
  theuni:
    utACK 76045bb9d6808931cd0f2933203b5b611e032ec8. Both changes make sense to me, and both can be overridden if needed, though I can't imagine we'd need to.

Tree-SHA512: 655a0b6b7ee5a5820f52e8e919ef03fc216d29f13f3904f72b64ce57436510e073c903039488d5740535c56e1f6221267229238c5231de5f8467d238fd562578
2024-10-04 12:54:24 -05:00
fanquake
be07bbe87e
Merge bitcoin/bitcoin#28846: depends: fix libmultiprocess build on aarch64
bde8d63b17637c507a543cebe90f2998b5847373 depends: build libmultiprocess with position independant code (fanquake)
506634d79d6427925cd458f67799fe59e0ab14dd depends: always install libmultiprocess to /lib (fanquake)
beb309626381bf189cd2ae8bde83078b9de47c6a depends: always install capnp to /lib (fanquake)

Pull request description:

  Change to always install libmultiprocess into `lib/`. On some systems (my Fedora aarch64 box), libmultiprocess was being installed into `lib64/`, and then configure would fail to pick it up, because we only add `lib/` to pkgconfig/ldflags out of depends. Rather than adding lib64 to those, I opted for installing libmultiprocess into lib, with every other dependency we build.

  This was broken in our build after https://github.com/chaincodelabs/libmultiprocess/pull/79 upstream.

ACKs for top commit:
  ryanofsky:
    Code review ACK bde8d63b17637c507a543cebe90f2998b5847373. Only changes since last review were reverting the native_capnp change as suggested, and changing the order of the first two commits.

Tree-SHA512: ddd547e4ac224f2f199c569efd91104db7f2c243b124f9535aa0d9377315775ac566d699101580ce45ddd6676ad3e0c8cbe256334eeed9548205c2fa04d02102
2024-10-04 12:54:24 -05:00