2ab561d281 partial bitcoin#27254: Extract util/fs from util/system (Kittywhiskers Van Gogh)
280988bee3 merge bitcoin#27418: Remove windows workaround in authproxy (Kittywhiskers Van Gogh)
a497df0339 merge bitcoin#26832: move (win) S_* defines into bdb (Kittywhiskers Van Gogh)
db676a7e5f merge bitcoin#26814: remove windows-only compat.h usage in random (Kittywhiskers Van Gogh)
94e6637c33 merge bitcoin#26826: remove windows-only compat.h usage in randomenv (Kittywhiskers Van Gogh)
bbb0cceb7a merge bitcoin#25493: document code in compat.h (Kittywhiskers Van Gogh)
3f143096c8 merge bitcoin#25422: globally define NOMINMAX when building with mingw-w64 (Kittywhiskers Van Gogh)
000495df8e merge bitcoin#25338: Avoid incompatibility with CMake AUTOUIC feature (Kittywhiskers Van Gogh)
714ea55dbe build: migrate stacktrace-related flags to `DEBUG_`{`C`,`CXX`}`FLAGS` (Kittywhiskers Van Gogh)
11323c3851 merge bitcoin#24391: stop overriding user autoconf flags (Kittywhiskers Van Gogh)
548121d366 merge bitcoin#24704: remove strnlen back-compat code (Kittywhiskers Van Gogh)
b65038ec94 merge bitcoin#23005: Delay wallet client construction (Kittywhiskers Van Gogh)
f3b065cd9c merge bitcoin#23092: Remove Windows workaround in authproxy (WinError 10053) (Kittywhiskers Van Gogh)
Pull request description:
## Additional Information
* This PR originally included [bitcoin#27378](https://github.com/bitcoin/bitcoin/pull/27378) but including it caused multiple tests to fail ([build](https://gitlab.com/dashpay/dash/-/jobs/8577987174#L2224)), even after adjusting `timeout`. It has been omitted instead.
<details>
<summary>Test failures:</summary>
```
feature_abortnode.py | Failed | 201 s
feature_dip3_v19.py | Failed | 237 s
feature_llmq_rotation.py | Failed | 54 s
p2p_invalid_messages.py | Failed | 5 s
rpc_bind.py --nonloopback | Failed | 63 s
wallet_multiwallet.py --descriptors | Failed | 79 s
wallet_multiwallet.py --legacy-wallet | Failed | 89 s
ALL | Failed | 8540 s (accumulated)
```
</details>
<details>
<summary>feature_abortnode.py failure:</summary>
```
dash@107cfae2b2b5:/src/dash$ ./test/functional/feature_abortnode.py
2024-12-09T18:31:01.776000Z TestFramework (INFO): PRNG seed is: 6843309100291447752
2024-12-09T18:31:01.776000Z TestFramework (INFO): Initializing test directory /tmp/dash_func_test_fcijb99n
2024-12-09T18:31:02.802000Z TestFramework (INFO): Waiting for crash
2024-12-09T18:34:23.026000Z TestFramework.utils (ERROR): wait_until() failed. Predicate: ''''
def is_node_stopped(self):
"""Checks whether the node has stopped.
Returns True if the node has stopped. False otherwise.
This method is responsible for freeing resources (self.process)."""
if not self.running:
return True
return_code = self.process.poll()
if return_code is None:
return False
# process has stopped. Assert that it didn't return an error code.
assert return_code == 0, self._node_msg(
"Node returned non-zero exit code (%d) when stopping" % return_code)
self.running = False
self.process = None
self.rpc_connected = False
self.rpc = None
self.log.debug("Node stopped")
return True
'''
2024-12-09T18:34:23.027000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
File "/src/dash/test/functional/test_framework/test_framework.py", line 161, in main
self.run_test()
File "/src/dash/./test/functional/feature_abortnode.py", line 44, in run_test
self.nodes[0].wait_until_stopped(timeout=200)
File "/src/dash/test/functional/test_framework/test_node.py", line 414, in wait_until_stopped
wait_until_helper(self.is_node_stopped, timeout=timeout, timeout_factor=self.timeout_factor)
File "/src/dash/test/functional/test_framework/util.py", line 287, in wait_until_helper
raise AssertionError("Predicate {} not true after {} seconds".format(predicate_source, timeout))
AssertionError: Predicate ''''
def is_node_stopped(self):
"""Checks whether the node has stopped.
Returns True if the node has stopped. False otherwise.
This method is responsible for freeing resources (self.process)."""
if not self.running:
return True
return_code = self.process.poll()
if return_code is None:
return False
# process has stopped. Assert that it didn't return an error code.
assert return_code == 0, self._node_msg(
"Node returned non-zero exit code (%d) when stopping" % return_code)
self.running = False
self.process = None
self.rpc_connected = False
self.rpc = None
self.log.debug("Node stopped")
return True
''' not true after 200.0 seconds
2024-12-09T18:34:23.530000Z TestFramework (INFO): Stopping nodes
2024-12-09T18:34:23.530000Z TestFramework (ERROR): Unexpected exception caught during shutdown
Traceback (most recent call last):
File "/src/dash/test/functional/test_framework/test_framework.py", line 341, in shutdown
self.stop_nodes()
File "/src/dash/test/functional/test_framework/test_framework.py", line 673, in stop_nodes
node.stop_node(expected_stderr=expected_stderr, wait=wait, wait_until_stopped=False)
File "/src/dash/test/functional/test_framework/test_node.py", line 368, in stop_node
self.stop(wait=wait)
File "/src/dash/test/functional/test_framework/coverage.py", line 49, in __call__
return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)
File "/src/dash/test/functional/test_framework/authproxy.py", line 124, in __call__
response, status = self._request('POST', self.__url.path, postdata.encode('utf-8'))
File "/src/dash/test/functional/test_framework/authproxy.py", line 103, in _request
return self._get_response()
File "/src/dash/test/functional/test_framework/authproxy.py", line 162, in _get_response
raise JSONRPCException(
test_framework.authproxy.JSONRPCException: non-JSON HTTP response with '503 Service Unavailable' from server (-342)
2024-12-09T18:34:23.531000Z TestFramework (WARNING): Not cleaning up dir /tmp/dash_func_test_fcijb99n
2024-12-09T18:34:23.531000Z TestFramework (ERROR): Test failed. Test logging available at /tmp/dash_func_test_fcijb99n/test_framework.log
2024-12-09T18:34:23.531000Z TestFramework (ERROR):
2024-12-09T18:34:23.531000Z TestFramework (ERROR): Hint: Call /src/dash/test/functional/combine_logs.py '/tmp/dash_func_test_fcijb99n' to consolidate all logs
2024-12-09T18:34:23.531000Z TestFramework (ERROR):
2024-12-09T18:34:23.531000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2024-12-09T18:34:23.531000Z TestFramework (ERROR): https://github.com/dashpay/dash/issues
2024-12-09T18:34:23.531000Z TestFramework (ERROR):
[node 1] Cleaning up leftover process
[node 0] Cleaning up leftover process
```
</details>
* [bitcoin#27254](https://github.com/bitcoin/bitcoin/pull/27254) has been partially backported to include a missing header to allow it to build.
<details>
<summary>Compile error:</summary>
```
In file included from ./util/system.h:19,
from util/system.cpp:7:
./compat/assumptions.h:49:22: error: 'size_t' was not declared in this scope; did you mean 'std::size_t'?
49 | static_assert(sizeof(size_t) == 4 || sizeof(size_t) == 8, "size_t assumed to be 32-bit or 64-bit");
| ^~~~~~
| std::size_t
In file included from /usr/include/c++/11/limits:42,
from ./compat/assumptions.h:11,
from ./util/system.h:19,
from util/system.cpp:7:
/usr/include/x86_64-linux-gnu/c++/11/bits/c++config.h:280:33: note: 'std::size_t' declared here
280 | typedef __SIZE_TYPE__ size_t;
| ^~~~~~
```
</details>
* ~~GitLab job failures as of 2339ae6459cad77d94795c0e92ba3f3fe31c485a, for `linux64-build` ([source](https://gitlab.com/dashpay/dash/-/jobs/8590291130#L4621)), `linux64_cxx20-build` ([source](https://gitlab.com/dashpay/dash/-/jobs/8590291134#L3497)) and `linux64_sqlite-build` ([source](https://gitlab.com/dashpay/dash/-/jobs/8590291137#L3489)) are not related to failures in compilation or unit tests but are to do with reaching the artifact limit.~~ Resolved with [dash#6487](https://github.com/dashpay/dash/pull/6487), thanks Udjin!
## 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 2ab561d281
PastaPastaPasta:
utACK 2ab561d281
Tree-SHA512: 6d05305f17fd607ed93b4a2e00de195a96bde1a34bedf04f6dd84892dc71028ae71590fa5063026ec7ff728d6e411af410c363b4a88947ce6e5999d4431bb29b
2e509b96c4 fix: add a workaround for RPC getmerkleblocks, debug, coinjoinsalt, voteraw (Konstantin Akimov)
f0decc8790 feat: add unit test for ClearDiscouraged (Konstantin Akimov)
865b24ea00 feat: hide cleardiscouraged RPC so far as it no intent to use by regular users (Konstantin Akimov)
1f5fa7e7cf feat: enable linter coverage for functional tests (Konstantin Akimov)
59ddac5656 feat: hide deprecated RPC from help and add TODOes to remove them (Konstantin Akimov)
05732aceaf feat: implement functional tests for RPC getblockheaders (Konstantin Akimov)
Pull request description:
## Issue being fixed or feature implemented
https://github.com/dashpay/dash-issues/issues/63
## What was done?
Add functional tests for `getblockheaders`
Hide RPC `cleardiscouraged` (as it is used only for functional tests) and RPC `getpoolinfo` (deprecated long time ago)
Add a workaround to ignore these RPCs `getmerkleblocks`, `voteraw`, `debug`, `coinjoinsalt` at the moment
Enables linter for coverage
## How Has This Been Tested?
Run locally with `test/functional/test_runner.py -j20 --previous-releases --coverage --extended`
Enabled in CI
## Breaking Changes
N/A if hidding `cleardiscouraged` is not a breaking change.
## 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:
LGTM, utACK 2e509b96c4
PastaPastaPasta:
utACK 2e509b96c4
Tree-SHA512: bb31465d9a71ef824533d9310393d89293c87c7407ec3e37697f6d36dc6c010381a6e0408f9598354e610d51ef662485d8a653cc0e198842e2198ac1c30c90f1
feb6a1ad3f ci: allow overriding MAKEJOBS (UdjinM6)
Pull request description:
## Issue being fixed or feature implemented
That's how these variable are ment to behave
>echo "Fallback to default values in env (if not yet set)"
https://github.com/dashpay/dash/blame/develop/ci/test/00_setup_env.sh#L26
That's also how it's done in bitcoin https://github.com/bitcoin/bitcoin/blob/master/ci/test/00_setup_env.sh#L38.
But we broke it in c52992aaa4 and I'm not sure why 🤷♂️
## 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 feb6a1ad3f
kwvg:
utACK feb6a1ad3f
Tree-SHA512: 617e761cf5c52d8e4329bf8aa1680c72a7816ae3248ed415d2c3232e5aa0941f18e21f0d6d363848238f53730097aa22f51a6e1cd62bd0b31d3da853f9f79e28
c6f23a718c merge bitcoin#31383: Add missing node.setmocktime(self.mocktime) to p2p_ibd_stalling.py (Kittywhiskers Van Gogh)
9072a10754 merge bitcoin#30545: fix intermittent failures in feature_proxy.py (Kittywhiskers Van Gogh)
7e2d435e35 merge bitcoin#29483: add --v1transport option, add --v2transport to a CI task (Kittywhiskers Van Gogh)
7e59a965f8 merge bitcoin#29452: document that BIP324 on by default (Kittywhiskers Van Gogh)
0f3b5e081e merge bitcoin#29353: adhere to typical VERSION message protocol flow (Kittywhiskers Van Gogh)
dfdddfd2ff rpc: enable `v2transport` for `masternode connect` when capable (Kittywhiskers Van Gogh)
3c1636174b merge bitcoin#29356: make v2transport arg in addconnection mandatory and few cleanups (Kittywhiskers Van Gogh)
c53cd93aee merge bitcoin#29347: enable v2transport by default (Kittywhiskers Van Gogh)
7dcf561306 merge bitcoin#27452: cover addrv2 anchors by adding TorV3 to CAddress in messages.py (Kittywhiskers Van Gogh)
Pull request description:
## Additional Information
* When backporting [bitcoin#27452](https://github.com/bitcoin/bitcoin/pull/27452) in `feature_anchors.py`, `P2P_SERVICES` (`NODE_NETWORK | NODE_HEADERS_COMPRESSED`) has been replaced with `NODE_NETWORK` as the former evaluates to a value greater than `256` (specifically `2049`), which causes test failure. The replacement value is acceptable as `NODE_NETWORK` is the desired service flag expected by Dash Core ([source](779e4295ad/src/protocol.cpp (L249-L254))).
<details>
<summary>Test failure:</summary>
```
dash@89afd55ae77e:/src/dash$ ./test/functional/feature_anchors.py
2024-12-14T12:31:22.244000Z TestFramework (INFO): PRNG seed is: 8365703189892653614
2024-12-14T12:31:22.244000Z TestFramework (INFO): Initializing test directory /tmp/dash_func_test_j0ya02yu
2024-12-14T12:31:22.776000Z TestFramework (INFO): When node starts, check if anchors.dat doesn't exist
2024-12-14T12:31:22.776000Z TestFramework (INFO): Add 2 block-relay-only connections to node
2024-12-14T12:31:24.781000Z TestFramework (INFO): Add 5 inbound connections to node
2024-12-14T12:31:29.843000Z TestFramework (INFO): Check node connections
2024-12-14T12:31:30.848000Z TestFramework (INFO): Check the addresses in anchors.dat
2024-12-14T12:31:30.848000Z TestFramework (INFO): Perturb anchors.dat to test it doesn't throw an error during initialization
2024-12-14T12:31:31.356000Z TestFramework (INFO): When node starts, check if anchors.dat doesn't exist anymore
2024-12-14T12:31:31.357000Z TestFramework (INFO): Ensure addrv2 support
2024-12-14T12:31:32.364000Z TestFramework (INFO): Add 256-bit-address block-relay-only connections to node
2024-12-14T12:31:33.368000Z TestFramework (INFO): Check for addrv2 addresses in anchors.dat
2024-12-14T12:31:33.369000Z TestFramework (ERROR): Unexpected exception caught during testing
Traceback (most recent call last):
File "/src/dash/test/functional/test_framework/test_framework.py", line 161, in main
self.run_test()
File "/src/dash/./test/functional/feature_anchors.py", line 135, in run_test
new_data[services_index] = P2P_SERVICES
ValueError: byte must be in range(0, 256)
2024-12-14T12:31:33.870000Z TestFramework (INFO): Stopping nodes
2024-12-14T12:31:33.871000Z TestFramework (WARNING): Not cleaning up dir /tmp/dash_func_test_j0ya02yu
2024-12-14T12:31:33.871000Z TestFramework (ERROR): Test failed. Test logging available at /tmp/dash_func_test_j0ya02yu/test_framework.log
```
</details>
## 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
- [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_
ACKs for top commit:
UdjinM6:
utACK c6f23a718c
PastaPastaPasta:
utACK c6f23a718c81b7c574ba3fecbe52f342eda35a46;
Tree-SHA512: ca134432d000d521827a20c75c03913421fe52a31fda1cbf632e0b207c31728406feb090469d592d8e2fd8d64298faa2752ff703de79f737a62c276c6a231097
a191c09cdc ci: better names for artifacts (UdjinM6)
3984a49a43 ci: exclude `*.a` and `*.o` files from artifacts (UdjinM6)
Pull request description:
## Issue being fixed or feature implemented
We include too many files in artifacts on `build` ci step, some of which (`*.a` and `*.o`) can be pretty heavy. This was ok-ish for some time but artifacts size is getting closer to the limit and even starts to cause issues, see #6462.
## What was done?
Exclude `*.a` and `*.o` files from artifacts. Also, change artifacts name to make it easier to distinguish them when you get a few of them from the same pipeline - `build-arm-linux.zip`, `build-linux64.zip` etc. instead of `binaries.zip`, `binaries (1).zip` etc., same for `depends`.
A simpler alternative to #6483
As a result the size of tsan artifacts for example is down from 508MB in 6462 to 154MB in this PR.
## 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 a191c09cdc
kwvg:
utACK a191c09cdc
Tree-SHA512: eb3029c95a11546958d34ad284f4eb600b6113a2cabb885f7381afd16696f51da7eaf1677a1cdfec53311838c6845bb1c2c7c98f0ae112294b33f6ab6c66c500
dcc1ff37bc ci: do not check `--ff-only` on master branch (UdjinM6)
Pull request description:
## Issue being fixed or feature implemented
https://github.com/dashpay/dash/actions/runs/12303817802/job/34340079798
It makes no sense to check it anyway.
## 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 dcc1ff37bc
Tree-SHA512: bcff6ff7bcb70f2d48e9df7db2a76b65b386f0cc7f213e44dc13a44416e1cab9449c1344166ac58e8e577dcfbdc22b0b4ebb93d610b0790623188c1680804b69
ec00c372c7 test: fix off-by-one in dynamically_add_masternode (UdjinM6)
6519856344 test: don't add legacy bls mn on start (UdjinM6)
3db20e3ed4 test: actually use masternode with basic bls pubkey in mnauth test (UdjinM6)
Pull request description:
## Issue being fixed or feature implemented
`rpc_manuth` is failing in ~50% cases locally because we still use legacy pubkeys (not in 100% cases because sometimes they look like basic ones). In CI it fails too but we retry failed tests a few times so it's less noticeable. Example of "unlucky" tests: https://gitlab.com/dashpay/dash/-/jobs/8613271300#L1867.
#6467 follow-up
## What was done?
Add another masternode after v19 activaition to actually use basic bls pubkey
## How Has This Been Tested?
run tests
## Breaking Changes
n/a
## 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 ec00c372c7
PastaPastaPasta:
utACK ec00c372c7
Tree-SHA512: 850a02ea1bd943762cdb0be706f3703742944c294ee9603b1f9ab95a6b10fb827bc9376e03333177d956b2c13df7384cfe0eb2ffef4d05ff3ec239caa8318d24
2c296de6dd revert: Revert "feat: re-bury DIP0024 with new height when quorums actually appeared" (UdjinM6)
Pull request description:
## Issue being fixed or feature implemented
`-assumevalid=0` sync is broken on develop, v22 and master aren't affected
mainnet:
```
[ loadblk] [util/system.h:57] [error] ERROR: ConnectBlock(DASH): ProcessSpecialTxsInBlock for block 00000000000000195f69a348a14fddc7c8ff61036348e95b818ca42c6c724bbb failed with bad-qc-dup
[ loadblk] [validation.cpp:1365] [InvalidChainFound] InvalidChainFound: invalid block=00000000000000195f69a348a14fddc7c8ff61036348e95b818ca42c6c724bbb height=1737834 log2_work=78.911419 date=2022-09-13T22:36:20Z
[ loadblk] [validation.cpp:1370] [InvalidChainFound] InvalidChainFound: current best=0000000000000002e91bac9f95f96885a89de2c46846d197933c8c5f03cb806f height=1737833 log2_work=78.911418 date=2022-09-13T22:35:44Z
[ loadblk] [util/system.h:57] [error] ERROR: ConnectTip: ConnectBlock 00000000000000195f69a348a14fddc7c8ff61036348e95b818ca42c6c724bbb failed, bad-qc-dup
```
testnet:
```
[ loadblk] [util/system.h:57] [error] ERROR: ConnectBlock(DASH): ProcessSpecialTxsInBlock for block 00000050ec7aa1b187c3a9df0d80a2ed2821d5836b596b962bcbc4c261b4bcd5 failed with bad-qc-dup
[ loadblk] [validation.cpp:1357] [InvalidChainFound] InvalidChainFound: invalid block=00000050ec7aa1b187c3a9df0d80a2ed2821d5836b596b962bcbc4c261b4bcd5 height=769866 log2_work=57.312136 date=2022-07-28T03:32:01Z
[ loadblk] [validation.cpp:1362] [InvalidChainFound] InvalidChainFound: current best=0000001acc25de06893220ed663f35ef8b8e82ec951963c4092c1e9ee103af6f height=769865 log2_work=57.312136 date=2022-07-28T03:28:21Z
[ loadblk] [util/system.h:57] [error] ERROR: ConnectTip: ConnectBlock 00000050ec7aa1b187c3a9df0d80a2ed2821d5836b596b962bcbc4c261b4bcd5 failed, bad-qc-dup
```
## What was done?
This reverts commit 632c4c4bcd.
## How Has This Been Tested?
Hint: sync to pre-dip24 block with `--stopatheight=1737790` and no `-assumevalid` to speed things up, then start from that block with `-assumevalid=0`
## 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 2c296de6dd
Tree-SHA512: 02d62d34b3914af61c3b415cdffcfca8d7e18b192bffadb0ceb06d6aca8b828491a68cc2a23b9e6b369efb6f2e1c8e84bbd6332b3c74f27f3d9469efaed72817
1c7bfcbde1 chore: set release true (pasta)
c90339eb61 Merge #6459: docs: add release notes for v22.0.0 (pasta)
a6f1fc590c Merge #6475: chore: bumped chain assumed sizes based on latest usage (pasta)
d7cd9f10fd Merge #6464: chore: update man pages for v22 (pasta)
212f91c35f Merge #6461: docs: update supported versions in SECURITY.md (pasta)
9a8b68515d Merge #6460: chore: Translations 2024-12 (pasta)
2f71f4d7d0 Merge #6458: chore: bump MIN_MASTERNODE_PROTO_VERSION to latest proto (pasta)
fa29ed5b5e Merge #6456: fix(qt): allow refreshing wallet data without crashing (pasta)
758cd646a1 Merge #6452: fix: store ready queues on the mixing masternode (pasta)
395447bf30 Merge #6451: depends: update 'src/dashbls' to dashpay/bls-signatures@7e747e8a as 62fa6652 (pasta)
c7b0d80939 Merge #6441: fix: hold wallet shared pointer in CJ Manager/Sessions to prevent concurrent unload (pasta)
c074e0965b Merge #6444: fix: add platform transfer to "most common" filter (pasta)
cb04114143 Merge #6442: fix: coin selection with `include_unsafe` option should respect `nCoinType` (pasta)
db5b53a9a7 Merge #6434: fix: early EHF and buried EHF are indistinguish (pasta)
8b88ff7ed6 Merge #6414: chore: bump seeds for v22 (pasta)
02ad523a22 Merge #6411: chore: update nMinimumChainWork, defaultAssumeValid, checkpointData, chainTxData for mainnet and testnet (pasta)
3bbcd3d4f8 Merge #6393: docs: mention building for some HOSTs only in `release-process.md` (pasta)
18f636f9a4 Merge #6426: fix: respect SENDDSQUEUE message, move DSQ relay into net processing / peerman (pasta)
9fed4564f4 Merge #6407: fix: dataraces (pasta)
86105daab3 Merge #6408: refactor: removed pre-MN_RR logic of validation of CL (pasta)
a1f7e96025 Merge #6406: ci: use `actions/cache` to manage depends cache (pasta)
90a3807903 Merge #6402: ci: cache built (pasta)
66f67879dc Merge #6401: ci: deduplicate depends building (pasta)
7ca56632cf Merge #6397: ci: add powerpc64 to GH Guix job matrix (pasta)
Pull request description:
## Issue being fixed or feature implemented
## What was done?
Suppressed changes from 1c7bfcbde1 and resolved merge conflicts.
```
Auto-merging .github/workflows/build.yml
Auto-merging configure.ac
Auto-merging src/chainparams.cpp
Auto-merging src/coinjoin/client.cpp
CONFLICT (content): Merge conflict in src/coinjoin/client.cpp
Auto-merging src/coinjoin/client.h
CONFLICT (content): Merge conflict in src/coinjoin/client.h
Auto-merging src/coinjoin/util.cpp
CONFLICT (content): Merge conflict in src/coinjoin/util.cpp
Auto-merging src/coinjoin/util.h
CONFLICT (content): Merge conflict in src/coinjoin/util.h
Auto-merging src/evo/specialtxman.cpp
Auto-merging src/init.cpp
Auto-merging src/net_processing.cpp
CONFLICT (content): Merge conflict in src/net_processing.cpp
Auto-merging src/net_processing.h
Auto-merging src/qt/transactiontablemodel.cpp
Auto-merging src/wallet/wallet.cpp
Auto-merging src/wallet/wallet.h
CONFLICT (content): Merge conflict in src/wallet/wallet.h
Auto-merging test/functional/feature_llmq_chainlocks.py
CONFLICT (content): Merge conflict in test/functional/feature_llmq_chainlocks.py
```
## 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 d108579326f65920e67c839c38c6e48b84222bf9; no diff to develop
Tree-SHA512: 3f063011224880fee35edb04ce265dff33a52273c3d45ef1dbcebcecb22c25d8ad7c91b83514f36142716a6fbd0ddd3a8a3f2a9b59ce78ce975bbce69a2a13b5
f3be9bcb95 test: add tests for `listunspent` with `coinType` option (UdjinM6)
Pull request description:
## Issue being fixed or feature implemented
extend tests a bit
## 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 f3be9bcb95
Tree-SHA512: 3f063011224880fee35edb04ce265dff33a52273c3d45ef1dbcebcecb22c25d8ad7c91b83514f36142716a6fbd0ddd3a8a3f2a9b59ce78ce975bbce69a2a13b5
6f88c070d9 ci: treat all non-protected branches as pull requests (UdjinM6)
Pull request description:
## Issue being fixed or feature implemented
This branch https://github.com/dashpay/dash/tree/feat/flatpak is 3 commits ahead so CI checks should use d494339b9f as `$CI_COMMIT_BEFORE_SHA`. But that's not the case according to CI logs https://gitlab.com/dashpay/dash/-/jobs/8179463810#L38
```
PULL_REQUEST=false COMMIT_RANGE=4d1b648bad417ef9b1c5a96edfa04b0e382f096f..860f6ee48f61f0b670b21ef142d13ae02d3cc50a HOST_SRC_DIR=/builds/dashpay/dash CACHE_DIR=/builds/dashpay/dash/cache
```
The commit range is just 1 commit instead of 3 and this results in incomplete CI checks. This happens because only branches with special refs like `pr-xxxx/author/dash/branch` are considered as pull requests.
## What was done?
Reverse the check - protected branches are the only non-PRs now, everything else is treated as PRs
## 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 6f88c070d96009b6a722a72f50caa84bd66b16b6; seems fine
Tree-SHA512: 2fbba9b3cec04093bace838702397253c60d4aa5e670602807aa9f2ba2ff36d7e561f70912b331a554fd1dbaf8eaf30288ce5df19b316feadec2d903b1f4a11c
5b914fe081 refactor: add const to llmq_ctx, isman, clhandler in rpc code (Konstantin Akimov)
Pull request description:
## What was done?
Add missing const for all usages of llmq_ctx, llmq_ctx->isman and llmq_ctx->clhandler in rpc code.
## Issue being fixed or feature implemented
Added `const` helps to read rpc code to see that none of mentioned objects are actually changed.
## How Has This Been Tested?
Run unit and functional tests
## 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 _(for repository code-owners and collaborators only)_
ACKs for top commit:
UdjinM6:
utACK 5b914fe081
PastaPastaPasta:
utACK 5b914fe081
Tree-SHA512: dfaa99887250638e90f0c87271cf3c70833d4199797050be6a8b84939f78d857419a3e9e3da73035aca10e27782f28f43f156c69380d1c8df892c97c468c76d7
a275bda266 refactor: removed duplicated code with errors messages for txindex, timestampindex, spentindex (Konstantin Akimov)
dd1b36636c feat: show human friendly error if missing spentindex, txindex or addressindex (Konstantin Akimov)
Pull request description:
## Issue being fixed or feature implemented
Currently user receive error `Unable to get spent info` or even worse `No information available for address` which doesn't say anything about required extra indexes.
Also, every call of RPC `getrawtransaction` causes this error logs on high level if spent index is disabled, but actually it just means that no couple extra fields are hidden in output which is expected if no index.
node0 2024-12-03T18:54:33.349605Z [ http] [httpserver.cpp:248] [http_request_cb] [http] Received a POST request for / from 127.0.0.1:40052
node0 2024-12-03T18:54:33.349634Z [httpworker.3] [rpc/request.cpp:180] [parse] [rpc] ThreadRPCServer method=getrawtransaction user=__cookie__
node0 2024-12-03T18:54:33.349729Z [httpworker.3] [util/system.h:57] [error] ERROR: Spent index not enabled
node0 2024-12-03T18:54:33.349735Z [httpworker.3] [util/system.h:57] [error] ERROR: Spent index not enabled
node0 2024-12-03T18:54:33.349738Z [httpworker.3] [util/system.h:57] [error] ERROR: Spent index not enabled
node0 2024-12-03T18:54:33.349808Z [httpworker.3] [httprpc.cpp:93] [~RpcHttpRequest] [bench] HTTP RPC request handled: user=__cookie__ command=getrawtransaction external=false status=200 elapsed_time_ms=0
node0 2024-12-03T18:54:33.349998Z [ http] [httpserver.cpp:248] [http_request_cb] [http] Received a POST request for / from 127.0.0.1:40052
node0 2024-12-03T18:54:33.350027Z [httpworker.0] [rpc/request.cpp:180] [parse] [rpc] ThreadRPCServer method=getrawtransaction user=__cookie__
node0 2024-12-03T18:54:33.350128Z [httpworker.0] [util/system.h:57] [error] ERROR: Spent index not enabled
node0 2024-12-03T18:54:33.350133Z [httpworker.0] [util/system.h:57] [error] ERROR: Spent index not enabled
node0 2024-12-03T18:54:33.350137Z [httpworker.0] [util/system.h:57] [error] ERROR: Spent index not enabled
## What was done?
Improved all usages of extra indexes `spentindex`, `txindex` and `addressindex` in RPC implementation.
Affected RPCc:
- getaddressmempool
- getaddressutxos
- getaddressdeltas
- getaddressbalance
- getaddresstxids
- getspentinfo
- getblockhashes
## How Has This Been Tested?
Run unit&functional tests.
```
$ dash-cli getaddressutxos '["yW4kiSd2pytXC2erbjm6crt1PGBvbwS4YX"]'
Address index is disabled. You should run Dash Core with -addressindex (requires reindex) (code -32600)
```
Check logs after calling getrawtransaction:
```
node0 2024-12-03T19:10:00.378770Z [httpworker.3] [rpc/request.cpp:180] [parse] [rpc] ThreadRPCServer method=getrawtransaction user=__cookie__
node0 2024-12-03T19:10:00.378861Z [httpworker.3] [httprpc.cpp:93] [~RpcHttpRequest] [bench] HTTP RPC request handled: user=__cookie__ command=getrawtransaction external=false status=500 elapsed_time_ms=0
node0 2024-12-03T19:10:00.379017Z [ http] [httpserver.cpp:248] [http_request_cb] [http] Received a POST request for / from 127.0.0.1:44984
node0 2024-12-03T19:10:00.379036Z [httpworker.0] [rpc/request.cpp:180] [parse] [rpc] ThreadRPCServer method=getrawtransaction user=__cookie__
node0 2024-12-03T19:10:00.379090Z [httpworker.0] [httprpc.cpp:93] [~RpcHttpRequest] [bench] HTTP RPC request handled: user=__cookie__ command=getrawtransaction external=false status=500 elapsed_time_ms=0
node0 2024-12-03T19:10:00.379240Z [ http] [httpserver.cpp:248] [http_request_cb] [http] Received a POST request for / from 127.0.0.1:44984
```
## Breaking Changes
Error type and message changed. It's no more `RPC_INVALID_ADDRESS_OR_KEY` but `RPC_INVALID_REQUEST`.
## 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:
kwvg:
utACK a275bda266
UdjinM6:
utACK a275bda266
Tree-SHA512: d53373aba794035173375811e333e940efb1081bed46e18846b2b54d60036ee52487c65f9b84ac687b2be2a30f3a68fb75afbb2c89e52b0774740892863a04df