* 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
* Allow to use low difficulty and higher block rewards for devnet
Configurable through -minimumdifficultyblocks, -highsubsidyblocks and -highsubsidyfactor
* Fix review comments
* Handle review comments
* 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
* 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
* 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
* Remove testnet seeds from devnet
* Lift multiple ports restriction on devnet when considering new nodes
Allow to connect to multiple nodes behind the same IP
* Don't skip addresses with non-default port if it matches -port
If the user specified -port, he very likely intends to connect to nodes
with the same port.
* Don't pass false to CAddrMan constructor as it is already the default
* Make if statements easier to read
* Fix transaction/block versions for devnet genesis blocks
56ff71fcec mistakenly increased the coinbase transaction version instead
of the block version. This fixes it.
* Use v1 for coinbase transaction
* Drop custom logic for delaying GETHEADERS
Reverts "Fix duplicate headers download in initial sync (#1589)" and all following fixes
This reverts commit 169afafd50.
* Fix duplicate initial headers sync
* Make sure gobject collateral was mined
`CGovernanceObject::IsCollateralValid()` would still fail for non-mined collateral later trying to check confirmations
* Fix powLimit for mainnet/testnet
That's a legacy thing, slightly rising it to match the actual bit-shifted value has no effect because real values are already lower.
Also clarify values for all networks in comments.
* Check for script addresses in CSuperblock::ParsePaymentSchedule()
Sentinel should already be downvoting such triggers if they would exist, no need to store/relay them.
* Do not process already known valid vote twice in CGovernanceObject::ProcessVote()
This should be handled by `CGovernanceManager::ProcessVote()` but imo it's better to have this at the `CGovernanceObject::ProcessVote()` level as well.
* Make sure CGovernanceObjectVoteFile::AddVote() never adds/updates already known votes
The way `CGovernanceObjectVoteFile::AddVote()` is used (i.e. wrapped in `CGovernanceObjectVoteFile::HasVote()` condition) it's already the case. Hoever nothing would guarantee consistency if it would be used elsewhere without such wrapper, so it's better to have similar check inside.
* Do not even try mnb recovery when -connect is set
`CConnman::ThreadOpenMasternodeConnections()` thread won't even start when `-connect` is set, so no need to ask for recovery, there is nothing that is going to be able to process such request.
* No need for SIGHASH_ANYONECANPAY in PS collateral signature
Collateral is just a normal tx created and signed by each participant individually, there is no need for special sig types.
* Release semMasternodeOutbound in CConnman::Interrupt()
Re-align Dash code with Bitcoin.
* Switch CNetFulfilledRequestManager and CMasternodeMan maps/funcs to CService
This is to make them work correctly on regtest.
We make sure that behaviour on other networks is not affected though.
* Add fAllowMultiplePorts to chainparams
Tweak either we should allow nodes with the same address and multiple ports or not for this specific chain
* Support passing CKeyID to CMessageSigner/CHashSigner
* Use Dash addresses instead of raw public keys for sporks
The spork addresses are identical to the previously used public keys.
Also use CKeyID/CKey directly inside CSporkManager instead of parsing the
addresses/keys over and over. The default spork key (from chainparams) is
initialized with InitDefaultSporkAddress(). SetPrivKey parses the private
key now and stores it in sporkPrivKey instead of parsing it in
CSporkMessage::Sign().
* Allow setting of spork address via command line
* Remove unused strMasternodePaymentsPubKey chainparam
Traces from the past...
* Review fixes
1. Remove the need for InitDefaultSporkAddress
2. Remove bogus checks for hex private keys
3. Alphabetical order for new include
4. Add . to help string
* Add regtest spork key
As this key is not meant to be private, the private key is also added in
the form of a comment (for later use in regtests)
* Review fixes
* Add missing help string for -devnet
* Remove testnet seeds from devnet
* Activate BIP34/65/66 at height 2 instead of 1
Height 1 is the genesis block and not the devnet genesis block. The genesis
block is still at version 1, resulting in re-indexing to fail.
* Drop nBudgetProposalEstablishingTime
* Refactor: replace `== COutPoint()` with `.IsNull()`
* Refactor: add `operator bool()` to CMasternodePing
* Refactor: actually use `operator bool()` for CPendingDsaRequest
* Refactor: fixing code style in TrafficGraphData
* Fix some comments and whitespaces
* Drop CGovernanceVote::GetTypeHash()
* Drop legacy X11 code
No longer used... if it ever was used at all.
* Move `<boost/foreach.hpp>` out of coins.h
* Simplify CMasternodeBlockPayees::GetRequiredPaymentsString()
Also less of boost::lexical_cast
* Drop CTxDSIn::nSentTimes
* Fix few warnings
* fix warning (timer)
* fix nit
* Use Dash block for DeserializeAndCheckBlockTest
Replaced Bitcoin block with the largest Dash block I could find on mainnet.
* Store hashDevnetGenesisBlock in Consensus::Params
Remove the need for chainparams to be available when the devnetGenesis hash
is needed. Fixes a crash in CheckBlockHeader() when called from benchmarking
code, which does not initialize the Params() function.
b4e4ba4 Introduce convenience type CTransactionRef (Pieter Wuille)
1662b43 Make CBlock::vtx a vector of shared_ptr<CTransaction> (Pieter Wuille)
da60506 Add deserializing constructors to CTransaction and CMutableTransaction (Pieter Wuille)
0e85204 Add serialization for unique_ptr and shared_ptr (Pieter Wuille)
* Initial devnet
* Move genesis block adding into its own method
* Introduce -allowprivatenet to lift limitation on RFC1918 addresses
Normally, RFC1918 (192.168.x.x/10.x.x.x/...) addresses are not allowed
to be relayed. Also, masternodes won't start when the address is considered
invalid.
This is needed to test local devnet or regtest based networks.
* Lift the requirement of minimum MN age for regtest/devnet
* Implement named devnets
This allows the creation of multiple independent devnets. Each one is
identified by a name which is hardened into a "devnet genesis" block,
which is automatically positioned at height 1. Validation rules will
ensure that a node from devnet=test1 never be able to accept blocks
from devnet=test2. This is done by checking the expected devnet genesis
block.
The genesis block of the devnet is the same as the one from regtest. This
starts the devnet with a very low difficulty, allowing us to fill up
needed balances for masternodes very fast.
Also, the devnet name is put into the sub-version of the VERSION message.
If a node connects to the wrong network, it will immediately be disconnected.
* Allow to select multiple addresses from the same group in devnet/regtest
The selection code normally only allows to select addresses from the same
group (e.g. 192.168.x.x) once. This results in connecting to only a single
node in devnet/regtest.
* Show the devnet name in the title bar and on the loading screen
* Add AllowMultipleAddressesFromGroup to chainparams and use it in net.cpp
* Remove unused/unneeded scripts from devnet geneses creation
1. OP_RETURN not needed in input script of devnet genesis
2. genesisOutputScript was unused
* Fix copy/paste error in -allowprivatenet description
* Improve -devnet parameter error handling
- Only allow one of -devnet, -regtest or -testnet
- Only allow -devnet=name to be specified once
* Use different datadir for each devnet
* Fix `devnet-devnet` issue
* Fix devnet splashscreen (should use testnet img)
* Avoid passing devNetName around (most of the time)
* Remove nMaxTipAge from CDevNetParams
Not present anymore after rebase on develop