Commit graph

8347 commits

Author SHA1 Message Date
Pieter Wuille
1953c40aa9 More efficient bitsliced rolling Bloom filter
This patch changes the implementation from one that stores 16 2-bit integers
in one uint32_t's, to one that stores the first bit of 64 2-bit integers in
one uint64_t and the second bit in another. This allows for 450x faster
refreshing and 2.2x faster average speed.
2016-04-28 14:56:32 +02:00
Pieter Wuille
aa62b68745 Benchmark rolling bloom filter 2016-04-28 14:56:32 +02:00
Wladimir J. van der Laan
5725807402
Merge #7926: [RPC] push back getaddednodeinfo dead value
9c0bcb6 push back getaddednodeinfo dead value (instagibbs)
2016-04-28 14:35:40 +02:00
Wladimir J. van der Laan
a9c8b744e8
Merge #7952: Log invalid block hash to make debugging easier.
61c0170 Log invalid block hash to make debugging easier. (Pavel Janík)
2016-04-28 13:53:01 +02:00
Wladimir J. van der Laan
07e4edb056 auto_ptr → unique_ptr
Change the few occurrences of the deprecated `auto_ptr` to c++11 `unique_ptr`.
Silences the deprecation warnings.

Also add a missing `std::` for consistency.
2016-04-28 13:43:32 +02:00
Wladimir J. van der Laan
073225cb01 chain: define enum used as bit field as uint32_t
Bitwise logic combined with `<` with undefined signedness will
potentially results in undefined behavior. Fix this by defining the type
as a c++11 typed enum.

Fixes #6017.
2016-04-28 13:35:16 +02:00
Wladimir J. van der Laan
d9594bfe0c
Merge #7514: Fix IsInitialBlockDownload for testnet
8aa7226 Fix IsInitialBlockDownload to play nice with testnet (jmacwhyte)
2016-04-28 12:55:35 +02:00
Wladimir J. van der Laan
574ddc63d6
Merge #7939: qt: Make it possible to show details for multiple transactions
f135e3c qt: Add transaction hash to details window title (Wladimir J. van der Laan)
17a6a21 qt: Make it possible to show details for multiple transactions (Wladimir J. van der Laan)
2016-04-28 12:21:29 +02:00
21E14
c7aac2d557 Deprecating the remaining LogPrintf dependencies that were made obsolete in PR #7459. 2016-04-27 22:36:45 -04:00
Kaz Wesley
f4ac02ee7c fix race that could fail to persist a ban
DumpBanList currently does this:
  - with lock: take a copy of the banmap
  - perform I/O (write out the banmap)
  - with lock: mark the banmap non-dirty
If a new ban is added during the I/O operation, it may never be persisted to
disk.

Reorder operations so that the data to be persisted cannot be older than the
time at which the banmap was marked non-dirty.
2016-04-27 09:41:13 -07:00
Pavel Janík
b02119e463 Remove useless argument to AlertNotify.
It is always 'true', so useless.
2016-04-27 18:04:02 +02:00
Suhas Daftuar
383fc10ebb Only use AddInventoryKnown for transactions
filterInventoryKnown is only used when relaying transactions,
so stop adding block hashes to the filter.
2016-04-27 09:57:02 -04:00
Jonas Schnelli
e59336fbf9
[bitcoin-tx] allow to set nSequence number over the in= command 2016-04-27 15:42:17 +02:00
Jonas Schnelli
a946bb6b18
[RPC] createrawtransaction: add option to set the sequence number per input 2016-04-27 15:42:14 +02:00
Andrew
f90efbfeef Create signmessagewithprivkey rpc
New rpc 'signmessagewithprivkey' which takes a private key to sign a message without using the wallet.
2016-04-27 06:43:39 -04:00
Wladimir J. van der Laan
6030625631 test: Add more thorough test for dbwrapper iterators
I made a silly mistake in a database wrapper where keys
were sorted by char instead of uint8_t. As x86 char is signed
the sorting for the block index database was messed up, resulting
in a segfault due to missing records.

