7728 Commits

Author SHA1 Message Date
Esteban Ordano
5dc72f8bb0
CLTV: Add more tests to improve coverage
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-08 17:51:05 +02:00
Peter Todd
6a1343b470 Add RPC tests for the CHECKLOCKTIMEVERIFY (BIP65) soft-fork
bip65-cltv.py is based on the earlier BIP66 soft-fork RPC test
implemented by Pieter Wuille's 819bcf9b9902319176cdb1d476cacfee9b3727ec

bip65-cltv-p2p.py is based on the earlier BIP66 P2P test by Suhas
Daftuar's d76412b068d95454732aa3def95decf35251759a

Rebased-From: 308257856099e82e91881ba97f741d840184727c
2015-10-08 17:51:01 +02:00
Peter Todd
41372485ce Add CHECKLOCKTIMEVERIFY (BIP65) soft-fork logic
Based on the earlier BIP66 soft-fork logic implemented by Pieter
Wuille's 5a47811da5158df763aa2fca09ce646ee0c51e7b

Rebased-From: 287f54fc90c29301faede8d4ac2ea24a91441917
2015-10-08 17:51:01 +02:00
Peter Todd
0e01d0f89d Enable CHECKLOCKTIMEVERIFY as a standard script verify flag
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-08 17:50:56 +02:00
Peter Todd
6d0132520c Replace NOP2 with CHECKLOCKTIMEVERIFY (BIP65)
<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-08 17:39:17 +02:00
Peter Todd
750d54f951 Move LOCKTIME_THRESHOLD to src/script/script.h
Will now be needed by CHECKLOCKTIMEVERIFY code.

Rebased-From: 48e9c57cf06352f890eac4285ae022d8746cf3fd
2015-10-08 17:39:17 +02:00
Peter Todd
689746841a Make CScriptNum() take nMaxNumSize as an argument
While the existing numeric opcodes are all limited to 4-byte bignum
arguments, new opcodes will need different limits.

Rebased-From: 99088d60d8a7747c6d1a7fd5d8cd388be1b3e138
2015-10-08 17:39:17 +02:00
Gregory Maxwell
1cea6b0dee
Test LowS in standardness, removes nuisance malleability vector.
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

Conflicts:
	src/policy/policy.h

Rebased-From: b196b685c9089b74fd4ff3d9a28ea847ab36179b
Github-Pull: #6769
2015-10-07 11:17:08 +02:00
Wladimir J. van der Laan
9bd0b4a633
qt: periodic translations update 2015-09-29 12:35:34 +02:00
Wladimir J. van der Laan
743cc9e08b
Merge pull request #6704
5e6d893 travis: for travis generating an extra build (Cory Fields)
ceba0f8 PARTIAL: typofixes (found by misspell_fixer) (Veres Lajos)
2ede6b7 add support for miniupnpc api version 14 (Pavel Vasin)
0dfcdd4 rpc-tests: re-enable rpc-tests for Windows (Cory Fields)
c9ad65e net: Set SO_REUSEADDR for Windows too (Cory Fields)
0194bdd add unit test for CNetAddr::GetGroup. (Alex Morcos)
bdf2542 Fix masking of irrelevant bits in address groups. (Alex Morcos)
65426ac Add missing files to files.md (fanquake)
28d76d2 Handle leveldb::DestroyDB() errors on wipe failure (Adam Weiss)
843469e Use unique name for AlertNotify tempfile (Casey Rodarmor)
4e5ea71 Make sure LogPrint strings are line-terminated (J Ross Nicoll)
3861f0f build: fix libressl detection (Cory Fields)
04507de Avoid leaking file descriptors in RegisterLoad (Casey Rodarmor)
8b59079 Add autogen.sh to source tarball. (randy-waterhouse)
2015-09-22 18:06:57 +02:00
Jonas Schnelli
f696ea12e1
[QT] fix thin space word wrap line brake issue
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-22 10:49:45 +02:00
Cory Fields
5e6d893650 travis: for travis generating an extra build 2015-09-21 16:01:24 +00:00
Veres Lajos
ceba0f8c7e PARTIAL: typofixes (found by misspell_fixer)
Upstream: 9f68ed6b6d1a9c6436ce37913666165f2b180ee3 (PR #6539)
2015-09-21 05:21:32 +00:00
Pavel Vasin
2ede6b7142 add support for miniupnpc api version 14
The value of new arg ttl is set to 2 as it's recommended default.
2015-09-21 05:21:32 +00:00
Cory Fields
0dfcdd41eb rpc-tests: re-enable rpc-tests for Windows 2015-09-21 05:21:32 +00:00
Cory Fields
c9ad65e5fa net: Set SO_REUSEADDR for Windows too
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-21 05:21:31 +00:00
Alex Morcos
0194bddde4 add unit test for CNetAddr::GetGroup. 2015-09-21 05:21:31 +00:00
Alex Morcos
bdf2542787 Fix masking of irrelevant bits in address groups. 2015-09-21 05:21:31 +00:00
fanquake
65426acb4d Add missing files to files.md
typo
2015-09-21 05:21:31 +00:00
Adam Weiss
28d76d2aea Handle leveldb::DestroyDB() errors on wipe failure
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-21 05:21:30 +00:00
Casey Rodarmor
843469ee15 Use unique name for AlertNotify tempfile 2015-09-21 05:21:30 +00:00
J Ross Nicoll
4e5ea71bd5 Make sure LogPrint strings are line-terminated 2015-09-21 05:21:30 +00:00
Cory Fields
3861f0fa21 build: fix libressl detection
Checking libcrypto for a function after we've already found a (possibly
different) libcrypto is not what we want to do here.

