Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Helix pull upstream #10

Open
wants to merge 9,414 commits into
base: master
Choose a base branch
from
Open

Conversation

nathansenn
Copy link
Member

No description provided.

Fuzzbawls and others added 30 commits January 20, 2024 01:07
Instead of the ever-messier text parsing of the output of the readelf
tool (which is clearly meant for human consumption not to be machine
parseable), parse the ELF binaries directly.

Add a small dependency-less ELF parser specific to the checks.

This is slightly more secure, too, because it removes potential
ambiguity due to misparsing and changes in the output format of `elfread`. It
also allows for stricter and more specific ELF format checks in the future.

This removes the build-time dependency for `readelf`.
I misunderstood the ELF specification for version symbols (verneed):
The `vn_aux` pointer is relative to the main verneed record, not the
start of the section.

This caused many symbols to not be versioned properly in the return
value of `elf.dyn_symbols`. This was discovered in bitcoin#21454.

Fix it by correcting the offset computation.
xkb versions symbols (using the prefix `V`), as this library is used by
bitcoin-qt, add it to the valid versions in `symbol-check.py`.
…bol-check.py

The (ancient) versions specified here were deceptive. Entries older than
MAX_VERSIONS['GLIBC'], which is 2.27, are ignored here. So reorganize
the code to avoid confusion for other people reading this code.
ASLR is not currently working for the pivx-cli.exe binary. This is
due to it not having a .reloc section, which is stripped by default by
the mingw-w64 ld we use for gitian builds. A good summary of issues with
ld and mingw-w64 is available in this thread:
https://sourceware.org/bugzilla/show_bug.cgi?id=19011.

All other Windows binaries that we distribute (pivxd, pivx-qt,
pivx-tx and test_pivx) do not suffer this issue,
and currently having working ASLR. This is due to them exporting
(inadvertent or not) libsecp256k1 symbols, and, as a result, the .reloc
section is not stripped by ld.

This change is a temporary workaround, also the same one described here:
https://www.kb.cert.org/vuls/id/307144/, that causes main() to be
exported. Exporting a symbol will mean that the .reloc section is not
stripped, and ASLR will function correctly.
sks-keyservers.net's line of gpg keyservers is now defunct. Replace with
 Ubuntu's keyserver.
I'm now using a new gpg key for signing since my old key had become
over-bloated in size and number of signatures.
GA has recently deprecated node16 version actions and has started
issuing warning messages on action summaries. Simple update to newer
node20 versions.
5bcd7d3 build: make translate (Fuzzbawls)
e5735a9 [GUI] Remove unused addressbookpage references (Fuzzbawls)

Pull request description:

  This is an artifact from before the UI redesign that came with v4.0, and
  is no longer used anywhere in the current wallet version.

  ---

  This effectively removes some unused translation strings, otherwise this is of no functional consequence.

ACKs for top commit: 5bcd7d3
  panleone:
    utACK 5bcd7d3, nice clean up
  Liquid369:
    tACK 5bcd7d3

Tree-SHA512: 5bb0c87c52cb136292ea6f0c5910fcd0e1f2bc501d81718391cbfaf6ae0119014d43706088d5402cde7e66907390fe6e48fd18988abf8f6a3535160e0ed57471
fa69949 [Doc] Update Ubuntu ppa source for db4.8 (Fuzzbawls)

Pull request description:

  In order to cut down on ppa clutter/size, I have setup a new ppa specifically for BerkeleyDB 4 independent from the pivxd/pivx-qt ppa repositories.

  This new ppa repo will be the default place to install db4.8 dependencies moving forward for LTS versions of Ubuntu. It currently has package support for Xenial, Bionic, Focal, Jammy, and the upcoming Noble LTS versions.

  New CPU architecture riscv64 has been added for OS versions starting from Focal and newer.

ACKs for top commit: fa69949
  panleone:
    utACK fa69949
  Liquid369:
    tACK fa69949

Tree-SHA512: 2318384d6ae883e00ee0ca3333d456dba6b30803da3bc6ed81b585579ec52e8c0d3507524467d8f6a76e73d8bb7f9a4f8c5aceaa6b43d065b27bf59b912e9768
76448e2 [GA]: Update actions to node20 versions (Fuzzbawls)

Pull request description:

  GA has recently deprecated node16 version actions and has started issuing warning messages on action summaries. Simple update to newer node20 versions.

