aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2015-04-06Keep mempool consistent during block-reorgsGavin Andresen
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 (adapted for 0.10). Rebased-From: ad9e86dca11dce023d827d342e966f3806c39d27 Github-Pull: #5945
2015-04-01Merge pull request #5953Wladimir J. van der Laan
a1f425b Add a consistency check for the block chain data structures (Pieter Wuille) This is a port of #5900 to 0.10. Github-Pull: #5900
2015-04-01Scale up addrmanPieter Wuille
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. Rebased-From: 1d21ba2f5ecbf03086d0b65c4c4c80a39a94c2ee Github-Pull: #5941
2015-04-01Always use a 50% chance to choose between tried and new entriesPieter Wuille
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. Rebased-From: c6a63ceeb4956933588995bcf01dc3095aaeb1fc Github-Pull: #5941
2015-04-01Do not bias outgoing connections towards fresh addressesPieter Wuille
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. Rebased-From: 68ba3f67bd500a64fb8932c6b41924ddc31d76f Github-Pull: #5941
2015-04-01Simplify hashing codePieter Wuille
Conflicts: src/addrman.cpp Rebased-From: a8ff7c62edc63c7c94bc91c30b80995539ed7477 Github-Pull: #5941
2015-04-01Make addrman's bucket placement deterministic.Pieter Wuille
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. Conflicts: src/addrman.cpp src/addrman.h Rebased-From: e6b343d880f50d52390c5af8623afa15fcbc65a2 Github-Pull: #5941
2015-04-01Switch addrman key from vector to uint256Pieter Wuille
Conflicts: src/addrman.cpp Rebased-From: b23add5521e4207085d41a0266617e94435fc22e Github-Pull: #5941
2015-03-27Add a consistency check for the block chain data structuresPieter Wuille
This adds a -checkblockindex (defaulting to true for regtest), which occasionally does a full consistency check for mapBlockIndex, setBlockIndexCandidates, chainActive, and mapBlocksUnlinked.
2015-03-26Translations update from transifexWladimir J. van der Laan
2015-03-26don't trickle for whitelisted nodesRuben de Vries
Rebased-From: fc720207e0e513e531b1f266b966a2ffa57b936a Github-Pull: #5942
2015-03-24Fix InvalidateBlock to add chainActive.Tip to setBlockIndexCandidatesAlex Morcos
Rebased-From: cd3d67cf3b0d573d2c387c2ec35e8b52129863d9 Github-Pull: #5890
2015-03-24Initialization: set Boost path locale in main threaddexX7
The path locale is lazy initialized and to avoid deinitialization errors in multithreading environments, it is set explicitly by the main thread. Conflicts: src/util.cpp Rebased-From: 317e66c741aef0fd272e50aa2e82ff192ca5f7e5 Github-Pull: #5877
2015-03-190.10 fix for crashes on OSX 10.6Cory Fields
strnlen is available at build-time but not at runtime, causing a crash. 0.11 drops support for 10.6, so this is not needed in master.
2015-03-18bump version to 0.10.1 in preparation of RC1Wladimir J. van der Laan
2015-03-17Reduce fingerprinting through timestamps in 'addr' messages.Pieter Wuille
Suggested by Jonas Nick. Rebased-From: 9c2737901b5203f267d21d728019d64b46f1d9f3 Github-Pull: #5860
2015-03-16[QT] some mac specifiy cleanup (memory handling, unnecessary code)Jonas Schnelli
Rebased-From: 8b60808c1eaddb402a699ba53d865932e08109ec Github-Pull: #5880
2015-03-16[QT] fix OSX dock icon window reopeningJonas Schnelli
fixes #5878 Rebased-From: 89e70e931d3d320d2dae4c296601aab113b2e508 Github-Pull: #5880
2015-03-12fix InvalidateBlock to repopulate setBlockIndexCandidatesAlex Morcos
Rebased-From: a9af415887f03cb2565895bc55be72748549e527 Github-Pull: #5879
2015-03-11fix possible block db breakage during re-indexCory Fields
When re-indexing, there are a few cases where garbage data may be skipped in the block files. In these cases, the indices are correctly written to the index db, however the pointer to the next position for writing in the current block file is calculated by adding the sizes of the valid blocks found. As a result, when the re-index is finished, the index db is correct for all existing blocks, but the next block will be written to an incorrect offset, likely overwriting existing blocks. Rather than using the sum of all valid blocks to determine the next write position, use the end of the last block written to the file. Don't assume that the current block is the last one in the file, since they may be read out-of-order. Rebased-From: bb6acff07982dda68b5c2ac81c99dbd7255bb9cc Github-Pull: #5864
2015-03-09Ignore getaddr messages on Outbound connections.Ivan Pustogarov
The only time when a client sends a "getaddr" message is when he esatblishes an Outbound connection (see ProcessMessage() in src/main.cpp). Another bitcoin client is expected to receive a "getaddr" message only on Inbound connection. Ignoring "gettaddr" requests on Outbound connections can resolve potential privacy issues (and as was said such request normally do not happen anyway). Rebased-From: dca799e1db6e319fdd47e0bfdb038eab0efabb85 Github-Pull: #5442
2015-03-09Limit message sizes before transferPieter Wuille
This introduces a fixed limit for the size of p2p messages, and enforces it before download. Rebased-From: ba04c4a7801e7d68a5e84035b919e5c3626eb7a7 Github-Pull: #5843
2015-03-09[Qt] fix a issue where "command line options"-action overwrite ↵Jonas Schnelli
"Preference"-action (on OSX) - fixes #5800 Conflicts: src/qt/bitcoingui.cpp Rebased-From: 9bbb880be44dbc378bdd3210eed42eaa77efb774 Github-Pull: #5858
2015-02-26Better fingerprinting protection for non-main-chain getdatas.Pieter Wuille
With headers-first we can compare against the best header timestamp, rather than using checkpoints which require code updates to maintain. Rebased-From: 85da07a5a001a563488382435202b74a3e3e964a Github-Pull: #5820
2015-02-24Sanitize command strings before logging them.Gregory Maxwell
Normally bitcoin core does not display any network originated strings without sanitizing or hex encoding. This wasn't done for strcommand in many places. This could be used to play havoc with a terminal displaying the logs, especially with printtoconsole in use. Thanks to Evil-Knievel for reporting this issue. Conflicts: src/main.cpp
2015-02-23Acquire CCheckQueue's lock to avoid race conditionSuhas Daftuar
This fixes a potential race condition in the CCheckQueueControl constructor, which was looking directly at data in CCheckQueue without acquiring its lock. Remove the now-unnecessary friendship for CCheckQueueControl Rebased-From: cf008ac8c3c5d582562d88ad89020daef3e64dcb Github-Pull: #5721
2015-02-20fix crash: createmultisig and addmultisigaddressfsb4000
Rebased-From: e5d9d77df2de715d24638e3bab78750b7ad3e1fd Github-Pull: #5706
2015-02-03Increase block download timeout base from 10 to 20 minutes.Gregory Maxwell
This harmonizes the block fetch timeout with the existing ping timeout and eliminates a guaranteed eventual failure from congestion collapse for a network operating right at its limit. It's unlikely that we wouldn't suffer other failures if we were really anywhere near the network's limit, and a complete avoidance of congestion collapse risk requires (I think) an exponential back-off. So this isn't a major concern, but I think it's also useful for reducing the complexity of understanding out timeouts. Github-Pull: #5647 Rebased-From: 3ff735c99ae75c21397079f49859b81e89a2f5f8
2015-02-03Merge pull request #5714Wladimir J. van der Laan
3916a81 Increase coverage of DERSIG edge cases (Pieter Wuille) 6da2028 Add RPC test for DERSIG BIP switchover logic (Pieter Wuille) 773c30d BIP66 changeover logic (Pieter Wuille) 18695f0 Example unit tests from BIP66 (Pieter Wuille) abfbeaf Change IsDERSignature to BIP66 implementation (Pieter Wuille)
2015-02-03Fix priority calculation in CreateTransactionAlex Morcos
Make this projection of priority in 1 block match the calculation in the low priority reject code. Rebased-From: 2d9b0b7f03a268e557c6dce1dfa29401b5c9178b Github-Pull: #5675
2015-02-03Avoid storing a reference passed to SignatureChecker constructorsPieter Wuille
Rebased-From: 9fddceda44fb5592be179d783f0e5ac616c51c0d Github-Pull: #5719
2015-02-03Use separate SignatureChecker for CMutableTransactionPieter Wuille
Conflicts: src/main.cpp src/script/bitcoinconsensus.cpp Rebased-From: 858809a33e4f690c4ad213f44a6c4465fc2ef025 Github-Pull: #5719
2015-02-01Increase coverage of DERSIG edge casesPieter Wuille
2015-02-01BIP66 changeover logicPieter Wuille
2015-02-01Example unit tests from BIP66Pieter Wuille
2015-02-01Change IsDERSignature to BIP66 implementationPieter Wuille
2015-01-30[Qt] don't allow amount changes when AmountSpinBox is read-onlyPhilip Kaufmann
- before it was possible to use the steps to change e.g. amouns of authenticated or unauthenticated payment requests (AmountSpinBox is already set to read-only here) - this is now fixed - also move the reimplemented stepEnabled() function to the protected section of our class, where it belongs (see Qt doc) Github-Pull: #5637 Rebased-From: 0fd9e2bf43d217d9a76003476661c8ab53606548
2015-01-29Change Coin Control first column labelfsb4000
Github-Pull: #5720 Rebased-From: 55eade9d46ebfa4b32b79893595d91d529fa30bb
2015-01-26sleep-wait on genesis block during init with -reindexMatt Corallo
Rebased-From: ff09e31a51dcee404c9c037c7c5f50c522e67ea8 Github-Pull: #5243
2015-01-26Make empty byte arrays pass CheckSignatureEncoding()Peter Todd
Makes it possible to compactly provide a delibrately invalid signature for use with CHECK(MULTI)SIG. For instance with BIP19 if m != n invalid signatures need to be provided in the scriptSig; prior to this change those invalid signatures would need to be large DER-encoded signatures. Note that we may want to further expand on this change in the future by saying that only OP_0 is a "valid" invalid signature; BIP19 even with this change is inherently malleable as the invalid signatures can be any validly encoded DER signature. Rebased-From: 2fa9a8ec86033b809a1c48f0396c3482c0d5d33c Github-Pull: #5627
2015-01-23fix crash: CoinControl "space" bugfsb4000
Just like https://github.com/novacoin-project/novacoin/commit/baf80c26a2e7f1ba6061d63d174eff0a09111e6f Github-Pull: #5700 Rebased-From: 944c256741b260bd8b758be4a0543af1cb080943
2015-01-19qt: fix broken unicode chars on osx 10.10Cory Fields
- qt: avoid hard-coding font names They may not contain all necessary characters for a language - qt: fix broken unicode chars on osx 10.10 The default font changed again. The real fix is to compile qt against a >= 10.8 sdk, but this is simple enough to backport to 0.10 to avoid having to do that there. Note: NSAppKitVersionNumber is a double and there's no official value for NSAppKitVersionNumber10_10. Since == isn't reliable for doubles, use Apple's guidelines for testing versions here: https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKit/ Chinese and Japanese fonts have been hard-coded as well, otherwise they fail to show up at all. - qt: fonts: allow SubstituteFonts to filter based on user's language SubstituteFonts() has been moved to after app identification so that QSettings are accessible. Github-Pull: #5671 Rebased-From: 73cd4edb4f1ff98c20549a609e96fa40834f5e73 52954e6efd373c14736237c4c79769bf00f5dfb8 f5ad78b34af8f50e12fab63b331768b96ec2c779
2015-01-19Restore RPC HTTP keepalives to default.Gregory Maxwell
This avoids a regression for issues like #334 where high speed repeated connections eventually run the HTTP client out of sockets because all of theirs end up in time_wait. Maybe the trade-off here is suboptimal, but if both choices will fail then we prefer fewer changes until the root cause is solved. Rebased-From: 1a25a7edf82706c3152e2d978d320ec465a34de1 7d2cb485116636595250fce4ea4eab16a877479b Github-Pull: #5674
2015-01-15Add a -rpckeepalive and disable RPC use of HTTP persistent connections.Gregory Maxwell
It turns out that some miners have been staying with old versions of Bitcoin Core because their software behaves poorly with persistent connections and the Bitcoin Core thread and connection limits. What happens is that underlying HTTP libraries leave connections open invisibly to their users and then the user runs into the default four thread limit. This looks like Bitcoin Core is unresponsive to RPC. There are many things that should be improved in Bitcoin Core's behavior here, e.g. supporting more concurrent connections, not tying up threads for idle connections, disconnecting kept-alive connections when limits are reached, etc. All are fairly big, risky changes. Disabling keep-alive is a simple workaround. It's often not easy to turn off the keep-alive support in the client where it may be buried in some platform library. If you are one of the few who really needs persistent connections you probably know that you want them and can find a switch; while if you don't and the misbehavior is hitting you it is hard to discover the source of your problems is keepalive related. Given that it is best to default to off until they're handled better. Github-Merge: #5655 Rebased-From: 16a5c18cea7330bd68dc9d2f768eb518af88795b 56c1093dae0c523f9f643f00c67414691272a983 1dd8ee72afc26191da51d8d3a5590eab7c9368f6
2015-01-12Catch UTXO set read errors and shutdownv0.10.0rc2Pieter Wuille
Github-Pull: #5619 Rebased-From: 13cdce4336818d0f6cefe6b3e61c45762d97d7c6
2015-01-12Introduce 10 minute block download timeoutPieter Wuille
This will disconnect peers that do not transfer a block in 10 minutes, plus 5 minutes for every previously queued block with validated headers (accomodating downstream bandwidth down to a few kilobytes per second - below that the node would have trouble staying synchronized anyway). Github-Pull: #5608 Rebased-From: 916130348ca803d762db912307b247f60f9aacd6
2015-01-12Improve robustness of DER recoding codeWladimir J. van der Laan
Add some defensive programming on top of #5634. This copies the respective OpenSSL code in ECDSA_verify in OpenSSL pre-1.0.1k (e.g. https://github.com/openssl/openssl/blob/OpenSSL_1_0_1j/crypto/ecdsa/ecs_vrf.c#L89) more closely. As reported by @sergiodemianlerner. Github-Pull: #5640 Rebased-From: c6b7b29f232c651f898eeffb93f36c8f537c56d2
2015-01-10fail immediately on an empty signatureCory Fields
Github-Pull: #5634 Rebased-From: 8dccba6a45db0466370726ed462b9da2eae43bce
2015-01-10consensus: guard against openssl's new strict DER checksCory Fields
New versions of OpenSSL will reject non-canonical DER signatures. However, it'll happily decode them. Decode then re-encode before verification in order to ensure that it is properly consumed. Github-Pull: #5634 Rebased-From: 488ed32f2ada1d1dd108fc245d025c4d5f252783
2015-01-08tests: run sanity checks in tests tooCory Fields
If these are going to fail in bitcoind, they should fail in the tests as well. Github-Pull: #5604 Rebased-From: d58c5d6f21fd2421bc8cbb224849e8c38b617775