pkg-config might've found a cross lib while AC_CHECK_LIB may find a different
or native one.

Run a link-test against the lib that's already been found instead.
2015-09-21 05:21:30 +00:00
Casey Rodarmor
04507de3b7 Avoid leaking file descriptors in RegisterLoad
This is pretty trivial, but if there's an error here we'll leak a file
descriptor. Changed it to always close the file.
2015-09-21 05:21:29 +00:00
randy-waterhouse
8b59079b8d Add autogen.sh to source tarball. 2015-09-21 05:21:29 +00:00
Wladimir J. van der Laan
ae52a7ffd1
Fix warning introduced by #6412
SOCKET are defined as unsigned integers, thus always >=0.

Rebased-From: 89289d875da108c42ca013f33597eda46cb6eb53
2015-07-20 17:30:17 +02:00
Pieter Wuille
0739e6e57a
Test whether created sockets are select()able
Conflicts:
	src/net.cpp

Github-Pull: #6412
Rebased-From: d422f9b1fdb42a51aadaa1bbc157542dca2feb17
2015-07-20 17:29:44 +02:00
฿tcDrak
255eced936 Updated URL location of netinstall for Debian
Conflicts:
	doc/gitian-building.md

Github-Pull: #6439
Rebased-From: 09d4ddf1c5841b757c2676d508a68baa2dbdc4c7
2015-07-17 09:27:48 +02:00
Cory Fields
7e66e9c97b
openssl: avoid config file load/race
Rebased-From: d4b1d5a8baf18e4c8d62846360c0c1c0c9331d70
Github-Pull: #6438
2015-07-17 09:16:57 +02:00
Wladimir J. van der Laan
3f5563877a
doc: update mailing list address
Move from sourceforge to linux foundation.

Also get rid of some other stale mentions of sourceforge.

Github-Pull: #6319
Rebased-From: 88d8525ca2ff2afc171cd0f625a098371f3a6af5
2015-06-22 13:40:20 +02:00
Wladimir J. van der Laan
be6420407b
Add option -alerts to opt out of alert system
Make it possible to opt-out of the centralized alert system by providing
an option `-noalerts` or `-alerts=0`. The default remains unchanged.

This is a gentler form of #6260, in which I went a bit overboard by
removing the alert system completely.

I intend to add this to the GUI options in another pull after this.

Conflicts:
	src/init.cpp
	src/main.cpp

Github-Pull: #6274
Rebased-From: 02a6702a82a5b00e0e0351041dd3267308b7f319
2015-06-15 10:17:56 +02:00
Tom Harding
0fd8464458
Fix getbalance *
Chance "getbalance *" not to use IsTrusted.  The method and result
now match the "getbalance <specific-account>" behavior. In
particular, "getbalance * 0" now works.

Also fixed a comment -- GetGalance has required 1 confirmation
for many years, and the default "getbalance *" behavior matches
that.