Add a test to catch:
- Wrong sorting
- Seeking errors
- Iteration result not complete
2016-04-27 11:11:36 +02:00
Wladimir J. van der Laan
84c13e759d chain: Add assertion in case of missing records in index db 2016-04-27 11:11:36 +02:00
Pavel Janík
61c01706cd Log invalid block hash to make debugging easier. 2016-04-26 22:22:59 +02:00
Wladimir J. van der Laan
f135e3c943 qt: Add transaction hash to details window title 2016-04-26 16:05:10 +02:00
Wladimir J. van der Laan
e26b62093a
Merge #7933: Fix OOM when deserializing UTXO entries with invalid length
1e44169 Add tests for CCoins deserialization (Pieter Wuille)
5d0434d Fix OOM bug: UTXO entries with invalid script length (Pieter Wuille)
4bf631e CDataStream::ignore Throw exception instead of assert on negative nSize. (Patrick Strateman)
4f87af6 Treat overly long scriptPubKeys as unspendable (Pieter Wuille)
f8e6fb1 Introduce constant for maximum CScript length (Pieter Wuille)
2016-04-26 13:23:05 +02:00
Kaz Wesley
719de56ab2 lock cs_main for chainActive
ActivateBestChain uses chainActive after releasing the lock; reorder operations
to move all access to synchronized object into existing LOCK(cs_main) block.
2016-04-25 18:12:30 -07:00
Kaz Wesley
efb54ba065 lock cs_main for State/Misbehaving
ProcessMessage calls State(...) and Misbehaving(...) without holding the
required lock; add LOCK(cs_main) blocks.
2016-04-25 18:06:44 -07:00
Chris Stewart
62a9abd12b Fixing comment in script_test.json test case 2016-04-25 11:08:10 -05:00
Wladimir J. van der Laan
17a6a21786 qt: Make it possible to show details for multiple transactions
A small GUI annoyance for me has always been that it's impossible to
have multiple transaction detail windows open, for example to compare
transactions.

This patch makes the window non-modal so that it is possible to open
transaction details at will.
2016-04-25 16:06:07 +02:00
Wladimir J. van der Laan
46880ed2fd
Merge #7688: List solvability in listunspent output and improve help
c3932b3 List solvability in listunspent output and improve help (Pieter Wuille)
2016-04-25 14:46:29 +02:00
Pieter Wuille
1e44169f0e Add tests for CCoins deserialization 2016-04-25 14:42:07 +02:00
Pieter Wuille
5d0434d13d Fix OOM bug: UTXO entries with invalid script length 2016-04-25 14:42:07 +02:00
Patrick Strateman
4bf631e5e4 CDataStream::ignore Throw exception instead of assert on negative nSize.
Previously disk corruption would cause an assert instead of an exception.
2016-04-25 14:42:07 +02:00
Pieter Wuille
4f87af6fc7 Treat overly long scriptPubKeys as unspendable 2016-04-25 14:22:30 +02:00
Pieter Wuille
f8e6fb1800 Introduce constant for maximum CScript length 2016-04-25 14:22:30 +02:00
Wladimir J. van der Laan
f9c2ac7232
Merge #7927: Minor changes to dbwrapper to simplify support for other databases
869cf12 dbwrapper: Move `HandleError` to `dbwrapper_private` (Wladimir J. van der Laan)
b69836d dbwrapper: Pass parent CDBWrapper into CDBBatch and CDBIterator (Wladimir J. van der Laan)
878bf48 dbwrapper: Remove CDBWrapper::GetObfuscateKeyHex (Wladimir J. van der Laan)
74f7b12 dbwrapper: Remove throw keywords in function signatures (Wladimir J. van der Laan)
2016-04-25 12:46:23 +02:00
Patrick Strateman
fb26bf0ea3 CAddrMan::Deserialize handle corrupt serializations better. 2016-04-24 01:30:47 -07:00
Wladimir J. van der Laan
869cf1234a dbwrapper: Move HandleError to dbwrapper_private
HandleError is implementation-specific.
2016-04-23 09:32:25 +02:00
Wladimir J. van der Laan
b69836d6ff dbwrapper: Pass parent CDBWrapper into CDBBatch and CDBIterator
Pass parent wrapper directly instead of obfuscation key. This
makes it possible for other databases which re-use this code
to use other properties from the database.

