Skip to content

Commit 2fbd73e

Browse files
Merge pull request #5385 from PastaPastaPasta/v19.x
backport: v19.1.0 backports
2 parents b66dc27 + a938b77 commit 2fbd73e

File tree

9 files changed

+64
-183
lines changed

9 files changed

+64
-183
lines changed

.github/workflows/merge-check.yml

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Check Merge Fast-Forward Only
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
jobs:
8+
check_merge:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- name: Checkout repository
12+
uses: actions/checkout@v2
13+
with:
14+
fetch-depth: 0
15+
16+
- name: Set up Git
17+
run: |
18+
git config user.name "GitHub Action"
19+
git config user.email "[email protected]"
20+
21+
- name: Check merge --ff-only
22+
run: |
23+
git fetch origin master:master
24+
git checkout master
25+
if [ "${{ github.event_name }}" == "pull_request" ]; then
26+
git merge --ff-only ${{ github.event.pull_request.head.sha }}
27+
else
28+
git merge --ff-only ${{ github.sha }}
29+
fi

configure.ac

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
AC_PREREQ([2.69])
22
define(_CLIENT_VERSION_MAJOR, 19)
3-
define(_CLIENT_VERSION_MINOR, 0)
3+
define(_CLIENT_VERSION_MINOR, 1)
44
define(_CLIENT_VERSION_BUILD, 0)
55
define(_CLIENT_VERSION_RC, 0)
66
define(_CLIENT_VERSION_IS_RELEASE, true)

contrib/containers/ci/Dockerfile

+3-2
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,9 @@ RUN pip3 install \
4343
multiprocess
4444

4545
# dash_hash
46-
RUN git clone --depth 1 --no-tags https://github.com/dashpay/dash_hash
47-
RUN cd dash_hash && python3 setup.py install
46+
ARG DASH_HASH_VERSION=1.4.0
47+
RUN git clone --depth 1 --no-tags --branch=${DASH_HASH_VERSION} https://github.com/dashpay/dash_hash
48+
RUN cd dash_hash && pip3 install -r requirements.txt .
4849

4950
ARG USER_ID=1000
5051
ARG GROUP_ID=1000

contrib/macdeploy/detached-sig-create.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ fi
2222
rm -rf ${TEMPDIR}
2323
mkdir -p ${TEMPDIR}
2424

25-
${SIGNAPPLE} sign -f --detach "${TEMPDIR}/${OUTROOT}" "$@" "${BUNDLE}"
25+
${SIGNAPPLE} sign --hardened-runtime -f --detach "${TEMPDIR}/${OUTROOT}" "$@" "${BUNDLE}"
2626

2727
tar -C "${TEMPDIR}" -czf "${OUT}" .
2828
rm -rf "${TEMPDIR}"

doc/release-notes.md

+14-174
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
# Dash Core version v19.0.0
1+
# Dash Core version v19.1.0
22

33
Release is now available from:
44

55
<https://www.dash.org/downloads/#wallets>
66

7-
This is a new major version release, bringing new features, various bugfixes
8-
and other improvements.
7+
This is a new minor version release, bringing various bugfixes and other improvements.
98

10-
This release is mandatory for all nodes.
9+
This release is mandatory for all nodes. This release delays v19 hard fork activation and
10+
will effectively hard fork the network. v19.0.0 nodes must upgrade to continue syncing properly.
1111

1212
Please report bugs using the issue tracker at GitHub:
1313

@@ -34,184 +34,23 @@ downgrade to an older version is only possible with a reindex
3434

3535
## Downgrade warning
3636

37+
### Downgrade to a version < v19.1.0
38+
Downgrading below v19.1.0 is not supported as v19.0.0 will attempt to hard fork, however this hardfork is problematic
39+
and is being delayed with this version
40+
3741
### Downgrade to a version < v19.0.0
3842
Downgrading to a version older than v19.0.0 is not supported due to changes in the evodb database. If you need to use an older version, you must either reindex or re-sync the whole chain.
3943

4044
# Notable changes
4145

