These need to be restarted even in this case as keys are cycled when
upgrade_mn_protx is called. This resulted in invalid IX votes but was not
noticed because only 2 MNs were affected (still 8 of 10 votes succesful)
* Track confirmedHash of masternodes
* Also include confirmedHash in DIP4
* Implement CalculateQuorum and CalculateScores in CDeterministicMNList
* Use new ProRegTx based scoring function in GetMasternodeScores
* Update test vectors for simplifiedmns_merkleroots tests
* Implement VersionBitsCountBlocksInWindow
This gives the count of blocks that voted for the given BIP9 deployment
* Add additional information to BIP9 softforks returned by getblockchaininfo
* make sure progress doesn't exceed 1
* Allow to reuse collaterals and addresses in ProRegTx
This also requires to move out the duplication check from CheckService to
the 2 individual ProTx check methods.
* Implement replacement logic for reused collaterals
* Add tests for new replacement logic
* Update defaultAssumeValid and nMinimumChainWork for mainnet
* Update defaultAssumeValid and nMinimumChainWork for testnet
* Add checkpoint for mainnet
* Add checkpoint for testnet
* RPC - Correct protx register_prepare help example
Use collateral hash and index instead of address
* RPC - Change protx register help ECDSA address to BLS operator key
* RPC - protx register_prepare help correction
Should direct to protx register help, not protx register_fund
* RPC - protx help typo
* Bump PS
- add 5th denom (0.001)
- always allow OP_RETURN in PS collaterals
- collateral amount is always 1/10 of the smallest denom
- bump MIN_PRIVATESEND_PEER_PROTO_VERSION to 70211
* drop backward compatibility in dsa/dsq serialization
* Use GetSmallestDenomination() in GetCollateralAmount()
* bump MIN_PRIVATESEND_PEER_PROTO_VERSION to 70212
* update en source
* remove pt_BR
it's no longer present on Transifex
* Update existing translations
NOTE: there are some mismatches in zh_CN
dash_zh_CN.ts: Mismatch between 'Start &all' and '启动全部(%A)'
dash_zh_CN.ts: Mismatch between 'Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.' and '打开当前目录中的调试日志文件。日志文件大的话可能要等上几秒钟。'
dash_zh_CN.ts: Mismatch between 'Too many %f denominations, removing.' and '太多面额化资金,正在移除。'
dash_zh_CN.ts: Mismatch between 'Initialization sanity check failed. %s is shutting down.' and '初始化完整性检查失败。% 即将关闭。'
* Add ar, ko, th
NOTE: there are 2 mismatches in ar
dash_ar.ts: Mismatch between '(of %1 GB needed)' and '(على 1% جيغابايت محتاجة)'
dash_ar.ts: Mismatch between 'Output debugging information (default: %u, supplying <category> is optional)' and 'معلومات تصحيح الخرج <category>ا(ختياري)'
* update bg, it, ja, ko, nl, pl, th
* fix ru
* add tr
* fix
* no `-debug` by default (it's too heavy)
* drop useless `sync_masternodes` calls and add a couple where they could be actually usefull
* change autoix-mempool.py test logic:
1. use separate nodes to send test txes
2. sync nodes while filling the mempool
* Remove reference to now removed "protocolVersion"
* Allow to use non-DIP3 collaterals after DIP3 activation
This removes a rule which only made sense when we assumed all collaterals
would remain in DIP3 ProRegTx transactions after DIP3 activation.
As we allow to refer external collaterals now, this rule should vanish as
well.
* Sleep in case block time is ahead of real time
See comment. This was not a problem before as we had enough time passed
between the last block that caused this and the start-alias call.
Now we added another start-alias call which is directly after we generated
many blocks.
Specifying only `wine` results in this message under Ubuntu Bionic:
Package wine is a virtual package provided by:
wine-stable 3.0-1ubuntu1
wine-development 3.6-1
You should explicitly select one to install.
Compilation
* drop most of custom PS logic from SelectCoins and inject it into regular flow (i.e. SelectCoinsMinConf)
* different priority for different denoms
* move CompareByPriority higher
* update comment
Co-Authored-By: UdjinM6 <udjinm6@gmail.com>
Add decimal places to clarify:
1. Non-integers are valid (e.g. 3.25)
2. Granularity - anything beyond x.xx is rounded (e.g. 3.259 -> 3.26)
This is due to DIP3 allowing values 0-10000 for operator reward (1/10000
= 0.01%)
* Do not run scheduled DoMaintenance if shutdown was requested
* Don't dump cache files if the load sequence was interrupted
* Stop privatesend and release keys before wallet flush
* fix typo
* fLiteMode should be set via GetBoolArg before first usage
Also move related stuff to be closer to each other
* Cleanup Dash-specific init steps
* Move deterministicMNManager creation slightly higher for consistensy
* RPC: Add help details for the bls RPC
* RPC: Refactor to match gobject RPC behavior
* RPC: Use command instead of strCommand for consistency within file
* RPC: BLS help cleanup
* RCP: Remove leading underscore on bls_help
* Don't crash when spork15 is enabled but no MNs have been registered
* Don't bail out when no masternode payee is found
We should pay superblocks even if no masternode payee is found.
* Add missing newline to LogPrint call
* Handle review comments
* Add BIP9 parameters for DIP3 deployment on testnet
* Remove autoix BIP9 deployment and reuse DIP3 deployment
* Add BIP9CheckMasternodesUpgraded to chain params
This controls if miners should check for upgraded masternodes first before
adding BIP9 bits to the block version. This only makes sense in network
where masternodes are up and running before BIP9 activation, which is not
necessarely the case in regtest and devnet.
Also refactor ComputeBlockVersion to use fCheckMasternodesUpgraded instead
of the inverse fAssumeMasternodeIsUpgraded. It is set to false by default
and only set to true in CreateNewBlock.
* Check for upgraded masternodes for DIP3 activation (only mainnet and testnet)
* Bump PROTOCOL_VERSION and DMN_PROTO_VERSION
We probably have nodes with 70211 already running on testnet.
* Implement RemoveAskFor to indicate that we're not interested in an item anymore
When an INV item is received from the first node, the item is requested
immediately. If the same item is received from another node, an entry is
added to mapAskFor which marks the item for re-requesting in case the first
node did not respond. When the item is received from the first node,
the item was previously never removed from mapAskFor. Only the later getdata
loop in SendMessages would then gradually remove items from the map. This
is quite delayed however as the entries in mapAskFor have a timeout value.
RemoveAskFor allows to remove all entries from mapAskFor and setAskFor
when we are not interested in the item anymore (e.g. because we received
it already).
* Call RemoveAskFor whenever we receive a message
* Only pass hash instead of CInv object to RemoveAskFor
* Add pooled_secure_allocator and mt_pooled_secure_allocator
* Use mt_pooled_secure_allocator for BLS secure allocation
The old solution relied on thread-local-storage and was thus not compatible
to libc6 2.11 (which is the minimum supported version we use).
Also, the old solution turned out to be erroneous. It would have crashed
or memory leaked when ownership of CBLSPrivateKey would be handled over
to another thread.
* Add new header files to Makefile.am
* Fix copyright headers of new files
* Bail out early from secure deallocation
* Clean up global BLS keys when shutting down