Github-Pull: #6276
Rebased-From: 7d6a85ab5b1dc96e0f3f6f835f27bb81ba2af919
Rebased-By: @trasher-
2015-06-15 10:13:13 +02:00
Luke Dashjr
09334e04a9
configure: Detect (and reject) LibreSSL
Rebased-From: a5a81f7354b3aa3e797d973a7e6840f0e50e6533
Github-Pull: #6244
2015-06-10 08:18:07 +02:00
Wladimir J. van der Laan
181771b712
json: fail read_string if string contains trailing garbage
Change `read_string` to fail when not the entire input has been
consumed. This avoids unexpected, even dangerous behavior (fixes #6223).

The new JSON parser adapted in #6121 also solves this problem so in
master this is a temporary fix, but should be backported to older releases.

Also adds tests for the new behavior.

Github-Pull: #6226
Rebased-From: 4e157fc60dae5ca69933ea4c1585a2a078b4d957
2015-06-03 15:16:18 +02:00
Luke Dashjr
ecc96f5ba9
Remove P2SH coinbase flag, no longer interesting
Github-Pull: #6203
Rebased-From: d449772cf69c01932fc5d72c46054815d6300b3c
2015-06-02 09:14:13 +02:00
Wladimir J. van der Laan
ebd7d8d78c
Parameter interaction: disable upnp if -proxy set
To protect privacy, do not use UPNP when a proxy is set. The user may
still specify -listen=1 to listen locally (for a hidden service), so
don't rely on this happening through -listen.

Fixes #2927.

Conflicts:
	src/init.cpp

Rebased-From: 8c35b6f3be218101630101806300cfd75be23f58
Github-Pull: #6153
2015-05-27 09:35:40 +02:00
Wladimir J. van der Laan
ae3d8f371a
Fix two problems in CSubNet parsing
Fix two CSubNet constructor problems:

- The use of `/x` where 8 does not divide x was broken, due to a
  bit-order issue

- The use of e.g. `1.2.3.4/24` where the netmasked bits in the network
  are not 0 was broken. Fix this by explicitly normalizing the netwok
  according to the bitmask.

Also add tests for these cases.

Fixes #6179. Thanks to @jonasschnelli for reporting and initial fix.

Rebased-From: b45c50ce511dbf541ea086ae40a3ad16ff06de0c
Github-Pull: #6186
2015-05-27 09:11:27 +02:00
Wladimir J. van der Laan
e4a7d51537
Simplify code for CSubnet
Simplify the code by using CAddress.ip directly, instead of the reversed
GetByte() semantics.

Rebased-From: 19e8d7be42039724b4893515ec6457d0187024a9
Github-Pull: #6186
2015-05-27 09:10:56 +02:00
Wladimir J. van der Laan
16f45600c8
doc: small amandment to release notes v0.10.2 2015-05-16 10:37:27 +02:00
Wladimir J. van der Laan
ff32503267
Release notes 0.10.2 v0.10.2rc1 2015-05-12 17:08:58 +02:00
Gregory Maxwell
da656068ec
Avoid crash on start in TestBlockValidity with gen=1.
When the internal miner is enabled at the start of a new node, there
 is an near instant assert in TestBlockValidity because its attempting
 to mine a block before the top checkpoint.

Also avoids a data race around vNodes.

Github-Pull: #6123
Rebased-From: bba7c249296a9a2f444e1035fef8f8b593ba2aaf
2015-05-12 16:38:04 +02:00
Wladimir J. van der Laan
49e4d14f75
Translations update 2015-05-12 16:33:04 +02:00
Wladimir J. van der Laan
d7e7727658
Preparations for 0.10.2 release 2015-05-12 16:23:53 +02:00
Jonas Schnelli
424ae6629b
don't imbue boost::filesystem::path with locale "C" on windows
fixes https://github.com/bitcoin/bitcoin/issues/6078

Github-Pull: #6093
Rebased-From: b3ffcdf91608d4435acfb9b0a6266a4073ffaf7f 3da78490073b04f52f0136e17b07246cc37bedf1
2015-05-10 14:26:22 +02:00
Wladimir J. van der Laan
9a5b88cc0c
Merge pull request #6114
824c011 wallet: fix boost::get usage with boost 1.58 (Cory Fields)
2015-05-07 10:08:45 +02:00
Cory Fields
824c011d16 wallet: fix boost::get usage with boost 1.58
Backport from master
2015-05-06 16:52:46 -04:00
Wladimir J. van der Laan
ebc0e41ede
qt: translation update for next 0.10 point release 2015-05-04 13:12:30 +02:00
Gregory Maxwell
d8ac901842
doc: improve credits in release notes v0.10.1 2015-04-25 10:05:13 +02:00
Wladimir J. van der Laan
bf8ad0dc6b
update release notes for 0.10.1rc3 v0.10.1rc3 2015-04-20 14:05:01 +02:00
Gregory Maxwell
139cd8177b
Cap nAttempts penalty at 8 and switch to pow instead of a division loop.
On hosts that had spent some time with a failed internet connection their
 nAttempts penalty was going through the roof (e.g. thousands for all peers)
 and as a result the connect search was pegging the CPU and failing to get
 more than a 4 connections after days of running (because it was taking so
 long per try).

Rebased-From: a784f90c9892f06b9fea4e7579f5eca3585482c3
Github-Pull: #6029
2015-04-20 13:59:19 +02:00