42-
## High-Performance Masternodes
43-
44-
In preparation for the release of Dash Platform to mainnet, a new masternode type has been added. High-performance masternodes will be responsible for hosting Dash Platform services (once they are on mainnet) in addition to the existing responsibilities like ChainLocks and InstantSend.
45-
46-
Activation of the DashCore v19.0 hard fork will enable registration of the new 4000 DASH collateral masternodes. Until Dash Platform is released to mainnet, high-performance masternodes will provide the same services as regular masternodes with one small exception. Regular masternodes will no longer participate in the Platform-specific LLMQ after the hard fork since they will not be responsible for hosting Dash Platform.
47-
48-
Note: In DashCore v19.0 the relative rewards and voting power are equivalent between regular and high-performance masternodes. Masternodes effectively receive one payout and one governance vote per 1000 DASH collateral. So, there is no difference in reward amount for running four regular masternodes or one high-performance masternode. In v19.0, high-performance masternodes simply receive payments in four consecutive blocks when they are selected for payout. Some frequently asked questions may be found at https://www.dash.org/hpmn-faq/.
49-
50-
## BLS Scheme Upgrade
51-
52-
Once the v19 hard fork is activated, all remaining messages containing BLS public keys or signatures will serialise them using the new basic BLS scheme.
53-
The motivation behind this change is the need to be aligned with IETF standards.
54-
55-
List of affected messages:
56-
`dsq`, `dstx`, `mnauth`, `govobj`, `govobjvote`, `qrinfo`, `qsigshare`, `qsigrec`, `isdlock`, `clsig`, and all DKG messages (`qfcommit`, `qcontrib`, `qcomplaint`, `qjustify`, `qpcommit`).
57-
58-
### `qfcommit`
59-
60-
Once the v19 hard fork is activated, `quorumPublicKey` will be serialised using the basic BLS scheme.
61-
To support syncing of older blocks containing the transactions using the legacy BLS scheme, the `version` field indicates which scheme to use for serialisation of `quorumPublicKey`.
62-
63-
| Version | Version Description | Includes `quorumIndex` field |
64-
|---------|--------------------------------------------------------|------------------------------|
65-
| 1 | Non-rotated qfcommit serialised using legacy BLS scheme | No |
66-
| 2 | Rotated qfcommit serialised using legacy BLS scheme | Yes |
67-
| 3 | Non-rotated qfcommit serialised using basic BLS scheme | No |
68-
| 4 | Rotated qfcommit serialised using basic BLS scheme | Yes |
69-
70-
### `MNLISTDIFF` P2P message
71-
72-
Starting with protocol version 70225, the following field is added to the `MNLISTDIFF` message between `cbTx` and `deletedQuorumsCount`.
73-
74-
| Field | Type | Size | Description |
75-
|---------------------| ---- | ---- |-----------------------------------|
76-
| version | uint16_t | 2 | Version of the `MNLISTDIFF` reply |
77-
78-
The `version` field indicates which BLS scheme is used to serialise the `pubKeyOperator` field for all SML entries of `mnList`.
79-
80-
| Version | Version Description |
81-
|---------|-----------------------------------------------------------|
82-
| 1 | Serialisation of `pubKeyOperator` using legacy BLS scheme |
83-
| 2 | Serialisation of `pubKeyOperator` using basic BLS scheme |
84-
85-
### `ProTx` txs family
86-
87-
`proregtx` and `proupregtx` will support a new `version` value:
88-
89-
| Version | Version Description |
90-
|---------|-----------------------------------------------------------|
91-
| 1 | Serialisation of `pubKeyOperator` using legacy BLS scheme |
92-
| 2 | Serialisation of `pubKeyOperator` using basic BLS scheme |
93-
94-
`proupservtx` and `prouprevtx` will support a new `version` value:
95-
96-
| Version | Version Description |
97-
|---------|------------------------------------------------|
98-
| 1 | Serialisation of `sig` using legacy BLS scheme |
99-
| 2 | Serialisation of `sig` using basic BLS scheme |
100-
101-
### `MNHFTx`
102-
103-
`MNHFTx` will support a new `version` value:
104-
105-
| Version | Version Description |
106-
|---------|------------------------------------------------|
107-
| 1 | Serialisation of `sig` using legacy BLS scheme |
108-
| 2 | Serialisation of `sig` using basic BLS scheme |
109-
110-
## Wallet
111-
112-
## Automatic wallet creation removed
113-
114-
Dash Core will no longer automatically create new wallets on startup. It will
115-
load existing wallets specified by -wallet options on the command line or in
116-
dash.conf or settings.json files. And by default it will also load a
117-
top-level unnamed ("") wallet. However, if specified wallets don't exist,
118-
Dash Core will now just log warnings instead of creating new wallets with
119-
new keys and addresses like previous releases did.
120-
121-
New wallets can be created through the GUI (which has a more prominent create
122-
wallet option), through the dash-wallet create command or the createwallet RPC.
123-
124-
## P2P and Network Changes
125-
126-
## Removal of reject network messages from Dash Core (BIP61)
127-
128-
The command line option to enable BIP61 (-enablebip61) has been removed.
129-
130-
Nodes on the network can not generally be trusted to send valid ("reject")
131-
messages, so this should only ever be used when connected to a trusted node.
132-
Please use the recommended alternatives if you rely on this deprecated feature:
133-
134-
- Testing or debugging of implementations of the Dash P2P network protocol
135-
should be done by inspecting the log messages that are produced by a recent
136-
version of Dash Core. Dash Core logs debug messages
137-
(-debug=<category>) to a stream (-printtoconsole) or to a file
138-
(-debuglogfile=<debug.log>).
139-
140-
- Testing the validity of a block can be achieved by specific RPCs:
141-
- submitblock
142-
- getblocktemplate with 'mode' set to 'proposal' for blocks with
143-
- potentially invalid POW
144-
- Testing the validity of a transaction can be achieved by specific RPCs:
145-
- sendrawtransaction
146-
- testmempoolaccept
147-
148-
## CoinJoin update
149-
150-
A minor update in several CoinJoin-related network messages improves support
151-
for mixing from SPV clients. These changes make it easier for SPV clients to
152-
participate in the CoinJoin process by using masternode information they can
153-
readily obtain and verify via [DIP-0004](https://github.com/dashpay/dips/blob/master/dip-0004.md).
154-
155-
## Remote Procedure Call (RPC) Changes
156-
157-
### The new RPCs are:
158-
- In order to support BLS public keys encoded in the legacy BLS scheme, `protx register_legacy`, `protx register_fund_legacy`, and `protx register_prepare_legacy` were added.
159-
- `cleardiscouraged` clears all the already discouraged peers.
160-
- The following RPCs were added: `protx register_hpmn`, `protx register_fund_hpmn`, `protx register_prepare_hpmn` and `protx update_service_hpmn`.
161-
These HPMN RPCs correspond to the standard masternode RPCs but have the following additional mandatory arguments: `platformNodeID`, `platformP2PPort` and `platformHTTPPort`.
162-
- `upgradewallet`
163-
164-
### The removed RPCs are:
165-
166-
None
167-
168-
### Changes in existing RPCs introduced through bitcoin backports:
169-
170-
- The `utxoupdatepsbt` RPC method has been updated to take a descriptors
171-
argument. When provided, input and output scripts and keys will be filled in
172-
when known. See the RPC help text for full details.
173-
174-
175-
### Dash-specific changes in existing RPCs:
176-
177-
- `masternodelist`: New mode `recent` was added in order to hide banned masternodes for more than one `SuperblockCycle`. If the mode `recent` is used, then the reply mode is JSON (can be additionally filtered)
178-
- `quorum info`: The new `previousConsecutiveDKGFailures` field will be returned for rotated LLMQs. This field will hold the number of previous consecutive DKG failures for the corresponding quorumIndex before the currently active one. Note: If no previous commitments were found then 0 will be returned for `previousConsecutiveDKGFailures`.
179-
- `bls generate` and `bls fromsecret`: The new `scheme` field will be returned indicating which scheme was used to serialise the public key. Valid returned values are `legacy` and`basic`.
180-
- `bls generate` and `bls fromsecret`: Both RPCs accept an incoming optional boolean argument `legacy` that enforces the use of legacy BLS scheme for the serialisation of the reply even if v19 is active.
181-
- `masternode status`: now returns the type of the masternode.
182-
- `masternode count`: now returns a detailed summary of total and enabled masternodes per type.
183-
- `gobject getcurrentvotes`: reply is enriched by adding the vote weight at the end of each line. Possible values are 1 or 4. Example: "7cb20c883c6093b8489f795b3ec0aad0d9c2c2821610ae9ed938baaf42fec66d": "277e6345359071410ab691c21a3a16f8f46c9229c2f8ec8f028c9a95c0f1c0e7-1:1670019339:yes:funding:4"
184-
- Once the v19 hard fork is activated, `protx register`, `protx register_fund`, and `protx register_prepare` RPCs will decode BLS operator public keys using the new basic BLS scheme.
185-
186-
Please check `help <command>` for more detailed information on specific RPCs.
187-
188-
## Command-line options
189-
190-
A number of command-line option changes were made related to testing and
191-
removal of BIP61 support.
192-
193-
New cmd-line options:
194-
- `llmqplatform` (devnet only)
195-
- `unsafesqlitesync`
196-
197-
Removed cmd-line options:
198-
- `enablebip61`
199-
- `upgradewallet`
200-
201-
Changes in existing cmd-line options:
202-
- `llmqinstantsend` and `llmqinstantsenddip0024` can be used in regtest now
203-
- Passing an invalid `-rpcauth` argument now cause dashd to fail to start.
204-
205-
Please check `Help -> Command-line options` in Qt wallet or `dashd --help` for
206-
more information.
207-
208-
## Backports from Bitcoin Core
46+
## Delaying v19 Hard Fork
20947

210-
This release introduces many updates from Bitcoin v0.18-v0.21 as well as numerous updates from Bitcoin v22 and more recent versions. Bitcoin changes that do not align with Dash’s product needs, such as SegWit and RBF, are excluded from our backporting. For additional detail on what’s included in Bitcoin, please refer to their release notes.
48+
The start date for the v19 Hard Fork has been delayed until June 14th. The earliest hard fork date will be roughly two
49+
weeks after that date. A new version will be required before this date to ensure a smooth hard fork.
21150

212-
# v19.0.0 Change log
51+
# v19.1.0 Change log
21352

214-
See detailed [set of changes](https://github.com/dashpay/dash/compare/v18.2.2...dashpay:v19.0.0).
53+
See detailed [set of changes](https://github.com/dashpay/dash/compare/v19.0.0...dashpay:v19.1.0).
21554

21655
# Credits
21756

@@ -250,6 +89,7 @@ Dash Core tree 0.12.1.x was a fork of Bitcoin Core tree 0.12.
25089

25190
These release are considered obsolete. Old release notes can be found here:
25291

92+
- [v19.0.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.0.0.md) released Apr/14/2023
25393
- [v18.2.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.2.2.md) released Mar/21/2023
25494
- [v18.2.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.2.1.md) released Jan/17/2023
25595
- [v18.2.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.2.0.md) released Jan/01/2023

src/chainparams.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,8 @@ class CMainParams : public CChainParams {
238238

239239
// Deployment of Deployment of Basic BLS, AssetLocks, EHF
240240
consensus.vDeployments[Consensus::DEPLOYMENT_V19].bit = 8;
241-
consensus.vDeployments[Consensus::DEPLOYMENT_V19].nStartTime = 1682380800; // Tuesday, April 25, 2023 0:00:00
242-
consensus.vDeployments[Consensus::DEPLOYMENT_V19].nTimeout = 1714003200; // Thursday, April 25, 2024 0:00:00
241+
consensus.vDeployments[Consensus::DEPLOYMENT_V19].nStartTime = 1686700800; // Wednesday, June 14, 2023 12:00:00 AM
242+
consensus.vDeployments[Consensus::DEPLOYMENT_V19].nTimeout = 1718323200; // Friday, June 14, 2024 12:00:00 AM
243243
consensus.vDeployments[Consensus::DEPLOYMENT_V19].nWindowSize = 4032;
244244
consensus.vDeployments[Consensus::DEPLOYMENT_V19].nThresholdStart = 3226; // 80% of 4032
245245
consensus.vDeployments[Consensus::DEPLOYMENT_V19].nThresholdMin = 2420; // 60% of 4032

src/qt/intro.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ bool Intro::pickDataDirectory(interfaces::Node& node)
206206
}
207207

208208
/* Let the user choose one */
209-
Intro intro(0, node.getAssumedChainStateSize(), node.getAssumedChainStateSize());
209+
Intro intro(0, node.getAssumedBlockchainSize(), node.getAssumedChainStateSize());
210210
GUIUtil::disableMacFocusRect(&intro);
211211
GUIUtil::loadStyleSheet(true);
212212
intro.setDataDirectory(dataDirDefaultCurrent);

src/wallet/wallet.cpp

+12-1
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,12 @@ std::shared_ptr<CWallet> CreateWallet(interfaces::Chain& chain, const std::strin
324324
wallet->m_spk_man->NewKeyPool();
325325
// end TODO
326326

327+
// backup the wallet we just encrypted
328+
if (!wallet->AutoBackupWallet("", error, warnings) && !error.original.empty()) {
329+
status = DatabaseStatus::FAILED_ENCRYPT;
330+
return nullptr;
331+
}
332+
327333
// Relock the wallet
328334
wallet->Lock();
329335
}
@@ -4637,11 +4643,16 @@ bool CWallet::AutoBackupWallet(const fs::path& wallet_path, bilingual_str& error
46374643
strWalletName = "wallet.dat";
46384644
}
46394645

4640-
if (!IsBDBFile(BDBDataFile(wallet_path))) {
4646+
if (!wallet_path.empty() && !IsBDBFile(BDBDataFile(wallet_path))) {
46414647
WalletLogPrintf("Automatic wallet backups are currently only supported with Berkeley DB!\n");
46424648
return false;
46434649
}
46444650

4651+
if (IsWalletFlagSet(WALLET_FLAG_BLANK_WALLET)) {
4652+
WalletLogPrintf("Wallet is blank, won't create new backup for it!\n");
4653+
return false;
4654+
}
4655+
46454656
if (nWalletBackups <= 0) {
46464657
WalletLogPrintf("Automatic wallet backups are disabled!\n");
46474658
return false;

test/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Before tests can be run locally, Dash Core must be built. See the [building ins
2727
Many Dash specific tests require dash_hash. To install it:
2828

2929
- Clone the repo `git clone https://github.com/dashpay/dash_hash`
30-
- Install dash_hash `cd dash_hash && python3 setup.py install`
30+
- Install dash_hash `cd dash_hash && pip3 install -r requirements.txt .`
3131

3232
The ZMQ functional test requires a python ZMQ library. To install it:
3333

0 commit comments

Comments
 (0)