aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* crypter: shuffle Makefile so that crypto can be used by the walletCory Fields2016-05-131-32/+23
| | | | | | | Wallet must come before crypto, otherwise linking fails on some platforms. Includes a tangentially-related general cleanup rather than making the Makefile sloppier.
* crypter: add a BytesToKey clone to replace the use of opensslCory Fields2016-05-132-4/+31
| | | | | BytesToKeySHA512AES should be functionally identical to EVP_BytesToKey, but drops the dependency on openssl.
* crypter: hook up the new aes cbc classesCory Fields2016-05-131-31/+14
|
* crypter: constify encrypt/decryptCory Fields2016-05-132-4/+4
| | | | This makes CCrypter easier to pass aroundf for tests
* crypter: fix the stored initialization vector sizeCory Fields2016-05-132-6/+7
| | | | | | AES IV's are 16bytes, not 32. This was harmless but confusing. Add WALLET_CRYPTO_IV_SIZE to make its usage explicit.
* crypto: add aes cbc testsCory Fields2016-05-131-0/+135
|
* crypto: add AES 128/256 CBC classesCory Fields2016-05-132-0/+196
| | | | | | The output should always match openssl's, even for failed operations. Even for a decrypt with broken padding, the output is always deterministic (and attemtps to be constant-time).
* Add ctaes-based constant time AES implementationPieter Wuille2016-05-134-1/+198
|
* Merge commit 'a545127fbccef4ee674d18d43732ce00ba97f782' as 'src/crypto/ctaes'Pieter Wuille2016-05-116-0/+939
|
* Merge #8028: Fix insanity of CWalletDB::WriteTx and CWalletTx::WriteToDiskWladimir J. van der Laan2016-05-104-18/+10
|\ | | | | | | 0fd5997 Fix insanity of CWalletDB::WriteTx and CWalletTx::WriteToDisk (Patrick Strateman)
| * Fix insanity of CWalletDB::WriteTx and CWalletTx::WriteToDiskPatrick Strateman2016-05-094-18/+10
| |
* | init: Move berkeleydb version reporting to walletWladimir J. van der Laan2016-05-102-5/+1
| | | | | | | | | | | | | | | | | | | | Move the version reporting to Wallet::Verify, before starting verification of the wallet. This removes the dependency of init on a specific wallet database library. A further, trivial step towards resolving #7965.
* | Merge #8019: Remove state arg from ReconsiderBlock, rename to ↵Wladimir J. van der Laan2016-05-103-7/+5
|\ \ | | | | | | | | | | | | | | | | | | ResetBlockFailureFlags 657e07e Rename ReconsiderBlock func to reflect real behavior (instagibbs) addb9d2 Remove state arg from ReconsiderBlock (instagibbs)
| * | Rename ReconsiderBlock func to reflect real behaviorinstagibbs2016-05-093-3/+3
| | |
| * | Remove state arg from ReconsiderBlockinstagibbs2016-05-063-7/+5
| |/
* | Merge #8016: Fix multithread CScheduler and reenable testWladimir J. van der Laan2016-05-102-2/+1
|\ \ | | | | | | | | | | | | 166e4b0 Notify other serviceQueue thread we are finished to prevent deadlocks. (Pavel Janík) db18ab2 Reenable multithread scheduler test. (Pavel Janík)
| * | Notify other serviceQueue thread we are finished to prevent deadlocks.Pavel Janík2016-05-061-0/+1
| | |
| * | Reenable multithread scheduler test.Pavel Janík2016-05-061-2/+0
| |/
* | Merge #8012: Qt: Delay user confirmation of sendJonas Schnelli2016-05-102-4/+71
|\ \ | | | | | | | | | 3902a29 Qt: Delay user confirmation of send (Tyler Hardin)
| * | Qt: Delay user confirmation of sendTyler Hardin2016-05-092-4/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I made a subclass of QMessageBox that disables the send button in exec() and starts a timer that calls a slot to re-enable it after a configurable delay. It also has a countdown in the send/yes button while it is disabled to hint to the user why the send button is disabled (and that it is actually supposed to be disabled).
* | | Merge #7958: Remove useless argument to AlertNotify.Wladimir J. van der Laan2016-05-091-9/+6
|\ \ \ | | | | | | | | | | | | b02119e Remove useless argument to AlertNotify. (Pavel Janík)
| * | | Remove useless argument to AlertNotify.Pavel Janík2016-04-271-9/+6
| | | | | | | | | | | | | | | | It is always 'true', so useless.
* | | | Merge #7976: Remove obsolete reference to CValidationState from UpdateCoins.Wladimir J. van der Laan2016-05-094-9/+8
|\ \ \ \ | | | | | | | | | | | | | | | c8b9248 Remove obsolete reference to CValidationState from UpdateCoins. (21E14)
| * | | | Remove obsolete reference to CValidationState from UpdateCoins.21E142016-04-304-9/+8
| | | | |
* | | | | Merge #7934: Improve rolling bloom filter performance and benchmarkWladimir J. van der Laan2016-05-095-27/+77
|\ \ \ \ \ | |_|_|_|/ |/| | | | | | | | | | | | | | 1953c40 More efficient bitsliced rolling Bloom filter (Pieter Wuille) aa62b68 Benchmark rolling bloom filter (Pieter Wuille)
| * | | | More efficient bitsliced rolling Bloom filterPieter Wuille2016-04-283-26/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | | Benchmark rolling bloom filterPieter Wuille2016-04-282-1/+45
| | | | |
* | | | | Merge #8011: don't run ThreadMessageHandler at lowered priorityWladimir J. van der Laan2016-05-064-26/+0
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | e53e7c5 don't run ThreadMessageHandler at lowered priority (Kaz Wesley)
| * | | | | don't run ThreadMessageHandler at lowered priorityKaz Wesley2016-05-054-26/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's no clear reason ThreadMessageHandler should be low priority. Fixes #8010 (priority inversion).
* | | | | | Merge #7815: Break circular dependency main ↔ txdbWladimir J. van der Laan2016-05-065-89/+87
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | 99e7075 Break circular dependency main ↔ txdb (Wladimir J. van der Laan)
| * | | | | | Break circular dependency main ↔ txdbWladimir J. van der Laan2016-04-155-89/+87
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Break the circular dependency between main and txdb by: - Moving `CBlockFileInfo` from `main.h` to `chain.h`. I think this makes sense, as the other block-file stuff is there too. - Moving `CDiskTxPos` from `main.h` to `txdb.h`. This type seems specific to txdb. - Pass a functor `insertBlockIndex` to `LoadBlockIndexGuts`. This leaves it up to the caller how to insert block indices.
* | | | | | | Merge #7907: Optimize and Cleanup CScript::FindAndDeleteWladimir J. van der Laan2016-05-052-3/+129
|\ \ \ \ \ \ \ | |_|/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1d7775 Improve worst-case behavior of CScript::FindAndDelete (Patrick Strateman) e2a30bc Unit test for CScript::FindAndDelete (Gavin Andresen) c0f660c Replace c-style cast with c++ style static_cast. (Patrick Strateman) ec9ad5f Replace memcmp with std::equal in CScript::FindAndDelete (Patrick Strateman)
| * | | | | | Improve worst-case behavior of CScript::FindAndDeletePatrick Strateman2016-04-211-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Thanks to Sergio Lerner for identifying this issue and suggesting this kind of solution.
| * | | | | | Unit test for CScript::FindAndDeleteGavin Andresen2016-04-191-0/+117
| | | | | | |
| * | | | | | Replace c-style cast with c++ style static_cast.Patrick Strateman2016-04-191-1/+1
| | | | | | |
| * | | | | | Replace memcmp with std::equal in CScript::FindAndDeletePatrick Strateman2016-04-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Function is stl; std::equal just makes more sense.
* | | | | | | Merge #7840: Several performance and privacy improvements to inv/mempool ↵Wladimir J. van der Laan2016-05-056-86/+189
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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)
| * | | | | | | Move bloom and feerate filtering to just prior to tx sending.Gregory Maxwell2016-04-213-21/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will avoid sending more pointless INVs around updates, and prevents using filter updates to timetag transactions. Also adds locking for fRelayTxes.
| * | | | | | | Return mempool queries in dependency orderPieter Wuille2016-04-211-0/+12
| | | | | | | |
| * | | | | | | Handle mempool requests in send loop, subject to tricklePieter Wuille2016-04-213-28/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | | | | | Split up and optimize transaction and block inv queuesPieter Wuille2016-04-212-37/+59
| | | | | | | |
| * | | | | | | Eliminate TX trickle bypass, sort TX invs for privacy and priority.Gregory Maxwell2016-04-204-27/+58
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 #7966: http: Do a pending c++11 simplification handling work itemsWladimir J. van der Laan2016-05-051-17/+12
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f0188f9 http: use std::move to move HTTPRequest into HTTPWorkItem (Wladimir J. van der Laan) 37b2137 http: Change boost::scoped_ptr to std::unique_ptr in HTTPRequest (Wladimir J. van der Laan) f97b410 http: Add log message when work queue is full (Wladimir J. van der Laan) 091d6e0 http: Do a pending c++11 simplification (Wladimir J. van der Laan)
| * | | | | | | http: use std::move to move HTTPRequest into HTTPWorkItemWladimir J. van der Laan2016-05-051-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Thanks to Cory Fields for the idea.
| * | | | | | | http: Change boost::scoped_ptr to std::unique_ptr in HTTPRequestWladimir J. van der Laan2016-05-051-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | No need for boost here.
| * | | | | | | http: Add log message when work queue is fullWladimir J. van der Laan2016-05-051-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | More useful error reporting.
| * | | | | | | http: Do a pending c++11 simplificationWladimir J. van der Laan2016-05-051-11/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use std::unique_ptr for handling work items. This makes the code more RAII and, as mentioned in the comment, is what I planned when I wrote the code in the first place.
* | | | | | | | Merge #7953: Create signmessagewithprivkey rpcWladimir J. van der Laan2016-05-051-0/+43
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7db0ecb Test for signing messages (Andrew Chow) f90efbf Create signmessagewithprivkey rpc (Andrew)
| * | | | | | | | Create signmessagewithprivkey rpcAndrew2016-04-271-0/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New rpc 'signmessagewithprivkey' which takes a private key to sign a message without using the wallet.
* | | | | | | | | Merge #7977: [trivial] Add missing const qualifiers.Wladimir J. van der Laan2016-05-053-4/+4
|\ \ \ \ \ \ \ \ \ | |_|_|_|_|_|_|_|/ |/| | | | | | | | | | | | | | | | | f7c4f79 [trivial] Add missing const qualifiers. (Daniel Kraft)