ACKs for top commit: 76448e2
  Liquid369:
    tACK 76448e2
  Duddino:
    ACK 76448e2

Tree-SHA512: f6b51bda0d2d6a66b54eff389e423a363feb5c2f5b78487b89671404462d1aca7d5a12088121ed57d67bc8fc92af454f9f13cd828ff86d7d72a07c30ae34352b
Build-only update of copyright year. A full headers copyright year
update will be done separately.
5d3b6a7 Doc: Update gpg key for Fuzzbawls (Fuzzbawls)
034c2da Doc: Update gpg keyserver URL (Fuzzbawls)

Pull request description:

  sks-keyservers.net's line of gpg keyservers is now defunct. Replace with
  Ubuntu's keyserver.

  while i'm at it, i've updated to my new gpg key.

ACKs for top commit: 5d3b6a7
  Liquid369:
    tACK 5d3b6a7
  Duddino:
    ACK 5d3b6a7

Tree-SHA512: 0fb9f558966c080c5ebe1e5f46b6079df25016ae56a85cc0882b5a6995fa3277a505151da7b3738b39ac75648d1f78288d3af04886c207c5bbc0b623bc112a7b
Adjust wallet model
97af1df Add duddino GPG key (Duddino)

Pull request description:

  Add duddino GPG key

ACKs for top commit: 97af1df
  Liquid369:
    uTACK 97af1df
  Fuzzbawls:
    ACK 97af1df

Tree-SHA512: 93cbb8ba00d21f1f1c47af673ba5dc1edb999c1795fa1b73a4ea33ba7df46a8cf898ce0d742524f259f1a3fc4ac46793cce4376ab5663051dc7e5ce71c64a6f0
Fuzzbawls and others added 30 commits November 15, 2024 01:11
5f8c06e test: Add possibility to skip awaiting for the connection (Alessandro Rezzi)
5374229 Merge bitcoin#30252: test: Remove redundant verack check (merge-script)
e7c21c7 Merge bitcoin#30118: test: improve robustness of connect_nodes() (Ava Chow)
9beef8d Merge bitcoin#26854: test: Fix intermittent timeout in p2p_permissions.py (MarcoFalke)
b3a3d78 Merge bitcoin#25443: test: Fail if connect_nodes fails (laanwj)
72709b9 test: Avoid connecting a peer to himself (Alessandro Rezzi)
77697b8 test: Do not connect the nodes in parallel (Alessandro Rezzi)
17c065d test: Avoid race after connect_nodes (MarcoFalke)
d73ac82 test: refactor connect_nodes and disconnect_nodes to take two indices instead of index + node (Alessandro Rezzi)
e19d72f Merge bitcoin#18866: test: Fix verack race to avoid intermittent test failures (MarcoFalke)

Pull request description:

  This PR solves the failures of `wallet_listtransactions.py`, like the one of  https://github.com/PIVX-Project/PIVX/actions/runs/11705208154/job/32601252220?pr=2947.

  They happen due to mempool sync timeout:
  ```
  2024-11-06T14:58:03.8489793Z AssertionError: Mempool sync timed out after 60s:
  2024-11-06T14:58:03.8490785Z   {'7364836e7eae24a75378b920373e303b99b4ff18db758defc4c057d784a43905'}
  ```

  The issue is that the connection between nodes is established after the transaction is sent, as we can see from the logs:
  ```
  2024-11-06T14:58:03.9085473Z 2024-11-06T14:57:02Z (mocktime: 2019-10-31T18:21:20Z) Relaying wtx 7364836e7eae24a75378b920373e303b99b4ff18db758defc4c057d784a43905
  ...
  2024-11-06T14:58:03.9103287Z 2024-11-06T14:57:02Z (mocktime: 2019-10-31T18:21:20Z) New outbound peer connected: version: 70927, blocks=200, peer=0
  ```

  Hence the newly connected node will never receive the transaction and the mempool will never be synced.

  This bug is fixed by ensuring that `connect_nodes` actually wait for the connection to be established. As a consequence of those checks we cannot anymore connect nodes in parallel in `connect_nodes_clique` (which will make tests run slightly slower)

ACKs for top commit: 5f8c06e
  Fuzzbawls:
    utACK 5f8c06e
  Duddino:
    utACK 5f8c06e
  Liquid369:
    tACK 5f8c06e

