aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Eliminate TX trickle bypass, sort TX invs for privacy and priority.Gregory Maxwell2016-04-201-24/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Merge #7856: Only send one GetAddr response per connection.Wladimir J. van der Laan2016-04-151-0/+8
|\ | | | | | | 66b0724 Only send one GetAddr response per connection. (Gregory Maxwell)
| * Only send one GetAddr response per connection.Gregory Maxwell2016-04-111-0/+8
| | | | | | | | | | | | This conserves resources from abusive peers that just send getaddr in a loop. Also makes correlating addr messages against INVs less effective.
* | Merge #7877: Change mapRelay to store CTransactionsWladimir J. van der Laan2016-04-151-5/+2
|\ \ | | | | | | | | | 38c3102 Change mapRelay to store CTransactions (Pieter Wuille)
| * | Change mapRelay to store CTransactionsPieter Wuille2016-04-141-5/+2
| | |
* | | Merge #7874: Improve AlreadyHaveWladimir J. van der Laan2016-04-141-1/+3
|\ \ \ | |/ / |/| | | | | c6cb6f7 Avoid unnecessary database access for unknown transactions (Alex Morcos)
| * | Avoid unnecessary database access for unknown transactionsAlex Morcos2016-04-131-1/+3
| | |
* | | Merge #7862: Use txid as key in mapAlreadyAskedForWladimir J. van der Laan2016-04-141-1/+1
|\ \ \ | |/ / |/| | | | | 7e91f63 Use txid as key in mapAlreadyAskedFor (Suhas Daftuar)
| * | Use txid as key in mapAlreadyAskedForSuhas Daftuar2016-04-111-1/+1
| |/ | | | | | | | | | | | | Previously we used the CInv that would be sent to the peer announcing the transaction as the key, but using the txid instead allows us to decouple the p2p layer from the application logic (which relies on this map to avoid duplicate tx requests).
* | Merge #7828: Trivial: Globals: Explicitly pass const CChainParams& to ↵Pieter Wuille2016-04-121-3/+2
|\ \ | |/ |/| | | | | | | ProcessMessage() bf477bc Trivial: Globals: Explicitly pass const CChainParams& to ProcessMessage() (Jorge Timón)
| * Trivial: Globals: Explicitly pass const CChainParams& to ProcessMessage()Jorge Timón2016-04-061-3/+2
| |
* | Version 2 transactions remain non-standard until CSV activatesSuhas Daftuar2016-04-071-0/+8
| | | | | | | | | | Before activation, such transactions might not be mined, so don't allow into the mempool.
* | Merge #7804: Track block download times per individual blockWladimir J. van der Laan2016-04-071-31/+36
|\ \ | | | | | | | | | | | | 0e24bbf Self check after the last peer is removed (Pieter Wuille) 2d1d658 Track block download times per individual block (Pieter Wuille)
| * | Self check after the last peer is removedPieter Wuille2016-04-071-0/+7
| | |
| * | Track block download times per individual blockPieter Wuille2016-04-071-31/+29
| |/ | | | | | | | | | | | | | | | | | | | | | | | | 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.
* / init: allow shutdown during 'Activating best chain...'Wladimir J. van der Laan2016-04-061-0/+2
|/ | | | | | | | | | | | | | | | | | | | | | Two-line patch to make it possible to shut down bitcoind cleanly during the initial ActivateBestChain. Fixes #6459 (among other complaints). To reproduce: - shutdown bitcoind - copy chainstate - start bitcoind - let the chain sync a bit - shutdown bitcoind - copy back old chainstate - start bitcoind - bitcoind will catch up with all blocks during Init() (the `boost::this_thread::interruption_point` / `ShutdownRequested()` dance is ugly, this should be refactored all over bitcoind at some point when moving from boost::threads to c++11 threads, but it works...)
* [doc] Fix doxygen comments for membersMarcoFalke2016-04-031-4/+4
|
* Merge #7763: Put hex-encoded version in UpdateTipWladimir J. van der Laan2016-03-311-4/+4
|\ | | | | | | eff736e Reformat version in UpdateTip and other messages (Pieter Wuille)
| * Reformat version in UpdateTip and other messagesPieter Wuille2016-03-311-4/+4
| | | | | | | | Also remove the hardly-readable nBits from UpdateTip's log message.
* | Merge #7648: BIP9 versionbits softfork for BIP68, BIP112 and BIP113Wladimir J. van der Laan2016-03-301-5/+17
|\ \ | |/ |/| | | | | | | | | | | | | 71527a0 Test of BIP9 fork activation of mtp, csv, sequence_lock (NicolasDorier) 19d73d5 Add RPC test for BIP 68/112/113 soft fork. (Alex Morcos) 12c89c9 Policy: allow transaction version 2 relay policy. (BtcDrak) 02c2435 Soft fork logic for BIP68 (BtcDrak) 478fba6 Soft fork logic for BIP113 (BtcDrak) 65751a3 Add CHECKSEQUENCEVERIFY softfork through BIP9 (Pieter Wuille)
| * Soft fork logic for BIP68BtcDrak2016-03-181-2/+3
| |
| * Soft fork logic for BIP113BtcDrak2016-03-181-4/+10
| |
| * Add CHECKSEQUENCEVERIFY softfork through BIP9Pieter Wuille2016-03-181-0/+5
| |
* | Implement "feefilter" P2P message.Alex Morcos2016-03-211-13/+60
| | | | | | | | 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 #7692: Remove p2p alert systemWladimir J. van der Laan2016-03-211-67/+24
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 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)
| * | Remove `-alerts` optionBtcDrak2016-03-181-1/+0
| | |
| * | Update alert notification and GUIBtcDrak2016-03-181-4/+24
| | |
| * | Remove p2p alert handlingBtcDrak2016-03-181-62/+0
| |/
* | Merge #7708: De-neuter NODE_BLOOMWladimir J. van der Laan2016-03-211-1/+1
|\ \ | |/ |/| | | c90036f Always disconnect old nodes which request filtered connections. (Patrick Strateman)
| * Always disconnect old nodes which request filtered connections.Patrick Strateman2016-03-181-1/+1
| |
* | Merge #7575: Minimal BIP9 implementationWladimir J. van der Laan2016-03-181-7/+79
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | 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)
| * | Softfork status report in RPCPieter Wuille2016-03-151-1/+5
| | |
| * | BIP9 ImplementationPieter Wuille2016-03-151-6/+74
| |/ | | | | | | | | Inspired by former implementations by Eric Lombrozo and Rusty Russell, and based on code by Jorge Timon.
* | Merge #7594: Mempool: Add tracking of ancestor packagesWladimir J. van der Laan2016-03-171-16/+2
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | 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)
| * | Add ancestor tracking to mempoolSuhas Daftuar2016-03-141-1/+1
| | | | | | | | | | | | | | | | | | | | | 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-14/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-1/+1
| |/ | | | | | | | | remove is no longer called non-recursively, so simplify the logic and eliminate an unnecessary parameter
* | Merge #7187: Keep reorgs fast for SequenceLocks checksWladimir J. van der Laan2016-03-161-19/+70
|\ \ | |/ |/| | | 982670c Add LockPoints (Alex Morcos)
| * Add LockPointsAlex Morcos2016-03-161-19/+70
| | | | | | | | Obtain LockPoints to store in CTxMemPoolEntry and during a reorg, evaluate whether they are still valid and if not, recalculate them.
* | Merge #7592: mempool: Re-remove ERROR logging for mempool rejectsWladimir J. van der Laan2016-03-111-27/+30
|\ \ | | | | | | | | | 8fc81e0 mempool: Reduce ERROR logging for mempool rejects (Wladimir J. van der Laan)
| * | mempool: Reduce ERROR logging for mempool rejectsWladimir J. van der Laan2016-02-241-27/+30
| |/ | | | | | | | | | | | | | | | | | | | | | | Continues "Make logging for validation optional" from #6519. The idea there was to remove all ERROR logging of rejected transaction, and move it to one message in the class 'mempoolrej' which logs the state message (and debug info). The superfluous ERRORs in the log "terrify" users, see for example issue #5794. Unfortunately a lot of new logging was introduced in #6871 (RBF) and #7287 (misc refactoring). This pull updates that new code.
* / No "Unknown command" for getaddr command.R E Broadley2016-03-081-6/+11
|/
* Merge #7526: fix spelling of advertise (shows up in the debug log)Wladimir J. van der Laan2016-02-161-4/+4
|\ | | | | | | 37767fd fix spelling of advertise in src and doc (jloughry)
| * fix spelling of advertise in src and docjloughry2016-02-121-4/+4
| |
* | Merge #7509: Common argument defaults for NODE_BLOOM stuff and -walletWladimir J. van der Laan2016-02-161-1/+1
|\ \ | |/ |/| | | 1fb91b3 Common argument defaults for NODE_BLOOM stuff and -wallet (Luke Dashjr)
| * Common argument defaults for NODE_BLOOM stuff and -walletLuke Dashjr2016-02-111-1/+1
| |
* | Merge #7184: Implement SequenceLocks functions for BIP 68Wladimir J. van der Laan2016-02-121-2/+148
|\ \ | | | | | | | | | | | | | | | | | | 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)
| * | fix sdaftuar's nits againAlex Morcos2016-02-111-5/+5
| | | | | | | | | | | | it boggles the mind why these nits can't be delivered on a more timely basis
| * | Implement SequenceLocks functionsAlex Morcos2016-02-101-2/+148
| | | | | | | | | | | | | | | | | | | | | 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
* | | Update the wallet best block marker when pruningPieter Wuille2016-02-101-1/+1
| | |