Commit Graph

312 Commits

Author SHA1 Message Date
UdjinM6
b2b97f258f
Fix some strings, docs and cmd-line/rpc help messages (#2632)
* 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
2019-01-22 16:33:20 +03:00
Alexander Block
23d7ed80d5 Implement "quorum sign/hasrecsig/isconflicting" RPCs 2019-01-21 14:42:08 +01:00
Alexander Block
edac100f5c Fix "quorum" RPCs help and unify logic in the sub-commands RPC entry point 2019-01-16 11:38:44 +01:00
Alexander Block
15c34ccbd8 Implement CQuorum and CQuorumManager 2019-01-15 15:47:24 +01:00
UdjinM6
4671c989d3
Merge pull request #2617 from codablock/pr_llmq_dkg
Implement LLMQ DKG
2019-01-15 15:44:34 +03:00
Alexander Block
fed4716c0a
Remove support for "0" as an alternative to "" when the default is requested (#2622)
* Remove support for "0" as an alternative to "" when the default is requested

* Update src/rpc/rpcevo.cpp

Co-Authored-By: codablock <ablock84@gmail.com>
2019-01-12 14:17:16 +01:00
UdjinM6
02c7932f49
Add owner and voting addresses to rpc output, unify it across different methods (#2618)
* Add `owneraddress` and `votingaddress` to json representation of provider txes and rpc output

* Rearrange/unify things a bit

* Add votingAddress to CSimplifiedMNListEntry json

* Use addresses in error messages too

* More unification

* Swap keyIDOwner/keyIDVoting with corresponding addresses in ToString()

* Drop keyIDOwner/keyIDVoting from json and rpc

* More unification: s/operatorRewardAddress/operatorPayoutAddress/

* More unification/cleanup: use specific name instead of just bitcoinAddress

* Fix dip3 test
2019-01-11 13:05:58 +03:00
Alexander Block
c948c0ff31 Fix help for optional parameters in "quorum dkgstatus" 2019-01-11 09:15:06 +01:00
Alexander Block
957652bf37 Fix help for "quorum dkgstatus" and remove support for "0" proTxHash 2019-01-11 09:12:17 +01:00
Alexander Block
b7b436b7d4 Apply review suggestions to rpcquorums.cpp 2019-01-11 07:35:57 +01:00
Alexander Block
324406bfed Implement debugging messages and RPC for LLMQ DKGs 2019-01-09 12:16:12 +01:00
UdjinM6
55f205eba1
A couple of fixes for masternode list rpc (#2615)
* fix payee

* add keyidowner/keyidvoting/pubkeyoperator ifields/filter to "json" option

* fix whitespaces
2019-01-08 13:36:35 +03:00
PastaPastaPasta
07dcddb4ca Backports 0.15 pr2 (#2597)
* Merge #9815: Trivial: use EXIT_ codes instead of magic numbers

a87d02a use EXIT_ codes instead of magic numbers (Marko Bencun)

* Merge #9801: Removed redundant parameter from mempool.PrioritiseTransaction

eaea2bb Removed redundant parameter from mempool.PrioritiseTransaction (gubatron)

* remove extra parameter (see 3a3745bb) in dash specific code

* Merge #9819: Remove harmless read of unusued priority estimates

bc8fd12 Remove harmless read of unusued priority estimates (Alex Morcos)

* Merge #9766: Add --exclude option to rpc-tests.py

c578408 Add exclude option to rpc-tests.py (John Newbery)

* Merge #9577: Fix docstrings in qa tests

3f95a80 Fix docstrings in qa tests (John Newbery)

* Merge #9823: qa: Set correct path for binaries in rpc tests

3333ad0 qa: Set correct path for binaries in rpc tests (MarcoFalke)

* Merge #9833: Trivial: fix comments referencing AppInit2

ef9f495 Trivial: fix comments referencing AppInit2 (Marko Bencun)

* Merge #9612: [trivial] Rephrase the definition of difficulty.

dc222f8 Trivial: Rephrase the definition of difficulty in the code. (Karl-Johan Alm)

* Merge #9847: Extra test vector for BIP32

30aedcb BIP32 extra test vector (Pieter Wuille)

* Merge #9839: [qa] Make import-rescan.py watchonly check reliable

864890a [qa] Make import-rescan.py watchonly check reliable (Russell Yanofsky)

Tree-SHA512: ea0e2b1d4fc8f35174c3d575fb751b428daf6ad3aa944fad4e3ddcc9195e4f17051473acabc54203b1d27cca64cf911b737ab92e986c40ef384410652e2dbea1

* Change back file params
2019-01-07 12:55:35 +03:00
Alexander Block
7d58d87f43 Remove a few sporks which are not used anymore (#2607)
* Remove SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT

And always enforce payments.

* Remove SPORK_10_MASTERNODE_PAY_UPDATED_NODES and SPORK_10_MASTERNODE_PAY_UPDATED_NODES
2019-01-03 23:08:51 +03:00
Alexander Block
d1910eaff4 Refactor remains of CMasternode/-Man into CMasternodeMeta/-Man (#2606)
* 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
2019-01-03 23:08:34 +03:00
PastaPastaPasta
a49f4123e5 Backports 0.15 pr1 (#2590)
* 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
2019-01-03 12:18:47 +03:00
Alexander Block
f95aae2b30 Remove all legacy/compatibility MN code (#2600)
* 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)
2019-01-03 12:17:43 +03:00
Alexander Block
78c22ad0fb Multiple fixes for "masternode list"
1. Make strMode lower case before comparing it (keyIDXXX would otherwise
   be case sensitive, leading to confusion for users)
2. Remove "rank" and "keyid" mode from help
3. Add keyIDOwner/keyIDVoting/pubKeyOperator to help and strMode check
4. Remove "pubkey" from strMode check
5. Call ToString() on address instead of whole DMN state
6. Add missing std::setw(10) to "full" mode
2018-12-31 14:05:23 +01:00
UdjinM6
536229d170
Apply suggestions from code review
Co-Authored-By: codablock <ablock84@gmail.com>
2018-12-31 13:57:58 +01:00
Alexander Block
4c749b7e94 Directly use deterministicMNManager in "masternode list"
Also remove GetFullMasternodeMap
2018-12-31 08:15:45 +01:00
Alexander Block
0fe97a0459 Remove support for "masternode list rank" 2018-12-31 08:15:45 +01:00
Alexander Block
adc2ec2253 Remove unsupported types/fields from "masternode list" 2018-12-31 08:15:45 +01:00
Alexander Block
4b150e72f1 Directly use deterministicMNManager instead of mnodeman.CountXXX 2018-12-31 08:15:45 +01:00
Alexander Block
2f66d6ada1 Replace uses of mnodeman in PS code when deterministicMNManager can be used directly
Additionally, implement GetLastDsq in CMasternodeMan as a replacement
for direct access to the masternode_info_t object. Will move this variable
to another (PS specific) place later.
2018-12-31 08:15:45 +01:00
Alexander Block
1ff241881f Directly use deterministicMNManager in some places 2018-12-31 08:15:44 +01:00
Alexander Block
bc29fe160e Remove compatibility code from governance RPCs and directly use deterministicMNManager 2018-12-31 08:15:44 +01:00
Alexander Block
96e0385db8 Let "masternode winner/current" directly use deterministicMNManager 2018-12-31 08:15:44 +01:00
Alexander Block
0c9fb69687 Harden spork15 on testnet (#2586)
* 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.
2018-12-28 19:13:44 +03:00
UdjinM6
0dce846d5a
Add an option to use specific address as a source of funds in protx rpc commands (otherwise use payoutAddress/operatorPayoutAddress) (#2581)
* Add an option to use specific address as a source of funds in protx rpc commands

* fix typo "must"

* Always use payoutAddress (or operatorPayoutAddress) as a default if no fundAddress was specified

* make sure we actually selected some inputs

* fundAddress -> feeSourceAddress

* Align help text with new logic

* fix protx_update_service

* fix protx_revoke

* Add fRequireAllInputs to CCoinControl and use it in FundSpecialTx

This avoids adding all inputs even though they are not needed.

* Allow to specify empty operator payout address and simplify fee code in update_service

DIP3 tests were failing to call "protx update_service" as it did not accept
an empty "operatorPayoutAddress".

This also simplifies handling of the feeSourceAddr.

* Specify source for funds and fees in DIP3 tests
2018-12-28 12:24:48 +03:00
Alexander Block
222e5b4f7f
Remove proposal/funding votes from MNs that changed the voting key (#2570)
* Rename onlyOwnerAllowed boolean variables to onlyVotingKeyAllowed

This was misleading.

* Remove invalid proposal votes when MN voting keys change
2018-12-20 14:27:48 +01:00
Alexander Block
999a519074 Fix optional revocation reason parameter for "protx revoke" and a few help strings (#2568)
* Fix optional revocation reason parameter for "protx revoke"

* Fix "protx revoke" help message

* Remove obsolete help text about masternode operator keys and wallets
2018-12-19 11:11:38 +03:00
UdjinM6
c089261465 Unify "protx list" options (#2559) 2018-12-17 07:06:45 +01:00
Alexander Block
2161199210
Fix wrong total MN count in UI and "masternode count" RPC (#2527)
* 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
2018-12-06 11:32:15 +01:00
Alexander Block
d2ca9eddee
Fix multiple issues with governance voting after spork15 activation (#2526)
* Check resulting signature for validity when signing with BLS operator keys

* Support specifying proTxHash when using "gobject vote-alias"

The "alias-name" is now interpreted as proTxHash when deterministic MN lists
are active.

The classical "alias" as found in masternode.conf has no meaning after
spork15 activation.

* Don't use masternode.conf list in gobject_vote_many when spork15 is active

Keys don't match anymore so we should only rely on the deterministic list
and the local wallet's keys.

* Check for pwalletMain not being null in gobject_vote_many

* Allow to use vote-conf for non-proposal votes when spork15 is active

This fixes sentinel not being able to create triggers on testnet.

* Fix error message

* Fix no-wallet compilation and check for pwalletMain at runtime
2018-12-06 08:07:10 +01:00
PastaPastaPasta
818f0f4647 Allow consuming specific UTXO in gobject prepare command (#2482)
* Implement optional CoinControl for gobject prepare

* Removes duplicate `);` from merge error

Co-Authored-By: PastaPastaPasta <pasta@dashboost.org>

* Fix equality check allowing more relevant help output

* Pass COutPoint as const reference

Co-Authored-By: PastaPastaPasta <pasta@dashboost.org>

* Remove unnecessary SetNull call

Co-Authored-By: PastaPastaPasta <pasta@dashboost.org>

* Specify proposal fee

Co-Authored-By: PastaPastaPasta <pasta@dashboost.org>
2018-12-03 21:00:09 +03:00
Salisbury
1270b71229 Use a verbosity instead of two verbose parameters (#2506) 2018-12-03 16:49:21 +01:00
Alexander Block
0c1b683a06 Clear votes which were created before spork15 activation and use operator key for non-funding votes (#2512)
* Clear votes which were created before spork15 activation

* Reject incoming votes which were created pre-DIP3

* Only use voting keys for VOTE_SIGNAL_FUNDING

The other vote signals are meant to be emitted by sentinel and must thus
be signed with the operator key.

* Simplify GetMinVoteTime

* Review suggestions/fixes

* Add missing mutex in CGovernanceObject::RemoveOldVotes
2018-11-29 21:51:53 +03:00
Alexander Block
f6f6d075dc Still support "protx list" and "protx diff" when wallet is disabled at compile time (#2511)
* Don't fully remove protx commands when ENABLE_WALLET is not set

* Check for wallet support at run-time for protx commands

* Only show subcommands that require the wallet when ENABLE_WALLET is set

* Add and use CheckWalletOwnsKey which is able to check wallet support at runtime

* Properly handle disabled wallets in "protx list"

This now also handles the case where ENABLE_WALLET is not defined.

* Drop comment that doesn't fully apply anymore
2018-11-29 21:51:31 +03:00
Alexander Block
5a3f64310b Deserialize CFinalCommitmentTxPayload instead of CFinalCommitment in TxToJSON (#2510)
* Deserialize CFinalCommitmentTxPayload instead of CFinalCommitment in TxToJSON

* Implement ToJson for CFinalCommitmentTxPayload and use it in TxToJSON

Otherwise the nVersion and nHeight members of it are not shown.
2018-11-29 21:51:04 +03:00
Alexander Block
5da4c97284 Use "registered" as default for "protx list" (#2513)
"wallet" was confusing too many users as it shows an empty list if the local
wallet does not own any keys for any MN.
2018-11-29 15:31:37 +03:00
Alexander Block
fc6d651c43
Fix crashes in "protx" RPCs when wallet is disabled (#2509) 2018-11-29 09:12:41 +01:00
thephez
ba49a4a160 Trivial: protx fund_register RPC help corrections (#2502) 2018-11-27 05:12:11 +01:00
PastaPastaPasta
45421b1a3a Add IS parameter for gobject prepare (#2452)
* Add IS parameter for gobject prepare

* Update if statement

Co-Authored-By: PastaPastaPasta <pasta@dashboost.org>

* Update src/rpc/governance.cpp

Co-Authored-By: PastaPastaPasta <pasta@dashboost.org>

* Update src/rpc/governance.cpp

Co-Authored-By: PastaPastaPasta <pasta@dashboost.org>
2018-11-25 16:26:50 +03:00
Alexander Block
22b5952c5a
Implement and enforce DIP6 commitments (#2477)
* 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
2018-11-23 15:42:09 +01:00
Alexander Block
85157f9a9e
Few trivial fixes for DIP2/DIP3 (#2474)
* Fix wrong index for argument to protx_update_service when error is thrown

* Unify and fix variable name in TxToJSON

The UniValue variable name for TRANSACTION_COINBASE was wrong and is fixed
now. Also changed names for all other special TXs to unify names. This
should avoid such errors in the future when new "else if" branches are
copy/pasted.

* Use "proRegTx" instead of "proTx" as key TRANSACTION_PROVIDER_REGISTER payloads
2018-11-22 06:05:20 +01:00
Alexander Block
2ba1ff5216
Use ParseFixedPoint instead of ParseDoubleV in "protx register" commands (#2458) 2018-11-21 08:04:42 +01:00
InhumanPerfection
e049f9c1ea fix protx register rpc help (#2461) 2018-11-21 08:02:54 +01:00
PastaPastaPasta
eb2103760b trivail, clarifies help text for protx register (#2462) 2018-11-21 08:02:15 +01:00
strophy
76e93c7d7b Corrections to incorrect syntax in RPC help (#2466)
* Fix incorrect inline help for "protx update_registrar"

Initial ProRegTx does not define a field named "collateralAddress". It is not necessary to use the collateral address to receive payout, any Dash address can be defined here.

* Fix incorrect syntax for "protx revoke" inline help

"operatorKey" is required here
2018-11-21 07:57:47 +01:00
Alexander Block
3c1f44c3a2 Make sure protx_update_registrar adds enough funds for the fees
FundSpecialTx must take the size of signature into account.
2018-11-15 08:05:38 +01:00