Tree-SHA512: 88007d7302f3b7c3c5b9d446e7d8acc959cd03b0bb27409b1633cb86c57905a4814be148e2e5f6ccaa1da17eccdd44f68f81d00299696d1f47f52f9b12b32ec7
…ay#3094)

* Introduce getbestchainlock rpc and fix llmq-is-cl-conflicts.py

* Add `known_block` field and move `getbestchainlock` to `blockchain` rpc category

* Add CChainLockSig::IsNull() and throw an exception in getbestchainlock if there is no known chainlock yet

* drop blockHash initializer
* More/better logging for InstantSend

* Implement CRecoveredSigsDb::TruncateRecoveredSig

* Truncate recovered sigs for ISLOCKs instead of completely removing them

This makes AlreadyHave() return true even when the recovered sig is deleted
locally. This avoids re-requesting and re-processing of old recovered sigs.

* Also truncate recovered sigs for freshly received ISLOCKs

* Fix comment
…hpay#3219)

* Implement re-signing of InstantSend inputs when TXs come in via blocks

* Use GetAdjustedTime instead of GetTimeMillis in CSigSharesManager

This allows use of mocktime in tests.

* Expose verifiedProRegTxHash in getpeerinfo and implement wait_for_mnauth

* Allow to wait for IS and CL to NOT happen

* Bump timeout for wait_for_instantlock

* Implement tests for retroactive signing of IS and CLs

* Add wait_for_tx function to DashTestFramework

* Add -whitelist=127.0.0.1 to node0

* Use node3 for isolated block generation

* Don't test for non-receival of TXs on node4/node5
Implement "concentrated recovery" of LLMQ signatures
Avoid unnecessary processing/verification of reconstructed recovered signatures
…ructors "explicit"

1cc9a80 CI: Add extended lint job for cppcheck (Fuzzbawls)
43b75ca Declare single-argument (non-converting) constructors "explicit" (Fuzzbawls)

Pull request description:

  Declare single-argument (non-converting) constructors `explicit`.

  In order to avoid unintended implicit conversions.

  Coming from bitcoin#10969

  Added a new CI lint job that uses `cppcheck` to indicate any regressions or new introductions. This lint framework can be expanded on to catch other static analysis warnings in future PRs.

ACKs for top commit: 1cc9a80
  panleone:
    utACK 1cc9a80
  Liquid369:
    utACK 1cc9a80

