* Remove ppszTypeName from protocol.cpp and reimplement GetCommand
This removes the need to carefully maintain ppszTypeName, which required
correct order and also did not allow to permanently remove old message
types.
To get the command name for an INV type, GetCommandInternal uses a switch
which needs to be maintained from now on.
The way this is implemented also resembles the way it is implemented in
Bitcoin today, but it's not identical. The original PR that introduced the
switch case in Bitcoin was part of the Segwit changes and thus never got
backported. I decided to implement it in a slightly different way that
avoids throwing exceptions when an unknown INV type is encountered.
IsKnownType will now also leverage GetCommandInternal() to figure out if
the INV type is known locally. This has the side effect of old/legacy
message types to return false from now on. We will depend on this side
effect in later commits when we remove legacy InstantSend code.
* Stop handling/relaying legacy IX messages
When we receive an IX message, we simply treat it as a regular TX and relay
it as such.
We'll however still request IX messages when they are announced to us. We
can't simply revert to requesting TX messages in this case as it might
result in the other peer not answering due to the TX not being in mapRelay
yet. We should at some point in the future completely drop handling of IX
messages instead.
* Remove IsNewInstantSendEnabled() and only use IsInstantSendEnabled()
* Remove legacy InstantSend from GUI
* Remove InstantSend from Bitcoin/Dash URIs
* Remove legacy InstantSend from RPC commands
* Remove legacy InstantSend from wallet
* Remove legacy instantsend.h include
* Remove legacy InstantSend from validation code
* Completely remove remaining legacy InstantSend code
* Remove now unused spork
* Fix InstantSend related test failures
* Remove now obsolete auto IS tests
* Make spork2 and spork3 disabled by default
This should have no influence on mainnet as these sporks are actually set
there. This will however affect regtest, which shouldn't have LLMQ based
InstantSend enabled by default.
* Remove instantsend tests from dip3-deterministicmns.py
These were only testing legacy InstantSend
* Fix .QCheckBox#checkUsePrivateSend styling a bit
* s/TXLEGACYLOCKREQUEST/LEGACYTXLOCKREQUEST/
* Revert "verified via InstantSend" back to "verified via LLMQ based InstantSend"
* Use cmd == nullptr instead of !cmd
* Remove last parameter from AvailableCoins call
This was for fUseInstantSend which is not present anymore since rebase
3fb81a8 Use list initialization (C++11) for maps/vectors instead of boost::assign::map_list_of/list_of (practicalswift)
Tree-SHA512: 63a9ac9ec5799472943dce1cd92a4b14e7f1fe12758a5fc4b1efceaf2c85a4ba71dad5ccc50813527f18b192e7714c076e2478ecd6ca0d452b24e88416f872f7
* Remove use of -rdynamic
This causes check-symbols to fail horribly and also turned out to be not
required when using libbacktrace. It was only required when using
"backtrace()" from "<execinfo.h>"
* Remove spurious ], from configure.ac
* Add -DENABLE_STACKTRACES=1 to CMakeLists.txt
* Remove unused method my_backtrace_simple_callback
* Use fs::path().filename() instead of basename()
* Add static g_exeFileName and g_exeFileBaseName
* Use .exe.dbg file when available
* Use uint64_t instead of uintptr_t
* Implement GetBaseAddress() for unix and win32
* Implement unified crash_info and use it everywhere before printing crash info
* Print a serialized version of crash_info when there is no debug info
* Implement "-printcrashinfo" command line option
* Compile stacktrace support unconditionally and only make crash hooks conditional
This also renames the --enable-stacktraces option to --enable-crash-hooks
* Enable crash hooks in win/linux Gitian builds
* Try to load .debug file on MacOS and enable crash hooks for osx Gitian builds
* Check for dsymutil and if it needs --flat
* Create .debug files in osx Gitian build
* Handle review comments
* Also print crash description when no stacktrace is available
* Unconditionally add -g1 debug information
Instead of making it dependent on "--enable-crash-hooks". We will need the
debug info every time now, even in release builds.
* Put MacOS debug info into dSYM symbols instead of plain .debug files
* Implement MacOS specific GetBaseAddress
* Decouple lite mode and client-side PrivateSend
`-enableprivatesend`:
1. off by default in lite mode but can be overridden
2. does not start mixing, use `-privatesendautostart` (default is off) or `privatesend` rpc instead
* Disable PS when there is no wallet, do not auto-start mixing when wallet is locked
* Check for `!fEnablePrivateSend` and `!fPrivateSendRunning` instead of `!pwalletMain` in ps client code
* Add meaningful `privatesend` rpc error messages for various cases when mmixing is disabled
381a46e Consensus: Policy: MOVEONLY: Move CFeeRate out of the consensus module (Jorge Timón)
330bb5a Consensus: Minimal way to move dust out of consensus (Jorge Timón)
Tree-SHA512: 19a2ea8169afd5a9d3f940d8974e34cfaead153e3ff3068ac82fccdb8694d19d9b45938904ec9e8cd095bd5ca3a0080364da29372f6aaf56b11a6c2ccd6c7a4d
c1082a7 Chainparams: Use the factory for pow tests (Jorge Timón)
2351a06 Chainparams: Get rid of CChainParams& Params(std::string) (Jorge Timón)
f87f362 Chainparams: Use a regular factory for creating chainparams (Jorge Timón)
Tree-SHA512: 359c8a2a1bc9d02db7856d02810240ada28048ac088f878b575597a7255cdb0ffdd1a647085ee67a34c6a7e7ed9e6cfdb61240cf6e75139619b640dbb096072c
See: 0242b5afa4
This reverts commit 15e26a6, whose
purpose was to tweak the Qt configuration to force TLS, i.e., to
disable SSLv3, in Qt versions >= 5.5. However, the default behavior
of Qt >= 5.4 is to disable SSLv3 anyway [1], so the configuration
tweak is redundant.
With Qt 5.11.2, the configuration tweak is not only redundant but in
fact provokes a deadlock (#14359) due to Qt 5.11.2 being incompatible
with OpenSSL 1.1.1 [2]. Since the deadlock occurs at the early startup
stage of bitcoin-qt, it renders bitcoin-qt entirely non-functional
when compiled against OpenSSL 1.1.1 and Qt 5.11.2 (and possible future
combinations of OpenSSL and Qt versions).
This commit fixes#14359 by removing the redundant code.
[1] https://code.qt.io/cgit/qt/qtbase.git/commit/?id=3fd2d9eff8c1f948306ee5fbfe364ccded1c4b84
[2] https://bugreports.qt.io/browse/QTBUG-70956
* Generalize CBLSLazyWrapper so that it can be used of pubkeys and secret keys
* Implement == and != operators for CBLSLazyWrapper
* Implement cached hash for CBLSLazyWrapper
* Use CBLSLazyPublicKey for CDeterministicMNState::pubKeyOperator
* Speed up GetProjectedMNPayees by sorting the MN list by last paid
Instead of updating a temporary list for each projected height and calling
GetMNPayee() on it.
* Cache intermediate lists in GetListForBlock
This avoids re-loading and applying diffs again and again.
* Only update masternode list UI max once every 3 seconds
This avoids updating the UI on every block, which turned out to be very
expensive.
* Fix compilation
* Drop time restrictions for mn list update in ClientModel
They are fully handled by MasternodeList now.
911a480 wallet: Add comment describing the various classes in walletdb.h (Wladimir J. van der Laan)
69d2e9b wallet: Make IsDummy private in CWalletDBWrapper (Wladimir J. van der Laan)
3323281 wallet: CWalletDB CDB composition not inheritance (Wladimir J. van der Laan)
be9e1a9 wallet: Reduce references to global bitdb environment (Wladimir J. van der Laan)
071c955 wallet: Get rid of fFileBacked (Wladimir J. van der Laan)
71afe3c wallet: Introduce database handle wrapper (Wladimir J. van der Laan)
Tree-SHA512: e4e72953c61a2f6995d609a32f8ed8e18cab9a92bc9e193d46a1d1f06d9daa5c6da6fce2867d4e3ba4fc0439141901a3d35f246486f0fa8f59587786379dfcbd
add 'batch.'
Signed-off-by: Pasta <Pasta@dash.org>
remove `if (fFileBacked)`
Signed-off-by: Pasta <pasta@dashboost.org>
remove fFileBacked and strWalletFile
Signed-off-by: Pasta <Pasta@dash.org>
1c897fc Missing includes (Jorge Timón)
a1fd450 Trivial: Remove unneeded includes from .h: (Jorge Timón)
Tree-SHA512: ada3e62cc2435e58172a88b380be371b717a05725956c15e5493b6e19fe2903e5e6e43fd22dc24699333a0e8a0c7b42eb1ae61b41cb4ba82495be18e2d4ef3c6
move "#include "chain.h"" down a line
Signed-off-by: Pasta <pasta@dashboost.org>
NotifyMasternodeListChanged is called before the tip is updated which means we can't rely on GetListAtChainTip() and have to pass the list into CClientUIInterface
* bUseInstantX -> bUseInstantSend & bUseDarkSend -> bUsePrivateSend and be backwords compatible
Signed-off-by: Pasta <Pasta@dash.org>
* remove old settings
Signed-off-by: Pasta <Pasta@dash.org>
68af651 MOVEONLY: move TxConfirmStats to cpp (Alex Morcos)
2332f19 Initialize TxConfirmStats in constructor (Alex Morcos)
5ba81e5 Read and Write fee estimate file directly from CBlockPolicyEstimator (Alex Morcos)
14e10aa Call estimate(Smart)Fee directly from CBlockPolicyEstimator (Alex Morcos)
dbb9e36 Give CBlockPolicyEstimator it's own lock (Alex Morcos)
f6187d6 Make processBlockTx private. (Alex Morcos)
ae7327b Make feeEstimator its own global instance of CBlockPolicyEstimator (Alex Morcos)
Tree-SHA512: dbf3bd2b30822e609a35f3da519b62d23f8a50e564750695ddebd08553b4c01874ae3e07d792c6cc78cc377d2db33b951ffedc46ac7edaf5793f9ebb931713af
finish #9942 by removing removed functions
Signed-off-by: Pasta <Pasta@dash.org>
f110272 Remove `namespace fs=fs` (Wladimir J. van der Laan)
75594bd torcontrol: Use fs::path instead of std::string for private key path (Wladimir J. van der Laan)
2a5f574 Use fsbridge for fopen and freopen (Wladimir J. van der Laan)
bac5c9c Replace uses of boost::filesystem with fs (Wladimir J. van der Laan)
7d5172d Replace includes of boost/filesystem.h with fs.h (Wladimir J. van der Laan)
19e36bb Add fs.cpp/h (Wladimir J. van der Laan)
Tree-SHA512: 2c34f059dfa6850b9323f3389e9090a6b5f839a457a2960d182c2ecfafd9883c956f5928bb796613402d3aad68ebc78259796a7a313f4a6cfa98aaf507a66842
608bbcc [qt] Stop treating coinbase outputs differently: show them at 1conf (Matt Corallo)
Tree-SHA512: 62ba10520da8b83cf8e97c86dec3ccdcca8b7bfae0174d1a4099d33aa5d11933cc7c248394bf67c2b105211cf7931955816c741957832e703211030c7f4f002f
* Contains dashification. disables `-debug dash`
Merge #9424: Change LogAcceptCategory to use uint32_t rather than sets of strings.
6b3bb3d Change LogAcceptCategory to use uint32_t rather than sets of strings. (Gregory Maxwell)
Tree-SHA512: ebb5bcf9a7d00a32dd1390b727ff4d29330a038423611da01268d8e1d2c0229e52a1098e751d4e6db73ef4ae862e1e96d38249883fcaf12b68f55ebb01035b34
Signed-off-by: Pasta <Pasta@dash.org>
31 -> 32
Signed-off-by: Pasta <Pasta@dash.org>
* Merge #10123: Allow debug logs to be excluded from specified component
3bde556 Add -debugexclude option to switch off logging for specified components (John Newbery)
Tree-SHA512: 30202e3f2085fc2fc5dd4bedb92988f4cb162c612a42cf8f6395a7da326f34975ddc347f82bc4ddca6c84c438dc0cc6e87869f90c7ff88105dbeaa52a947fa43
* bump to uint64_t due to added Dash codes
Signed-off-by: Pasta <Pasta@dash.org>
* bump to uint64_t due to added Dash codes cont.
Signed-off-by: Pasta <Pasta@dash.org>
* string -> BCLog format
Signed-off-by: Pasta <Pasta@dash.org>
* uint32_t -> uint64_t
Signed-off-by: Pasta <Pasta@dash.org>
* Fix CBatchedLogger
* Fix most fDebug-s
* Fix `debug` rpc
* Fix BENCH and RAND conflicts
* Add ALERT and use it
* Update LogPrint-s in dash-specific code
* Tweak few log categories
Specifically:
- use PRIVATESEND in `CPrivateSendClientManager::GetRandomNotUsedMasternode()`
- use ZMQ in `CZMQPublishRawGovernanceVoteNotifier::NotifyGovernanceVote()` and `CZMQPublishRawGovernanceObjectNotifier::NotifyGovernanceObject()`
* Drop no longer used MASTERNODE category
* Merge #10153: logging: Fix off-by-one for shrinkdebugfile default
faab624 logging: Fix off-by-one for shrinkdebugfile (MarcoFalke)
Tree-SHA512: d6153e06067906172ff0611af9e585a3ecf0a7d56925b6ad7c12e75aa802441047059b9b6f6c78e79916c3f2abc8f1998bfd2d5b84201ec6421f727c08da3c21
* Shift dash-specific log categories to start from `1ul << 32` to avoid potential future conflicts with bitcoin ones
* Fix `dash` category
* remove debugCategories
Signed-off-by: Pasta <Pasta@dash.org>
* Prepend "std::" to find call
* Check for BCLog::PRIVATESEND instead of logCategories != BCLog::NONE
* Use BCLog::MNPAYMENTS category instead of checking for logCategories != BCLog::NONE
* Move "End Dash" comment below "ALERT"
When adding new entries here, we'll otherwise get confused with ordering
and might end up forgetting that adding something Dash specific must
continue with the bit after 43.
* Implement GetInstantSendLockCount in CInstantSendManager
* Add islockCountChanged signal to client model
* Show number of InstantSend locks in debug console
e9a6461 Make qt wallet test compatible with qt4 (Russell Yanofsky)
Tree-SHA512: a3e4598986cb3c5c20aaa1d440abc886d84fcc69a6ee4079787cfc8e3a2dce655060ff95612cb15ce8b5a9b8911e4afe2281345b59a4353ec32edf3771338381
* rename instantx.* file to instantsend.*
* Reorganize Dash Specific code into folders
add to privatesend folder the header files
Signed-off-by: Pasta <Pasta@dash.org>
add "masternode" to imports
Signed-off-by: Pasta <Pasta@dash.org>
add "masternode" to imports
Signed-off-by: Pasta <Pasta@dash.org>
add "masternode" to imports pt 2
Signed-off-by: Pasta <Pasta@dash.org>
8c3e6c6 Changed "Send" button default status from true to false (KibbledJiveElkZoo)
Tree-SHA512: e60d7481351e88925d99b33bdb616f3c234e93ef052571b9c4a1328186ec9abb8b61b0c4299afcb731edad2634aef6b1adaad121646b6c0c56dc933662904674
0be03c7 Qt: Use _putenv_s instead of setenv on Windows builds (Brian McMichael)
Pull request description:
Fixes https://github.com/bitcoin/bitcoin/issues/10836
Error message I would get on `make`:
```
...
CXXLD bench/bench_bitcoin.exe
OBJCXXLD qt/bitcoin-qt.exe
qt/test/test_main.cpp: In function ‘int main(int, char**)’:
qt/test/test_main.cpp:64:43: error: ‘setenv’ was not declared in this scope
setenv("QT_QPA_PLATFORM", "minimal", 0);
^
make[2]: *** [qt/test/qt_test_test_bitcoin_qt-test_main.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory `/home/bmcmichael/Projects/bcoin/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/bmcmichael/Projects/bcoin/src'
make: *** [all-recursive] Error 1
```
`setenv` function is not available from the Microsoft runtime library. Need to use `_putenv_s` instead.
This solution tells the compiler to use `_putenv_s` on `WIN32` compilation (Note: this also works on 64-bit Windows instances.) and `setenv` everywhere else.
I've tested builds on Windows 10 x64 and Ubuntu 16.04 with this code.
Tree-SHA512: d53c996c890e3c6f22b4f2dcca718bef9168f19a6d4a29b8ff13391bfc0c8ea9c1cd16782b47c25b156dcbdff18bb19e23bfd5f6fefb1f373c9d5454a13fc969
d93b97f Set to nullptr after delete (practicalswift)
Tree-SHA512: 7201cef4541557ffe31f52ce7527c4b08a2ff5aa1eae5268bdfee5b4843881f8fd115257bef6d1b4dfb71166951950a912ce87aef160ca89c2ca2ae264cfab1b
set dash pointers to nullptr after deletion
9576b01 Enable xvfb in travis to allow running test_bitcoin-qt (Russell Yanofsky)
9e6817e Add new test_bitcoin-qt static library dependencies (Russell Yanofsky)
2754ef1 Add simple qt wallet test sending a transaction (Russell Yanofsky)
b61b34c Add braces to if statements in Qt test_main (Russell Yanofsky)
cc9503c Make qt test compatible with TestChain100Setup framework (Russell Yanofsky)
91e3035 Make test_bitcoin.cpp compatible with Qt Test framework (Russell Yanofsky)
Tree-SHA512: da491181848b8c39138e997ae5ff2df0b16eef2d9cdd0a965229b1a28d4fa862d5f1ef314a1736e5050e88858f329124d15c689659fc6e50fefde769ba24e523
remove line, testing
bitcoin -> dash, testing
bitcoin -> dash, testing
resolve name conflict, testing
bitcoin -> dash
re-add test fixture line
code review, fix tests
Signed-off-by: Pasta <Pasta@dash.org>
move ExceptionInitializer into test_dash_main.cpp
remove witness from nulldummy.py
Signed-off-by: Pasta <Pasta@dash.org>
change error text to match expected
Signed-off-by: Pasta <Pasta@dash.org>
* Trivial: vout->txout
* Re-use SetHexStr in few more places
* Tweak log output
* fix v13 release notes links
* Drop no longer used stuff
* Few more trivial fixes
* Adjust few rpc help strings
* Apply review suggestions
* Remove unused (old) icons
* Remove red line from top/bottom of frame
* Remove red line from about image
* Clean up theme display names
* Remove DASH at the beginning (just redundant)
* Capitalize theme names
* Flip "about" image back on its end
* Fix up about image a bit
* Add a button/context menu item to show qr codes for addresses in address book
* Add a context menu item to show qr code for addresses in transaction list
dcf2112 Add safe flag to listunspent result (NicolasDorier)
af61d9f Add COutput::fSafe member for safe handling of unconfirmed outputs (Russell Yanofsky)
Tree-SHA512: 311edb6fa8075b3ede5b24cb8c6e5d133ccd8ac9ecafea07b604ffa812ee4f071337e31695e662d8573590a0460af20aaaeb39d49c9ea87924449ea50bdfb0b3
* Add libbacktrace to depends
This is currently only useful to extract symbols. It fails to gather
stacktraces when compiled with MinGW, so we can only use it to get symbol
information from a stack trace which we gathered outside of libbacktrace.
* Add -mbig-obj to CXXFLAGS for MinGW builds
* Implement stacktraces for C++ exceptions
This is a hack and should only be used for debugging. It works by wrapping
the C++ ABI __wrap___cxa_allocate_exception. The wrapper records a backtrace
and stores it in a global map. Later the stacktrace can be retrieved with
GetExceptionStacktraceStr.
This commit also adds handlers to pretty print uncaught exceptions and
signals.
* Use GetPrettyExceptionStr for all unhandled exceptions
* Use --enable-stacktraces in CI for linux32/linux64
* Register exception translators to pretty print exceptions in unit tests
* Catch and print python exceptions when stopping nodes
Otherwise the code at the bottom is never executed when nodes crash,
leading to no output of debug.log files on Travis.
* Remove now unneeded/unused TestCrash methods
* Do not access wallet directly from masternodelist ui, use wallet model instead
* Don't access deterministicMNManager from UI directly, use client model instead
* Send just a general signal to UI elements when mn list has changed and let them handle it in their specific ways
* Drop mn list update timers and use signals instead
* some cleanup
* Move initial UI update to init.cpp
* Refactor getMasternodeList()
* Rename setMasternodeCount to updateMasternodeCount
* Drop legacy code in comments
* Drop NotifyMasternodeListChanged from uiInterface and use NotifyBlockTip instead
* No need to translate "Dash"
* Fix missing dashification
* Update docs
* Fix cmd-line params help
- `bool` should have no `=<smth>`
- non-`bool` should have proper `<smth>`
* Fix `quorum dkgstatus` help
* add llmq/ into files.md
* fix source files
* make translate: en strings
* ru
* fi
* vi
* pl
* bg, de, it, ko, nl, sk, tr, zh_CN
* es, th
* ar
dash_ar.ts: Mismatch between 'Are you sure you want to start masternode %1?' and 'هل أنت متأكد أنك تريد بدء ماسترنود 1%؟'
dash_ar.ts: Mismatch between 'Output debugging information (default: %u, supplying <category> is optional)' and 'معلومات تصحيح الخرج <category>ا(ختياري)'
* ar, es, pt, tr
dash_ar.ts: Mismatch between 'Are you sure you want to start masternode %1?' and 'هل أنت متأكد أنك تريد بدء ماسترنود 1%؟'
dash_ar.ts: Mismatch between 'Output debugging information (default: %u, supplying <category> is optional)' and 'معلومات تصحيح الخرج
* fi
* fr, zh_TW
* ja
* Split up remaining logic from CMasternodeMan into CMasternodeMetaMan and CMasternodeUtils
Also get rid of CMastermode and store remaining meta info
in CMasternodeMetaInfo
* Also allow non-const T in Serialize/Unserialize for shared_ptr
* Rename CActiveDeterministicMasternodeManager to CActiveMasternodeManager
* Fix nowallet compile in masternode-utils.cpp
* Merge #9744: Remove unused module from rpc-tests
a432aa0 Remove unused module from rpc-tests (Takashi Mitsuta)
* Merge #9696: [trivial] Fix recently introduced typos in comments
0c9b9b7 [trivial] Fix recently introduced typos in comments (practicalswift)
* Merge #9657: Improve rpc-tests.py
a6a3e58 Various review markups for rpc-tests.py improvements (John Newbery)
3de3ccd Refactor rpc-tests.py (John Newbery)
afd38e7 Improve rpc-tests.py arguments (John Newbery)
91bffff Use argparse in rpc_tests.py (John Newbery)
1581ecb Use configparser in rpc-tests.py (John Newbery)
* Merge #9724: Qt/Intro: Add explanation of IBD process
f6d18f5 Qt/Intro: Explain a bit more what will happen first time (Luke Dashjr)
50c5657 Qt/Intro: Storage shouldn't grow significantly with pruning enabled (Luke Dashjr)
9adb694 Qt/Intro: Move sizeWarningLabel text into C++ code (Luke Dashjr)
* Merge #9794: Minor update to qrencode package builder
1bfe6b4 Use package name variable inside $(package)_file_name variable (Mitchell Cash)
* Merge #9726: netbase: Do not print an error on connection timeouts through proxy
3ddfe29 netbase: Do not print an error on connection timeouts through proxy (Wladimir J. van der Laan)
13f6085 netbase: Make InterruptibleRecv return an error code instead of bool (Wladimir J. van der Laan)
* Merge #9727: Remove fallbacks for boost_filesystem < v3
056aba2 Remove fallbacks for boost_filesystem < v3 (Wladimir J. van der Laan)
* Merge #9485: ZMQ example using python3 and asyncio
b471daf Adddress nits, use asyncio signal handling, create_task (Bob McElrath)
4bb7d1b Add python version checks and 3.4 example (Bob McElrath)
5406d51 Rewrite to not use Polling wrapper for asyncio, link to python2.7 example (Bob McElrath)
5ea5368 ZMQ example using python3 and asyncio (Bob McElrath)
* Merge #9807: RPC doc fix-ups.
851f6a3 [qa][doc] Correct rpc test options in readme (fanquake)
41e7219 [trivial] Add tests_config.ini to .gitignore (fanquake)
* Dashify
Co-Authored-By: PastaPastaPasta <pasta@dashboost.org>
* Change file permissions
* update travis.yml -parallel -> --jobs
* Remove CActiveLegacyMasternodeManager
* Remove sentinelping RPC
* Remove unused P2P messages and inv types
There are still places where these are used in the code. The next commits
will clean these up.
* Remove MNB/MNP/MNVERIFY related code from masternode(man).h/cpp
* Remove all legacy code regarding block MN payee voting
* Remove MASTERNODE_SYNC_LIST and MASTERNODE_SYNC_MNW states
Also replace all uses of IsMasternodeListSynced and IsWinnersListSynced
with IsBlockchainSynced.
* Remove unsupported masternode RPCs
* Remove UpdateLastPaid methods
* Remove duplicate deterministicmns.h include
* Remove masternode.conf support
* Remove legacy MN lists support from masternode list GUI
* Remove unnecessary AskForMN call
* Remove compatibility code in CPrivateSendQueue::GetSignatureHash
* Don't add locally calculated MN payee in case GetBlockTxOuts failed
This is not valid in DIP3 mode
* Remove check for IsDeterministicMNsSporkActive in "masternode status"
* Move CMasternode::IsValidNetAddr to CActiveDeterministicMasternodeManager
* Remove use of CMasternode::CheckCollateral in governance code
* Remove uses of MASTERNODE_SENTINEL_PING_MAX_SECONDS/MASTERNODE_SENTINEL_PING_MAX_SECONDS
* Remove support for "-masternodeprivkey"
* Remove pre-DIP3 vote cleanup
* Remove compatibility code for quorumModifierHash/masternodeProTxHash
* Remove check for invalid nBlockHeight in CMasternodePayments::GetBlockTxOuts
...and let it crash instead. We expect this method to be called with the
correct height now (after DIP3 was fully deployed).
* Remove ECDSA based Sign/CheckSignature from CGovernanceObject
Only masternodes sign governance objects, so there is no need for ECDSA
support here anymore.
* Always add superblock and MN reward payments into new block
* Always check block payees (except if fLiteMode==true)
* Always allow superblock and MN payees in same block
* Remove/Fix a few references to masternode.conf and related stuff
Also delete guide-startmany.md and masternode_conf.md
* Implement NotifyMasternodeListChanged signal and call governance maintenance
* Remove non-DIP3 code path from CMasternodeMan::Find
* Remove remaining unused code from CMasternode/CMasternodeMan
* Always load governance.dat on startup
* Mine an empty block instead of incrementing nHeight from chain tip in miner tests
This test is crashing otherwise in GetBlockTxOuts as it tries to access a
previous block that is not existing.
* Skip MN payments verification on historical blocks (pre-DIP3 blocks)
Even though DIP3 was active on BIP9 level, the spork was not active yet at
that point meaning that payments were not enforced at that time.
* Remove unused state and CollateralStatus enums
* Unconditionally return false from IsBlockPayeeValid when IsTransactionValid returns false
IsTransactionValid already handles the case where IsDIP3Active() returns
false, making it return true.
* Add override keyword to CDSNotificationInterface::NotifyMasternodeListChanged
* Fix help for masternodelist status (POSE_BANNED and no OUTPOINT_SPENT)
* Replace IsDeterministicMNsSporkActive with IsDIP3Active
IsDIP3Active will now use a fixed parameter from consensus params.
Values for DIP0003Height/DIP0003Hash need to be updated when spork15
activates on mainnet.
Also enforce correct block hash on testnet/mainnet for DIP3 activation
block.
* Remove SPORK_15_DETERMINISTIC_MNS_ENABLED
* Replace all uses of IsDeterministicMNsSporkActive with IsDIP3Active
* Remove DIP3 upgrade-path tests and directly start with DIP3 enabled tests
* Make -masternodeprivkey non-mandatory
This code will vanish later.
* Remove legacy masternode tabs on DIP3 activation
* Move setInvisible call for dip3NoteLabel up
Otherwise it takes a minute until it's actually made invisible.
* Bail out early from updateMyNodeList when spork15 is active
Otherwise we risk accessing destroyed Qt objects.
* Use CountMasternodes() in ClientModel::getMasternodeCountString
* Use CountMasternodes() for total count in masternode_count
* Fix CountMasternodes() to give correct number of masternodes with spork15 enabled
Also change CountEnabled to not call CountMasternodes anymore but instead
have its own implementation which uses GetValidMNsCount instead of GetAllMNsCount
* Apply review suggestions
Specifically:
```
GUI: QMetaObject::connectSlotsByName: No matching signal for on_extraInfoDIP3_doubleClicked()
GUI: QMetaObject::connectSlotsByName: No matching signal for on_copyProTxHash_clicked()
GUI: QMetaObject::connectSlotsByName: No matching signal for on_copyCollateralOutpoint_clicked()
```
* Add LLMQ parameters to consensus params
* Add DIP6 quorum commitment special TX
* Implement CQuorumBlockProcessor which validates and handles commitments
* Add quorum commitments to new blocks
* Propagate QFCOMMITMENT messages to all nodes
* Allow special transactions in blocks which have no inputs/outputs
But only for TRANSACTION_QUORUM_COMMITMENT for now.
* Add quorum commitments to self-crafted blocks in DIP3 tests
* Add simple fork logic for current testnet
This should avoid a fork on the current testnet. It only applies to the
current chain which activated DIP3 at height 264000 and block
00000048e6e71d4bd90e7c456dcb94683ae832fcad13e1760d8283f7e89f332f.
When we revert the chain to retest the DIP3 deployment, this fork logic
can be removed again.
* Use quorumVvecHash instead of quorumHash to make null commitments unique
Implementation of https://github.com/dashpay/dips/pull/31
* Re-add quorum commitments after pruning mempool selected blocks
* Refactor CQuorumBlockProcessor::ProcessBlock to have less nested if/else statements
Also add BEGIN/END markers for temporary code.
* Add comments/documentation to LLMQParams
* Move code which determines if a commitment is required into IsCommitmentRequired
This should make the code easier to read and also removes some duplication.
The also changes the error types that are possible from 3 to 2 now. Instead
of having "bad-qc-already-mined" and "bad-qc-not-mining-phase", there is
only "bad-qc-not-allowed" now.
* Use new parameter from consensus parames for the temporary fork
* Implement context menu and extra info on double-click for DIP3 masternode list
Menu items:
- "Copy ProTx hash"
- "Copy Collateral hash"
On double click:
Show simple message box with the json representation of the DMN.
* Fix review comments
* Do not hold cs_main while emitting messages
Fixes potential deadlock:
```
POTENTIAL DEADLOCK DETECTED
Previous lock order was:
(1) cs_deqsessions privatesend-client.cpp:966
(2) cs_main privatesend-client.cpp:816
Current lock order is:
(2) cs_main qt/walletmodel.cpp:299
wallet->cs_wallet qt/walletmodel.cpp:299
(1) cs_deqsessions privatesend-client.cpp:350
```
* Keep CWalletTx* newTx in inner scope
* Updating de, es, fi, nl, pt, sk, zh_CN, zh_TW
Known issues:
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 '初始化完整性检查失败。% 即将
* Fix issues in zh_CN
* Implement tab for DIP3 MN list
* Update src/qt/masternodelist.cpp
Co-Authored-By: codablock <ablock84@gmail.com>
* Change "x.xx% to UNSPECIFIED" to "x.xx% but not claimed" for opeartor reward