Commit Graph

10689 Commits

Author SHA1 Message Date
Pieter Wuille
ab86d7e4ff Switch CTransaction storage in mempool to std::shared_ptr 2018-10-17 20:34:25 +03:00
Suhas Daftuar
0814da4e9d Only use AddInventoryKnown for transactions
filterInventoryKnown is only used when relaying transactions,
so stop adding block hashes to the filter.
2018-10-17 20:32:50 +03:00
Gregory Maxwell
b3992a38d4 Defer inserting into maprelay until just before relaying. 2018-10-17 20:32:14 +03:00
Wladimir J. van der Laan
c41e3c69aa UpdateTip: log only one line at most per block 2018-10-17 20:26:54 +03:00
Gregory Maxwell
89655c3a1e Remove unneeded feerate param from RelayTransaction/AcceptToMemoryPool. 2018-10-17 20:22:44 +03:00
Gregory Maxwell
16b0e12385 Do not use mempool for GETDATA for tx accepted after the last mempoolreq 2018-10-17 19:56:28 +03:00
Gregory Maxwell
c41eb3a831 Move bloom and feerate filtering to just prior to tx sending. 2018-10-17 19:47:32 +03:00
Pieter Wuille
80803b1de0 Return mempool queries in dependency order 2018-10-17 19:45:54 +03:00
Pieter Wuille
eeded98dce Handle mempool requests in send loop, subject to trickle
By eliminating queued entries from the mempool response and responding only at
trickle time, this makes the mempool no longer leak transaction arrival order
information (as the mempool itself is also sorted)-- at least no more than
relay itself leaks it.
2018-10-17 19:45:45 +03:00
Pieter Wuille
16e9766115 Split up and optimize transaction and block inv queues 2018-10-17 19:45:37 +03:00
Daniel Kraft
ad0ec643b7 [trivial] Add missing const qualifiers.
Add some const qualifiers to references that are not modified and should
be marked as const.
2018-10-17 19:44:48 +03:00
Gregory Maxwell
05c3d2e290 Eliminate TX trickle bypass, sort TX invs for privacy and priority.
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.
2018-10-17 19:44:11 +03:00
Matt Corallo
705fe53e49 Fix some minor compact block issues that came up in review 2018-10-17 19:24:21 +03:00
Matt Corallo
49c0e28d70 Use vTxHashes to optimize InitData significantly 2018-10-17 19:24:13 +03:00
Pieter Wuille
346175e76c Elaborate bucket size math 2018-10-17 19:24:06 +03:00
Matt Corallo
b88d342f2c Provide a flat list of txid/terators to txn in CTxMemPool 2018-10-17 19:23:57 +03:00
Matt Corallo
3f6cddb53e Add reconstruction debug logging 2018-10-17 19:23:44 +03:00
Matt Corallo
4e55d9962c Get our "best three" peers to announce blocks using cmpctblocks 2018-10-17 19:23:07 +03:00
Matt Corallo
1ce3308431 Add ability to fetch CNode by NodeId 2018-10-17 19:22:59 +03:00
Matt Corallo
0fcad61796 Add receiver-side protocol implementation for CMPCTBLOCK stuff 2018-10-17 19:20:33 +03:00
Matt Corallo
c94ec58bcf Add sender-side protocol implementation for CMPCTBLOCK stuff 2018-10-17 19:20:24 +03:00
Matt Corallo
c12555699b Add protocol messages for short-ids blocks 2018-10-17 19:16:08 +03:00
Matt Corallo
c46749cd7b Add COMPACTSIZE wrapper similar to VARINT for serialization 2018-10-17 19:15:59 +03:00
Matt Corallo
19421ceb48 Add TestMemPoolEntryHelper::FromTx version for CTransaction 2018-10-17 19:15:49 +03:00
Matt Corallo
37fff1268d Add some blockencodings tests 2018-10-17 19:15:39 +03:00
Matt Corallo
1af775cf68 Add partial-block block encodings API 2018-10-17 19:15:27 +03:00
Matt Corallo
78b7288568 If AcceptBlockHeader returns true, pindex will be set. 2018-10-17 19:13:58 +03:00
Daniel Kraft
7571028f10 net: Avoid duplicate getheaders requests. 2018-10-17 19:08:41 +03:00
Pavel Janík
dadb56e60d Fix doxygen comment: the transaction is returned in txOut
Github-Pull: #8993
Rebased-From: 1d8e12ba48154b2c59213e92efb50958d430a007
2018-10-17 01:09:27 +03:00
BtcDrak
2987944269 Sync bitcoin-tx with tx version policy
Github-Pull: #8932
Rebased-From: b0aea8057921f0ed2288cf07048f652c7d6d9cf3
2018-10-17 01:09:07 +03:00
fanquake
31be10f37d [build-aux] Boost_Base serial 27
Github-Pull: #8920
Rebased-From: 282abd8358e254d976cad05d0eb48586db276bcd
2018-10-17 01:08:56 +03:00
fanquake
cae922d164 Set minimum required Boost to 1.47.0
Github-Pull: #8920
Rebased-From: 6dd37237222f7102e223ece948150cb5c5087e3c
2018-10-17 01:08:25 +03:00
UdjinM6
4039e1c019 Missed one "return false" in recent refactoring in #9067
Github-Pull: #9120
Rebased-From: 45d372f88900bda74835a20a44246746c2ac94e6
2018-10-17 01:07:40 +03:00
UdjinM6
4dc8b6acfd Every main()/exit() should return/use one of EXIT_ codes instead of magic numbers 2018-10-17 01:07:26 +03:00
UdjinM6
10ea8235a8 Fix exit codes:
- `--help`, `--version` etc should exit with `0` i.e. no error ("not enough args" case should still trigger an error)
- error reading config file should exit with `1`