Add a namespace dbwrapper_private for private functions to be used
only in dbwrapper.h/cpp and dbwrapper_tests.
2016-04-23 09:32:25 +02:00
Wladimir J. van der Laan
878bf480a3 dbwrapper: Remove CDBWrapper::GetObfuscateKeyHex
It is an unnecessary method as it is used only two times
and only internally, and the whole implementation is
HexStr(obfuscate_key).
2016-04-23 09:32:25 +02:00
Wladimir J. van der Laan
74f7b1273c dbwrapper: Remove throw keywords in function signatures
Using throw() specifications in function signatures is not only
not required in C++, it is considered deprecated for
[various reasons](https://stackoverflow.com/questions/1055387/throw-keyword-in-functions-signature).
It is not implemented by any of the common C++ compilers. The usage is
also inconsistent with the rest of the source code.
2016-04-23 09:32:25 +02:00
instagibbs
9c0bcb617b push back getaddednodeinfo dead value 2016-04-22 11:20:06 -07:00
Wladimir J. van der Laan
f59dceb44f qt: Fix out-of-tree GUI builds
Without this patch:

- When I compile the GUI from the bitcoin directory itself, it works as
  expected.

- When I build the GUI in an out-of-tree build, I cannot get it to
  select tabs. When I click, say the "Receive" tab nothing happens,
  the button selects but it doesn't switch the page. The rest - even
  the debug window - seems to work.

See full discussion here:
https://github.com/bitcoin/bitcoin/pull/7911#issuecomment-212413442

This turned out to be caused by a mismatch in the arguments to moc,
preventing it from finding `bitcoin-config.h`. Fix this by passing
`$(DEFAULT_INCLUDES)` to it, which gets set to the appropriate
path by autoconf itself.
2016-04-22 09:21:09 +02:00
Wladimir J. van der Laan
351abf9e03
Merge #7911: leveldb: integrate leveldb into our buildsystem
a4625ac leveldb: integrate leveldb into our buildsystem (Cory Fields)
2016-04-22 09:16:17 +02:00
Wladimir J. van der Laan
90653bc91d
Merge #7922: CBase58Data::SetString: cleanse the full vector
5770449 CBase58Data::SetString: cleanse the full vector (Kaz Wesley)
2016-04-22 09:04:16 +02:00
Wladimir J. van der Laan
76176823ba
Merge #7919: Fix headers announcements edge case
3a99fb2 Fix headers announcements edge case (Suhas Daftuar)
2016-04-22 08:40:22 +02:00
Wladimir J. van der Laan
0c95ebce7e
Merge #7816: [Wallet] slighly refactor GetOldestKeyPoolTime()
9f7336b [Wallet] slightly refactor GetOldestKeyPoolTime() (Jonas Schnelli)
2016-04-22 08:36:56 +02:00
Kaz Wesley
57704499be CBase58Data::SetString: cleanse the full vector
SetString seems to be passing the length of the wrong variable to
memory_cleanse, resulting in the last byte of the temporary buffer not being
securely erased.
2016-04-21 18:28:57 -07:00
Patrick Strateman
d1d7775587 Improve worst-case behavior of CScript::FindAndDelete
Thanks to Sergio Lerner for identifying this issue and suggesting this kind of solution.
2016-04-21 17:24:36 -07:00
Wladimir J. van der Laan
3689ac4634
Merge #7916: Explicitly pass CChainParams& to DisconnectTip()
176869f Explicitly pass CChainParams to ConnectBlock (face)
d0a6353 Pass CChainParams to DisconnectTip() (face)
764d237 Globals: Explicitly pass const CChainParams& to UpdateTip() (Jorge Timón)
2016-04-21 14:54:31 +02:00
Pieter Wuille
bafd075c5e
Merge #7913: Fix for incorrect locking in GetPubKey() (keystore.cpp)
220f950 Fix for incorrect locking in GetPubKey() (keystore.cpp) (Yuri Zhykin)
2016-04-21 13:57:07 +02:00
Pieter Wuille
7daa3adb24
Merge #7868: net: Split DNS resolving functionality out of net structures
d39f5b4 net: disable resolving from storage structures (Cory Fields)
3675699 net: resolve outside of storage structures (Cory Fields)
a98cd1f net: manually resolve dns seed sources (Cory Fields)
e9fc71e net: require lookup functions to specify all arguments (Cory Fields)
2016-04-21 13:48:13 +02:00
Gregory Maxwell
b559914753 Move bloom and feerate filtering to just prior to tx sending.
This will avoid sending more pointless INVs around updates, and
 prevents using filter updates to timetag transactions.

Also adds locking for fRelayTxes.
2016-04-21 00:33:56 +02:00
Pieter Wuille
4578215e7f Return mempool queries in dependency order 2016-04-21 00:33:56 +02:00
Pieter Wuille
ed7068302c 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.
2016-04-21 00:33:56 +02:00