aboutsummaryrefslogtreecommitdiff
path: root/src/txmempool.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Remove unused variablesMarcoFalke2016-08-251-1/+0
|
* Merge #8346: Mempool: Use Consensus::CheckTxInputs direclty over ↵Pieter Wuille2016-08-011-2/+7
|\ | | | | | | | | | | main::CheckInputs a6cc299 Mempool: Use Consensus::CheckTxInputs direclty over main::CheckInputs (Jorge Timón)
| * Mempool: Use Consensus::CheckTxInputs direclty over main::CheckInputsJorge Timón2016-07-291-2/+7
| |
* | Treat high-sigop transactions as larger rather than rejecting themPieter Wuille2016-07-191-1/+1
| |
* | Rename "block cost" to "block weight"Suhas Daftuar2016-07-181-2/+2
|/
* BIP141: Other consensus critical limits, and BIP145Pieter Wuille2016-06-221-19/+25
| | | | Includes changes by Suhas Daftuar, Luke-jr, and mruddy.
* Provide a flat list of txid/terators to txn in CTxMemPoolMatt Corallo2016-06-191-1/+13
|
* Stop trimming when mapTx is emptyPieter Wuille2016-06-191-1/+1
|
* Get rid of CTxMempool::lookup() entirelyPieter Wuille2016-06-071-13/+3
|
* Switch CTransaction storage in mempool to std::shared_ptrPieter Wuille2016-06-051-24/+60
|
* Merge #7997: replace mapNextTx with slimmer setSpendsPieter Wuille2016-06-031-24/+22
|\ | | | | | | 9805f4a mapNextTx: use pointer as key, simplify value (Kaz Wesley)
| * mapNextTx: use pointer as key, simplify valueKaz Wesley2016-06-021-24/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Saves about 10% of application memory usage once the mempool warms up. Since the mempool is DynamicUsage-regulated, this will translate to a larger mempool in the same amount of space. Map value type: eliminate the vin index; no users of the map need to know which input of the transaction is spending the prevout. Map key type: replace the COutPoint with a pointer to a COutPoint. A COutPoint is 36 bytes, but each COutPoint is accessible from the same map entry's value. A trivial DereferencingComparator functor allows indirect map keys, but the resulting syntax is misleading: `map.find(&outpoint)`. Implement an indirectmap that acts as a wrapper to a map that uses a DereferencingComparator, supporting a syntax that accurately reflect the container's semantics: inserts and iterators use pointers since they store pointers and need them to remain constant and dereferenceable, but lookup functions take const references.
* | Do not use mempool for GETDATA for tx accepted after the last mempool req.Gregory Maxwell2016-05-251-1/+9
| | | | | | | | | | | | | | | | The ability to GETDATA a transaction which has not (yet) been relayed is a privacy loss vector. The use of the mempool for this was added as part of the mempool p2p message and is only needed to fetch transactions returned by it.
* | Merge #7976: Remove obsolete reference to CValidationState from UpdateCoins.Wladimir J. van der Laan2016-05-091-2/+2
|\ \ | | | | | | | | | c8b9248 Remove obsolete reference to CValidationState from UpdateCoins. (21E14)
| * | Remove obsolete reference to CValidationState from UpdateCoins.21E142016-04-301-2/+2
| |/
* | Merge #7840: Several performance and privacy improvements to inv/mempool ↵Wladimir J. van der Laan2016-05-051-0/+27
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 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)
| * | Return mempool queries in dependency orderPieter Wuille2016-04-211-0/+12
| | |
| * | Eliminate TX trickle bypass, sort TX invs for privacy and priority.Gregory Maxwell2016-04-201-0/+15
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* / [trivial] Add missing const qualifiers.Daniel Kraft2016-04-301-1/+1
|/ | | | | Add some const qualifiers to references that are not modified and should be marked as const.
* Implement "feefilter" P2P message.Alex Morcos2016-03-211-0/+10
| | | | 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.
* Merge #7594: Mempool: Add tracking of ancestor packagesWladimir J. van der Laan2016-03-171-75/+113
|\ | | | | | | | | | | | | | | | | ce019bf Check all ancestor state in CTxMemPool::check() (Suhas Daftuar) e2eeb5d Add ancestor feerate index to mempool (Suhas Daftuar) 72abd2c Add ancestor tracking to mempool (Suhas Daftuar) 76a7632 Remove work limit in UpdateForDescendants() (Suhas Daftuar) 5de2baa Rename CTxMemPool::remove -> removeRecursive (Suhas Daftuar) 7659438 CTxMemPool::removeForBlock now uses RemoveStaged (Suhas Daftuar)
| * Check all ancestor state in CTxMemPool::check()Suhas Daftuar2016-03-141-5/+22
| |
| * Add ancestor feerate index to mempoolSuhas Daftuar2016-03-141-2/+2
| |
| * Add ancestor tracking to mempoolSuhas Daftuar2016-03-141-15/+73
| | | | | | | | | | | | | | This implements caching of ancestor state to each mempool entry, similar to descendant tracking, but also including caching sigops-with-ancestors (as that metric will be helpful to future code that implements better transaction selection in CreatenewBlock).
| * Remove work limit in UpdateForDescendants()Suhas Daftuar2016-03-141-48/+11
| | | | | | | | | | | | | | | | | | | | | | The work limit served to prevent the descendant walking algorithm from doing too much work by marking the parent transaction as dirty. However to implement ancestor tracking, it's not possible to similarly mark those descendant transactions as dirty without having to calculate them to begin with. This commit removes the work limit altogether. With appropriate chain limits (-limitdescendantcount) the concern about doing too much work inside this function should be mitigated.
| * Rename CTxMemPool::remove -> removeRecursiveSuhas Daftuar2016-03-141-11/+7
| | | | | | | | | | remove is no longer called non-recursively, so simplify the logic and eliminate an unnecessary parameter
| * CTxMemPool::removeForBlock now uses RemoveStagedSuhas Daftuar2016-03-141-2/+6
| |
* | Merge #7187: Keep reorgs fast for SequenceLocks checksWladimir J. van der Laan2016-03-161-3/+15
|\ \ | |/ |/| | | 982670c Add LockPoints (Alex Morcos)
| * Add LockPointsAlex Morcos2016-03-161-3/+15
| | | | | | | | Obtain LockPoints to store in CTxMemPoolEntry and during a reorg, evaluate whether they are still valid and if not, recalculate them.
* | Add tags to mempool's mapTx indicesSuhas Daftuar2016-02-161-3/+3
|/
* Merge #7184: Implement SequenceLocks functions for BIP 68Wladimir J. van der Laan2016-02-121-1/+1
|\ | | | | | | | | | | | | 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)
| * Implement SequenceLocks functionsAlex Morcos2016-02-101-1/+1
| | | | | | | | | | | | | | 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
* | Merge pull request #7205Wladimir J. van der Laan2016-01-051-1/+1
|\ \ | | | | | | | | | | | | | | | 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)
| * | Bump copyright headers to 2015MarcoFalke2015-12-131-1/+1
| |/
* / Fix mempool limiting for PrioritiseTransactionSuhas Daftuar2015-12-021-23/+30
|/ | | | | | | Redo the feerate index to be based on mining score, rather than fee. Update mempool_packages.py to test prioritisetransaction's effect on package scores.
* Get the set of now-uncacheable-txn from CTxMemPool::TrimToSizeMatt Corallo2015-12-011-2/+20
|
* Add a score index to the mempool.Alex Morcos2015-12-011-2/+22
| | | | The score index is meant to represent the order of priority for being included in a block for miners. Initially this is set to the transactions modified (by any feeDelta) fee rate. Index improvements and unit tests by sdaftuar.
* Store the total sig op count of a tx.Alex Morcos2015-12-011-2/+2
| | | | Store sum of legacy and P2SH sig op counts. This is calculated in AcceptToMemory pool and storing it saves redoing the expensive calculation in block template creation.
* Fix removeForReorg to use MedianTimePastSuhas Daftuar2015-11-301-2/+2
|
* Track coinbase spends in CTxMemPoolEntrySuhas Daftuar2015-11-301-3/+5
| | | | This allows us to optimize CTxMemPool::removeForReorg.
* Fix comment in removeForReorgMatt Corallo2015-11-301-1/+1
|
* Fix removal of time-locked transactions during reorgMatt Corallo2015-11-301-10/+15
|
* Change GetPriority calculation.Alex Morcos2015-11-191-5/+8
| | | | Compute the value of inputs that already are in the chain at time of mempool entry and only increase priority due to aging for those inputs. This effectively changes the CTxMemPoolEntry's GetPriority calculation from an upper bound to a lower bound.
* Modify variable names for entry height and priorityAlex Morcos2015-11-191-5/+5
|
* Pass reference to estimateSmartFee and cleanup whitespaceSuhas Daftuar2015-11-241-2/+2
|
* EstimateSmart functions consider mempool min feeAlex Morcos2015-11-161-2/+2
|
* Add smart fee estimation functionsAlex Morcos2015-11-161-0/+10
| | | | These are more useful fee and priority estimation functions. If there is no fee/pri high enough for the target you are aiming for, it will give you the estimate for the lowest target that you can reliably obtain. This is better than defaulting to the minimum. It will also pass back the target for which it returned an answer.
* Merge pull request #6776Pieter Wuille2015-10-281-3/+6
|\ | | | | | | ab1f560 Support -checkmempool=N, which runs checks on average once every N transactions (Pieter Wuille)
| * Support -checkmempool=N, which runs checks on average once every N transactionsPieter Wuille2015-10-201-3/+6
| |
* | Merge pull request #6464Wladimir J. van der Laan2015-10-271-0/+1
|\ \ | | | | | | | | | 2d8c49d Clean up tx prioritization when conflict mined (Casey Rodarmor)