Commit graph

8197 commits

Author SHA1 Message Date
Gavin Andresen
ad9e86dca1
Keep mempool consistent during block-reorgs
This fixes a subtle bug involving block re-orgs and non-standard transactions.

Start with a block containing a non-standard transaction, and
one or more transactions spending it in the memory pool.

Then re-org away from that block to another chain that does
not contain the non-standard transaction.

Result before this fix: the dependent transactions get stuck
in the mempool without their parent, putting the mempool
in an inconsistent state.

Tested with a new unit test.
2015-03-26 11:58:19 -04:00
Wladimir J. van der Laan
8e4fd0cc31
Merge pull request #5876
5983a4e Add a NODE_GETUTXO service bit and document NODE_NETWORK. Stop translating the NODE_* names as they are technical and cannot be translated. (Mike Hearn)
2015-03-26 09:26:57 +01:00
Wladimir J. van der Laan
6a1fbc4921
Merge pull request #5942
fc72020 don't trickle for whitelisted nodes (Ruben de Vries)
2015-03-26 08:33:00 +01:00
Wladimir J. van der Laan
687f10d9ec
Merge pull request #5812
d698ef6 Consensus: Refactor: Decouple pow.o from chainparams.o (Jorge Timón)
bd00611 Consensus: Refactor: Introduce Consensus::Params class (Jorge Timón)
2015-03-26 07:53:44 +01:00
Jorge Timón
d698ef690f Consensus: Refactor: Decouple pow.o from chainparams.o 2015-03-26 00:47:51 +01:00
Jorge Timón
bd006110fb Consensus: Refactor: Introduce Consensus::Params class 2015-03-25 20:39:26 +01:00
Wladimir J. van der Laan
cbb2cf5522
Fix --disable-wallet build after merge of #5681 2015-03-24 22:15:04 +01:00
Gavin Andresen
0f5954c434
Regression test for ResendWalletTransactions
Adds a regression test for the wallet's ResendWalletTransactions function, which uses a new, hidden RPC command "resendwallettransactions."

I refactored main's Broadcast signal so it is passed the best-block time, which let me remove a global variable shared between main.cpp and the wallet (nTimeBestReceived).

I also manually tested the "rebroadcast unconfirmed every half hour or so" functionality by:

1. Running bitcoind -connect=0.0.0.0:8333
2. Creating a couple of send-to-self transactions
3. Connect to a peer using -addnode
4. Waited a while, monitoring debug.log, until I see:
```2015-03-23 18:48:10 ResendWalletTransactions: rebroadcast 2 unconfirmed transactions```

