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

Develop merge into Master for the v4.6.1 mainnet release #1205

Merged
merged 79 commits into from
Aug 21, 2022
Merged

Conversation

hans-schmidt
Copy link
Contributor

This is the merge of the develop branch into master, including all the improvements made and tested over the last 2 years with the exception of P2SH asset support, which is not included.

There are quite a few bug fixes and GUI improvements, but NO changes in consensus.

HyperPeek and others added 30 commits May 21, 2021 17:29
… 001 (PR #873)

Merged, as we want to continue testing on develop.
Update configure.ac to c++17

Update ax_cxx_compile_stdcxx.m4 from bitcoin
    Copied from bitcoin master branch.

Use C++11 member initializer in CNodeState
    Manually copied/adapted from bitcoin#21370

net_processing:
 IteratorComparator add const. [c++17]
Ref: CVE-2017-8798
    bitcoin#10414
    bitcoin#15993

    configure-checks for miniupnpc API >=10.
    This commit does not include the compile-time checks from bitcoin#15993.
Added 7 nodes picked from my 3 testnet wallets.
Better than the two we know do not respond to anything.
We don't want these to change.
    Fixes issue #800.
* contrib: Dockerfile updated

    Use Ubuntu 20.04.
    Drop outdated bitcoin-ppa.
    Build Berkeley DB 4.8 from source with install_db4.sh.

    Usage: 'docker build -t ravencoin:4.7 -f contrib/Dockerfile .'

* Remove obsolete Dockerfiles.
Expat renamed files because of CVE-2013-0340/CWE-776.
    This switches to v.2.4.1.
    Source changed from sourceforge to github.

doc: update dependencies.md
* gui: option to hide text in toolbar

Add option to only show icons in toolbar.

Closes #478

* Don't require restart.

* Update comment.
backport bitcoin#204

    In Qt 5 the last column resizing with dragging its left edge works
    out-of-the-box.
    The current TableViewLastColumnResizingFixer implementation could put
    the last column content out of the view port and confuse a user.
moved app out of the if.
    removed extra qt version check.
Code segment moved to match the order it appears
    Switched alt-<num> hotkeys to match the correct order.
    Set hotkey for Restricted assets (ALT+8).
…tion (#1019)

Handle pre-fork padded P2SH-ish transactions like v4.3.2.1.
Disable units spinbox if max units is already set.

    Set minvalue for spinbox after setting value, to allow
    updates when the number of units in the selected asset is
    lower than the number of units in the previous.
Update asset list when the qcombobox is shown.
    Fixes #1059
Backport part of bitcoin#14624

bitcoin#3db746beb407f7cdd9cd6a605a195bef1254b4c0
Bump version number for second test release.
It does not make sense to force dns seeds by default.
If the wallet does not have words, an error message is shown.
This happens after the wallet is unlocked, to check for words.
This change locks the wallet after showing the error.
backport of bitcoin#22054

Slightly modified for Ravencoin.

Co-Authored-by: fdov <fd21@pm.me>

Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
fdoving and others added 22 commits February 9, 2022 14:18
…zed reads (#1161)

Manual backport of bitcoin PR #17906

Initialize CConnman byte counters during construction, so GetTotalBytesRecv()
and GetTotalBytesSent() methods don't return garbage before Start() is called.

Change shouldn't have any effect outside of the GUI. It just fixes a race
condition during a qt test that was observed on travis:
https://travis-ci.org/bitcoin/bitcoin/jobs/634989685
manual backport of bitcoin PR # 14993

rpc: Fix data race (UB) in InterruptRPC()
Manual backport of bitcoin PR 14728

Reachable from either place where SetIP is used when our best-guess
addrLocal for a peer is IPv4, but the peer tells us it's reaching us at
an IPv6 address.

In that case, SetIP turns an IPv4 address into an IPv6 address without
setting the scopeId, which is subsequently read in GetSockAddr during
CNetAddr::ToStringIP and passed to getnameinfo. Fix by ensuring every
constructor initializes the scopeId field with something.
Manual backport of bitcoin PR #13907

The largest sensible size for a locator is log in the number of blocks.
 But, as noted by Coinr8d on BCT a maximum size message could encode a
 hundred thousand locators.  If height were used to limit the messages
 that could open new attacks where peers on long low diff forks would
 get disconnected and end up stuck.

Ideally, nodes first first learn to limit the size of locators they
 send before limiting what would be processed, but common implementations
 back off with an exponent of 2 and have an implicit limit of 2^32
 blocks, so they already cannot produce locators over some size.

This sets the limit to an absurdly high amount of 101 in order to
 maximize compatibility with existing software.
…t) (#1167)

Co-authored-by: practicalswift <practicalswift@users.noreply.github.com>
* [wallet] Tidy up CWallet::FundTransaction

* [wallet] Make CWallet::FundTransaction atomic

Co-authored-by: João Barbosa <joao.paulo.barbosa@gmail.com>
This bug was discovered in Dec-2021 when two blocks were mined within one second.
Pool operators locked up and required restarting.

It happened because when CheckTxInputs finds a double spend, ConnectBlock fails but
didn't mark the bad txn to be flushed from the mempool.
* SetAddressBook(...) is locking cs_wallet internally
* DelAddressBook(...) is locking cs_wallet internally

Co-authored-by: practicalswift <practicalswift@users.noreply.github.com>
* gui: create asset view - browse ipfs button

    * Add button to open ipfs-hash in the configured ipfs-viewer.
      This can be handy to verify your ipfs-hash is correct, before creating the asset.

    * Remove a check that enabled the Check Availability button once the `Add IPFS/Txid hash` was enabled.

* gui: reissue asset view, browse ipfs button.

* Add button to open ipfs-hash in the configured ipfs-viewer.
  This can be handy to verify your ipfs-hash is correct, before reissuing the asset.
* net: Add missing locks in net.{cpp,h}

* writing variable 'nTotalBytesRecv' requires holding mutex 'cs_totalBytesRecv' exclusively
* writing variables 'nTotalBytesSent'/'nMaxOutboundTotalBytesSentInCycle'/'nMaxOutboundCycleStartTime' require holding mutex 'cs_totalBytesSent' exclusively
* writing variable 'nMaxOutboundTimeframe'/'nMaxOutboundLimit' require holding mutex 'cs_totalBytesSent' exclusively
* writing variable 'vAddedNodes' requires holding mutex 'cs_vAddedNodes' exclusively

* Add Clang thread safety analysis annotations

Co-authored-by: practicalswift <practicalswift@users.noreply.github.com>
Co-authored-by: hans-schmidt <43421934+hans-schmidt@users.noreply.github.com>
Fixes issue #1102.

Removed some brackets.
Removed one asset_quantity.
Adjusted indentation.
Fix mining bug - lockup in CreateNewBlock loop
Put the how-to md files front and center for novice users
Fix bug with in memory qualifier address checking
* Revert "consensus: correct verification of transactions pre p2sh-asset activation (#1019)"

This reverts commit 46aad1a.

* Revert "Re-Add Feature: Add P2SH support - Core Protocol Development Proposal 001 (PR #873)"

This reverts commit 8c31e2b.
@hans-schmidt hans-schmidt changed the title Develop Develop merge into Master for the v4.6.1 mainnet release Aug 16, 2022
@jeroz1
Copy link
Contributor

jeroz1 commented Aug 17, 2022

I cross checked all commits, and they seem ok to me. @TronBlack

One thing to think about is updating the build pipeline:

Build Raven: .github#L1
The ubuntu-18.04 environment is deprecated, consider switching to ubuntu-20.04(ubuntu-latest), or ubuntu-22.04 instead. For more details see https://github.com/actions/virtual-environments/issues/6002

@hans-schmidt
Copy link
Contributor Author

I prefer not to update the build environment at this time.
Quite a few people are still using Ubuntu-18.04. But during the change from 18.04 to 20.04 the C library
upgraded in a non-reverse compatible way. So if you build on 20.04, it won't run on 18.04. Instead
it gives error messages about "GLIBC_2.29' not found" and "GLIBC_2.28' not found" because 18.04
only supports GLIBC_2.27

Copy link
Collaborator

@TronBlack TronBlack left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1
Should not change the consensus rules from version 4.3.2.1
Improves UI, includes some Bitcoin improvements, increased language support, and other non-consensus improvements.

Copy link
Contributor

@HyperPeek HyperPeek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With leaving p2sh out of this merge this does not touch consensus, so I do not see a risk here. I have merged / seen / approved most individual commits before and apart from the language (.ts) files I checked the diffs once more.
Approved and good to go from my side -- great work!

@hans-schmidt
Copy link
Contributor Author

Three approvals (not including me). Good to go.

@hans-schmidt hans-schmidt merged commit c8197cd into master Aug 21, 2022
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.

None yet