Tree-SHA512: 612997f2799d2527d3ecfff023740add6ea4f5d67bce3e378880b27e596e5b6ab4e33c39492e846ae071b9c5da1fe6938fc8d030d3bab2894b7ad0b406697765
a85b450 Merge pull request dashpay#3399 from codablock/pr_speedups2 (Alexander Block)
136f900 cherry-pick dashpay#2833 (Alexander Block)
d942439 Merge pull request dashpay#3389 from codablock/pr_concentrated_recovery (Alexander Block)
36790d2 cherry pick dashpay#3368 (Author Alexander Block)
dac01a9 cherry-pick dashpay#2780 (Alexander Block)
39d0ed9 cherry-pick dashpay#3367 (Alexander Block)
5084bbf Allow re-signing of IS locks when performing retroactive signing (dashpay#3219) (Alexander Block)
802c006 Only track last seen time instead of first and last seen time (dashpay#3165) (Alexander Block)
479b64b Avoid propagating InstantSend related old recovered sigs (dashpay#3145) (Alexander Block)
27fa2af cherry-pick dashpay#3117 (Pasta)
cf138e0 cherry-pick dashpay#3097 (Pasta)
23b140e Introduce getbestchainlock rpc and fix llmq-is-cl-conflicts.py (dashpay#3094) (UdjinM6)

Pull request description:

  as usual each commit backports a different PR

ACKs for top commit: a85b450
  Duddino:
    utACK a85b450
  Liquid369:
    uTACK a85b450
  Fuzzbawls:
    ACK a85b450

Tree-SHA512: e9024d180888d8a6cc300ba9df74fc15929e3ade1773e5d312bd8cc93f6c9fd3898c5bf2d14672abf4faba576575c33936708e6e1dfd01a393479d264d3f2c57
Strip the `settings` prefix from settings source files as it is redundant
now.
Remove the 'settings' prefix from settings ui forms as it is redundant.
The jfrog.io repository is no more, and a new boost.io repository has
been made in it's place.
Inter means between two groups, intra means inside of a group.

Signed-off-by: pasta <[email protected]>
…shpay#3678)

* Always check for previous quorum set in llmq IS

* Refactor SelectQuorumForSigning and related code

Should have no changes in behaviour

* Do not use SIGN_HEIGHT_OFFSET when checking pending IS locks, use actual chain tip

This commit actually changes the behaviour
* Fix potential deadlock in `CSporkManager::UpdateSpork()`

* Protect `inputRequestIds` with cs lock

* Protect `curDBTransaction` in `CEvoDB::CommitRootTransaction()`

* Check for `AssertLockNotHeld` in `EnforceBestChainLock()` instead of just having a comment in code

* Protect spork maps on (de)serialization
50626f5 [Depends] Update Boost source URL (Fuzzbawls)

Pull request description:

  The jfrog.io repository is no more, and a new boost.io repository has been made in it's place.

ACKs for top commit: 50626f5
  Duddino:
    ACK 50626f5
  Liquid369:
    ACK 50626f5

Tree-SHA512: 6894cd687566e5f24a7e1b43cb99c56484fe5b1d12d350172cd7ecc971085cb7d916fcd7ddfb8f6b4b078a0e7675957ff2d343a1d01f61c9a5ea3c3fd321c716
aab22f6 [Build] Update .gitignore (Fuzzbawls)

Pull request description:

  Add new filters for various files that we don't want tracked in the git tree.

ACKs for top commit: aab22f6
  Duddino:
    ACK aab22f6
  Liquid369:
    re-ACK aab22f6

Tree-SHA512: 8cd37f6607dd8c00bf80356cb998a9addc82235e4760df479804d1e5d0c189d925b306cbf1b48ffa9b024e9e07d1159a345e2c3e9351e931a6cfcea453cc53ae
…le names

25bad3f Refactor: Sanitize settings ui forms (Fuzzbawls)
0223281 Refactor: Sanitize settings source files (Fuzzbawls)

Pull request description:

  Followup to #2936 that strips the `settings` filename prefix from GUI settings source files.

  This cleans the header include gards to be more readable. The one exception is `settingswidget` as that is aptly descriptive as-is.

ACKs for top commit: 25bad3f
  Duddino:
    utACK 25bad3f
  Liquid369:
    ACK 25bad3f

Tree-SHA512: a2a56bb5c15f0952b4f50f36520a96b5d17b18a1709c372f12b990ac721bfbe0a17892d9598eb7da88250237a284df345588f0eb3dd4b34dc8e81c3564dc37be
It is no longer necessary to have a `pivx` subdir in the qt source tree.
 This moves files up a level and cleans include guards.
595a672 Fix thread names to fit into 15 symbols (dashpay#3897) (UdjinM6)
2f492d4 evo/llmq/spork: Fix various (potential) locking issues (dashpay#3829) (UdjinM6)
453a74f Fix two potential issues in the way pending islocks are processed (dashpay#3678) (UdjinM6)
902809c replace `inter-quorum` with `intra-quorum` (dashpay#3642) (PastaPastaPasta)
46e51db Fix CSigningManager::VerifyRecoveredSig (dashpay#3546) (UdjinM6)
dd02dfd Use exponential backoff timeouts for recovery (dashpay#3535) (Alexander Block)

Pull request description:

  Each commits backports a different PR, as mentioned in the commit name

ACKs for top commit: 595a672
  Liquid369:
    ACK 595a672
  Fuzzbawls:
    utACK 595a672

Tree-SHA512: 4d66215d3b1944266802045f66d2bec1a9e4eb7c7e2bfb16fcaf16bafda7e47225b43129094081990a5a25a9b9f753e9071f30d357dbe51e592f3b824384a461
aa91905 [Refactor] Nuke the pivx qt subdir (Fuzzbawls)

Pull request description:

  It is no longer necessary to have a `pivx` subdir in the qt source tree.

  This moves files up a level and cleans include guards.

ACKs for top commit: aa91905
  Duddino:
    ACK aa91905
  Liquid369:
    ACK aa91905

Tree-SHA512: 882df93237e734492a05c03563dcb983d54faf8f505f008af57782f7d02ee543cd01306d6e743879aa07ce8f46862fae7332a990f936f479363e3a3569518be2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.