One last change: don't bother putting ResendWalletTransactions messages in debug.log unless unconfirmed transactions were actually rebroadcast.
2015-03-24 15:29:20 -04:00
Wladimir J. van der Laan
8d2fbfa491
Merge pull request #5681
8a893c9 Includes: Do not include main.h from any other header (Jorge Timón)
eca0b1e Includes: MOVEONLY: move more method definitions out of wallet.h (Jorge Timón)
26c16d9 Includes: Refactor: Move CValidationInterface and CMainSignals out of main (Jorge Timón)
2015-03-24 18:12:56 +01:00
Jorge Timón
8a893c949b Includes: Do not include main.h from any other header 2015-03-24 17:23:32 +01:00
Jorge Timón
eca0b1ea62 Includes: MOVEONLY: move more method definitions out of wallet.h 2015-03-24 17:21:45 +01:00
Jorge Timón
26c16d9de9 Includes: Refactor: Move CValidationInterface and CMainSignals out of main 2015-03-24 17:21:41 +01:00
Ruben de Vries
fc720207e0 don't trickle for whitelisted nodes 2015-03-24 14:53:16 +01:00
Wladimir J. van der Laan
22cfe23196
Merge pull request #5890
cd3d67c Fix InvalidateBlock to add chainActive.Tip to setBlockIndexCandidates (Alex Morcos)
2015-03-24 14:50:54 +01:00
Pieter Wuille
2afd919f21
Merge pull request #5208
18051c7 Abstract out Ctransaction-specific signing into TransactionSignatureCreator (Pieter Wuille)
2015-03-24 05:55:51 -07:00
Pieter Wuille
03106221d4
Merge pull request #5429
5abe2cf Reorder travis builds for faster response (Pieter Wuille)
2015-03-24 05:41:25 -07:00
Pieter Wuille
45d6d0bce5
Merge pull request #5933
341e238 use constant references for strings in functions in wallet/*.* (Philip Kaufmann)
2015-03-24 05:33:31 -07:00
Wladimir J. van der Laan
46ba7a74a5
Merge pull request #5938
a354a59 wallet: move crypter to wallet (Cory Fields)
2015-03-24 08:50:55 +01:00
Wladimir J. van der Laan
28cc24f961
Merge pull request #5877
317e66c Initialization: set Boost path locale in main thread (dexX7)
2015-03-24 08:33:50 +01:00
Pieter Wuille
1d21ba2f5e Scale up addrman
This change was suggested as Countermeasure 6 in
Eclipse Attacks on Bitcoin’s Peer-to-Peer Network, Ethan Heilman,
Alison Kendler, Aviv Zohar, Sharon Goldberg. ePrint Archive Report
2015/263. March 2015.
2015-03-23 17:24:29 -07:00
Pieter Wuille
c6a63ceeb4 Always use a 50% chance to choose between tried and new entries
This change was suggested as Countermeasure 2 in
Eclipse Attacks on Bitcoin’s Peer-to-Peer Network, Ethan Heilman,
Alison Kendler, Aviv Zohar, Sharon Goldberg. ePrint Archive Report
2015/263. March 2015.
2015-03-23 17:24:18 -07:00
Pieter Wuille
f68ba3f67b Do not bias outgoing connections towards fresh addresses
This change was suggested as Countermeasure 2 in
Eclipse Attacks on Bitcoin’s Peer-to-Peer Network, Ethan Heilman,
Alison Kendler, Aviv Zohar, Sharon Goldberg. ePrint Archive Report
2015/263. March 2015.
2015-03-23 17:23:40 -07:00
Pieter Wuille
a8ff7c62ed Simplify hashing code 2015-03-23 17:23:40 -07:00
Pieter Wuille
e6b343d880 Make addrman's bucket placement deterministic.
Give each address a single fixed location in the new and tried tables,
which become simple fixed-size arrays instead of sets and vectors.

This prevents attackers from having an advantages by inserting an
address multiple times.

This change was suggested as Countermeasure 1 in
Eclipse Attacks on Bitcoin’s Peer-to-Peer Network, Ethan Heilman,
Alison Kendler, Aviv Zohar, Sharon Goldberg. ePrint Archive Report
2015/263. March 2015.

It is also more efficient.
2015-03-23 17:19:13 -07:00
Pieter Wuille
b23add5521 Switch addrman key from vector to uint256 2015-03-23 17:00:32 -07:00
Cory Fields
a354a59f1f wallet: move crypter to wallet 2015-03-22 15:18:55 -04:00
CohibAA
9d086c01bc Update bitcoin.conf 2015-03-21 20:05:17 -06:00
Mike Hearn
5983a4e50f Add a NODE_GETUTXO service bit and document NODE_NETWORK.
Stop translating the NODE_* names as they are technical and cannot be translated.
2015-03-21 19:35:02 +01:00
Philip Kaufmann
341e2385d5 use constant references for strings in functions in wallet/*.* 2015-03-21 18:40:51 +01:00
Pieter Wuille
18051c7fbd Abstract out Ctransaction-specific signing into TransactionSignatureCreator 2015-03-21 07:06:18 -07:00
Wladimir J. van der Laan
f3948a30cd
Merge #5758: refactor: move BDB (bitdb / db.h) interaction from init.cpp to wallet.cpp
2bb1c87 refactor: move bdb (bitdb) interaction from init.cpp to wallet.cpp (Jonas Schnelli)
2015-03-20 16:29:28 +01:00
Jonas Schnelli
2bb1c87700 refactor: move bdb (bitdb) interaction from init.cpp to wallet.cpp
this will remove db.h from init.cpp
2015-03-20 16:23:39 +01:00
Wladimir J. van der Laan
05f17d4eaa
Merge pull request #5745
50c72f2 [Move Only] Move wallet related things to src/wallet/ (Jonas Schnelli)
2015-03-20 16:08:35 +01:00
Wladimir J. van der Laan
3811a5025e
Merge #5810: MOVEONLY-ISH: allocators: split allocators and pagelocker
d7d187e allocators: split allocators and pagelocker (Cory Fields)
2015-03-20 12:30:29 +01:00
Cory Fields
d7d187e8a4 allocators: split allocators and pagelocker
Pagelocker is only needed for secure (usually wallet) operations, so don't make
the zero-after-free allocator depend on it.
2015-03-20 12:23:44 +01:00
Wladimir J. van der Laan
c7abfa595d
Merge pull request #5149
adaa568 Add script to verify all merge commits are signed (Matt Corallo)
2015-03-20 12:05:05 +01:00
Wladimir J. van der Laan
29fef0b903
Merge pull request #5360
71acb86 print the caught error instead of raising an error (Heath)
2015-03-18 14:35:18 +01:00
Wladimir J. van der Laan
93a8c46807
Merge pull request #5860
9c27379 Reduce fingerprinting through timestamps in 'addr' messages. (Pieter Wuille)
2015-03-17 16:38:06 +01:00
Pieter Wuille
9c2737901b Reduce fingerprinting through timestamps in 'addr' messages.
Suggested by Jonas Nick.
2015-03-17 03:08:52 -07:00
Wladimir J. van der Laan
5bd3a92da2
Merge pull request #5915
bb44d9e depends: fix a static qt5 crash when using certain versions of libxcb (Cory Fields)
2015-03-17 08:00:59 +01:00
Cory Fields
bb44d9e754 depends: fix a static qt5 crash when using certain versions of libxcb
See here for background: https://bugreports.qt.io/browse/QTBUG-34748

libxcb temporarily had an abi breakage which caused crashes when qt was
compiled against a non-compatible version. Building qt with -qt-xcb should have
shielded us from this issue, except that incompatible headers were used when
building qt's wrapper.

Make sure those headers aren't picked up by qt's build.

Details:

qt's build adds a wrapper around the xcb libs when -qt-xcb is used. This is
done to avoid having to link to a handful of different libs, which may not be
api/abi stable. This build depends on include-order, so that its files are
found before the real libxcb headers.

Our build (for other reasons related to qt's complicated build-system) injects
our prefix into CXXFLAGS. Because libxcb is found in this path, that reverses
the include-order, negating the purpose of the wrapper.

To fix, libxcb's includes are simply moved to a subdir. pkg-config ensures that
they're still found properly when needed.

To make things even more interesting, this behavior in qt's .pro files is broken:
INCLUDEPATH += $$QMAKE_CFLAGS_XCB

The INCLUDEPATH variable is processed by qmake which automatically prefixes each
entry with "-I". The QMAKE_CFLAGS_XCB variable comes from pkg-config and
already contains -I, making the path look like "-I-I/path/to/xcb/headers".

To work around that, CFLAGS/CXXFLAGS are used here rather than INCLUDEPATH.
2015-03-16 23:45:15 -04:00
Wladimir J. van der Laan
226f880498
Merge pull request #5880
8b60808 [QT] some mac specifiy cleanup (memory handling, unnecessary code) (Jonas Schnelli)
89e70e9 [QT] fix OSX dock icon window reopening (Jonas Schnelli)
2015-03-16 13:55:35 +01:00
Wladimir J. van der Laan
f238add26a
Merge pull request #5847
723664b startup script for centos, with documentation. (joshr)
2015-03-16 12:32:21 +01:00
Wladimir J. van der Laan
df5c246ba3
Merge pull request #5831
1d9b378 qa/rpc-tests/wallet: Tests for sendmany (Luke Dashjr)
40a7573 rpcwallet/sendmany: Just take an array of addresses to subtract fees from, rather than an Object with all values being identical (Luke Dashjr)
292623a Subtract fee from amount (Cozz Lovan)
90a43c1 [Qt] Code-movement-only: Format confirmation message in sendcoinsdialog (Cozz Lovan)
2015-03-16 12:23:14 +01:00
Wladimir J. van der Laan
41259ca635
Merge pull request #5849
3c6d594 contrib/init/bitcoind.openrc: Compatibility with previous OpenRC init script variables (Luke Dashjr)
2015-03-16 12:21:33 +01:00
Alex Morcos
cd3d67cf3b Fix InvalidateBlock to add chainActive.Tip to setBlockIndexCandidates 2015-03-13 13:11:11 -04:00
Jonas Schnelli
8b60808c1e [QT] some mac specifiy cleanup (memory handling, unnecessary code) 2015-03-13 15:40:53 +01:00
Pieter Wuille
5abe2cf110 Reorder travis builds for faster response 2015-03-13 07:12:37 -07:00
Luke Dashjr
1d9b378c30 qa/rpc-tests/wallet: Tests for sendmany 2015-03-13 11:04:25 +01:00
Luke Dashjr
40a757331a rpcwallet/sendmany: Just take an array of addresses to subtract fees from, rather than an Object with all values being identical 2015-03-13 11:04:25 +01:00