aboutsummaryrefslogtreecommitdiff
path: root/src/main.h
AgeCommit message (Collapse)Author
2016-05-16Remove unneeded feerate param from RelayTransaction/AcceptToMemoryPool.Gregory Maxwell
2016-05-10Merge #8019: Remove state arg from ReconsiderBlock, rename to ↵Wladimir J. van der Laan
ResetBlockFailureFlags 657e07e Rename ReconsiderBlock func to reflect real behavior (instagibbs) addb9d2 Remove state arg from ReconsiderBlock (instagibbs)
2016-05-09Rename ReconsiderBlock func to reflect real behaviorinstagibbs
2016-05-09Merge #7976: Remove obsolete reference to CValidationState from UpdateCoins.Wladimir J. van der Laan
c8b9248 Remove obsolete reference to CValidationState from UpdateCoins. (21E14)
2016-05-06Remove state arg from ReconsiderBlockinstagibbs
2016-05-06Merge #7815: Break circular dependency main ↔ txdbWladimir J. van der Laan
99e7075 Break circular dependency main ↔ txdb (Wladimir J. van der Laan)
2016-05-05Merge #7840: Several performance and privacy improvements to inv/mempool ↵Wladimir J. van der Laan
handling b559914 Move bloom and feerate filtering to just prior to tx sending. (Gregory Maxwell) 4578215 Return mempool queries in dependency order (Pieter Wuille) ed70683 Handle mempool requests in send loop, subject to trickle (Pieter Wuille) dc13dcd Split up and optimize transaction and block inv queues (Pieter Wuille) f2d3ba7 Eliminate TX trickle bypass, sort TX invs for privacy and priority. (Gregory Maxwell)
2016-04-30Remove obsolete reference to CValidationState from UpdateCoins.21E14
2016-04-20Explicitly pass CChainParams to ConnectBlockface
2016-04-20Eliminate TX trickle bypass, sort TX invs for privacy and priority.Gregory Maxwell
Previously Bitcoin would send 1/4 of transactions out to all peers instantly. This causes high overhead because it makes >80% of INVs size 1. Doing so harms privacy, because it limits the amount of source obscurity a transaction can receive. These randomized broadcasts also disobeyed transaction dependencies and required use of the orphan pool. Because the orphan pool is so small this leads to poor propagation for dependent transactions. When the bypass wasn't in effect, transactions were sent in the order they were received. This avoided creating orphans but undermines privacy fairly significantly. This commit: Eliminates the bypass. The bypass is replaced by halving the average delay for outbound peers. Sorts candidate transactions for INV by their topological depth then by their feerate (then hash); removing the information leakage and providing priority service to higher fee transactions. Limits the amount of transactions sent in a single INV to 7tx/sec (and twice that for outbound); this limits the harm of low fee transaction floods, gives faster relay service to higher fee transactions. The 7 sounds lower than it really is because received advertisements need not be sent, and because the aggregate rate is multipled by the number of peers.
2016-04-19Pass CChainParams to DisconnectTip()face
2016-04-15Break circular dependency main ↔ txdbWladimir J. van der Laan
Break the circular dependency between main and txdb by: - Moving `CBlockFileInfo` from `main.h` to `chain.h`. I think this makes sense, as the other block-file stuff is there too. - Moving `CDiskTxPos` from `main.h` to `txdb.h`. This type seems specific to txdb. - Pass a functor `insertBlockIndex` to `LoadBlockIndexGuts`. This leaves it up to the caller how to insert block indices.
2016-04-07Reduce block timeout to 10 minutesWladimir J. van der Laan
Now that #7804 fixed the timeout handling, reduce the block timeout from 20 minutes to 10 minutes. 20 minutes is overkill.
2016-04-07Track block download times per individual blockPieter Wuille
Currently, we're keeping a timeout for each requested block, starting from when it is requested, with a correction factor for the number of blocks in the queue. That's unnecessarily complicated and inaccurate. As peers process block requests in order, we can make the timeout for each block start counting only when all previous ones have been received, and have a correction based on the number of peers, rather than the total number of blocks.
2016-04-03[doc] Fix doxygen comments for membersMarcoFalke
2016-03-21Implement "feefilter" P2P message.Alex Morcos
The "feefilter" p2p message is used to inform other nodes of your mempool min fee which is the feerate that any new transaction must meet to be accepted to your mempool. This will allow them to filter invs to you according to this feerate.
2016-03-21Merge #7692: Remove p2p alert systemWladimir J. van der Laan
cfd519e Add release note documentation (BtcDrak) 6601ce5 protocol.h/cpp: Removes NetMsgType::ALERT (Thomas Kerin) ad72104 Formatting (BtcDrak) 1b77471 Remove alert keys (BtcDrak) 01fdfef Remove `-alerts` option (BtcDrak) 9206634 Update alert notification and GUI (BtcDrak) bbb9d1d Remove p2p alert handling (BtcDrak)
2016-03-21Merge #7708: De-neuter NODE_BLOOMWladimir J. van der Laan
c90036f Always disconnect old nodes which request filtered connections. (Patrick Strateman)
2016-03-18Always disconnect old nodes which request filtered connections.Patrick Strateman
2016-03-18Remove `-alerts` optionBtcDrak
2016-03-18Merge #7575: Minimal BIP9 implementationWladimir J. van der Laan
8c74ced RPC test for BIP9 warning logic (Suhas Daftuar) 7870deb Test versionbits deployments (Suhas Daftuar) 532cbb2 Add testing of ComputeBlockVersion (Suhas Daftuar) d23f6c6 Softfork status report in RPC (Pieter Wuille) 732e774 Versionbits tests (Pieter Wuille) 6851107 BIP9 Implementation (Pieter Wuille)
2016-03-16Add LockPointsAlex Morcos
Obtain LockPoints to store in CTxMemPoolEntry and during a reorg, evaluate whether they are still valid and if not, recalculate them.
2016-03-15Softfork status report in RPCPieter Wuille
2016-03-15BIP9 ImplementationPieter Wuille
Inspired by former implementations by Eric Lombrozo and Rusty Russell, and based on code by Jorge Timon.
2016-02-16Merge #7509: Common argument defaults for NODE_BLOOM stuff and -walletWladimir J. van der Laan
1fb91b3 Common argument defaults for NODE_BLOOM stuff and -wallet (Luke Dashjr)
2016-02-12Merge #7184: Implement SequenceLocks functions for BIP 68Wladimir J. van der Laan
b043c4b fix sdaftuar's nits again (Alex Morcos) a51c79b Bug fix to RPC test (Alex Morcos) da6ad5f Add RPC test exercising BIP68 (mempool only) (Suhas Daftuar) c6c2f0f Implement SequenceLocks functions (Alex Morcos)
2016-02-11fix sdaftuar's nits againAlex Morcos
it boggles the mind why these nits can't be delivered on a more timely basis
2016-02-11Common argument defaults for NODE_BLOOM stuff and -walletLuke Dashjr
2016-02-10Implement SequenceLocks functionsAlex Morcos
SequenceLocks functions are used to evaluate sequence lock times or heights per BIP 68. The majority of this code is copied from maaku in #6312 Further credit: btcdrak, sipa, NicolasDorier
2016-02-04Merge #7070: Move maxTxFee out of mempoolWladimir J. van der Laan
fad6244 ATMP: make nAbsurdFee const (MarcoFalke) fa762d0 [wallet.h] Remove main.h include (MarcoFalke) fa79db2 Move maxTxFee out of mempool (MarcoFalke)
2016-02-03Merge #7444: Improve block validity/ConnectBlock() commentsWladimir J. van der Laan
2f19905 Improve block validity/ConnectBlock() comments (Peter Todd)
2016-02-03Merge #7431: Rename permitrbf to mempoolreplacement and provide minimal ↵Wladimir J. van der Laan
string-list forward compatibility (needs 0.12 backport) b922fbe Rename replacebyfee=opt-in to mempoolreplacement=fee (Luke Dashjr) 3b66e54 Simplify check for replacebyfee=opt-in (Luke Dashjr) d65dee9 Accept replacebyfee=opt-in for turning on opt-in RBF (Luke Dashjr) 77b55a0 Rename permitrbf to replacebyfee (Luke Dashjr)
2016-02-02Move maxTxFee out of mempoolMarcoFalke
Also, remove default values in CMerkleTx::AcceptToMemoryPool()
2016-02-02Merge #7084: mempool: Replace maxFeeRate of 10000*minRelayTxFee with maxTxFeeWladimir J. van der Laan
fa1193e [doxygen] Actually display comment (MarcoFalke) fa331db mempool: Replace maxFeeRate of 10000*minRelayTxFee with maxTxFee (MarcoFalke)
2016-02-02[doxygen] Actually display commentMarcoFalke
2016-02-01Rename replacebyfee=opt-in to mempoolreplacement=feeLuke Dashjr
2016-01-31Improve block validity/ConnectBlock() commentsPeter Todd
Previously didn't make clear that the ContextualCheckBlock* functions meant the block headers as context - not the UTXO set itself - and that ConnectBlock() also did UTXO-related validity checks (in the future we may split that functionality into a separate UTXO-specific contextual check block function). Also, reordered to put validity checks first for better readability.
2016-01-30mempool: Replace maxFeeRate of 10000*minRelayTxFee with maxTxFeeMarcoFalke
2016-01-28Add whitelistforcerelay to control forced relaying.Gregory Maxwell
Also renames whitelistalwaysrelay. Nodes relay all transactions from whitelisted peers, this gets in the way of some useful reasons for whitelisting peers-- for example, bypassing bandwidth limitations. The purpose of this forced relaying is for specialized gateway applications where a node is being used as a P2P connection filter and multiplexer, but where you don't want it getting in the way of (re-)broadcast. This change makes it configurable with whitelistforcerelay.
2016-01-28Rename permitrbf to replacebyfeeLuke Dashjr
"permit" is currently used to configure transaction filtering, whereas replacement is more to do with the memory pool state than the transaction itself.
2016-01-21Add option `-permitrbf` to set transaction replacement policyWladimir J. van der Laan
Add a configuration option `-permitrbf` to set transaction replacement policy for the mempool. Enabling it will enable (opt-in) RBF, disabling it will refuse all conflicting transactions.
2016-01-18Merge pull request #7208Wladimir J. van der Laan
64360f1 Make max tip age an option instead of chainparam (Wladimir J. van der Laan)
2016-01-09Merge pull request #7081Wladimir J. van der Laan
45b8e27 -bytespersigop option to additionally limit sigops in transactions we relay and mine (Luke Dashjr)
2016-01-09Merge branch bytespersigopLuke Dashjr
2016-01-05Merge pull request #7205Wladimir J. van der Laan
fa71669 [devtools] Use git pretty-format for year parsing (MarcoFalke) fa24439 Bump copyright headers to 2015 (MarcoFalke) fa6ad85 [devtools] Rewrite fix-copyright-headers.py (MarcoFalke)
2015-12-21Merge pull request #7062Wladimir J. van der Laan
901b01d Remove GetMinRelayFee (Suhas Daftuar) 27fae34 Use fee deltas for determining mempool acceptance (Suhas Daftuar) 9ef2a25 Update replace-by-fee logic to use fee deltas (Suhas Daftuar) eb30666 Fix mempool limiting for PrioritiseTransaction (Suhas Daftuar)
2015-12-14Make max tip age an option instead of chainparamWladimir J. van der Laan
After discussion in #7164 I think this is better. Max tip age was introduced in #5987 to make it possible to run testnet-in-a-box. But associating this behavior with the testnet chain is wrong conceptually, as it is not needed in normal usage. Should aim to make testnet test the software as-is. Replace it with a (debug) option `-maxtipage`, which can be specified only in the specific case.
2015-12-13Bump copyright headers to 2015MarcoFalke
2015-12-11Replace trickle nodes with per-node/message Poisson delaysPieter Wuille
We used to have a trickle node, a node which was chosen in each iteration of the send loop that was privileged and allowed to send out queued up non-time critical messages. Since the removal of the fixed sleeps in the network code, this resulted in fast and attackable treatment of such broadcasts. This pull request changes the 3 remaining trickle use cases by random delays: * Local address broadcast (while also removing the the wiping of the seen filter) * Address relay * Inv relay (for transactions; blocks are always relayed immediately) The code is based on older commits by Patrick Strateman.
2015-12-02Remove GetMinRelayFeeSuhas Daftuar
One test in AcceptToMemoryPool was to compare a transaction's fee agains the value returned by GetMinRelayFee. This value was zero for all small transactions. For larger transactions (between DEFAULT_BLOCK_PRIORITY_SIZE and MAX_STANDARD_TX_SIZE), this function was preventing low fee transactions from ever being accepted. With this function removed, we will now allow transactions in that range with fees (including modifications via PrioritiseTransaction) below the minRelayTxFee, provided that they have sufficient priority.