Slightly refactor AppInitRPC/AppInitRawTx to return standard exit codes (EXIT_FAILURE/EXIT_SUCCESS) or CONTINUE_EXECUTION (-1)

Github-Pull: #9067
Rebased-From: bd0de1386e1c7f9b875d52290de0d561c8d56bc9
2018-10-17 01:05:27 +03:00
Cory Fields
793b8f55b1 net: don't send feefilter messages before the version handshake is complete
Github-Pull: #9117
Rebased-From: 46625538d674a5aaf1bcfa7c8be8a49e5a23fa9e
2018-10-17 01:03:48 +03:00
lateminer
e7d66ad900 Update secp256k1 subtree
https://github.com/bitcoin/bitcoin/pull/9340
2018-10-17 00:59:57 +03:00
lateminer
eb242178e1 Attempt to fix testnet 2018-10-17 00:40:44 +03:00
lateminer
f57cc59be2 Remove replace-by-fee 2018-10-15 22:21:51 +03:00
Wladimir J. van der Laan
b4753d6757 Remove internal miner 2018-10-15 22:11:55 +03:00
mruddy
d3c1c6bdb9 Net: Add IPv6 Link-Local Address Support 2018-10-14 23:49:15 +03:00
Jonas Schnelli
507dfaeb4a [Wallet] slightly refactor GetOldestKeyPoolTime() 2018-10-14 23:49:03 +03:00
lateminer
eea97b0e37 Make it compile and apply some fixes 2018-10-14 22:49:30 +03:00
lateminer
af1585d232 Update client version to 2.12.2.1 2018-10-14 19:09:13 +03:00
lateminer
f7422db2f7 Update to Core 0.12.2 2018-10-14 19:07:51 +03:00
lateminer
96498e3c6d Update to Core 0.12.2 2018-10-14 19:06:33 +03:00
Gregory Maxwell
1bf644c43f IBD check uses minimumchain work instead of checkpoints. 2018-10-14 17:00:29 +03:00
lateminer
75402d67c1 Remove checkpoints for regtest 2018-10-14 16:48:47 +03:00
lateminer
9cc4974283 Make it compile 2018-10-14 16:44:21 +03:00
Pavel Janík
e670323162 Log invalid block hash to make debugging easier. 2018-10-14 15:26:26 +03:00