aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2015-11-08bump version to 0.11.2v0.11.2rc1Wladimir J. van der Laan
2015-11-06Always flush block and undo when switching to new filePieter Wuille
Previously, the undo weren't being flushed during a reindex because fKnown was set to true in FindBlockPos. That is the correct behaviour for block files as they aren't being touched, but undo files are touched. This changes the behaviour to always flush when switching to a new file (even for block files, though that isn't really necessary). Rebased-From: 22e780737db57bcb18b3824eb8158e19a4775cb6 Github-Pull: #6948
2015-11-06Merge pull request #6825Wladimir J. van der Laan
af6edac *: alias -h for --help (Daniel Cousens) 131d7f9 Change URLs to https in debian/control (Matt Corallo) 7ce2c91 Update debian/changelog and slight tweak to debian/control (Matt Corallo) 4fbfebe Correct spelling mistakes in doc folder (Mitchell Cash) e42bf16 Clarification of unit test build instructions. (Eric Lombrozo) 54f9dee Update bluematt-key, the old one is long-since revoked (Matt Corallo) bfc6154 [Trivial] Fixed typo when referring to a previous section in depends/README.md [skip ci] (Chris Kleeschulte) 9e45157 build: disable -Wself-assign (Wladimir J. van der Laan) 33d6825 Bugfix: Allow mining on top of old tip blocks for testnet (fixes testnet-in-a-box use case) (Luke Dashjr) 87a797a build: Remove dependency of bitcoin-cli on secp256k1 (Wladimir J. van der Laan) a33cd5b [trivial] Fix rpc message "help generate" (MarcoFalke) 6fd0019 Drop "with minimal dependencies" from description (Zak Wilcox) 2394f4d Split bitcoin-tx into its own package (Zak Wilcox) 1e672ae Include bitcoin-tx binary on Debian/Ubuntu (Zak Wilcox) b3eaa30 [Qt] Raise debug window when requested (MarcoFalke) 01878c9 Fix locking in GetTransaction. (Alex Morcos) 9b9acc2 Fix spelling of Qt (Diego Viola)
2015-11-05Merge pull request #6884Wladimir J. van der Laan
f720c5f Enable policy enforcing GetMedianTimePast as the end point of lock-time constraints (Mark Friedenbach) a1d3c6f Add rules--presently disabled--for using GetMedianTimePast as endpoint for lock-time calculations (Mark Friedenbach)
2015-11-04Update LevelDBPieter Wuille
2015-10-23Enable policy enforcing GetMedianTimePast as the end point of lock-time ↵Mark Friedenbach
constraints Transactions are not allowed in the memory pool or selected for inclusion in a block until their lock times exceed chainActive.Tip()->GetMedianTimePast(). However blocks including transactions which are only mature under the old rules are still accepted; this is *not* the soft-fork required to actually rely on the new constraint in production.
2015-10-23Add rules--presently disabled--for using GetMedianTimePast as endpoint for ↵Mark Friedenbach
lock-time calculations The lock-time code currently uses CBlock::nTime as the cutoff point for time based locked transactions. This has the unfortunate outcome of creating a perverse incentive for miners to lie about the time of a block in order to collect more fees by including transactions that by wall clock determination have not yet matured. By using CBlockIndex::GetMedianTimePast from the prior block instead, the self-interested miner no longer gains from generating blocks with fraudulent timestamps. Users can compensate for this change by simply adding an hour (3600 seconds) to their time-based lock times. If enforced, this would be a soft-fork change. This commit only adds the functionality on an unexecuted code path, without changing the behaviour of Bitcoin Core.
2015-10-23Do not allow blockfile pruning during reindex.Alex Morcos
Also clarify startup message. Github-Pull: #6856 Rebased-From: d3b09f6bac738958b6bf5711bcb5291049b7466d
2015-10-23Merge pull request #6707Wladimir J. van der Laan
6af25b0 Add BIP65 to getblockchaininfo softforks list (Peter Todd) ba1da90 Show softfork status in getblockchaininfo (Wladimir J. van der Laan) 70a427b CLTV: Add more tests to improve coverage (Esteban Ordano) c5a27f4 Add RPC tests for the CHECKLOCKTIMEVERIFY (BIP65) soft-fork (Peter Todd) 5e82e1c Add CHECKLOCKTIMEVERIFY (BIP65) soft-fork logic (Peter Todd) 6ea5ca4 Enable CHECKLOCKTIMEVERIFY as a standard script verify flag (Peter Todd) 4fa7a04 Replace NOP2 with CHECKLOCKTIMEVERIFY (BIP65) (Peter Todd) 6ec08db Move LOCKTIME_THRESHOLD to src/script/script.h (Peter Todd) 684636b Make CScriptNum() take nMaxNumSize as an argument (Peter Todd)
2015-10-23Set TCP_NODELAY on P2P sockets.Gregory Maxwell
Nagle appears to be a significant contributor to latency now that the static sleeps are gone. Most of our messages are relatively large compared to IP + TCP so I do not expect this to create enormous overhead. This may also reduce traffic burstyness somewhat. Conflicts: src/net.cpp Rebased-From: a4e28b3d1e5c95eb0c87f144851cd65048c3e0bc Github-Pull: #6867
2015-10-23*: alias -h for --helpDaniel Cousens
2015-10-14Clarification of unit test build instructions.Eric Lombrozo
2015-10-14Bugfix: Allow mining on top of old tip blocks for testnet (fixes ↵Luke Dashjr
testnet-in-a-box use case)
2015-10-14build: Remove dependency of bitcoin-cli on secp256k1Wladimir J. van der Laan
bitcoin-cli (in contrast to bitcoin-tx, which does signing ops) shouldn't need secp256k1, and indeed it doesn't.
2015-10-14[trivial] Fix rpc message "help generate"MarcoFalke
2015-10-14[Qt] Raise debug window when requestedMarcoFalke
* Raise the debug window when hidden behind other windows * Switch to the debug window when on another virtual desktop * Show the debug window when minimized This change is a conceptual copy of 5ffaaba and 382e9e2
2015-10-14Fix locking in GetTransaction.Alex Morcos
GetTransaction needs to lock cs_main until ReadBlockFromDisk completes, the data inside CBlockIndex's can change since pruning. This lock was held by all calls to GetTransaction except rest_tx.
2015-10-14Fix spelling of QtDiego Viola
2015-10-11Bump minrelaytxfee defaultWladimir J. van der Laan
To bridge the time until a dynamic method for determining this fee is merged. This is especially aimed at the stable releases (0.10, 0.11) because full mempool limiting, as will be in 0.12, is too invasive and risky to backport. Github-Pull: #6793 Rebased-From: 28e3249e53b8ef7516636df0f1406466a513095d 4e2efb3c5fde4b1e332cc032e3dc4082ec4e3cac
2015-10-09Bump version to 0.11.1Wladimir J. van der Laan
2015-10-09qt: Update translations before 0.11.1v0.11.1rc1Wladimir J. van der Laan
2015-10-08In (strCommand == "tx"), return if AlreadyHave()Tom Harding
The main effect is to exit processing for recently-rejected hashes, in case they are pushed to us without prior advertisement. This behavior was seen in the wild. An additional effect is to do early checks for mempool or mapOrphan existence. No logging or nDoS tracking is needed for failures of these checks.
2015-10-08Add BIP65 to getblockchaininfo softforks listPeter Todd
Rebased-From: 54a200ac9ad8909303ccf1ac49c291e0c2b5fb23
2015-10-08Show softfork status in getblockchaininfoWladimir J. van der Laan
Rebased-From: 5ed10793c2df970d07cecd760c42205e68779e83
2015-10-08CLTV: Add more tests to improve coverageEsteban Ordano
Four cases included: * The CLTV operand type mismatches the tx locktime. In the script it is 1 (interpreted as block height), but in the tx is 500000000 (interpreted as date) * The stack is empty when executing OP_CLTV * The tx is final by having only one input with MAX_INT sequence number * The operand for CLTV is negative (after OP_0 OP_1 OP_SUB) Rebased-From: cb54d17355864fa08826d6511a0d7692b21ef2c9
2015-10-08Add CHECKLOCKTIMEVERIFY (BIP65) soft-fork logicPeter Todd
Based on the earlier BIP66 soft-fork logic implemented by Pieter Wuille's 5a47811da5158df763aa2fca09ce646ee0c51e7b Rebased-From: 287f54fc90c29301faede8d4ac2ea24a91441917
2015-10-08Enable CHECKLOCKTIMEVERIFY as a standard script verify flagPeter Todd
Transactions that fail CLTV verification will be rejected from the mempool, making it easy to test the feature. However blocks containing "invalid" CLTV-using transactions will still be accepted; this is *not* the soft-fork required to actually enable CLTV for production use. Rebased-From: ffd75adce01a78b3461b3ff05bcc2b530a9ce994
2015-10-08Replace NOP2 with CHECKLOCKTIMEVERIFY (BIP65)Peter Todd
<nLockTime> CHECKLOCKTIMEVERIFY -> <nLockTime> Fails if tx.nLockTime < nLockTime, allowing the funds in a txout to be locked until some block height or block time in the future is reached. Only the logic and unittests are implemented; this commit does not have any actual soft-fork logic in it. Thanks to Pieter Wuille for rebase. Credit goes to Gregory Maxwell for the suggestion of comparing the argument against the transaction nLockTime rather than the current time/blockheight directly. Rebased-From: bc60b2b4b401f0adff5b8b9678903ff8feb5867b
2015-10-08Move LOCKTIME_THRESHOLD to src/script/script.hPeter Todd
Will now be needed by CHECKLOCKTIMEVERIFY code. Rebased-From: 48e9c57cf06352f890eac4285ae022d8746cf3fd
2015-10-08Make CScriptNum() take nMaxNumSize as an argumentPeter Todd
While the existing numeric opcodes are all limited to 4-byte bignum arguments, new opcodes will need different limits. Rebased-From: 99088d60d8a7747c6d1a7fd5d8cd388be1b3e138
2015-10-07Test LowS in standardness, removes nuisance malleability vector.Gregory Maxwell
This adds SCRIPT_VERIFY_LOW_S to STANDARD_SCRIPT_VERIFY_FLAGS which will make the node require the canonical 'low-s' encoding for ECDSA signatures when relaying or mining. Consensus behavior is unchanged. The rational is explained in a81cd96805ce6b65cca3a40ebbd3b2eb428abb7b: Absent this kind of test ECDSA is not a strong signature as given a valid signature {r, s} both that value and {r, -s mod n} are valid. These two encodings have different hashes allowing third parties a vector to change users txids. These attacks are avoided by picking a particular form as canonical and rejecting the other form(s); in the of the LOW_S rule, the smaller of the two possible S values is used. If widely deployed this change would eliminate the last remaining known vector for nuisance malleability on boring SIGHASH_ALL p2pkh transactions. On the down-side it will block most transactions made by sufficiently out of date software. Unlike the other avenues to change txids on boring transactions this one was randomly violated by all deployed bitcoin software prior to its discovery. So, while other malleability vectors where made non-standard as soon as they were discovered, this one has remained permitted. Even BIP62 did not propose applying this rule to old version transactions, but conforming implementations have become much more common since BIP62 was initially written. Bitcoin Core has produced compatible signatures since a28fb70e in September 2013, but this didn't make it into a release until 0.9 in March 2014; Bitcoinj has done so for a similar span of time. Bitcoinjs and electrum have been more recently updated. This does not replace the need for BIP62 or similar, as miners can still cooperate to break transactions. Nor does it replace the need for wallet software to handle malleability sanely[1]. This only eliminates the cheap and irritating DOS attack. [1] On the Malleability of Bitcoin Transactions Marcin Andrychowicz, Stefan Dziembowski, Daniel Malinowski, Łukasz Mazurek http://fc15.ifca.ai/preproceedings/bitcoin/paper_9.pdf Rebased-From: b196b685c9089b74fd4ff3d9a28ea847ab36179b Github-Pull: #6769
2015-10-02Move recentRejects initialization to top of InitBlockIndexWladimir J. van der Laan
This avoids that premature return in the condition that a new chain is initialized results in NULL pointer errors due to recentReject not being constructed. Also add assertions where it is used. (cherry picked from commit a8d0407c4fcf7c4e8ed0e8edabd204f7a4efa477)
2015-10-02Keep track of recently rejected transactionsPeter Todd
Nodes can have divergent policies on which transactions they will accept and relay. This can cause you to repeatedly request and reject the same tx after its inved to you from various peers which have accepted it. Here we add rolling bloom filter to keep track of such rejections, clearing the filter every time the chain tip changes. Credit goes to Alex Morcos, who created the patch that this code is based on. Original code by Peter Todd. Refactored to not construct the filter at startup time by Pieter Wuille. (cherry picked from commit 0847d9cb5fcd2fdd5a21bde699944d966cf5add9)
2015-10-02Only use randomly created nonces in CRollingBloomFilter.Pieter Wuille
(cherry picked from commit d741371d7d27e228aa64c618c50b23fb5449c3e1)
2015-10-02Make CRollingBloomFilter set nTweak for youPeter Todd
While CBloomFilter is usually used with an explicitly set nTweak, CRollingBloomFilter is only used internally. Requiring every caller to set nTweak is error-prone and redundant; better to have the class handle that for you with a high-quality randomness source. Additionally when clearing the filter it makes sense to change nTweak as well to recover from a bad setting, e.g. due to insufficient randomness at initialization, so the clear() method is replaced by a reset() method that sets a new, random, nTweak value. (cherry picked from commit d2d7ee0e863b286e1c9f9c54659d494fb0a7712d)
2015-10-02Reuse vector hashing code for uint256Pieter Wuille
(cherry picked from commit a3d65fedaa18686f0cc007d0a13dba6545250300)
2015-10-02Add uint256 support to CRollingBloomFilterPeter Todd
(cherry picked from commit bbe41088c61f2ad328766e851ffe6169aa80935a)
2015-09-29qt: periodic translation updateWladimir J. van der Laan
2015-09-23Merge pull request #6703Wladimir J. van der Laan
45bfa13 PARTIAL: typofixes (found by misspell_fixer) (Veres Lajos) 21c406e add support for miniupnpc api version 14 (Pavel Vasin) 13bd5a7 rpc-tests: re-enable rpc-tests for Windows (Cory Fields) ccc4ad6 net: Set SO_REUSEADDR for Windows too (Cory Fields) 1f6772e add unit test for CNetAddr::GetGroup. (Alex Morcos) 13642a5 Fix masking of irrelevant bits in address groups. (Alex Morcos) 6b51b9b Replace boost::reverse_lock with our own. (Casey Rodarmor) 626c5e6 Make sure we re-acquire lock if a task throws (Casey Rodarmor) 4877053 Add missing files to files.md (fanquake) f171fee Handle leveldb::DestroyDB() errors on wipe failure (Adam Weiss) c5b89fe Fix race condition on test node shutdown (Casey Rodarmor) 4a37410 Handle no chain tip available in InvalidChainFound() (Ross Nicoll) f6d29a6 Use unique name for AlertNotify tempfile (Casey Rodarmor) e6adac7 Delay initial pruning until after wallet init (Adam Weiss) e0020d4 Make sure LogPrint strings are line-terminated (J Ross Nicoll) 7ff9d12 Make sure LogPrintf strings are line-terminated (Wladimir J. van der Laan) 5a39133 build: fix libressl detection (Cory Fields) f6355e6 Avoid leaking file descriptors in RegisterLoad (Casey Rodarmor) 60457d3 locking: fix a few small issues uncovered by -Wthread-safety (Cory Fields) a496e11 Remove bash test note from rpc-tests readme (fanquake) 49c6a64 tests: Remove old sh-based test framework (Wladimir J. van der Laan) a37567d Add autogen.sh to source tarball. (randy-waterhouse) 1f4d7cf travis: for travis generating an extra build (Cory Fields)
2015-09-22[QT] fix thin space word wrap line brake issueJonas Schnelli
The thin space QT html hack results in cut-off chars/nums after a line break. Avoid word wrap line breaks by using a smaller font and a line break before each alternative value) Rebased-From: 24cb7c7bbba224dcb73fcf69296f5ef4734f745f Github-Pull: #6694
2015-09-22PARTIAL: typofixes (found by misspell_fixer)Veres Lajos
Upstream: 9f68ed6b6d1a9c6436ce37913666165f2b180ee3 (PR #6539)
2015-09-22add support for miniupnpc api version 14Pavel Vasin
The value of new arg ttl is set to 2 as it's recommended default.
2015-09-22net: Set SO_REUSEADDR for Windows tooCory Fields
When running the rpc tests in Wine, nodes often fail to listen on localhost due to a stale socket from a previous run. This aligns the behavior with other platforms.
2015-09-22add unit test for CNetAddr::GetGroup.Alex Morcos
2015-09-22Fix masking of irrelevant bits in address groups.Alex Morcos
2015-09-22Replace boost::reverse_lock with our own.Casey Rodarmor
2015-09-22Make sure we re-acquire lock if a task throwsCasey Rodarmor
2015-09-22Handle leveldb::DestroyDB() errors on wipe failureAdam Weiss
Add error checking to CLevelDBWrapper for errors from leveldb::DestroyDB(). Without it, if unlink() or DeleteFileW() fail to delete files, they will fail silent. If they fail to delete any files, CLevelDBWrapper will silently open and read the existing database. Typically any permissions issues would be caught by leveldb as it churns through many files as part of its compaction process, but it is conceivable that this could cause problems on Windows with anti-virus and indexing software.
2015-09-22Handle no chain tip available in InvalidChainFound()Ross Nicoll
Handle the case where no chain tip is available, in InvalidChainFound(). This fixes a null pointer deference when running unit tests, if the genesis block or block validation code is broken.
2015-09-22Use unique name for AlertNotify tempfileCasey Rodarmor