Commit Graph

10979 Commits

Author SHA1 Message Date
Alexander Block
30a2b283a8 Sign ProRegTx collaterals with a string message instead of payload hash, split protx register into prepare/submit (#2395) 2018-11-02 00:57:10 +03:00
Alexander Block
70eb710b12
Undefine DOUBLE after include Chia BLS headers (#2400)
These cause compilation errors on some platforms.
Observed this when I tried to cross compile win32
locally on a Debian Stretch machine.
2018-10-31 10:58:02 +01:00
Alexander Block
052af81b4b
Ensure correct order of destruction for BLS secure allocator (#2401)
Uses the same trick as LockedPoolManager::Instance()
2018-10-31 10:57:14 +01:00
UdjinM6
c6cf4d9a47
Relay txes through MN network faster than through regular nodes (#2397)
* Half the delay for relaying txes to Masternode outbound peers comparing to regular ones

* No delay for relaying txes if our node is a Masternode
2018-10-30 13:00:04 +03:00
UdjinM6
4a78b161ff
PrivateSend spending txes should have "outgoing" icon on overview screen (#2396) 2018-10-30 12:59:50 +03:00
Anton Suprunchuk
50f133ad0a Add merkle tree and coinbase transaction to the protx diff rpc command (#2392) 2018-10-30 12:59:32 +03:00
Alexander Block
e34701295d Fix crash when deterministic MN list is empty and keep paying superblocks in this case (#2387)
* 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
2018-10-30 12:59:03 +03:00
Alexander Block
9eb9c99d59 Bump version to 0.13.0 (#2386) 2018-10-26 19:43:08 +03:00
Alexander Block
28a6007a40 Prepare DIP3 for testnet and reuse DIP3 deployment for autoix deployment (#2389)
* 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.
2018-10-26 19:42:52 +03:00
Alexander Block
e66c4e184f Don't revert to INV based block announcements when the previous block is the devnet genesis block (#2388)
Assume that the other node already has the previous block if it matches
the devnet genesis block.
2018-10-26 19:42:28 +03:00
Alexander Block
b5142ee2ce Implement RemoveAskFor to indicate that we're not interested in an item anymore (#2384)
* 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
2018-10-26 19:42:11 +03:00
Alexander Block
d1debfc267
Implement mt_pooled_secure_allocator and use it for BLS secure allocation (#2375)
* 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
2018-10-26 07:04:22 +02:00
Alexander Block
733cd95123
Remove global fDIP0003ActiveAtTip and fix wrong use of VersionBitsState in auto IX (#2380)
* Remove global fDIP0003ActiveAtTip flag and always use VersionBitsState

fDIP0003ActiveAtTip was used much more often when introduced but turned out
to be not very useful in most places. Always use VersionBitsState now.

* Fix wrong use of VersionBitsState auto IX

* Make sure isAutoLockBip9Active flag is reset in case of chain reorgs
2018-10-26 07:03:33 +02:00
Alexander Block
25b6dae9ea
Code style and RPC help string cleanups for DIP2/DIP3 (#2379)
* Fix code style in DIP2/DIP3 code (single statement ifs with curly braces)

* Fix DIP3 RPC help strings

* Handle review comments

* Handle more review comments
2018-10-26 07:03:14 +02:00
PastaPastaPasta
6433a944a0 [Trivial] typo Groupped -> Grouped (#2374) 2018-10-25 17:32:08 +03:00
PastaPastaPasta
59932401bb Change internal references of Darksend to PrivateSend (#2372)
* Change all references to darksend to privatesend

* comment references to darksend
2018-10-25 17:31:32 +03:00
Alexander Block
e3df910822 Allow referencing other TX outputs for ProRegTx collateral (#2366)
* Pass CCoinsView reference to special TX handling methods

* Allow referencing other TX outputs for ProRegTx collateral

* Remove "collateralAmount" from "protx register"

* Rename "protx register" to "protx fund_register"

* Remove UpdateSpork15Value from CDeterministicMNManager

Was not used/implemented anymore

* Lock masternode collaterals after chain/DIP3 is fully initialized

Otherwise detection of collaterals does not work.

* Implement new "protx register" RPC which uses existing collaterals

* Remove "masternode info" RPC

It is not consistent with other "masternode" RPCs anymore as it requires
the ProRegTx hash while all other RPCs work with the collateral.

* Load sporks from disk cache before initializing the chain

Otherwise spork15 is not loaded when we check it for the first time.

* Implement "protx info" RPC

* Use "protx info" instead of "masternode info" in DIP3 tests

* Test external collaterals for ProTx

* Handle review comments

* Don't pass CCoinView reference when it's not used

* Revert "Pass CCoinsView reference to special TX handling methods"

This reverts commit 28688724e112c8fe18e44aef055768dbbc068d7d.

* Use GetUTXOCoin instead of now removed coinsView

Also remove collateral height check as GetUTXOCoin only returns confirmed
coins.

* Add conflict handling for external collaterals to mempool

* Handle review comments (squashed Github suggestions)

Co-Authored-By: codablock <ablock84@gmail.com>
2018-10-25 17:29:50 +03:00
thephez
0ad2906c54 Clarify addlocked description in getbalance RPC (#2364)
* Trivial - Typo in getbalance RPC

* Clarify addlocked description in getbalance RPC

Co-Authored-By: thephez <thephez@gmail.com>
2018-10-25 17:29:00 +03:00
Alexander Block
e3046adb3e
Clear devNetParams and mimic behavior of other param types (#2367)
* Clear devNetParams and mimic behavior of other param types

Mainnet, testnet and regtest params are global and thus zero initialized,
we should mimic the same for devnet params.

Not doing so results in all kinds of issues on devnet.

* Remove unnecessary <string.h> includein chainparamsbase.cpp
2018-10-25 09:17:37 +02:00
thephez
fdfb077428 Update ProRegTx serialization order (#2378)
Makes consistent with both DIP-3 and the order above
2018-10-25 09:17:02 +02:00
Alexander Block
1c25356ff8
Allow to use low difficulty and higher block rewards for devnet (#2369)
* Allow to use low difficulty and higher block rewards for devnet

Configurable through -minimumdifficultyblocks, -highsubsidyblocks and -highsubsidyfactor

* Fix review comments

* Handle review comments
2018-10-25 09:16:38 +02:00
Alexander Block
53e12b7b40
Don't bail out from ProcessMasternodeConnections in regtest (#2368)
We actually do masternode testing now and we will rely on this behavior
2018-10-24 13:31:45 +02:00
Alexander Block
3c9237aa40
Use VersionBitsState instead of VersionBitsTipState to avoid cs_main lock (#2370)
It wasn't even locked, which causes AssertLockHeld to fail.
2018-10-24 13:31:22 +02:00
PastaPastaPasta
c4351fd328 revert 737, DEFAULT_TRANSACTION_MAXFEE = 0.1 * COIN (#2362) 2018-10-23 14:16:17 +03:00
Alexander Block
eaa856eb78 Remove nProtocolVersion and add mode/type fields to DIP3 (#2358)
* Remove nProtocolVersion fields from deterministic masternode lists

This field was part of my initial implementation from DIP3. One of the last
changes of DIP3 was then to remove this field, which I did not bring back
into code yet. This commit removes it now.

We use PROTOCOL_VERSION now in cases were compatibility in the the pre-DIP3
list is needed.

* Add type and mode fields in DIP3 special TXs

These were added to DIP3 but not in-code yet.

* Add DMN_PROTO_VERSION
2018-10-23 14:15:38 +03:00
Alexander Block
c9d2745188 Use BLS keys for the DIP3 operator key (#2352)
* Use BLS keys for operator keys

* Add "bls generate" RPC to generate BLS keys

* Use unique_ptr to store blsKeyOperator and blsPubKeyOperator

Needed because the Chia BLS library crashes when keys are created before
the library is initialized, even if keys are not used. This is the case here
as we have static instances here.

* Remove unnecessary CheckSignature calls

This seems to be some garbage I left in by mistake.

* Fixed review comments

* Fix rpc help for operator keys

All keys that are used as examples are random. None of the secret keys
belongs to any of the public keys.

* Use .GetHash() instead of ::SerializeHash() for BLS pubkeys in txmempool.cpp

* Rename mapProTxBlsPubKeys to mapProTxBlsPubKeyHashes
2018-10-21 22:45:16 +03:00
Alexander Block
7b76bbb575 Update Chia BLS libs to latest master (#2357)
* Undefine ERROR before including chia BLS stuff to avoid warnings

* Update Chia BLS libs to latest master
2018-10-20 17:08:54 +03:00
Alexander Block
e2de632f8c Move handling of size != SerSize into SetBuf/GetBuf (#2356)
* Move handling of size >= SerSize into SetBuf/GetBuf

Instead of performing this in the individual implementations of
InternalSetBuf and InternalGetBuf

* Assert that size if GetBuf is always SerSize
2018-10-20 17:08:40 +03:00
UdjinM6
90ad75911a
Fix auto-IS and tests (#2331)
* fix CTxLockRequest::GetMinFee()

* Force regular IS txes to include MIN_FEE * n_inputs fee on creation regardless of auto-IS status

* set_autoix_spork_state should bump mocked time

* make sure IS fee matches the expected one

* turn off spork16 and test all types of txes again
2018-10-15 14:59:57 +03:00
UdjinM6
f7b0b57596
Pick rounds with the most inputs available to mix first (#2278)
* Alternative solution: pick rounds with the most inputs available to mix first

* randomly skip some inputs when we have at least one of this denom already

* More randomization in PrepareDenominate

* fix `vecSteps[nBit] >= 1 ?` and adjust speed/privacy ratio for more speed i.e. `GetRandInt(5) == 0`

* fix typos

* no comments
2018-10-15 14:58:47 +03:00
UdjinM6
6867827a53
Merge pull request #2296 from codablock/pr_blsstuff
Add BLS libraries, wrappers, helpers and benchmarks
2018-10-15 14:53:16 +03:00
Alexander Block
4641916984 Review fixes 2018-10-12 20:53:57 +02:00
Alexander Block
9c8e4ac76b Move bls stuff from crypto/ to bls/ 2018-10-12 19:39:26 +02:00
Spencer Lievens
43e757bee5 Amend SERIALIZATION_VERSION_STRING string for spork cache (#2339) 2018-10-11 17:34:52 +03:00
Spencer Lievens
bed1ded8be Remove duplicated check (#2336) 2018-10-11 17:34:03 +03:00
Nathan Marley
89f744d064 pack of small cleanup fixes / optimizations (#2334)
* remove vector, extra loop in cleanup function

This commit removes 2 loops and a vector which I don't believe are necessary in
CMasternode::FlagGovernanceItemsAsDirty. I could be missing something, but
can't think of any good reason why this was implemented this way.

* use range operator to range over vectors

* remove deprecated wire message types

* mn: simplify govobj map mgmt a bit

* remove extra semicolons

* invert if/else condition and drop else

* remove if/else logic from Qt

This is the entire purpose of the Get<X>String methods on MNP class.

* Revert "remove deprecated wire message types"

This reverts commit 9de88a3fda999555c00cb829d60e322b2fd3800d.

* Revert "remove if/else logic from Qt"

This reverts commit c0f43c9b85274b13a3ac9625775817bc5b53bb9d.
2018-10-11 17:33:48 +03:00
gladcow
9603c52900 Trivial: Codestyle fixes in InstantSend code (#2332) 2018-10-11 17:33:22 +03:00
UdjinM6
727e940c0c
Fix recently introduced PS bugs (#2330)
* backward compatibility fix for dsq

* fix StartNewQueue
2018-10-11 17:32:51 +03:00
PastaPastaPasta
8deb8e90f2 Modernize Gov Methods (#2326)
* governance.* formatting and copyright bump

* manual changes gov.cpp

* Modernize ConvertVoteOutcome, ConvertSignalToString and  ConvertOutcomeToString

* move breaks

* add braces instead of inlining

* Revert "Modernize ConvertVoteOutcome, ConvertSignalToString and  ConvertOutcomeToString"

This reverts commit 41bc3d3d863076cd5e6b10ca7706100963cd51b0.

* Modernize ConvertVoteOutcome, ConvertSignalToString and  ConvertOutcomeToString

* fix bugs

* make "NONE" lowercase

* revert merge error

* @InhumanPerfection comments fix

* whoops
2018-10-11 17:32:31 +03:00
UdjinM6
b3fc236af5
Fix mnodeman.cs vs cs_vPendingMasternodes vs cs_main deadlock (#2200)
Decouple cs_vPendingMasternodes from mnodeman.cs to fix the issue. Also drop deprecated/unused stuff in mnv preparation while at it.
2018-10-11 17:32:05 +03:00
Alexander Block
80fd096b07 Add ECDSA benchmarks 2018-10-10 08:49:10 +02:00
Alexander Block
78675d9bb0 Add BLS and DKG benchmarks 2018-10-10 08:49:10 +02:00
Alexander Block
3ee27c1681 Add highly parallelized worker/helper for BLS/DKG calculations 2018-10-10 08:49:10 +02:00
Alexander Block
aa3b0aa8a4 Add simple helpers/wrappers for BLS+AES based integrated encryption schemes (IES) 2018-10-10 08:49:10 +02:00
Alexander Block
9ccf6f584d Implement wrappers around Chia BLS lib
# Conflicts:
#	configure.ac
2018-10-10 08:49:09 +02:00
Alexander Block
b0d0093d73 Add helper to rename all threads of a ctpl::thread_pool 2018-10-04 16:46:48 +02:00
Alexander Block
47a1622552 Add ctpl header only library
A simple C++ thread pool library

https://github.com/vit-vit/CTPL
Commit: 437e135dbd94eb65b45533d9ce8ee28b5bd37b6d
2018-10-04 16:46:48 +02:00
Alexander Block
eaef902025 Don't use boost range adaptors in CDeterministicMNList (#2327)
These cause crashes when used in for loops. Reason is very likely that
temporary CDeterministicMNList objects are destroyed before entering the
loop while the adaptors rely on these objects.

Discovered in one of our devnets while calling "protx list"
2018-10-02 12:03:05 +03:00
Nathan Marley
07208a4ae2 document spork system with doxygen comments (#2301)
This is an initial shot at an on-going WIP, which will add documentation via
Doxygen comments to (especially) Dash-specific features in the codebase.
2018-10-02 12:02:27 +03:00
gladcow
f7ab6c469c M-of-N-like sporks (#2288)
* support set of keys to sign spork

* several addresses support in -sporkkey

* tests for multykey sporks

* command line option -minsporkkeys

* make spork active only after given number of signers

* use signature in spork hash calculation

* test for new and old spork messages interaction

* add multikeyspork.py to integration tests

* change test to have ability to distinguish default spork value

* require min spork keys number to be more than the half of the common spork keys number

* calc current spork value with majority of signers

* set test nodes time in integration test

* extract keyid from signed spork message directly

* change -sporkaddr option syntax to process several addresses

* codestyle fixes

* fix test comments

* codestyle fixes

* simplify CSporkManager::SporkValueIsActive

* Calc signature hash without signature field

* do not restore pubkey ids from cach

* Calc different keyids to check signature because not all sporks can be synced at moment

* codestyle fixes

* Fix CSporkManager::CheckAndRemove to use several keys

* codestyle fixes

* Correct processing of not actual spork6 value with GetSignerKeyID
2018-09-30 20:01:33 +03:00
Nathan Marley
a5aca049dd rename vars in mnsync to make more sense (#2308)
* rename vars in mnsync to make more sense

nRequestedMasternodeAssets -> nCurrentAsset
nRequestedMasternodeAttempt -> nPeerCount

* rename var to nTriedPeerCount
2018-09-30 14:02:52 +03:00
PastaPastaPasta
ee6a5a33b7 Gov cleanup + copyright bump (#2324)
* governance.* formatting and copyright bump

* manual changes gov.cpp

* clang and copyright bump

* gov-exc.h clang and copyright bump

* gov-obj.* clang and copyright bump

* gov-val.* clang and copyright bump

* gov-vote.* clang and copyright bump

* gov-votedb.* clang and copyright bump

* fix some weirdness

* Modernize ConvertVoteOutcome, ConvertSignalToString and  ConvertOutcomeToString

* add braces

* move breaks

* add braces instead of inlining

* Revert "Modernize ConvertVoteOutcome, ConvertSignalToString and  ConvertOutcomeToString"

This reverts commit 41bc3d3d863076cd5e6b10ca7706100963cd51b0.

* drop unused function
2018-09-28 10:56:17 +03:00
UdjinM6
bd8c54d12e
A bit more verbosity for some critical errors (#2316) 2018-09-28 10:55:30 +03:00
UdjinM6
a4ff2a19a7
Fix some warnings and do a couple of other trivial cleanups (#2315)
* Fix various warnings

* A couple of trivial cleanups

* fix 2320
2018-09-28 10:55:11 +03:00
gladcow
5454bea377 Automatic InstantSend locks for "simple" transactions (#2140)
* add locktransaction rpc call

* Remove special instantsend fee for simple transactions

* Function to check if trx is simple enough to be autolocked

* Automatic lock for all received from peers simple trxes

If we get a new transaction with CInv message and it is "simple" and
is accepted in mempool, we initiate its lock. We don't lock orphan trxes
that accepted in mempool after this trx because they are locked by other
peers.

* Automatically lock simple trxes in wallet

* protocol bump for InstantSend without special fee

* Add function to detect used mempool share

* Mempool threshold for auto IX locks

* Add SPORK_16_INSTANTSEND_AUTOLOCKS spork

* Make autolocks active only when spork SPORK_16_INSTANTSEND_AUTOLOCKS is active

* BIP9 autolocks activation

* revert increasing min peer protocol version for mn rank

* move IsTrxSimple check to CTxLockRequest class

* make MAX_INPUTS_FOR_AUTO_IX private member of CTxLockRequest class

* make AUTO_IX_MEMPOOL_THRESHOLD private member of CInstantSend class

* remove locktransaction RPC call

* tests for automatic IS locks

* fix mempool threshod calculation

* bump mocktime in activate_autoix_bip9

* set node times

* no need to spam the node with gettransaction rpc requests that often

* use `spork active` instead of leaking spork logic into tests

* codestyle fixes

* add test description in comments

* fix typo

* sync test nodes more often during BIP9 activation

* Use 4th bit in BIP9 activation

* Fix comments according codestyle guide

* Call AcceptLockRequest and Vote at the first node creating autoix lock

* fix mempool used memory calculation

* rallback not necessary change in CWallet::CreateTransaction

* test for stopping autolocks for full mempool

* Inject "simple autolockable" txes into txlockrequest logic
2018-09-26 17:17:47 +03:00
UdjinM6
547b81dd0d
log gobject prepare params (#2317) 2018-09-26 17:16:40 +03:00
UdjinM6
d932d2c4e1
Add instantlock field to getrawtransaction rpc output (#2314) 2018-09-26 17:16:22 +03:00
UdjinM6
c2958733e6
CSporkManager::Clear() should not alter sporkPubKeyID and sporkPrivKey (#2313) 2018-09-26 17:15:58 +03:00
UdjinM6
8c0dca2826
Add versioning to spork cache (#2312) 2018-09-26 17:15:02 +03:00
Nathan Marley
2c1a17909e cleanup: remove unused vars, includes, functions (#2306) 2018-09-20 15:41:16 +03:00
UdjinM6
85a958a360
Drop dummy copy constructors in CPrivateSend*Session (#2305)
* Switch vecSessions to deque and drop dummy copy constructors

* s/vec/deq/ for PS vecSessions/cs_vecsessions
2018-09-20 15:40:43 +03:00
PastaPastaPasta
3d48824b48 Update .clang-format to more accurately show the actual style (#2299)
* updated clang formatting

* add `BreakConstructorInitializers: AfterColon`

* revert column limit change

* AlignConsecutiveAssignments: true

* Revert "AlignConsecutiveAssignments: true"

This reverts commit fc4a4a54f7b0d9e725179a3ee1bf0808c08b0da6.
2018-09-20 15:40:00 +03:00
PastaPastaPasta
8ea40102c0 Remove leftover RBF code from BTC (#2297)
* Remove leftover RBF code from BTC

* remove rbf #include

* remove rbf in rpc-tests

* removes replace-by-fee.py

* remove help text related to rbf

* remove comment text relating to rbf

* remove "-mempoolreplacement" cli option

* Remove (effectively dead) RBF code which would never have been called anyway and some assosiated variables

* since `setConflicts` is always empty, this is dead code

* Since we don't have RBF, don't have to do this check. Also, since `setConflicts` is always empty this is dead code

* removes unneccesary if as it will always be true

* remove unused `set<uint256> setConflicts`

* Removes replacement of conflicting txs, as conflicting txs are never accepted

* removes RBF from `validForFeeEstimation`

* removes (probably) unnecessary lock

* remove replacing part of the AcceptToMemoryPool and AcceptToMemoryPoolWIthTime

* fixes err in ps.cpp, didn't remove arg

* RBF in net_processing.cpp

* remove arg in ps-server.cpp

* removes another arg in PS code

* removes rawtx.c AcceptToMemoryPool arg

* removes arg in txvalidationcache_tests.cpp

* remove extra args

* forgot an arg

* fix typo in 82898b0

* remove unused fEnableReplacement in validation.h

* remove the removal reason REPLACED in txmempool.h

* removed unused variable

* comment typo
2018-09-20 15:39:34 +03:00
UdjinM6
3cc4ac1376
Fix crash bug with duplicate inputs within a transaction (#2302)
* Fix crash bug with duplicate inputs within a transaction

Introduced by #9049

* Remove redundant parameter fCheckDuplicateInputs from CheckTransaction
2018-09-19 15:04:35 +03:00
UdjinM6
31759a44d6
Fix tx inv throughput (#2300)
Bumps 4x per 1MB due to 4x smaller block times and accounts for blocks >1MB as in https://reviews.bitcoinabc.org/rABC4ae37d54ba3db21609ef8b704ed7f4377b9cece7
2018-09-19 15:04:03 +03:00
UdjinM6
0471fa8847
Drop MAX_GOVERNANCE_OBJECT_DATA_SIZE (and maxgovobjdatasize in rpc) (#2298) 2018-09-19 15:03:30 +03:00
UdjinM6
76599aad3c
Drop (pre-)70208 compatibility code (#2295) 2018-09-15 13:19:31 +03:00
UdjinM6
c6a0c55417
A couple of small fixes for mixing collaterals (#2294)
* No reasons to create mixing collaterals if we can't create denoms to mix

* Include non-anonymizable inputs when trying to make mixing collaterals
2018-09-15 13:19:00 +03:00
UdjinM6
d192d642f6
Move heavy coin selection out of the loop in SubmitDenominate (#2274)
* extend CTxOut constructor

* Move heavy coin selection out of the loop in SubmitDenominate
2018-09-15 13:18:32 +03:00
Alexander Block
016681cd38 Add support for serialization of bitsets and tuples (#2293)
* Add serialization support for dynamic and fixed size bitsets

* Support serialization of std::tuple
2018-09-14 18:53:49 +03:00
Alexander Block
9d90b4fa47 Honor filterInventoryKnown for non-tx/non-block items (#2292) 2018-09-14 18:53:26 +03:00
Alexander Block
6adc236d0e Only use dataDir in CEvoDB when not in-memory (#2291) 2018-09-14 18:53:09 +03:00
Alexander Block
8a878bfcfd Call InitializeCurrentBlockTip and activeMasternodeManager->Init after importing has finished (#2286)
While importing, IsInitialBlockDownload always returns true, meaning that
the call to UpdatedBlockTip will also receive true as fInitialDownload.

UpdatedBlockTip is never called again unless a block is mined.
Mining of new blocks in regtest however only starts after mnsync has
finished, which will never happen as it waits for the next call to
UpdatedBlockTip.
2018-09-12 14:13:17 +03:00
Alexander Block
2a95dd30c5 Fix locking issues in DIP3 unit tests (#2285)
* Don't use GetTransaction in CheckProUpRegTx

GetTransaction locks mempool.cs internally. This brings messes up the locking
order of cs_main, mempool.cs and CCheckQueue::ControlMutex.

* Lock cs_main in TestChainSetup::CreateBlock when updating CbTx
2018-09-12 14:13:00 +03:00
PastaPastaPasta
1e74bcace9 [ZMQ] Notify when an IS double spend is attempted (#2262)
* Implement IS Double spend notifications in zmq

* copy/paste error

* typo

* Send both conflicting and conflicts against as ZMQ notifications

* CTransaction based not hash based

* @UdjinM6 requested changes
2018-09-12 14:12:44 +03:00
UdjinM6
28e0476f4c
Squash two logic branches in SubmitDenominate into one (#2270) 2018-09-11 21:33:06 +03:00
Alexander Block
6b3d650280 After DIP3 activation, allow voting with voting keys stored in your wallet (#2281)
* Implement temporary solution to allow voting with owner keys from your wallet

Will later be removed and properly reimplemented when cleaning up
legacy masternode code

* When MN keys from masternode.conf are used, only allow voting when they match with keyIDVoting
2018-09-11 17:33:07 +03:00
Alexander Block
47ca06ab33 DIP3 integration tests (#2280)
* Implement dip3 integration tests

This tests the full upgrade path from legacy MNs to deterministic MNs

* Invoke UpdatedBlockTip signal when invalidateblock RPC is called

Currently, UpdatedBlockTip would only be called if the invalidation resulted
in another chain becoming the longest one. This is inconsistent behavior
and was spotted when running dip3 integration tests.
2018-09-11 17:32:45 +03:00
UdjinM6
9b6eb4765f
Include inputs with max rounds in SelectCoinsDark/SelectCoinsByDenominations (#2277) 2018-09-11 17:32:18 +03:00
UdjinM6
55d7bb9009
Add an option to disable popups for PS mixing txes (#2272)
* Add an option to disable popups for PS mixing txes

* capital S
2018-09-11 17:31:46 +03:00
UdjinM6
38ccfef3be
Identify PS collateral payments in transaction list a bit more accurate (#2271)
This have to be updated due to new rules for PS collateral - we allow OP_RETURN outputs and "non-exact" inputs (1x<=X<2x) now.
2018-09-11 17:31:18 +03:00
UdjinM6
737353c84c
Fix IsBlockValueValid/IsOldBudgetBlockValueValid (#2276) 2018-09-10 17:12:32 +03:00
Alexander Block
c3d6b06518 Remove redundant check for unknown commands in masternode RPC (#2279) 2018-09-10 13:23:42 +03:00
Alexander Block
bc7924d418 Add unit tests for DIP3 and DIP4 2018-09-05 18:40:53 +02:00
Alexander Block
d653ace99e Update CbTx in TestChainSetup
We need to update the CbTx's merkle root for the masternode list here as
tests might add transactions into a block which cause the list to change.
2018-09-05 18:40:53 +02:00
Alexander Block
9674be8f96 Refactor TestChain100Setup to allow different test chain setups
Allows testing of features which depend on BIP9 deployments
2018-09-05 18:40:53 +02:00
UdjinM6
ad31dbbd73
Add more variance to coin selection in PS mixing (#2261)
* Lean towards "from high to low" branch but still mix via "from low to high" one someties

* Try to mix non-duplicate txids only

* Lean towards edges but still mix starting from the middle sometimes

If failed when started from the middle try mixing from the edges right away.

Note: liqudity providers always start from 0

* map -> set

* Refactor nRoundStart calculations
2018-09-05 19:35:33 +03:00
Alexander Block
cb37c39725 Bump PROTOCOL_VERSION to 70211, bump MIN_* protocols to 70210 (#2256)
Bump PROTOCOL_VERSION to 70211, bump MIN_* protocols to 70210
2018-09-05 19:34:56 +03:00
Alexander Block
d8247dfffa Use refactored payment logic when spork15 is active
Related to https://github.com/dashpay/dash/pull/2237
2018-09-05 14:06:50 +02:00
Alexander Block
60002b7ddb Payout and enforce operator reward payments 2018-09-05 14:06:50 +02:00
Alexander Block
2c481f0f86 Implement deterministic version of CMasternodePayments::IsScheduled
Needed for privatesend when choosing masternodes
2018-09-05 14:06:50 +02:00
Alexander Block
44706dc88a Implement projection of MN reward winners in "masternode winners" 2018-09-05 14:06:50 +02:00
Alexander Block
e6b699bc26 Enforce MN and superblock payments in same block
1. Enforce payment to masternodes in IsBlockPayeeValid even if superblocks
   are triggered. This new rule only gets activated when spork15 activates.

2. Always enforce masternode payments when spork15 is activated and ignore
   spork8 in that case. spork8 can be removed after spork15 activation
   and hardening of the spork15 height into consensus params.
2018-09-05 14:06:31 +02:00
Alexander Block
19fbf8ab76 Move cs_main lock from CMasternode::UpdateLastPaid to CMasternodeMan
Ensure correct locking order to fix deadlock.
2018-09-05 14:06:31 +02:00
Alexander Block
dc7292afa9 Implement new MN payments logic and add compatibility code 2018-09-05 14:06:31 +02:00
PastaPastaPasta
fded838c9d RPC folder: Cleaned up brackets on if, while, for, BOOST_FOREACH. Some whitespace fixes (#2257)
* Cleaned up brackets on if, while, for, BOOST_FOREACH. Some whitespace fixes

* gov, mn and mining cleanup

* Revert "Cleaned up brackets on if, while, for, BOOST_FOREACH. Some whitespace fixes"

This reverts commit 4a2a1b0645c5195025d0c7e6dad2e01a93efbfd6.

* Revert "gov, mn and mining cleanup"

This reverts commit 7cb91aabc67df0ab60db4ee84e3aaaf6cf6b7881.

* cleanup some dash specific

* "if(" -> "if ("     "for(" -> "for (" + corrected some else blocks
2018-09-05 15:04:24 +03:00
UdjinM6
8c9cb29092
Revert 2075 (#2259)
* Revert "Require all participants to submit equal number of inputs (#2075)"

This reverts commit 7ac4b972ab.

* Backward compatibility for nInputCount
2018-09-05 14:19:03 +03:00
UdjinM6
b164bcc7a5
Split PS into Manager and Session and allow running multiple mixing sessions in parallel (client side) (#2203)
* Split PS into Manager and Session

* Adjust log messages accordingly

* add -privatesendsessions cmd-line option

* address review comments

* bump MAX_OUTBOUND_MASTERNODE_CONNECTIONS to 30

+10 for parallel mixing

* protect vecSessions

* constructors

* Rewrite CMasternodeMan::ProcessMasternodeConnections() to use CPrivateSendClientManager::GetMixingMasternodesInfo().

This should solve potential deadlock cs_vecqueue vs cs_vNodes.

* Drop no longer used IsMixingMasternode()

* lock cs_wallet when mixing uses balance related functions
2018-09-04 13:54:59 +03:00
Alexander Block
d4530eb7d5 Put all masternodes in MASTERNODE_ENABLED state when spork15 is active 2018-09-03 13:31:40 +02:00
Alexander Block
31b4f83543 Forbid starting of legacy masternodes with non matching ProTx collateral values
If the masternode is already upgraded to ProTx, it's address and key
must match with the started masternode.
2018-09-03 13:31:40 +02:00
Alexander Block
2d8f1244cf Implement 'masternode info <proTxHash>' RPC 2018-09-03 13:31:40 +02:00
Alexander Block
e2a9dbbce1 Better "masternode status" for deterministic masternodes 2018-09-03 13:31:40 +02:00
Alexander Block
50ac6fb3aa Throw exception when trying to invoke start-xxx RPC in deterministic mode 2018-09-03 13:31:40 +02:00
Alexander Block
5050a92053 Add compatibility code for FindRandomNotInVec and GetMasternodeScores 2018-09-03 13:31:40 +02:00
Alexander Block
cc73422f88 Add methods to add/remove (non-)deterministic MNs 2018-09-03 13:31:40 +02:00
Alexander Block
7d14566bcd Add compatibility code to CMasternodeMan so that old code is still compatible
...when deterministic MNs are activated.
2018-09-03 13:31:40 +02:00
Alexander Block
27e8b48a60 Stop executing legacy MN list code when spork 15 is activated 2018-09-03 13:31:40 +02:00
Alexander Block
6764dafece Skip initial masternode list sync if spork 15 is active 2018-09-03 13:31:40 +02:00
Alexander Block
d90b139967 Implement CActiveDeterministicMasternodeManager 2018-09-03 13:31:40 +02:00
UdjinM6
a5e65aa373
Erase mnListCache entry on UndoBlock (#2254) 2018-09-03 13:18:20 +03:00
Alexander Block
88e7888de9 Try using cache in GetListForBlock before reading from disk (#2253)
* Try using cache in GetListForBlock before reading from disk

* Use std::list for vecDiff
2018-09-03 13:17:41 +03:00
Alexander Block
fced9a4b86 Ban peers that send us MNLISTDIFF messages
These are only meant to be sent to SPV clients
2018-09-03 10:46:52 +02:00
Alexander Block
d3ac86206c Implement GETMNLISTDIFF and MNLISTDIFF P2P messages
Also add "protx diff" RPC
2018-09-03 10:46:52 +02:00
Alexander Block
bcc0719578 Calculate and enforce DIP4 masternodes merkle root in CbTx
Also add "coinbase_payload" field to block templates
2018-09-03 10:46:51 +02:00
Alexander Block
0a086898f5 Implement and enforce CbTx with correct block height and deprecate BIP34 2018-09-03 10:46:40 +02:00
Alexander Block
58aa813649 Implement "protx revoke" RPC 2018-08-31 17:06:33 +02:00
Alexander Block
9653af2f30 Classes, validation and update logic for CProUpRevTX 2018-08-31 17:06:33 +02:00
Alexander Block
185416b970 Implement "protx update_registrar" RPC 2018-08-31 17:06:24 +02:00
Alexander Block
1c68d11077 Classes, validation and update logic for CProUpRegTX 2018-08-31 17:06:24 +02:00
Alexander Block
32951f795c Implement "protx update_service" RPC 2018-08-31 17:06:24 +02:00
Alexander Block
8aca3b0404 Also check duplicate addresses for CProUpServTX in CTxMemPool 2018-08-31 17:06:24 +02:00
Alexander Block
923fd67395 Implement CProUpServTx logic in CDeterministicMNManager 2018-08-31 17:06:24 +02:00
Alexander Block
6ec0d7aea5 Classes and basic validation of ProUpServTx 2018-08-31 17:06:24 +02:00
Alexander Block
255403e927 Include proTx data in json formatted transactions 2018-08-31 15:33:09 +02:00
Alexander Block
25545fc1e7 Split keyIDMasternode into keyIDOwner/keyIDOperator/keyIDVoting (#2248)
* Split keyIDMasternode into keyIDOwner/keyIDOperator/keyIDVoting

keyIDOwner is the key used for things which should stay in control of the
collateral owner, like proposal voting.

keyIDOperator is the key used for operational things, like signing network
messages, signing trigger/watchdog objects and trigger votes.

keyIDVoting is the key used for proposal voting

Legacy masternodes will always have the same key for all 3 to keep
compatibility.

Using different keys is only allowed after spork15 activation.

* Forbid reusing collateral keys for operator/owner keys and vice versa

* Bump SERIALIZATION_VERSION_STRING in CMasternodeMan
2018-08-31 16:31:59 +03:00
Alexander Block
5295c78cca Fix typo in "penalty" (#2247) 2018-08-31 12:33:37 +03:00
Alexander Block
c566ce75d9 Update copyright in specialtx.h/cpp 2018-08-30 19:47:48 +02:00
Alexander Block
5e3abeca24 Implement "protx list" RPC 2018-08-30 19:47:48 +02:00
Alexander Block
2c172873aa Don't allow non-ProTx masternode collaterals after DIP3 activation 2018-08-30 19:47:48 +02:00
Alexander Block
5461e92bf4 Add spork to control deterministic MN lists activation 2018-08-30 19:47:48 +02:00
Alexander Block
9e8a867149 Implementation of deterministic MNs list 2018-08-30 19:47:48 +02:00
Alexander Block
76fd308947 Automatically lock ProTx collaterals when TX is added/loaded to wallet
Avoid accidential spending of ProTx collaterals.
2018-08-30 19:47:38 +02:00
Alexander Block
cdd723ede6 Conflict handling for ProRegTx in mempool 2018-08-30 19:47:38 +02:00
Alexander Block
c772423468 Implement "protx register" RPC 2018-08-30 19:47:38 +02:00
Alexander Block
958b84ace3 Implementation of ProRegTx with basic validation (no processing) 2018-08-30 19:47:30 +02:00
Alexander Block
c9a72e8880 Introduce CEvoDB for all evo related things, e.g. DIP3
Also add transaction handling to ConnectTip and DisconnectTip and a few
other places where blocks are processed.
2018-08-30 19:47:22 +02:00
Alexander Block
4531f6b896 Implement CDBTransaction and CScopedDBTransaction
Allows easier commit/rollback handling, especially useful when AcceptBlock
fails and things need to be reverted.
2018-08-29 15:49:31 +02:00
Alexander Block
e002c50b04 Add "immer" functional/immutable containers library (#2244)
Add "immer" functional/immutable containers library
2018-08-29 16:31:21 +03:00
Alexander Block
e225cebcdb Use previous block for CheckSpecialTx (#2243)
We actually can't use the current block as that one might not be fully
processed/built yet.
2018-08-29 16:26:16 +03:00
gladcow
1c25658044 Refactor masternode and gobject RPCs to support help command subCommand syntax (#2240)
* Support help for masternode rpc call subcommands

* Support help for gobject rpc call subcommands

* squash ifs for conditions to show help

* remove code duplication for masternode list and masternodelist help calls
2018-08-29 14:36:35 +03:00
UdjinM6
40eee1775f
Fix sync in regtest (again) (#2241)
Should only call SwitchToNextAsset() while being in specific state and not on every tick
2018-08-29 13:02:54 +03:00
Alexander Block
fb4d301a20 Add extraPayloadSize/extraPayload fields to RPC help 2018-08-29 11:45:53 +02:00
Alexander Block
8af7f62232 Account for extraPayload when calculating fees in FundTransaction 2018-08-29 11:36:14 +02:00
Alexander Block
61bbe54ab3 Add Get-/SetTxPayload helpers 2018-08-29 11:36:14 +02:00
Alexander Block
cebf71bbc3 Stubs for special TX validation and processing 2018-08-29 11:36:14 +02:00
Alexander Block
d6c5a72e2f Basic validation of version 3 TXs in CheckTransaction 2018-08-29 11:36:14 +02:00
Alexander Block
a3c4ee3fda DIP2 changes to CTransaction and CMutableTransaction 2018-08-29 11:36:14 +02:00
Alexander Block
d20100ecd4 DIP0003 deployment 2018-08-29 11:36:14 +02:00
Alexander Block
b6896387ae Move DIP1 transaction size checks out of ContextualCheckBlock and use ContextualCheckTransaction instead (#2238)
* Pass consensus params to ContextualCheckTransaction

As we do with ContextualCheckBlock

* Use ContextualCheckTransaction in ContextualCheckBlock instead of duplicating the check

* Fix pindexPrev parameter signature in ContextualCheckTransaction
2018-08-28 14:43:58 +03:00
Alexander Block
e415fd049a Revert CMasternodePayments::IsTransactionValid to the logic before the recent refactorings (#2237)
partially reverts #2216
2018-08-27 15:48:45 +03:00
Nathan Marley
73c2ddde7a extract sporkmanager from sporkmessage (#2234)
The SporkMessage is a lower-level construct which shouldn't be aware of
SporkManager. This commit moves the `sporkManager.IsSporkActive()` calls
outside the SporkMessage functions. This follows the dependency injection
pattern and makes it easier to test SporkMessage as well.
2018-08-22 17:46:27 +03:00
Alexander Block
8da88ecf68 Don't crash when formatting in logging throws exceptions (#2231)
* Don't crash when formatting in logging throws exceptions

* Preserve exception like output
2018-08-21 18:34:26 +03:00
gladcow
b92bd8997a Fix mninfo search by payee (#2233) 2018-08-21 17:08:42 +03:00
Nathan Marley
2997d6d268 add compressed option to masternode genkey (#2232)
* add compressed option to `masternode genkey`

* use ParseBoolV method

* adjust help message for masternode genkey
2018-08-21 17:08:11 +03:00
PastaPastaPasta
98ed90cbb4 adds rpc calls for setprivatesendrounds and setprivatesendamount (#2230)
* adds rpc calls for `setprivatesendrounds` and `setprivatesendamount`

* tabs -> spaces

* @gladcow change request

* Whops tab -> spaces

* @Udjin changes, not the CAmount -> int

* int stuff

* Throw error when rounds / amount isn't within range
2018-08-21 17:07:54 +03:00
gladcow
2e06f8133f fix missed format parameter (#2229) 2018-08-21 17:07:32 +03:00
Alexander Block
50eb98d901 Prepare for DIP3 operator reward payments and switch to array in getblocktemplate (#2216)
* Prepare for DIP3 operator reward payments and switch to array in getblocktemplate

This commit allows to later split MN rewards into multiple recipients, e.g.
the owner reward and operator reward. It also updates the getblocktemplate
output to return an array of MN payments instead of a single entry.

This should allow MN miners and pool operators to prepare themself for the
upcoming changes in regard to operator rewards.

* txoutsMasternode -> voutMasternode

* More renaming

* Consider all masternode payments when looking for a known masternode
2018-08-14 12:58:38 +03:00
Alexander Block
c09f57bd78 Backport move to Ubuntu Bionic and GCC7 in Gitian builds (#2225)
* Add stdin, stdout, stderr to ignored export list

* Merge #13171: Change gitian-descriptors to use bionic instead

c1afe3232fa10e290fb355cf37ea4c7bc1084065 Change gitian-descriptors to use bionic instead (Chun Kuan Lee)

Pull request description:

  I have tested this with Ubuntu Bionic host with lxc 3.0.0, the gitian-build for Windows and MacOSX work fine, but there is an issue about it for Linux. Failed at check-symbol:
  ```
  test/test_bitcoin: symbol __divmoddi4 from unsupported version GCC_7.0.0
  test/test_bitcoin: symbol log2f from unsupported version GLIBC_2.27
  qt/bitcoin-qt: symbol __divmoddi4 from unsupported version GCC_7.0.0
  qt/bitcoin-qt: symbol log2f from unsupported version GLIBC_2.27
  ```
  I think this should be fixed in `./configure --enable-glibc-back-compat`

  Should not be merged before #13177 devrandom/gitian-builder#178

  Close #12511

Tree-SHA512: 257d75d5b6864e105279f7a7b992fbbd7903cdbe3300b66dacec0a783d267707d9dbbfe0e64a36983ca1eca50a2a5e1cdb222b6d3745ccc3e5fc5636c88b581f

* Use IN6ADDR_ANY_INIT instead of in6addr_any

This is the same fix as fc6a9f2ab1
Couldn't backport the original commit as we are missing some refactorings.
2018-08-13 23:21:42 +03:00
gladcow
1767e3457e Save/load spork cache (#2206)
* CSporkManager class serialization

* Read/write sporks.dat file

* Move mapSporks into CSporkManager and serialize it

* fix GetSporkByHash

* spork tests

* add missed cs lock

* clear mapSporksByHash in CSporkManager::Clear

* use spork active rpc call to hide spork inner logic

* set small pause between rpc calls in cycles
2018-08-13 23:21:21 +03:00
Alexander Block
4d3518fe04 Refactor MN payee logic in preparation for DIP3 (#2215)
* Refactor block payee filling/validation

1. Move out old budget validation into it's own function (IsOldBudgetBlockValueValid)
2. Refactor IsBlockValueValid to bail out early instead of using deep
   nested if/else blocks. IMHO, I feel that this makes the code much easier
   to read and less error prone.
3. Refactor/rename CreateSuperblock and CMasternodePayments::FillBlockPayee
   to be getters without actually modifying the coinbase TX. The coinbase
   is now only modified from the global FillBlockPayments function. Makes
   later changes in DIP3 easier (allowing superblock and MN rewards in same block)

* Use __func__ for logging in block payee code

* Fix code style nit
2018-08-12 18:27:09 +03:00
Alexander Block
d946f21bd9 Masternode related refactorings in preparation of DIP3 (#2212)
* Split CActiveMasternode into CActiveMasternodeInfo and CLegacyActiveMasternodeManager

* Use CKeyID instead of CPubKey whenever possible in masternode code

* Rename activeMasternode to activeMasternodeInfo and make it a struct

* Rename pubKeyIDXXX to keyIDXXX

* Bump SERIALIZATION_VERSION_STRING

* Fix build error after rebase

* Fix compilation warning/error with clang
2018-08-11 22:55:56 +03:00
Alexander Block
633879cd28 Only use version 1 and 2 transactions for sighash_tests (#2219)
Also regenerated sighash.json with the help of PRINT_SIGHASH_JSON
2018-08-11 01:36:36 +03:00
Alexander Block
2d4e18537c Some useful commits from the DIP3 PR in regard to integration tests (#2218)
* Allow changing budget parameters for regtest

* Lift some limitations for local addresses for masternodes in regtest

Needed to make masternodes works in regtest mode

* Add "masternode check" RPC to force invocation of CheckAndRemove

Useful in integration tests where MN lists must be predictable
2018-08-11 01:36:17 +03:00
Alexander Block
a959f60aa7 De-duplicate "gobject vote-alias" and "gobject "vote-many" code (#2217)
Use same code for both vote modes
2018-08-11 01:35:52 +03:00
Alexander Block
075ca0903f Protect CSporkManager with critical section (#2213) 2018-08-11 01:34:28 +03:00
Alexander Block
106bab1ae1 Add new ParseXXX methods to easily parse UniValue values (#2211) 2018-08-11 01:33:56 +03:00
Alexander Block
566fa5ec3b Add support for "help command subCommand" (#2210) 2018-08-11 01:30:55 +03:00
UdjinM6
4cd969e3d2
Add previousbits field to getblocktemplate output (#2201)
* Add `previousbits` field to `getblocktemplate` output

* add comment to nPrevBits
2018-08-11 01:28:30 +03:00
UdjinM6
c4ee2c89ef
Fix mnsync in regtest (#2202) 2018-08-04 16:39:15 +03:00
strophy
d4d11476aa Fix typo and grammar in PS error message (#2199)
* Fix typo

* Grammar fix
2018-08-04 16:38:57 +03:00
UdjinM6
6bcd868de7
Fix lockedByInstantSend initialization (#2197) 2018-07-29 09:39:37 +03:00
gladcow
0a6f47323b Remove dummy confirmations in RPC API and GUI for InstantSend transactions (#2040)
* remove instandsenddepth option

* remove CInstantSend::GetConfirmations

* Explicit IXlocks processing in the code using GetDepthInMainChain

* remove dummy confirmations for IX locks

* remove unused constant

* Track IS status in TransactionStatus

* Highlight IS in tx list

* Customize confirmation icons for IS txes

* Fix issues:

- bring back removed comment;
- simplify 2 complex condition to ose `IsTrusted()` function only;
- rename `IsLockedIX` function to 'IsLockedByInstantSend`;

* Revert condition with IsTrusted()

* code style fix

* remove dummy confirmations from instantsend.md

* fix instantsend.md
2018-07-28 19:39:37 +03:00
UdjinM6
a83ab55010
Fix wallet lock check in DoAutomaticDenominating (#2196) 2018-07-28 16:51:45 +03:00
UdjinM6
96435288fa
Move block template specific stuff from CBlock to CBlockTemplate (#2195) 2018-07-28 16:51:29 +03:00
UdjinM6
3d002c9463
Fix active masternode task schedule (#2193) 2018-07-28 16:51:13 +03:00
UdjinM6
ac30196bc5
Show some info about the wallet dumped via dumpwallet (#2191)
Also show a warning that the file must be kept secure.
2018-07-28 16:50:58 +03:00
UdjinM6
30fa8bc33c
Make sure pwalletMain is not null whenever it's used in PS client (#2190)
* Make sure pwalletMain is not null whenever it's used in PS client

* partially revert
2018-07-28 16:50:41 +03:00
UdjinM6
65b9045269
Add helpers GetSentinelString() and GetDaemonString() to CMasternodePing (#2192) 2018-07-25 18:09:48 +03:00
UdjinM6
a5643f899d
Switch RequestGovernanceObjectVotes from pointers to hashes (#2189)
* No need for pointers to gobjects, can simply use hashes in RequestGovernanceObjectVotes

* Drop `swap` and `=` in GovernanceObject

Were used for shuffling, no longer needed
2018-07-25 18:09:30 +03:00
gladcow
ace980834f Extend Bloom Filter support to InstantSend related messages (#2184)
* use bloom filters for IX lock votes

* code style fixes
2018-07-20 16:32:41 +03:00
PaulieD
d7e2103411 Fixes inaccurate round count in CoinControlDialog (#2137)
* fixes #2068

* Revert prior and update in correct location
2018-07-16 15:48:02 +03:00
UdjinM6
1681d6366f
Replace Dash-specific threads with Dash-specific scheduled tasks (#2043)
* Replace Dash-specific threads with scheduled tasks

* Fix rare crash when trying to shutdown wallet during mixing

Should stop PS and release all keys _before_ wallet is destroyed.

* fix nowallet

* update doc
2018-07-16 15:47:37 +03:00
Nathan Marley
dac090964f remove dashpay.io dns seed entry (#2181) 2018-07-13 13:00:55 +03:00
Alexander Block
f3e380659a Move to in-docker CI builds and add Jenkins support (#2178)
* GCC-7 and glibc-2.27 compat code

* Statically link libstdc++ for GCC based builds

Makes sure binaries which are built on a newer build host still work
on older distros.

* Use python3 when installing MacOS native tools

* Move actual build logic out of Travis and upgrade to gcc-7

Travis will now simply call a few scripts which do the actual work.
These scripts will first create a "builder image" which contains the
necessary environment for the actual build. Then scripts are called
inside this builder image to do the build.

This should make us more independant from Travis and also allows us
to do local CI testing.

The build matrix is also moved out of .travis.yml and instead moved
into ci/matrix.sh. This script is sourced with only "BUILD_TARGET" being
set so that it internally can figure out which other environment
variables need to be set.

This commit also upgrades the used GCC version to 7. This is due to the
use of ubuntu:bionic as base image for the builder image.

* Add Jenkinsfiles for regular CI and nightly gitian builds

* Automatically download OSX SDK in gitian-build.sh

* Remove bogus "export MAKEJOBS=-j5"

* Forward cache/src dirs into builder container

Fixes caching issues on Travis.

* fix

* Fail build immediately when building depends took too long
2018-07-12 16:28:59 +03:00
Alexander Block
23dde9f12b Remove a few annoying debug prints from CMasternodeMan (#2179)
These are occurring every second and cause more noise than actual
information.
2018-07-12 12:17:19 +03:00
Nathan Marley
e23339d6f0 use nullptr in Dash-specific code (#2166)
This is recommended in modern C++ code as nullptr is more type-safe and can't
be converted to an integer, unlike NULL.
2018-07-12 12:08:43 +03:00
Nathan Marley
42c193df08 replace map count/insert w/emplace in instantx.cpp (#2165)
* replace map count/insert w/emplace in instantx.cpp

This feels like an optimization, something about:

```
if map.count(key)
     return false
else
     insert(pair)
     return true
```

... just feels icky. Plus, `vote.GetMasternodeOutpoint()` is only called
once. The previous version might be slightly more readable, however.

* use std::pair template constructor shortcut
2018-07-12 12:08:22 +03:00
Nathan Marley
fd70a1eb92 iterator cleanup in several places (#2164)
* iterator cleanup in Dash-specific code

* const

* *Pair/pair

* it++ -> ++it
2018-07-12 12:07:51 +03:00
strophy
df1be90ce1 Update links to obsolete documentation (#2162)
* Update links to obsolete documentation

* Change link text
2018-07-12 12:07:17 +03:00
PaulieD
0e689341d2 Implement Governance ZMQ notification messages (#2160)
* fix whitespace

* added zmq stuff for governance objects and votes
it seems that zmq is currently not in a working state, need to figure that out.

Need to:
plug in the new methods added
possibly plug in the old methods, as it doesn't look like they are.

* formatting fix. Will probably need to revert for this PR

* continue linking new zmq messages in

* added comment, might need to revert

* fixes error of it not knowing about the classes

* Actually link in, all new govobjects and govvotes should be broadcast over zmq now.

* fix compile error, forgot to change params when copying

* fix compile error

* add imports to the header files in zmqconfig.h

* fixing linking(i think) error

* Revert "added comment, might need to revert"

This reverts commit 2918ea40fe9a96834c4bd89e13cb458cde6814f2.

* Revert "formatting fix. Will probably need to revert for this PR"

This reverts commit ca10558866ab61e3dd0c70541fdcfee6f5115157.

* fix tabs etc

* EOL added

* optimization of hash.begin() @nmarley thoughts?

* remove formatting changes

* iterator i -> it and removal of notifier

* typo in df879f57

* use auto for the iterators

* introduce hash prefix

* implement changes in zmq_sub.py, update the doc, and change argument name to fix typo

* deref iterators before calling methods

* continued e8a4c505

* missed one... continued e8a4c505

* killing some tabs

* fix spacing for setting or comparing iterators

* change order of new variables to match current setup

* re-add elif's I didn't realize got removed

* Revert "fix spacing for setting or comparing iterators"

This reverts commit 8ce2068148dcd275ebba7ee6038d0db1c582b9f3.

* Revert "use auto for the iterators"

This reverts commit cb16cf0760bfaf68c56684877898611802bf2303.

* Revert "missed one... continued e8a4c505"

This reverts commit 2087cf894f7e9682508b4692b89897b4fa4e4b7a.

* Revert "continued e8a4c505"

This reverts commit a78c8ad2c9bb1602242a8f040e17ef958982348c.

* Revert "deref iterators before calling methods"

This reverts commit e8a4c505d1d34360eaf882d92cd8fbc55436cfcc.

* Revert "iterator i -> it and removal of notifier"

This reverts commit 29574248b1a0d05c18d60454d07c77979aae6fb2.

* Revert "fix whitespace"

This reverts commit 612be48d963000b4cbc5f64981a88a3225428b37.

* Revert "typo in df879f5"

* Revert "Optimization of hash.begin()"

* fixes problem with revert

* Udjin complain's a lot ;)

* help text, init.cpp

* add signals in validationinterface.cpp

* Change location of vote notification call.

* remain consistent

* remove unneeded include due to change of notification location

* implement raw notifications
2018-07-12 12:06:30 +03:00
PaulieD
448e92f4aa GetOutPointPrivateSendRounds readability (#2149)
* .gitnore visual studio bs

* Improves the readability of the `GetOutpointPrivateSendRounds` function by not having the second argument be needed, as the second arg should only not be 0 when it is recursively calling itself

* Revert ".gitnore visual studio bs"

This reverts commit 129b5242ade6a97a71810f492b5b347be219b691.

* changed back comment and fixed allignment

* refactor based on Udjin's suggestions.

* refactor based on Udjin's suggestions.

* fix alignment

* Revert "fix alignment"

This reverts commit c2cc2ae531c191258cd043b2b45a316443e4b860.

* actually fix alignment

* actually fix alignment
2018-07-12 12:05:39 +03:00
gladcow
6da2837bdd InstantSend Integration tests (#2141)
* adjust `AddLocal` method only in regtest mode

* Create Masternodes in regtest

* sentinelping call for masternodes

* set externalip option for masternodes in regtest

* fix MNB relay during masternodes creation

* fix node_count naming

* instantsend doublespend

* decrease node restarts

* prevent spending masternode collaterals

* move long test to the test list start

* remove InstantSend spork sending

* remove spork-specific code

* fix checking double spend rejection
2018-07-12 12:04:42 +03:00
UdjinM6
3c89983db6
Remove DarksendConfig (#2132) 2018-07-12 12:03:26 +03:00
PaulieD
43091a3efd PrivateSend Enhancement: Up default round count to 4 and allow user to mix up to 16 rounds (#2128)
* Allows a user to mix up to 16 rounds

All codebase appears to accept up to 16 rounds, however this form was capped at 8; restricting users to 2-8 rounds. This commit allows a user to actually use up to 16 rounds in practice. This will greatly enhance the privacy of those very worried about their privacy, as well as possibly increasing liquidity and increasing the privacy of all users.

* Up the default for PS mixing to 4 rounds.
2018-07-12 12:02:51 +03:00
Nathan Marley
8ee9333bc2 remove boost dependency from Dash-specific code (#2072)
* replace boost casts in dash-specific code

Specifically for spork.cpp : this should be temporary until all spork
sigs are based on hash and not string serialization format, after which
I expect the old signatures (else branch) should go away altogether. But
I still think it's worth it to get pieces of the boost dependency
removed, and this is an easy win, and could be merged now or in a patch
release w/o issue.

* replace boost::shared_ptr w/std::shared_ptr
2018-07-12 12:02:20 +03:00
gladcow
2c0d4c9d77 Save/load InstantSend cache (#2051)
* CTxLockCandidate serialization

* COutPointLock serialization

* CInstantSend serialization

* Read/write instantsend.dat file

* Read\write InstantSend cache only if InstantSend is enabled
2018-07-12 12:01:48 +03:00
UdjinM6
a527845e4f
Bump to 0.12.4.0 pre-release (#2167) 2018-07-12 12:01:10 +03:00
UdjinM6
2ba0c77604
Add tests for special rules for slow blocks on devnet/testnet (#2176)
* Add tests for special rules for slow blocks on devnet/testnet

* add 20m and 3h
2018-07-09 12:42:11 +03:00
UdjinM6
b9a83d2ae6
Allow mining min diff for very slow (2h+) blocks (#2175) 2018-07-08 14:05:55 +03:00
UdjinM6
7b9919d182
Fix issues with selections on Masternode tab (#2170)
Preserve selection on "My Masternodes" sub-tab, disable selections on "All Masternodes" sub-tab.
2018-07-08 00:20:15 +03:00