Commit graph

7348 commits

Author SHA1 Message Date
Jonas Schnelli 26af1ac7cb
Merge pull request #7006
f71bfef add UI help for -resetguisettings (Jonas Schnelli)
ae98388 [Qt] add startup option to reset Qt settings (Jonas Schnelli)
2015-11-25 09:05:19 +01:00
Patick Strateman 1bb289fe1b Assert now > 0 in GetTime GetTimeMillis GetTimeMicros
Previously all of these functions could return negative values (for different
readons).  Large portions of the codebase currently assume that these
functions return positive values.
2015-11-24 18:39:19 -08:00
Wladimir J. van der Laan b19fe277dd
Merge pull request #7075
4846543 Move time data log print to 'net' category to reduce log noise (tulip)
2015-11-24 16:02:02 +01:00
Suhas Daftuar e30443244a Pass reference to estimateSmartFee and cleanup whitespace 2015-11-24 08:53:14 -05:00
MarcoFalke fa472f330f [trivial] Fix -maxmempool InitError 2015-11-24 12:40:59 +01:00
Patick Strateman 9cf668844e Document both the peerbloomfilters and enforcenodebloom options. 2015-11-24 02:08:00 -08:00
Patick Strateman 0f4dc53fd6 Add enforcenodebloom option.
Previously peers which implement a protocol version less than NO_BLOOM_VERSION
would not be disconnected for sending a filter command, regardless of the
peerbloomfilter option.

Many node operators do not wish to provide expensive bloom filtering for SPV
clients, previously they had to cherry pick the commit which enabled the
disconnect logic.

The default should remain false until a sufficient percent of SPV clients
have updated.
2015-11-24 02:08:00 -08:00
Wladimir J. van der Laan 02a0f348c2
Merge pull request #7066
5c2fd38 Add missing "blocktime" description to listtransactions help, fix formatting. (Pavel Janík)
2015-11-24 10:55:36 +01:00
Patick Strateman b3caa9b7fa Move bloom filter filtering logic outside of command "switch" (giant if/else).
Moving this logic outside of the "switch" makes it far simpler to
enable the forced disconnect by a parameter.
2015-11-24 01:50:53 -08:00
Wladimir J. van der Laan 72dccfc29d
Merge pull request #7045
2aa49ce Bugfix: Use unique autostart filenames on Linux for testnet/regtest (Luke Dashjr)
2015-11-24 09:51:02 +01:00
MarcoFalke fa63e49b35 Merge commit '5ad54630935d1f340666de7bc9ffef9b8a1df296' into HEAD 2015-11-24 09:22:18 +01:00
MarcoFalke faf12bc283 OpenSSL 1.1.0: Fix text variant of the version number 2015-11-24 09:07:26 +01:00
Wladimir J. van der Laan f91e29fd4d
Merge pull request #7065
3522f49 http: add Boost 1.49 compatibility (Wladimir J. van der Laan)
2015-11-24 08:42:29 +01:00
Jorge Timón 2e29e7e247 Globals: Remove a bunch of Params() calls from main.cpp:
1) Chainparams: Explicit CChainParams arg for main:

-AcceptBlock
-AcceptBlockHeader
-ActivateBestChain
-ConnectTip
-InitBlockIndex
-LoadExternalBlockFile
-VerifyDB parametric constructor

2) Also pickup more Params()\. in main.cpp

3) Pass nPruneAfterHeight explicitly to new FindFilesToPrune() in main.cpp
2015-11-23 12:14:40 +01:00
Gregory Maxwell ebb25f4c23 Limit setAskFor and retire requested entries only when a getdata returns.
The setAskFor duplicate elimination was too eager and removed entries
 when we still had no getdata response, allowing the peer to keep
 INVing and not responding.
2015-11-23 01:54:23 +00:00
kazcw 5029698186 prevent peer flooding request queue for an inv
mapAlreadyAskedFor does not keep track of which peer has a request queued for a
particular tx. As a result, a peer can blind a node to a tx indefinitely by
sending many invs for the same tx, and then never replying to getdatas for it.
Each inv received will be placed 2 minutes farther back in mapAlreadyAskedFor,
so a short message containing 10 invs would render that tx unavailable for 20
minutes.

This is fixed by disallowing a peer from having more than one entry for a
particular inv in mapAlreadyAskedFor at a time.
2015-11-23 01:18:54 +00:00
Gregory Maxwell c322652b71
Merge pull request #7046
80ae230 Improve log messages for blocks only violations. (Patick Strateman)
08843ed Add relaytxes status to getpeerinfo (Peter Todd)
d8aaa51 Bail early in processing transactions in blocks only mode. (Patick Strateman)
3587f6a Fix relay mechanism for whitelisted peers under blocks only mode. (Patick Strateman)
2015-11-22 14:01:33 -08:00
tulip 4846543ac5 Move time data log print to 'net' category to reduce log noise 2015-11-22 06:48:25 +00:00
Patick Strateman 80ae230a52 Improve log messages for blocks only violations. 2015-11-21 16:09:52 -08:00
Gregory Maxwell 31de2414c6
Merge pull request #7011
6531f17 Add mediantime field to getblock and getblockheader (Peter Todd)
7259769 Document new mediantime field in getblockchaininfo (Peter Todd)
c277a63 Clarify nLockTime-by-time comment in CheckFinalTx() (Peter Todd)
748321e Add mediantime field to getblockchaininfo RPC call (Peter Todd)
2015-11-21 14:00:55 -08:00
Gregory Maxwell 616d61b20d
Merge pull request #6851
3e7c891 Optimisation: Store transaction list order in memory rather than compute it every need (Luke Dashjr)
2015-11-20 18:52:44 -08:00
Luke Dashjr 3e7c89196c Optimisation: Store transaction list order in memory rather than compute it every need
Huge performance improvement (450%) for zapwallettxes
2015-11-21 01:48:25 +00:00
Peter Todd 08843ed998 Add relaytxes status to getpeerinfo 2015-11-20 16:07:12 -08:00
Patick Strateman d8aaa51bec Bail early in processing transactions in blocks only mode.
Previously unsolicited transactions would be processed as normal.
2015-11-20 16:07:12 -08:00
Patick Strateman 3587f6a024 Fix relay mechanism for whitelisted peers under blocks only mode.
Previously in blocks only mode all inv messages where type!=MSG_BLOCK would be
rejected without regard for whitelisting or whitelistalwaysrelay.

As such whitelisted peers would never send the transaction (which would be
processed).
2015-11-20 16:07:12 -08:00
Wladimir J. van der Laan 776848acef
Merge pull request #6979
c197798 [Qt] simple mempool info in debug window (Jonas Schnelli)
2015-11-20 14:34:11 +01:00
Pavel Janík 5c2fd38d05 Add missing "blocktime" description to listtransactions help, fix formatting. 2015-11-20 12:51:36 +01:00
Wladimir J. van der Laan 3522f49f5a http: add Boost 1.49 compatibility
`try_join_for` was introduced in Boost 1.50:
http://www.boost.org/doc/libs/1_50_0/doc/html/thread/thread_management.html#thread.thread_management.thread.try_join_for

1.49 has `timed_join`, one can accomplish the same with:
http://www.boost.org/doc/libs/1_49_0/doc/html/thread/thread_management.html#thread.thread_management.thread.timed_join

However, `timed_join` was deprecated in 1.50. So a conditional is
necessary.

This solution was tested in #7031.
2015-11-20 10:14:21 +01:00
Jonas Schnelli c197798d1b
[Qt] simple mempool info in debug window 2015-11-20 08:40:43 +01:00
Alex Morcos c0353064dd Change GetPriority calculation.
Compute the value of inputs that already are in the chain at time of mempool entry and only increase priority due to aging for those inputs.  This effectively changes the CTxMemPoolEntry's GetPriority calculation from an upper bound to a lower bound.
2015-11-19 21:44:35 -05:00
Alex Morcos 71f1d9fd4a Modify variable names for entry height and priority 2015-11-19 21:28:01 -05:00
Alex Morcos 5945819717 Remove default arguments for CTxMemPoolEntry() 2015-11-19 21:28:01 -05:00
Wladimir J. van der Laan 52c563710d
qt: Periodic translations update 2015-11-19 12:58:09 +01:00
Wladimir J. van der Laan a1907772f0
Merge pull request #7051
b4f3e9c ui: Add "Copy raw transaction data" to transaction list context menu (Wladimir J. van der Laan)
2015-11-19 12:52:27 +01:00
Wladimir J. van der Laan b4f3e9c09e ui: Add "Copy raw transaction data" to transaction list context menu
Add a way to quickly copy transaction hex.

Primarily useful when manually submitting transactions,
e.g. `-walletbroadcast=0` is set.
2015-11-19 11:08:29 +01:00
Daniel Cousens ffacd27def zmq: prepend zmq to debug messages 2015-11-19 13:32:14 +11:00
Daniel Cousens 14075b189d init: add zmq to debug categories 2015-11-19 13:17:36 +11:00
Daniel Cousens cdcd816a1b init: amend ZMQ flag names 2015-11-19 12:34:19 +11:00
Jonas Schnelli f71bfefcb0
add UI help for -resetguisettings 2015-11-18 21:50:32 +01:00
Alex Morcos 8504867b14 Save the last unnecessary database read
It's possible coins with the same hash exist when you create a duplicate coinbase, so previously we were reading from the database to make sure we had the old coins cached so if we were to spend the new ones, the old ones would also be spent.  This pull instead just marks the new coins as not fresh if they are from a coinbase, so if they are spent they will be written all the way down to the database anyway overwriting any duplicates.
2015-11-18 12:16:40 -05:00
Alex Morcos 072e2f8644 Alter assumptions in CCoinsViewCache::BatchWrite
Previously it would break if you flushed a parent cache while there was a child cache referring to it.  This change will allow the flushing of parent caches.
2015-11-18 12:03:50 -05:00
Wladimir J. van der Laan 73fa5e6043
Merge pull request #6932
1cf3dd8 Add unit test for UpdateCoins (Alex Morcos)
03c8282 Make CCoinsViewTest behave like CCoinsViewDB (Alex Morcos)
14470f9 ModifyNewCoins saves database lookups (Alex Morcos)
2015-11-18 17:37:58 +01:00
Jonas Schnelli 03403d8c0f
Merge pull request #6951
513686d [qt] Use maxTxFee instead of 10000000 (MarcoFalke)
2015-11-18 14:28:21 +01:00
Jonas Schnelli 2a8e8c2e37
[Qt] don't allow to store invalid proxy ports 2015-11-18 14:02:14 +01:00
Alex Morcos e855b0152f Fix debug log message for block files 2015-11-17 22:23:39 -05:00
Luke Dashjr 2aa49ce9fe Bugfix: Use unique autostart filenames on Linux for testnet/regtest 2015-11-17 20:31:00 +00:00
Alex Morcos e587bc3fd9 Implement helper class for CTxMemPoolEntry constructor
This is only for unit tests.
2015-11-16 20:41:32 -05:00
Gregory Maxwell 87ee0e2dbc
Merge pull request #6986
6bc9e40 Chainparams: Explicit CChainParams arg for miner: (Jorge Timón)
598e494 Chainparams: Explicit CChainParams arg for main (pre miner): (Jorge Timón)
2015-11-16 17:00:11 -08:00
Gregory Maxwell 972bf9c529
Merge pull request #6999
f6d9d5e add (max)uploadtarget infos to getnettotals RPC help (Jonas Schnelli)
2015-11-16 16:39:33 -08:00
Gregory Maxwell 0a547d2d55
Merge pull request #7023
4d29032 Fixed integer comparison warning. (Eric Lombrozo)
2015-11-16 16:34:51 -08:00
Alex Morcos 56106a3300 Expose RPC calls for estimatesmart functions
Also add testing for estimatesmartfee in smartfees.py
2015-11-16 15:42:31 -05:00
Alex Morcos e93a236d7a add estimateSmartFee to the unit test 2015-11-16 15:33:06 -05:00
Alex Morcos 6303051470 EstimateSmart functions consider mempool min fee 2015-11-16 15:33:06 -05:00
Alex Morcos f22ac4a22c Increase success threshold for fee estimation to 95%
This provides more conservative estimates and reacts more quickly to a backlog.
Unfortunately the unit test for fee estimation depends on the success threshold (and the decay) chosen; also modify the unit test for the new default success thresholds.
2015-11-16 15:33:06 -05:00
Alex Morcos 4fe28236c0 Change wallet and GUI code to use new smart fee estimation calls. 2015-11-16 15:33:06 -05:00
Alex Morcos 22eca7da22 Add smart fee estimation functions
These are more useful fee and priority estimation functions. If there is no fee/pri high enough for the target you are aiming for, it will give you the estimate for the lowest target that you can reliably obtain.  This is better than defaulting to the minimum.  It will also pass back the target for which it returned an answer.
2015-11-16 15:33:06 -05:00
Wladimir J. van der Laan e54ebbf600
Merge pull request #6954
6e18268 Switch to libsecp256k1-based validation for ECDSA (Pieter Wuille)
2015-11-16 13:25:18 +01:00
Wladimir J. van der Laan dafefb7924
Merge pull request #7016
aee22bf Avoid a compile error on hosts with libevent too old for EVENT_LOG_WARN. (Gregory Maxwell)
2015-11-16 12:03:19 +01:00
Jonas Schnelli d16d1b72d1
[Qt] refactor and optimize proxy settings behavior 2015-11-16 11:05:26 +01:00
Gregory Maxwell aee22bf288 Avoid a compile error on hosts with libevent too old for EVENT_LOG_WARN.
This uses _EVENT_LOG_WARN instead, which appears to be defined in the
 old versions of libevent that I have on some systems.
2015-11-16 09:21:54 +00:00
Gregory Maxwell 6876a78b86
Merge pull request #6991
9bd3f03 Clarify 'fee' field in fundrawtransaction help text (Peter Todd)
2015-11-16 00:38:08 -08:00
Jonas Schnelli 814697c556
Merge pull request #7000
773ae46 [Qt] add shortcurts for debug-/console-window (Jonas Schnelli)
2015-11-16 08:39:42 +01:00
Eric Lombrozo 4d29032a64 Fixed integer comparison warning. 2015-11-15 20:13:30 -05:00
Pieter Wuille 6e18268616 Switch to libsecp256k1-based validation for ECDSA 2015-11-15 16:06:57 +01:00
Gregory Maxwell b632145ede
Merge pull request #6993
bbf49da Fix comment for blocksonly parameter interactions (Patick Strateman)
6a4982f Fix fRelayTxs comment (Patick Strateman)
59441a0 Display DEFAULT_WHITELISTALWAYSRELAY in help text (Patick Strateman)
71a2683 Use DEFAULT_BLOCKSONLY and DEFAULT_WHITELISTALWAYSRELAY constants (Patick Strateman)
762b13b Add help text for blocksonly and whitelistalwaysrelay (Patick Strateman)
3a96497 Add whitelistalwaysrelay option (Patick Strateman)
420fa81 Do not process tx inv's in blocksonly mode (Patick Strateman)
4044f07 Add blocksonly mode (Patick Strateman)
2015-11-14 05:23:00 -08:00
Patick Strateman bbf49da408 Fix comment for blocksonly parameter interactions 2015-11-14 05:14:01 -08:00
Patick Strateman 6a4982fb83 Fix fRelayTxs comment 2015-11-14 05:12:31 -08:00
Patick Strateman 59441a0445 Display DEFAULT_WHITELISTALWAYSRELAY in help text 2015-11-14 05:12:05 -08:00
Patick Strateman 71a2683f4b Use DEFAULT_BLOCKSONLY and DEFAULT_WHITELISTALWAYSRELAY constants 2015-11-14 05:10:59 -08:00
Patick Strateman 762b13b4d8 Add help text for blocksonly and whitelistalwaysrelay 2015-11-14 04:54:01 -08:00
Patick Strateman 3a964973fe Add whitelistalwaysrelay option 2015-11-14 04:52:21 -08:00
Patick Strateman 420fa8143a Do not process tx inv's in blocksonly mode 2015-11-14 04:52:21 -08:00
Patick Strateman 4044f07d1c Add blocksonly mode 2015-11-14 04:52:21 -08:00
Gregory Maxwell 9ffc687288
Merge pull request #6984
e495ed5 add documentation for exluding whitelistes peer from maxuploadtarget (Jonas Schnelli)
5760749 [docs] rename reducetraffic.md to reduce-traffic.md (Jonas Schnelli)
d61fcff don't enforce maxuploadtargets disconnect for whitelisted peers (Jonas Schnelli)
2015-11-13 23:54:36 -08:00
Wladimir J. van der Laan 36baa9f475
Merge pull request #7013
b3ae384 Remove LOCK(cs_main) from decodescript (Peter Todd)
2015-11-14 08:24:44 +01:00
Peter Todd b3ae384a8d
Remove LOCK(cs_main) from decodescript
Completely static RPC call that doesn't change or even look at mutable
state anywhere.
2015-11-13 17:19:33 -05:00
Peter Todd 6531f17a78
Add mediantime field to getblock and getblockheader 2015-11-13 16:57:10 -05:00
Peter Todd 7259769d7f Document new mediantime field in getblockchaininfo 2015-11-13 16:49:47 -05:00
Peter Todd c277a63ed7
Clarify nLockTime-by-time comment in CheckFinalTx() 2015-11-13 16:36:54 -05:00
Peter Todd 10953a7d32
Better error message for fundrawtransaction w/ empty vout
Previously this case failed deep in Cwallet::CreateTransaction() with
the error message "Transaction amounts must be positive"
2015-11-13 15:53:46 -05:00
Peter Todd 61e1eb2e1c
Actually use includeWatching value in fundrawtransaction
Previously if you called fundrawtransaction and set includeWatching to
false it'd act as through you set it to true.
2015-11-13 15:45:29 -05:00
Peter Todd 748321eb5b
Add mediantime field to getblockchaininfo RPC call
Useful now that BIP113 is enforced for transactions entering the
mempool. Was previously only (indirectly) available by calling
getblocktemplate, a relatively expensive RPC call.
2015-11-13 15:35:04 -05:00
Jonas Schnelli d61fcff071
don't enforce maxuploadtargets disconnect for whitelisted peers 2015-11-13 21:04:12 +01:00
Gregory Maxwell dbd2c135dd
Merge pull request #6990
a264c32 http: speed up shutdown (Wladimir J. van der Laan)
2015-11-13 11:30:00 -08:00
Wladimir J. van der Laan d3565604e3
Merge pull request #7007
a78e6ea Fix bug in mempool_tests unit test (Alex Morcos)
2015-11-13 18:37:46 +01:00
Pieter Wuille 114b5812f6 Prevector type 2015-11-13 18:15:20 +01:00
Pieter Wuille 4f09b77c7f
Merge pull request #6983
48edf57 Update key.cpp to new secp256k1 API (Pieter Wuille)
1d84107 Squashed 'src/secp256k1/' changes from 22f60a6..2bfb82b (Pieter Wuille)
2015-11-13 16:51:44 +01:00
Alex Morcos a78e6eaf5c Fix bug in mempool_tests unit test 2015-11-13 10:50:49 -05:00
Jonas Schnelli ae98388b22
[Qt] add startup option to reset Qt settings 2015-11-13 16:27:42 +01:00
Wladimir J. van der Laan d2e987aa19
Merge pull request #6958
9c3ee3b [doc] Add -maxuploadtarget release notes (MarcoFalke)
b27e81f [net] Cleanup maxuploadtarget (MarcoFalke)
2015-11-13 13:27:33 +01:00
Wladimir J. van der Laan a264c32e33
http: speed up shutdown
This continues/fixes #6719.

`event_base_loopbreak` was not doing what I expected it to, at least in
libevent 2.0.21.
What I expected was that it sets a timeout, given that no other pending
events it would exit in N seconds. However, what it does was delay the
event loop exit with 10 seconds, even if nothing is pending.

Solve it in a different way: give the event loop thread time to exit
out of itself, and if it doesn't, send loopbreak.

This speeds up the RPC tests a lot, each exit incurred a 10 second
overhead, with this change there should be no shutdown overhead in the
common case and up to two seconds if the event loop is blocking.

As a bonus this breaks dependency on boost::thread_group, as the HTTP
server minds its own offspring.
2015-11-13 11:10:48 +01:00
Pieter Wuille 48edf5746a Update key.cpp to new secp256k1 API 2015-11-13 00:12:53 +01:00
Pieter Wuille 1d84107924 Squashed 'src/secp256k1/' changes from 22f60a6..2bfb82b
2bfb82b Merge pull request #351
06aeea5 Turn secp256k1_ec_pubkey_serialize outlen to in/out
970164d Merge pull request #348
6466625 Improvements for coordinate decompression
e2100ad Merge pull request #347
8e48787 Change secp256k1_ec_pubkey_combine's count argument to size_t.
c69dea0 Clear output in more cases for pubkey_combine, adds tests.
269d422 Comment copyediting.
b4d17da Merge pull request #344
4709265 Merge pull request #345
26abce7 Adds 32 static test vectors for scalar mul, sqr, inv.
5b71a3f Better error case handling for pubkey_create & pubkey_serialize, more tests.
3b7bc69 Merge pull request #343
eed87af Change contrib/laxder from headers-only to files compilable as standalone C
d7eb1ae Merge pull request #342
7914a6e Make lax_der_privatekey_parsing.h not depend on internal code
73f64ff Merge pull request #339
9234391 Overhaul flags handling
1a36898 Make flags more explicit, add runtime checks.
1a3e03a Merge pull request #340
96be204 Add additional tests for eckey and arg-checks.
bb5aa4d Make the tweak function zeroize-output-on-fail behavior consistent.
4a243da Move secp256k1_ec_privkey_import/export to contrib.
1b3efc1 Move secp256k1_ecdsa_sig_recover into the recovery module.
e3cd679 Eliminate all side-effects from VERIFY_CHECK() usage.
b30fc85 Avoid nonce_function_rfc6979 algo16 argument emulation.
70d4640 Make secp256k1_ec_pubkey_create skip processing invalid secret keys.
6c476a8 Minor comment improvements.
131afe5 Merge pull request #334
0c6ab2f Introduce explicit lower-S normalization
fea19e7 Add contrib/lax_der_parsing.h
3bb9c44 Rewrite ECDSA signature parsing code
fa57f1b Use secp256k1_rand_int and secp256k1_rand_bits more
49b3749 Add new tests for the extra testrand functions
f684d7d Faster secp256k1_rand_int implementation
251b1a6 Improve testrand: add extra random functions
31994c8 Merge pull request #338
f79aa88 Bugfix: swap arguments to noncefp
c98df26 Merge pull request #319
67f7da4 Extensive interface and operations tests for secp256k1_ec_pubkey_parse.
ee2cb40 Add ARG_CHECKs to secp256k1_ec_pubkey_parse/secp256k1_ec_pubkey_serialize
7450ef1 Merge pull request #328
68a3c76 Merge pull request #329
98135ee Merge pull request #332
37100d7 improve ECDH header-doc
b13d749 Fix couple of typos in API comments
7c823e3 travis: fixup module configs
cc3141a Merge pull request #325
ee58fae Merge pull request #326
213aa67 Do not force benchmarks to be statically linked.
338fc8b Add API exports to secp256k1_nonce_function_default and secp256k1_nonce_function_rfc6979.
52fd03f Merge pull request #320
9f6993f Remove some dead code.
357f8cd Merge pull request #314
118cd82 Use explicit symbol visibility.
4e64608 Include public module headers when compiling modules.
1f41437 Merge pull request #316
fe0d463 Merge pull request #317
cfe0ed9 Fix miscellaneous style nits that irritate overactive static analysis.
2b199de Use the explicit NULL macro for pointer comparisons.
9e90516 Merge pull request #294
dd891e0 Get rid of _t as it is POSIX reserved
201819b Merge pull request #313
912f203 Eliminate a few unbraced statements that crept into the code.
eeab823 Merge pull request #299
486b9bb Use a flags bitfield for compressed option to secp256k1_ec_pubkey_serialize and secp256k1_ec_privkey_export
05732c5 Callback data: Accept pointers to either const or non-const data
1973c73 Bugfix: Reinitialise buffer lengths that have been used as outputs
788038d Use size_t for lengths (at least in external API)
c9d7c2a secp256k1_context_set_{error,illegal}_callback: Restore default handler by passing NULL as function argument
9aac008 secp256k1_context_destroy: Allow NULL argument as a no-op
64b730b secp256k1_context_create: Use unsigned type for flags bitfield
cb04ab5 Merge pull request #309
a551669 Merge pull request #295
81e45ff Update group_impl.h
85e3a2c Merge pull request #112
b2eb63b Merge pull request #293
dc0ce9f [API BREAK] Change argument order to out/outin/in
6d947ca Merge pull request #298
c822693 Merge pull request #301
6d04350 Merge pull request #303
7ab311c Merge pull request #304
5fb3229 Fixes a bug where bench_sign would fail due to passing in too small a buffer.
263dcbc remove unused assignment
b183b41 bugfix: "ARG_CHECK(ctx != NULL)" makes no sense
6da1446 build: fix parallel build
5eb4356 Merge pull request #291
c996d53 Print success
9f443be Move pubkey recovery code to separate module
d49abbd Separate ECDSA recovery tests
439d34a Separate recoverable and normal signatures
a7b046e Merge pull request #289
f66907f Improve/reformat API documentation secp256k1.h
2f77487 Add context building benchmarks
cc623d5 Merge pull request #287
de7e398 small typo fix
9d96e36 Merge pull request #280
432e1ce Merge pull request #283
14727fd Use correct name in gitignore
356b0e9 Actually test static precomputation in Travis
ff3a5df Merge pull request #284
2587208 Merge pull request #212
a5a66c7 Add support for custom EC-Schnorr-SHA256 signatures
d84a378 Merge pull request #252
72ae443 Improve perf. of cmov-based table lookup
92e53fc Implement endomorphism optimization for secp256k1_ecmult_const
ed35d43 Make `secp256k1_scalar_add_bit` conditional; make `secp256k1_scalar_split_lambda_var` constant time
91c0ce9 Add benchmarks for ECDH and const-time multiplication
0739bbb Add ECDH module which works by hashing the output of ecmult_const
4401500 Add constant-time multiply `secp256k1_ecmult_const` for ECDH
e4ce393 build: fix hard-coded usage of "gen_context"
b8e39ac build: don't use BUILT_SOURCES for the static context header
baa75da tests: add a couple tests
ae4f0c6 Merge pull request #278
995c548 Introduce callback functions for dealing with errors.
c333074 Merge pull request #282
18c329c Remove the internal secp256k1_ecdsa_sig_t type
74a2acd Add a secp256k1_ecdsa_signature_t type
23cfa91 Introduce secp256k1_pubkey_t type
4c63780 Merge pull request #269
3e6f1e2 Change rfc6979 implementation to be a generic PRNG
ed5334a Update configure.ac to make it build on OpenBSD
1b68366 Merge pull request #274
a83bb48 Make ecmult static precomputation default
166b32f Merge pull request #276
c37812f Add gen_context src/ecmult_static_context.h to CLEANFILES to fix distclean.
125c15d Merge pull request #275
76f6769 Fix build with static ecmult altroot and make dist.
5133f78 Merge pull request #254
b0a60e6 Merge pull request #258
733c1e6 Add travis build to test the static context.
fbecc38 Add ability to use a statically generated ecmult context.
4fb174d Merge pull request #263
4ab8990 Merge pull request #270
bdf0e0c Merge pull request #271
31d0c1f Merge pull request #273
eb2c8ff Add missing casts to SECP256K1_FE_CONST_INNER
55399c2 Further performance improvements to _ecmult_wnaf
99fd963 Add secp256k1_ec_pubkey_compress(), with test similar to the related decompress() function.
145cc6e Improve performance of _ecmult_wnaf
36b305a Verify the result of GMP modular inverse using non-GMP code
0cbc860 Merge pull request #266
06ff7fe Merge pull request #267
5a43124 Save 1 _fe_negate since s1 == -s2
a5d796e Update code comments
3f3964e Add specific VERIFY tests for _fe_cmov
7d054cd Refactor to save a _fe_negate
b28d02a Refactor to remove a local var
55e7fc3 Perf. improvement in _gej_add_ge
a0601cd Fix VERIFY calculations in _fe_cmov methods
17f7148 Merge pull request #261
7657420 Add tests for adding P+Q with P.x!=Q.x and P.y=-Q.y
8c5d5f7 tests: Add failing unit test for #257 (bad addition formula)
5de4c5d gej_add_ge: fix degenerate case when computing P + (-lambda)P
bcf2fcf gej_add_ge: rearrange algebra
e2a07c7 Fix compilation with C++
873a453 Merge pull request #250
91eb0da Merge pull request #247
210ffed Use separate in and out pointers in `secp256k1_ec_pubkey_decompress`
a1d5ae1 Tiny optimization
729badf Merge pull request #210
2d5a186 Apply effective-affine trick to precomp
4f9791a Effective affine addition in EC multiplication
2b4cf41 Use pkg-config always when possible, with failover to manual checks for libcrypto

git-subtree-dir: src/secp256k1
git-subtree-split: 2bfb82b10edf0f0b0e366a12f94c8b21a914159d
2015-11-13 00:12:43 +01:00
Pieter Wuille 9e475d5a4d Update libsecp256k1 2015-11-13 00:12:43 +01:00
Jeff Garzik 38ed190eef
Merge #6771 from branch 'lowerLimits' of git://github.com/morcos/bitcoin 2015-11-12 15:38:59 -05:00
MarcoFalke b27e81f115 [net] Cleanup maxuploadtarget
* log: nMaxOutboundLimit is in bytes
* log: Hide misleading -maxuploadtarget=0 warning
* qa : Minor cleanup to maxuploadtarget rpc tests
* net: Use DEFAULT_MAX_UPLOAD_TARGET = 0
2015-11-12 20:45:57 +01:00
Wladimir J. van der Laan bd629d77ed
Merge pull request #6639
58ef0ff doc: update docs for Tor listening (Wladimir J. van der Laan)
68ccdc4 doc: Mention Tor listening in release notes (Wladimir J. van der Laan)
09c1ae1 torcontrol improvements and fixes (Wladimir J. van der Laan)
2f796e5 Better error message if Tor version too old (Peter Todd)
8f4e67f net: Automatically create hidden service, listen on Tor (Wladimir J. van der Laan)
2015-11-12 19:24:59 +01:00
Wladimir J. van der Laan 09c1ae1c01 torcontrol improvements and fixes
- Force AUTHCOOKIE size to be 32 bytes: This provides protection against
  an attack where a process pretends to be Tor and uses the cookie
  authentication method to nab arbitrary files such as the
  wallet
- torcontrol logging
- fix cookie auth
- add HASHEDPASSWORD auth, fix fd leak when fwrite() fails
- better error reporting when cookie file is not ok
- better init/shutdown flow
- stop advertizing service when disconnected from tor control port
- COOKIE->SAFECOOKIE auth
2015-11-12 17:58:15 +01:00
Wladimir J. van der Laan eb6172a8ca
Merge pull request #6918
69d373f Don't wipe the sigcache in TestBlockValidity (Pieter Wuille)
0b9e9dc Evict sigcache entries that are seen in a block (Pieter Wuille)
830e3f3 Make sigcache faster and more efficient (Pieter Wuille)
2015-11-12 17:37:52 +01:00
Alex Morcos 1cf3dd80a6 Add unit test for UpdateCoins 2015-11-12 09:55:12 -05:00
Jonas Schnelli f6d9d5ee75
add (max)uploadtarget infos to getnettotals RPC help 2015-11-12 15:01:30 +01:00
Pieter Wuille 54e8bfec83
Merge pull request #6931
33c90cf Make skipping BIP30 check chain agnostic (Alex Morcos)
06d81ad Skip BIP30 check after BIP34 activation (Alex Morcos)
2015-11-12 14:37:10 +01:00
Jonas Schnelli 773ae4654e
[Qt] add shortcurts for debug-/console-window 2015-11-12 13:54:06 +01:00
Alex Morcos 03c82826f9 Make CCoinsViewTest behave like CCoinsViewDB 2015-11-11 21:19:19 -05:00
Peter Todd 9bd3f035f0
Clarify 'fee' field in fundrawtransaction help text
Previous text could be interpreted as the the _additional_ fee paid by
the result on top of the fee the original version paid, rather than the
correct interpretation: the absolute fee the resulting tx pays.
2015-11-11 13:52:03 -05:00
Wladimir J. van der Laan 2f71b07d5e
Merge pull request #6974
40b77d4 Always allow getheaders from whitelisted peers (Wladimir J. van der Laan)
2015-11-11 18:30:17 +01:00
Jorge Timón 6bc9e4056b Chainparams: Explicit CChainParams arg for miner:
-BitcoinMiner
-CreateNewBlock
-GenerateBitcoins
-ProcessBlockFound
2015-11-11 13:21:17 +01:00
Jorge Timón 598e494587 Chainparams: Explicit CChainParams arg for main (pre miner):
-ProcessNewBlock
-TestBlockValidity
2015-11-11 13:21:17 +01:00
Wladimir J. van der Laan 3ac7060934
Merge pull request #6978
69d0513 build: Use fPIC rather than fPIE for qt objects. (Cory Fields)
17c4d9d build: Split hardening/fPIE options out (Cory Fields)
2015-11-11 12:54:57 +01:00
Wladimir J. van der Laan cb841e7513
Merge pull request #6982
7267843 Globals: Make AcceptBlockHeader static (Fix #6163) (Jorge Timón)
2015-11-11 12:23:33 +01:00
Jorge Timón 7267843745 Globals: Make AcceptBlockHeader static (Fix #6163)
..and at the same time prevent AcceptBlockHeader() from calling global function Params()
2015-11-11 01:33:39 +01:00
Peter Todd 16a2f93629
Fix incorrect locking of mempool during RBF replacement
Previously RemoveStaged() was called without pool.cs held.
2015-11-10 18:00:24 -05:00
Suhas Daftuar 73d904009d Improve RBF replacement criteria
Fix the calculation of conflicting size/conflicting fees.
2015-11-10 14:14:07 -05:00
Peter Todd b272ecfdb3 Reject replacements that add new unconfirmed inputs 2015-11-10 14:14:07 -05:00
Peter Todd fc8c19a07c Prevent low feerate txs from (directly) replacing high feerate txs
Previously all conflicting transactions were evaluated as a whole to
determine if the feerate was being increased. This meant that low
feerate children pulled the feerate down, potentially allowing a high
transaction with a high feerate to be replaced by one with a lower
feerate.
2015-11-10 14:14:07 -05:00
Peter Todd 5891f870d6 Add opt-in full-RBF to mempool
Replaces transactions already in the mempool if a new transaction seen
with a higher fee, specifically both a higher fee per KB and a higher
absolute fee. Children are evaluateed for replacement as well, using the
mempool package tracking to calculate replaced fees/size. Transactions
can opt-out of transaction replacement by setting nSequence >= maxint-1
on all inputs. (which all wallets do already)
2015-11-10 14:14:06 -05:00
Wladimir J. van der Laan de7d4591a7
Merge pull request #6965
77f1f59 Benchmark sanity checks and fork checks in ConnectBlock (Matt Corallo)
2015-11-10 19:18:51 +01:00
Peter Todd 2f796e5fe7 Better error message if Tor version too old 2015-11-10 17:29:56 +01:00
Wladimir J. van der Laan 8f4e67f152 net: Automatically create hidden service, listen on Tor
Starting with Tor version 0.2.7.1 it is possible, through Tor's control socket
API, to create and destroy 'ephemeral' hidden services programmatically.
https://stem.torproject.org/api/control.html#stem.control.Controller.create_ephemeral_hidden_service

This means that if Tor is running (and proper authorization is available),
bitcoin automatically creates a hidden service to listen on, without user
manual configuration. This will positively affect the number of available
.onion nodes.

- When the node is started, connect to Tor through control socket
- Send `ADD_ONION` command
- First time:
    - Make it create a hidden service key
    - Save the key in the data directory for later usage
- Make it redirect port 8333 to the local port 8333 (or whatever port we're listening on).
- Keep control socket connection open for as long node is running. The hidden service will
  (by default) automatically go away when the connection is closed.
2015-11-10 17:29:56 +01:00
Wladimir J. van der Laan b56953e9bb
qt: Periodic translations update 2015-11-10 16:44:53 +01:00
Wladimir J. van der Laan 32d8b1570c
Merge pull request #6940
7ca73dc Improving labels for Sent / Received "Bytes" (Jonathan Cross)
2015-11-10 16:39:12 +01:00
Wladimir J. van der Laan 9fa54a1b0c
Merge pull request #6822
e20d924 [trivial] init: Use defaults MIN_RELAY_TX_FEE & TRANSACTION_MAXFEE (MarcoFalke)
536766c [trivial] New DEFAULT_MIN_RELAY_TX_FEE = 1000 (MarcoFalke)
5f46a7d transaction_tests: Be more strict checking dust (MarcoFalke)
2015-11-10 15:58:00 +01:00
Wladimir J. van der Laan 755b4ba848
Merge pull request #5574
fd55571 wallet: Expose GUI labels in RPC (Luke Dashjr)
2015-11-10 15:48:23 +01:00
Wladimir J. van der Laan 77beab70de
Merge pull request #6163
87cbdb8 Globals: Explicit Consensus::Params arg for main: (Jorge Timón)
2015-11-10 15:32:03 +01:00
Cory Fields 69d0513436 build: Use fPIC rather than fPIE for qt objects.
But only if qt was built with reduced relocations.
2015-11-09 22:50:31 -05:00
Cory Fields 17c4d9d164 build: Split hardening/fPIE options out
This allows for fPIE to be used selectively.
2015-11-09 22:50:31 -05:00
MarcoFalke e20d9245e5 [trivial] init: Use defaults MIN_RELAY_TX_FEE & TRANSACTION_MAXFEE 2015-11-09 21:12:55 +01:00
MarcoFalke 536766c903 [trivial] New DEFAULT_MIN_RELAY_TX_FEE = 1000 2015-11-09 21:00:16 +01:00
MarcoFalke 5f46a7d068 transaction_tests: Be more strict checking dust
* Don't allow off-by-one or more
* Make clear dust is coupled with minRelayTxFee
* Check rounding for odd values
2015-11-09 21:00:16 +01:00
Wladimir J. van der Laan 40b77d450d Always allow getheaders from whitelisted peers
Process `getheaders` messages from whitelisted peers even if we are in
initial block download. Whitelisted peers can always use a node as a
block source.

Also log a debug message when the request is ignored, for
troubleshooting.

Fixes #6971.
2015-11-09 14:28:49 +01:00
Wladimir J. van der Laan f24880b132
Merge pull request #6908
c53d48a BIP70: Chainparams: DRY: Make qt/guiutil.cpp fit BIP70 chain name strings (Jorge Timón)
2015-11-09 14:19:05 +01:00
Wladimir J. van der Laan 6176e9bf3d
Merge pull request #6962
6dd3a44 translations: Don't translate markdown or force English grammar (MarcoFalke)
2015-11-09 12:09:33 +01:00
MarcoFalke 6dd3a44ce2 translations: Don't translate markdown or force English grammar 2015-11-09 11:40:52 +01:00
Wladimir J. van der Laan 2980a18572 Fix crash in validateaddress with -disablewallet
Fix a null pointer dereference in validateaddress with -disablewallet. Also add a regression testcase.
2015-11-09 08:44:19 +01:00
Matt Corallo 77f1f59d12 Benchmark sanity checks and fork checks in ConnectBlock 2015-11-06 15:21:14 -08:00
Wladimir J. van der Laan 4ee149a6db
Merge pull request #6955
e167af2 [doc] Remove excessive white space (MarcoFalke)
e0eeb67 [trivial] clang-format: Set AlignAfterOpenBracket: false (MarcoFalke)
0af8fe4 devtools: Update README.md (MarcoFalke)
2015-11-05 23:39:48 +01:00
MarcoFalke e0eeb672f2 [trivial] clang-format: Set AlignAfterOpenBracket: false 2015-11-05 23:28:02 +01:00
Wladimir J. van der Laan 849a7e6453
Merge pull request #6948
22e7807 Always flush block and undo when switching to new file (Pieter Wuille)
2015-11-05 23:06:34 +01:00
MarcoFalke 513686dd43 [qt] Use maxTxFee instead of 10000000 2015-11-05 19:16:29 +01:00
Wladimir J. van der Laan 3038eb63e8
Merge pull request #6934
d1c3762 Revert "Revert "Enable policy enforcing GetMedianTimePast as the end point of lock-time constraints"" (Gregory Maxwell)
e4e5334 Restore MedianTimePast for locktime. (Gregory Maxwell)
2015-11-05 12:13:04 +01:00
Wladimir J. van der Laan 3694b74fa9
Merge pull request #6887
53238ff Clarify what minrelaytxfee does (MarcoFalke)
abd8b76 [qt] Properly display required fee instead of minTxFee (MarcoFalke)
2015-11-05 12:11:11 +01:00
Pieter Wuille 22e780737d Always flush block and undo when switching to new file
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).
2015-11-05 00:43:49 +01:00
Pieter Wuille f0343e9370 Update LevelDB 2015-11-04 23:46:47 +01:00
Peter Josling e482a7fe6b Fix CCoins serialization documentation
The docs talk about bits 2 and 4 instead of 2 and 3, and bits are being
indexed from both 1 (describing nCode) and 0 (in second example).
Changed to use zero-indexing for all.
2015-11-04 20:15:54 +00:00
Jonathan Cross 7ca73dcf6b Improving labels for Sent / Received "Bytes"
The labels for Sent & Received data in the "Peers" debug panel should not be defined as "Bytes" because the units (B, KB, MB) appear after the number.  I decided to simply use "Sent" and "Received" (rather than "Data Sent" and "Data Received") because we already have translations for the former:
https://www.transifex.com/bitcoin/bitcoin/viewstrings/#ja/qt-translation-011x/47533089?q=sent
https://www.transifex.com/bitcoin/bitcoin/viewstrings/#ja/qt-translation-011x/47533089?q=received

Demo of changes:

Current UI:
    Bytes Sent      12 KB
    Bytes Received  26 MB

With this pull request:
    Sent       12 KB
    Received   26 MB
2015-11-04 20:14:16 +01:00
Jorge Timón c53d48a6b3 BIP70: Chainparams: DRY: Make qt/guiutil.cpp fit BIP70 chain name strings
As a side effect, the qt user will see "test" instead of "testnet"
2015-11-04 14:02:10 +01:00
Wladimir J. van der Laan c702521a85
Merge pull request #6864
268b79e [qt] rpcconsole: Scale monospace font to 95% (MarcoFalke)
28313b8 [qt] Use fixed pitch font for the rpc console (MarcoFalke)
2015-11-04 13:06:14 +01:00
Wladimir J. van der Laan 8a95a18562
Merge pull request #6669
6342a48 Init: Use DEFAULT_TRANSACTION_MINFEE in help message (MarcoFalke)
a9c73a1 [wallet] Add comments for doxygen (MarcoFalke)
6b0e622 [wallet] Refactor to use new MIN_CHANGE (MarcoFalke)
2015-11-04 12:30:50 +01:00
Wladimir J. van der Laan aa03fb35c4
Merge pull request #6927
de0499d Fix ZMQ Notification initialization and shutdown (João Barbosa)
2015-11-04 12:10:46 +01:00
Wladimir J. van der Laan aca0c00ae1
Merge pull request #6905
a6efc01 Bugfix: Omit wallet-related options from -help when wallet is disabled (Luke Dashjr)
5f9260f Bugfix: If genproclimit is omitted to RPC setgenerate, don't change it; also show correct default in getmininginfo (Luke Dashjr)
420a82f Bugfix: Describe dblogsize option correctly (it refers to the wallet database, not memory pool) (Luke Dashjr)
caa3d42 Bugfix: RPC: blockchain: Display correct defaults in help for verifychain method (Luke Dashjr)
2015-11-04 11:45:33 +01:00
João Barbosa de0499d3b8 Fix ZMQ Notification initialization and shutdown
Moves the call Initialize() from init.cpp to CreateWithArguments() and handles the
return value. Moves the call Shutdown() from init.cpp to destructor.
Changes Initialize() and Shutdown() to protected members.
2015-11-04 10:36:00 +00:00
Gregory Maxwell d1c3762ae8 Revert "Revert "Enable policy enforcing GetMedianTimePast as the end point of lock-time constraints""
This reverts commit 8537ecdfc4.
2015-11-03 17:14:09 +00:00
Gregory Maxwell e4e5334ef8 Restore MedianTimePast for locktime.
Revert "Revert "Add rules--presently disabled--for using GetMedianTimePast as endpoint for lock-time calculations""
This reverts commit 40cd32e835.

After careful analysis it was determined that the change was, in fact, safe and several people were suffering
momentary confusion about locktime semantics.
2015-11-03 17:12:36 +00:00
MarcoFalke 268b79ef0c [qt] rpcconsole: Scale monospace font to 95% 2015-11-03 12:34:51 +01:00
MarcoFalke 53238ff0b1 Clarify what minrelaytxfee does 2015-11-03 08:53:37 +01:00
MarcoFalke abd8b768ee [qt] Properly display required fee instead of minTxFee 2015-11-03 08:53:37 +01:00
Alex Morcos 14470f9aa6 ModifyNewCoins saves database lookups
When processing a new transaction, in addition to spending the Coins of its txin's it creates a new Coins for its outputs.  The existing ModifyCoins function will first make sure this Coins does not already exist.  It can not exist due to BIP 30, but because of that the lookup can't be cached and always has to go to the database.  Since we are creating the coins to match the new tx anyway, there is no point in checking if they exist first anyway.  However this should not be used for coinbase tx's in order to preserve the historical behavior of overwriting the two existing duplicate tx pairs.
2015-11-02 21:27:15 -05:00
Alex Morcos 33c90cf197 Make skipping BIP30 check chain agnostic 2015-11-02 20:11:55 -05:00
Alex Morcos 06d81ad516 Skip BIP30 check after BIP34 activation 2015-11-02 20:10:24 -05:00
Wladimir J. van der Laan 8fe30fb4d1
Merge pull request #6928
40cd32e Revert "Add rules--presently disabled--for using GetMedianTimePast as endpoint for lock-time calculations" (Gregory Maxwell)
8537ecd Revert "Enable policy enforcing GetMedianTimePast as the end point of lock-time constraints" (Gregory Maxwell)
2015-11-02 04:44:47 +01:00
Wladimir J. van der Laan a6d0d623fc
Merge pull request #6926
7497e80 tests: Initialize networking on windows (Wladimir J. van der Laan)
2015-11-02 04:29:45 +01:00
Pieter Wuille 69d373ff66 Don't wipe the sigcache in TestBlockValidity 2015-11-02 02:01:45 +01:00
Gregory Maxwell 40cd32e835 Revert "Add rules--presently disabled--for using GetMedianTimePast as endpoint for lock-time calculations"
This reverts commit 9d55050773.

As noted by Luke-Jr, under some conditions this will accept transactions which are invalid by the network
 rules.  This happens when the current block time is head of the median time past and a transaction's
 locktime is in the middle.

This could be addressed by changing the rule to MAX(this_block_time, MTP+offset) but this solution and
 the particular offset used deserve some consideration.
2015-11-01 20:05:18 +00:00
Gregory Maxwell 8537ecdfc4 Revert "Enable policy enforcing GetMedianTimePast as the end point of lock-time constraints"
This reverts commit dea8d21fc6.
2015-11-01 20:05:16 +00:00
Wladimir J. van der Laan 02a95be977
qt: translation update prior to opening 0.12 translations
Also update transifex slug for new version.
2015-11-01 16:11:50 +01:00
Wladimir J. van der Laan 7497e805bd tests: Initialize networking on windows 2015-11-01 11:45:06 +01:00
Pieter Wuille 0b9e9dca4e Evict sigcache entries that are seen in a block 2015-10-31 01:15:11 +01:00
Pieter Wuille 830e3f3d02 Make sigcache faster and more efficient 2015-10-31 01:15:11 +01:00
Wladimir J. van der Laan 48b5b84ee5
Merge pull request #6906
30d9662 Reject invalid pubkeys when reading ckey items from the wallet. (Gregory Maxwell)
2015-10-31 00:39:50 +01:00
Wladimir J. van der Laan d482c0a7b2
Merge pull request #6896
e9e6163 Make -checkmempool=1 not fail through int32 overflow (Pieter Wuille)
2015-10-31 00:38:31 +01:00
Jorge Timón 87cbdb8b41 Globals: Explicit Consensus::Params arg for main:
-CheckBlockIndex
-DisconnectTip
-GetTransaction
-InvalidateBlock
-ProcessGetData
-ReadBlockFromDisk
2015-10-30 14:07:30 +01:00
Luke Dashjr a6efc01908 Bugfix: Omit wallet-related options from -help when wallet is disabled 2015-10-30 00:32:08 +01:00
Gregory Maxwell 30d9662bd7 Reject invalid pubkeys when reading ckey items from the wallet.
This makes the behavior more consistent with key objects and will
 reject some corrupted pubkeys (e.g. zero length).
2015-10-29 18:24:49 +00:00
MarcoFalke 28313b83fc [qt] Use fixed pitch font for the rpc console
Also:
* Preserve white space
* Make fixed font as large as default font
2015-10-29 18:01:39 +01:00
MarcoFalke 6342a4889b Init: Use DEFAULT_TRANSACTION_MINFEE in help message 2015-10-29 16:52:40 +01:00
Wladimir J. van der Laan 725539ea03
Merge pull request #6863
0be387a unittest: fix test for null tx input (Daniel Kraft)
2015-10-29 13:40:33 +01:00
Wladimir J. van der Laan b28c229324
Merge pull request #6899
a83f3c2 Add explicit shared_ptr constructor due to C++11 error (Bob McElrath)
2015-10-29 13:39:56 +01:00
Wladimir J. van der Laan b2ce2c1f0f
Merge pull request #6870
040c0ea Init: Cleanup error and warning strings (MarcoFalke)
6782f58 [trivial] Latest config.guess (MarcoFalke)
bf68191 [trivial] rpcnet: fix typo (MarcoFalke)
95f4291 [trivial] Rewrite help text for feature enabled by default (MarcoFalke)
2015-10-29 13:30:42 +01:00
Bob McElrath a83f3c2426 Add explicit shared_ptr constructor due to C++11 error 2015-10-28 22:25:32 -04:00
MarcoFalke 040c0ea093 Init: Cleanup error and warning strings
Also update doc/translation_strings_policy.md
2015-10-28 22:11:43 +01:00
MarcoFalke a9c73a130e [wallet] Add comments for doxygen 2015-10-28 11:15:48 +01:00
MarcoFalke 6b0e622c25 [wallet] Refactor to use new MIN_CHANGE
* Introduce new constant MIN_CHANGE and use it instead of the
hardcoded "CENT"
* Add test case for MIN_CHANGE
* Introduce new constant for -mintxfee default:
  DEFAULT_TRANSACTION_MINFEE = 1000
2015-10-28 10:52:46 +01:00
Alex Morcos 971a4e6b86 Lower default policy limits
Reduce the default limits on maximum number of transactions and the cumulative size of those transactions in both ancestor and descendant packages to 25 txs and 101kb total size.
2015-10-27 23:59:19 -04:00
Pieter Wuille e9e616323b Make -checkmempool=1 not fail through int32 overflow 2015-10-28 03:07:59 +01:00
Pieter Wuille 8daffe227b
Merge pull request #6891
ad5aae1 constify missing catch cases (Philip Kaufmann)
2015-10-28 02:34:09 +01:00
Pieter Wuille 4764f5db9d
Merge pull request #6892
214de7e [Trivial] ensure minimal header conventions (Philip Kaufmann)
2015-10-28 02:30:31 +01:00
Pieter Wuille e06c14fb59
Merge pull request #6776
ab1f560 Support -checkmempool=N, which runs checks on average once every N transactions (Pieter Wuille)
2015-10-28 02:25:06 +01:00
Pieter Wuille 298e040bca Fix chainstate serialized_size computation 2015-10-28 01:05:32 +01:00
Daniel Kraft 0be387a536 unittest: fix test for null tx input
Update the unittest that is meant to catch a transaction that is invalid
because it has a null input.  The old test failed not because of that
but because it was considered a coinbase with too large script.  This is
already checked with a different test, though.

The new test is *not* a coinbase since it has two inputs, but one of
them is null.  This really checks the corresponding code path in
CheckTransaction.
2015-10-27 20:11:56 +01:00
Philip Kaufmann 214de7e54c [Trivial] ensure minimal header conventions
- ensure header namespaces and end comments are correct
- add missing header end comments
- ensure minimal formatting (add newlines etc.)
2015-10-27 17:44:13 +01:00
Philip Kaufmann ad5aae15b4 constify missing catch cases
- ensure all missing catch cases are constant where possible
2015-10-27 17:39:42 +01:00
Wladimir J. van der Laan 8f3b3cdee4
Merge pull request #6464
2d8c49d Clean up tx prioritization when conflict mined (Casey Rodarmor)
2015-10-27 11:58:35 +01:00
Wladimir J. van der Laan 38369dda32
Merge pull request #6889
0d699fc fix locking issue with new mempool limiting (Jonas Schnelli)
2015-10-27 08:48:12 +01:00
Wladimir J. van der Laan 2b625510d3
Merge pull request #6881
7bbc7c3 Add option for microsecond precision in debug.log (Suhas Daftuar)
2015-10-26 21:04:41 +01:00
Suhas Daftuar 7bbc7c314f Add option for microsecond precision in debug.log 2015-10-26 15:05:37 -04:00
Wladimir J. van der Laan 7939164d89
Merge pull request #6622
17a073a Add RPC test for -maxuploadtarget (Suhas Daftuar)
872fee3 Introduce -maxuploadtarget (Jonas Schnelli)
2015-10-26 17:54:00 +01:00
Wladimir J. van der Laan c8322ff7f7
Merge pull request #6888
143d173 Use BOOST_CHECK_MESSAGE() rather than BOOST_CHECK() in alerts_tests.cpp and initialize strMiscWarning before calling PartitionCheck()." (Eric Lombrozo)
2015-10-26 17:25:19 +01:00
Jonas Schnelli 872fee3fcc
Introduce -maxuploadtarget
* -maxuploadtarget can be set in MiB
* if <limit> - ( time-left-in-24h-cycle / 600 * MAX_BLOCK_SIZE ) has reach, stop serve blocks older than one week and filtered blocks
* no action if limit has reached, no guarantee that the target will not be  surpassed
* add outbound limit informations to rpc getnettotals
2015-10-26 15:37:30 +01:00
Jonas Schnelli 0d699fc821
fix locking issue with new mempool limiting
Current master crashes on OSX with an exception: "boost: mutex lock failed in pthread_mutex_lock: Invalid argument"
2015-10-26 14:58:17 +01:00
Wladimir J. van der Laan ff057f41aa
Merge pull request #6566
dea8d21 Enable policy enforcing GetMedianTimePast as the end point of lock-time constraints (Mark Friedenbach)
9d55050 Add rules--presently disabled--for using GetMedianTimePast as endpoint for lock-time calculations (Mark Friedenbach)
2015-10-26 11:32:46 +01:00
Wladimir J. van der Laan 26f5b34e88
Merge pull request #6877
10e2eae rpc: Add maxmempool and effective min fee to getmempoolinfo (Wladimir J. van der Laan)
2015-10-26 10:07:04 +01:00
Wladimir J. van der Laan 10e2eae35c rpc: Add maxmempool and effective min fee to getmempoolinfo 2015-10-26 09:59:07 +01:00
Eric Lombrozo 143d173969 Use BOOST_CHECK_MESSAGE() rather than BOOST_CHECK() in alerts_tests.cpp and initialize strMiscWarning before calling PartitionCheck()." 2015-10-25 05:47:02 -04:00
dexX7 d425877557
Remove coverage and test related files, when cleaning up
Until now there were quite a few leftovers, and only the coverage
related files in `src/` were cleaned, while the ones in the other dirs
remained. `qa/tmp/` is related to the BitcoinJ tests, and `cache/` is
related to RPC tests.
2015-10-23 22:09:14 +02:00
Mark Friedenbach dea8d21fc6 Enable policy enforcing GetMedianTimePast as the end point of lock-time 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-23 09:02:24 -07:00
Mark Friedenbach 9d55050773 Add rules--presently disabled--for using GetMedianTimePast as endpoint for 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-23 09:02:24 -07:00
Jeff Garzik 46f74379b8
Merge pull request #6873 2015-10-23 09:01:22 -04:00
Wladimir J. van der Laan c719cefc41
Merge pull request #6856
d3b09f6 Do not allow blockfile pruning during reindex. (Alex Morcos)
2015-10-23 14:41:30 +02:00
Wladimir J. van der Laan 2a1090d4f5
Merge pull request #6351
65ef372 Add BIP65 to getblockchaininfo softforks list (Peter Todd)
cde7ab2 Add RPC tests for the CHECKLOCKTIMEVERIFY (BIP65) soft-fork (Peter Todd)
287f54f Add CHECKLOCKTIMEVERIFY (BIP65) soft-fork logic (Peter Todd)
2015-10-23 13:33:13 +02:00
Wladimir J. van der Laan bf7c1958d1
Merge pull request #5936
212bcca Add optional locktime to createrawtransaction (Tom Harding)
2015-10-23 12:47:19 +02:00
Wladimir J. van der Laan 923c5e93a9
Merge pull request #6818
b48da5c script:  Remove magic numbers (David Hill)
2015-10-23 11:50:10 +02:00
Wladimir J. van der Laan b2b173acab
Merge pull request #6867
a4e28b3 Set TCP_NODELAY on P2P sockets. (Gregory Maxwell)
2015-10-23 09:29:49 +02:00
MarcoFalke bf681918d7 [trivial] rpcnet: fix typo 2015-10-23 08:35:05 +02:00
Jeff Garzik 3795e8152b leveldbwrapper file rename to dbwrapper.* 2015-10-22 21:33:06 -04:00
Jeff Garzik 8587b23038 leveldbwrapper symbol rename: Remove "Level" from class, etc. names 2015-10-22 21:02:20 -04:00
Jeff Garzik 6ec4b7eb20 leveldbwrapper: Remove unused .Prev(), .SeekToLast() methods
Also, trim trailing whitespace.
2015-10-22 20:49:02 -04:00
Gregory Maxwell a4e28b3d1e Set TCP_NODELAY on P2P sockets.
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.
2015-10-22 17:57:48 +00:00
Wladimir J. van der Laan f2c869aef2
Merge pull request #6848
c6824f8 Add DERSIG transaction test cases (J Ross Nicoll)
2015-10-22 18:02:17 +02:00
Wladimir J. van der Laan 2cd020d054
Merge pull request #6846
3cb56f3 *: alias -h for --help (Daniel Cousens)
2015-10-22 17:53:07 +02:00
Daniel Cousens 3cb56f3778 *: alias -h for --help 2015-10-22 00:07:30 +11:00
Wladimir J. van der Laan 0fbfc5106c
Merge pull request #6859
41db8c4 http: Restrict maximum size of request line + headers (Wladimir J. van der Laan)
2015-10-21 11:19:25 +02:00
Wladimir J. van der Laan 3b20e239c6
Merge pull request #6722
58254aa Fix stale comment in CTxMemPool::TrimToSize. (Matt Corallo)
2bc5018 Fix comment formatting tabs (Matt Corallo)
8abe0f5 Undo GetMinFee-requires-extra-call-to-hit-0 (Matt Corallo)
9e93640 Drop minRelayTxFee to 1000 (Matt Corallo)
074cb15 Add reasonable test case for mempool trimming (Matt Corallo)
d355cf4 Only call TrimToSize once per reorg/blocks disconnect (Matt Corallo)
794a8ce Implement on-the-fly mempool size limitation. (Matt Corallo)
e6c7b36 Print mempool size in KB when adding txn (Matt Corallo)
241d607 Add CFeeRate += operator (Matt Corallo)
e8bcdce Track (and define) ::minRelayTxFee in CTxMemPool (Matt Corallo)
9c9b66f Fix calling mempool directly, instead of pool, in ATMP (Matt Corallo)
49b6fd5 Add Mempool Expire function to remove old transactions (Pieter Wuille)
78b82f4 Reverse the sort on the mempool's feerate index (Suhas Daftuar)
2015-10-21 08:50:16 +02:00
Pieter Wuille ab1f56072a Support -checkmempool=N, which runs checks on average once every N transactions 2015-10-20 18:59:08 +02:00
Wladimir J. van der Laan e26a3f6713
Merge pull request #6235
55a8975 Chainparams: Translations: DRY: options and error strings (Jorge Timón)
f3525e2 Chainparams: Replace CBaseChainParams::Network enum with string constants (suggested by Wladimir) (Jorge Timón)
2015-10-20 17:06:28 +02:00
Wladimir J. van der Laan 41db8c4733 http: Restrict maximum size of request line + headers
Prevent memory exhaustion by sending lots of data.
Also add a test to `httpbasics.py`.

Closes #6425
2015-10-20 14:31:40 +02:00
Jorge Timón 55a89751fa Chainparams: Translations: DRY: options and error strings
Also remove SelectBaseParamsFromCommandLine and SelectParamsFromCommandLine
2015-10-20 14:28:43 +02:00
Jorge Timón f3525e24e3 Chainparams: Replace CBaseChainParams::Network enum with string constants (suggested by Wladimir) 2015-10-20 14:22:44 +02:00
Wladimir J. van der Laan c834f56869
Merge pull request #6853
7801f43 Added fPowNoRetargeting field to Consensus::Params that disables nBits recalculation. (Eric Lombrozo)
2015-10-20 12:07:44 +02:00
Wladimir J. van der Laan 488f8517a1
Merge pull request #6829
53b86d0 doc: add comment explaining initial header request (Daniel Kraft)
2015-10-20 12:06:44 +02:00
Alex Morcos d3b09f6bac Do not allow blockfile pruning during reindex.
Also clarify startup message.
2015-10-19 14:43:04 -04:00
Eric Lombrozo 7801f4387d Added fPowNoRetargeting field to Consensus::Params that disables nBits recalculation. 2015-10-19 14:25:21 -04:00
Matt Corallo 58254aa3bc Fix stale comment in CTxMemPool::TrimToSize. 2015-10-19 02:41:52 -07:00
J Ross Nicoll c6824f8a90 Add DERSIG transaction test cases
Add test cases for DERSIG flag enforcement against transactions.
2015-10-18 17:27:41 +01:00
David Hill b48da5c189 script: Remove magic numbers
This adds two new constants, MAX_OPS_PER_SCRIPT and
MAX_PUBKEYS_PER_MULTISIG.
2015-10-15 09:48:15 -04:00
Wladimir J. van der Laan d78a880900
Merge pull request #6820
60af755 build: univalue subdir build fixups (Cory Fields)
2015-10-15 12:55:25 +02:00
Matt Corallo 2bc50187ee Fix comment formatting tabs 2015-10-14 12:46:20 -07:00
Matt Corallo 8abe0f5658 Undo GetMinFee-requires-extra-call-to-hit-0 2015-10-14 12:44:18 -07:00
Daniel Kraft 53b86d0de5 doc: add comment explaining initial header request
Add a comment that explains why the initial "getheader" requests are
made starting from the block preceding the currently best one.

Thanks to sdaftuar for the explanation!
2015-10-14 20:42:49 +02:00
Daniel Kraft f8f2aceadd trivial: use constants for db keys
Replace literal occurances of the key "prefixes" 'c' and 'b' in txdb.cpp
by the respective constants.
2015-10-13 20:25:57 +02:00
Cory Fields 60af755e56 build: univalue subdir build fixups
- Force a rebuild if the headers change
- Only build the lib target
- Clean univalue on 'make clean'
2015-10-13 13:40:49 -04:00
Wladimir J. van der Laan 9caaf6ed22
Merge pull request #6777
dcd8e27 Refer to obfuscate_key via pointer in peripheral CLevelDB classes (James O'Beirne)
1488506 Add tests for gettxoutsetinfo, CLevelDBBatch, CLevelDBIterator (James O'Beirne)
0fdf8c8 Handle obfuscation in CLevelDBIterator (James O'Beirne)
3499ce1 Encapsulate CLevelDB iterators cleanly (Pieter Wuille)
2015-10-13 12:23:45 +02:00
Wladimir J. van der Laan 01f74999e3
Merge pull request #6798
700f52e Clarification of unit test build instructions. (Eric Lombrozo)
2015-10-13 11:35:24 +02:00
Wladimir J. van der Laan 97bee37d4c
Merge pull request #6788
3b1279f build: match upstream build change (Cory Fields)
313e7f5 Squashed 'src/univalue/' changes from 87d9045..5839ac3 (MarcoFalke)
2015-10-13 10:54:31 +02:00
Matt Corallo 9e93640be6 Drop minRelayTxFee to 1000
There is no exact science to setting this parameter, but 5000
(just over 1 US cent at the time of writing) is higher than the
cost to relay a transaction around the network (the new benchmark
due to mempool limiting).
2015-10-13 01:39:38 -07:00
Matt Corallo 074cb155c2 Add reasonable test case for mempool trimming 2015-10-13 01:39:38 -07:00
Matt Corallo d355cf4420 Only call TrimToSize once per reorg/blocks disconnect 2015-10-13 01:39:38 -07:00
Matt Corallo 794a8cec5d Implement on-the-fly mempool size limitation.
After each transaction which is added to mempool, we first call
Expire() to remove old transactions, then throwing away the
lowest-feerate transactions.

After throwing away transactions by feerate, we set the minimum
relay fee to the maximum fee transaction-and-dependant-set we
removed, plus the default minimum relay fee.

After the next block is received, the minimum relay fee is allowed
to decrease exponentially. Its halflife defaults to 12 hours, but
is decreased to 6 hours if the mempool is smaller than half its
maximum size, and 3 hours if the mempool is smaller than a quarter
its maximum size.

The minimum -maxmempool size is 40*-limitdescendantsize, as it is
easy for an attacker to play games with the cheapest
-limitdescendantsize transactions. -maxmempool defaults to 300MB.

This disables high-priority transaction relay when the min relay
fee adjustment is >0 (ie when the mempool is full). When the relay
fee adjustment drops below the default minimum relay fee / 2 it is
set to 0 (re-enabling priority-based free relay).
2015-10-13 01:39:27 -07:00
Matt Corallo e6c7b362ab Print mempool size in KB when adding txn 2015-10-13 01:05:43 -07:00
Matt Corallo 241d6078ba Add CFeeRate += operator 2015-10-13 01:04:39 -07:00
Matt Corallo e8bcdce8a2 Track (and define) ::minRelayTxFee in CTxMemPool 2015-10-13 01:00:19 -07:00
Matt Corallo 9c9b66f771 Fix calling mempool directly, instead of pool, in ATMP 2015-10-13 00:44:03 -07:00
Pieter Wuille 49b6fd5663 Add Mempool Expire function to remove old transactions
(note the 9x multiplier on (void*)'s for CTxMemPool::DynamicMemoryUsage
 was accidentally introduced in 5add7a7 but should have waited for this
 commit which adds the extra index)
2015-10-13 00:44:03 -07:00
Suhas Daftuar 78b82f4a16 Reverse the sort on the mempool's feerate index 2015-10-13 00:44:03 -07:00
Wladimir J. van der Laan 4e2efb3c5f tests: update transaction_tests for new dust threshold 2015-10-10 14:49:38 +02:00
Eric Lombrozo 700f52e0f6 Clarification of unit test build instructions. 2015-10-10 06:46:35 -04:00
James O'Beirne dcd8e27c65 Refer to obfuscate_key via pointer in peripheral CLevelDB classes
cc @sipa
2015-10-09 10:56:48 -07:00
James O'Beirne 1488506872 Add tests for gettxoutsetinfo, CLevelDBBatch, CLevelDBIterator
Thanks @dexX7.
2015-10-09 10:56:39 -07:00
Wladimir J. van der Laan 28e3249e53 Bump minrelaytxfee default
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.
2015-10-09 19:36:32 +02:00
Cory Fields 3b1279fdb2 build: match upstream build change 2015-10-09 11:38:05 +02:00
MarcoFalke 31f4ba97b7 Merge commit '313e7f5c89d6e72e06efe9255089765b4c5815fe' into HEAD 2015-10-09 11:37:00 +02:00
Wladimir J. van der Laan 6cf73b0cd4
Merge pull request #6779
b22692c build: Make use of ZMQ_CFLAGS (Cory Fields)
2015-10-09 10:26:48 +02:00
Wladimir J. van der Laan a99b6cb19e
Merge pull request #6770
b2af29b Ignore bench_bitcoin binary. (Pavel Janík)
2015-10-09 10:15:48 +02:00
James O'Beirne 0fdf8c80ee Handle obfuscation in CLevelDBIterator 2015-10-08 09:32:27 -07:00
Pieter Wuille 3499ce1e1a Encapsulate CLevelDB iterators cleanly
Conflicts:
	src/leveldb.cpp
	src/leveldb.h
	src/txdb.cpp
2015-10-08 09:32:27 -07:00
Peter Todd 65ef372302
Add BIP65 to getblockchaininfo softforks list 2015-10-08 17:37:10 +02:00
Peter Todd 287f54fc90 Add CHECKLOCKTIMEVERIFY (BIP65) soft-fork logic
Based on the earlier BIP66 soft-fork logic implemented by Pieter
Wuille's 5a47811da5
2015-10-08 17:23:22 +02:00
Cory Fields b22692ce3e build: Make use of ZMQ_CFLAGS 2015-10-08 00:00:55 -04:00
Wladimir J. van der Laan d479311dba
Merge pull request #6720
1534d9a Creates unittests for addrman, makes addrman testable. Adds several unittests for addrman to verify it works as expected. Makes small modifications to addrman to allow deterministic and targeted tests. (EthanHeilman)
2015-10-07 14:59:58 +02:00
Wladimir J. van der Laan 49dd5c629d
Merge pull request #6769
b196b68 Test LowS in standardness, removes nuisance malleability vector. (Gregory Maxwell)
2015-10-07 10:58:37 +02:00
Wladimir J. van der Laan 4fac576c61
Merge pull request #6650
42cb388 Add chainstate obfuscation to avoid spurious antivirus detection (James O'Beirne)
2015-10-06 17:50:46 +02:00
Pavel Janík b2af29b806 Ignore bench_bitcoin binary. 2015-10-06 17:46:12 +02:00
James O'Beirne 42cb388167 Add chainstate obfuscation to avoid spurious antivirus detection
Adds an `obfuscate` parameter to `CLevelDBWrapper` and makes use of it
for all new chainstate stores built via `CCoinsViewDB`. Also adds an
`Xor` method to `CDataStream`.

Thanks to @sipa @laanwj @pstratem @dexX7 @KyrosKrane @gmaxwell.
2015-10-06 07:46:10 -07:00
Wladimir J. van der Laan b7d78fd0bd
Merge pull request #6733
7072c54 Support very-fast-running benchmarks (Gavin Andresen)
535ed92 Simple benchmarking framework (Gavin Andresen)
2015-10-06 16:34:23 +02:00
Wladimir J. van der Laan 3b2d37c619
Merge pull request #6742
58981d4 Changed logging to make -logtimestamps to work also for -printtoconsole (Arne Brutschy)
2015-10-06 09:59:19 +02:00
Gregory Maxwell b196b685c9 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 a81cd96805:
 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
2015-10-06 03:50:38 +00:00
Philip Kaufmann e8600c924d banlist (bugfix): allow CNode::SweepBanned() to run on interval
- allows CNode::SweepBanned() to run, even if !CNode::BannedSetIsDirty(),
  because if nBanUntil is over we want the ban to be disabled for these
  nodes
2015-10-02 11:38:16 +02:00
Philip Kaufmann 2977c243ef banlist: add more banlist infos to log / add GUI signal
- to match the peers.dat handling also supply a debug.log entry for how
  many entries were loaded from banlist.dat and how long it took
- add a GUI init message for loading the banlist (same as with peers.dat)

- move the same message for peers.dat upwards in the code, to be able to
  reuse the timing variable nStart and also just log, if our read from
  peers.dat didn't fail
2015-10-02 11:38:16 +02:00
Philip Kaufmann ce479aaada banlist: better handling of banlist in StartNode()
- only start working on/with banlist data, if reading in the banlist from
  disk didn't fail
- as CNode::setBannedIsDirty is false (default) when reading fails, we
  don't need to explicitly set it to false to prevent writing
  banlist.dat in that case either
2015-10-02 11:38:15 +02:00
Philip Kaufmann 57c77fe4d3 banlist: update set dirty to be more fine grained
- move the SetBannedSetDirty(false) call from DumpData() into DumpBanlist()
- ensure we only set false, if the write succeeded
2015-10-02 11:38:14 +02:00
Luke Dashjr fd55571f06 wallet: Expose GUI labels in RPC 2015-10-02 00:21:38 +00:00
Luke Dashjr 5f9260f458 Bugfix: If genproclimit is omitted to RPC setgenerate, don't change it; also show correct default in getmininginfo 2015-10-01 23:16:42 +00:00
Luke Dashjr 420a82f1ae Bugfix: Describe dblogsize option correctly (it refers to the wallet database, not memory pool) 2015-10-01 23:16:42 +00:00
Luke Dashjr caa3d42f06 Bugfix: RPC: blockchain: Display correct defaults in help for verifychain method 2015-10-01 23:16:42 +00:00
Peter Todd da894ab5da Accept any sequence of PUSHDATAs in OP_RETURN outputs
Previously only one PUSHDATA was allowed, needlessly limiting
applications such as matching OP_RETURN contents with bloom filters that
operate on a per-PUSHDATA level. Now any combination that passes
IsPushOnly() is allowed, so long as the total size of the scriptPubKey
is less than 42 bytes. (unchanged modulo non-minimal PUSHDATA encodings)

Also, this fixes the odd bug where previously the PUSHDATA could be
replaced by any single opcode, even sigops consuming opcodes such as
CHECKMULTISIG. (20 sigops!)
2015-10-01 18:28:13 +02:00
Peter Todd 5d8709c3b7 Add IsPushOnly(const_iterator pc)
Allows IsPushOnly() to be applied to just part of the script for
OP_RETURN outputs.
2015-10-01 18:28:11 +02:00
Peter Todd 6a07eb676a Make TX_SCRIPTHASH clear vSolutionsRet first
Previously unlike other transaction types the TX_SCRIPTHASH would not
clear vSolutionsRet, which means that unlike other transaction types if
it was called twice in a row you would get the result of the previous
invocation as well.
2015-10-01 18:27:22 +02:00
Wladimir J. van der Laan f297042cae
Merge pull request #6637
95acf3c remove $(@F) and subdirs from univalue make (Jonas Schnelli)
9623e93 [Univalue] add univalue over subtree (Jonas Schnelli)
2f9f082 Squashed 'src/univalue/' content from commit 87d9045 (Jonas Schnelli)
0917306 remove univalue, prepare for subtree (Jonas Schnelli)
2015-10-01 16:36:15 +02:00
Jonas Schnelli 95acf3cc6d remove $(@F) and subdirs from univalue make 2015-10-01 14:28:44 +02:00
Wladimir J. van der Laan 4899a04c24
Merge pull request #5987
e761d7a Bugfix: Allow mining on top of old tip blocks for testnet (fixes testnet-in-a-box use case) (Luke Dashjr)
2015-10-01 14:11:56 +02:00
Jeff Garzik cf9bb11f97
Merge pull request #6588 2015-10-01 05:58:51 -04:00
Wladimir J. van der Laan 12a7712abd
Merge pull request #5924
835c122 Clean up change computation in CreateTransaction. (Daniel Kraft)
2015-10-01 11:20:08 +02:00
Jonas Schnelli 9623e93473 [Univalue] add univalue over subtree
similar to secp256k1 include and compile univalue over a subtree
2015-10-01 10:49:57 +02:00
Jonas Schnelli 6e16a41313 Merge commit '2f9f082b5ef3c495c70598ef23383effef675f9a' as 'src/univalue' 2015-10-01 10:37:19 +02:00
Jonas Schnelli 0917306fdf remove univalue, prepare for subtree 2015-10-01 10:36:50 +02:00
Arne Brutschy 58981d4f7d Changed logging to make -logtimestamps to work also for -printtoconsole 2015-09-30 17:57:28 +02:00
Gavin Andresen 7072c544b5
Support very-fast-running benchmarks
Avoid calling gettimeofday every time through the benchmarking loop, by keeping
track of how long each loop takes and doubling the number of iterations done
between time checks when they take less than 1/16'th of the total elapsed time.
2015-09-30 09:24:42 -04:00
Gavin Andresen 535ed9223d
Simple benchmarking framework
Benchmarking framework, loosely based on google's micro-benchmarking
library (https://github.com/google/benchmark)

Wny not use the Google Benchmark framework? Because adding Even More Dependencies
isn't worth it. If we get a dozen or three benchmarks and need nanosecond-accurate
timings of threaded code then switching to the full-blown Google Benchmark library
should be considered.

The benchmark framework is hard-coded to run each benchmark for one wall-clock second,
and then spits out .csv-format timing information to stdout. It is left as an
exercise for later (or maybe never) to add command-line arguments to specify which
benchmark(s) to run, how long to run them for, how to format results, etc etc etc.
Again, see the Google Benchmark framework for where that might end up.

See src/bench/MilliSleep.cpp for a sanity-test benchmark that just benchmarks
'sleep 100 milliseconds.'

To compile and run benchmarks:
  cd src; make bench

Sample output:

Benchmark,count,min,max,average
Sleep100ms,10,0.101854,0.105059,0.103881
2015-09-30 09:24:42 -04:00
Wladimir J. van der Laan 4f44530bc3
Merge pull request #6680
d76a8ac use CBlockIndex* insted of uint256 for UpdatedBlockTip signal (Jonas Schnelli)
2015-09-30 11:08:30 +02:00
Wladimir J. van der Laan f6ce59cd3c
Merge pull request #6713
43edd51 SanitizeString: Allow hypen char (MarcoFalke)
2015-09-30 00:23:26 +02:00
Luke Dashjr e761d7a94f Bugfix: Allow mining on top of old tip blocks for testnet (fixes testnet-in-a-box use case) 2015-09-29 19:46:34 +00:00
Wladimir J. van der Laan cb4d6d0569
Merge pull request #6730
a5b78c2 build: Remove dependency of bitcoin-cli on secp256k1 (Wladimir J. van der Laan)
2015-09-29 14:17:21 +02:00
Wladimir J. van der Laan a91eea6e3e
qt: periodic translations update 2015-09-29 13:36:33 +02:00
Wladimir J. van der Laan 2b0567b002
Merge pull request #6728
9fea833 timedata: Prevent warning overkill (Wladimir J. van der Laan)
2015-09-29 08:44:15 +02:00
Wladimir J. van der Laan ec908d5f7a http: Force-exit event loop after predefined time
This makes sure that the event loop eventually terminates, even if an
event (like an open timeout, or a hanging connection) happens to be
holding it up.
2015-09-28 15:06:20 +02:00
Wladimir J. van der Laan de9de2de36 http: Wait for worker threads to exit
Add a WaitExit() call to http's WorkQueue to make it delete the work
queue only when all worker threads stopped.

This fixes a problem that was reproducable by pressing Ctrl-C during
AppInit2:
```
/usr/include/boost/thread/pthread/condition_variable_fwd.hpp:81: boost::condition_variable::~condition_variable(): Assertion `!ret' failed.
/usr/include/boost/thread/pthread/mutex.hpp:108: boost::mutex::~mutex(): Assertion `!posix::pthread_mutex_destroy(&m)' failed.
```

I was assuming that `threadGroup->join_all();` would always have been
called when entering the Shutdown(). However this is not the case in
bitcoind's AppInit2-non-zero-exit case "was left out intentionally
here".
2015-09-28 15:06:20 +02:00
Wladimir J. van der Laan 5e0c221356 Make HTTP server shutdown more graceful
Shutting down the HTTP server currently breaks off all current requests.
This can create a race condition with RPC `stop` command, where the calling
process never receives confirmation.

This change removes the listening sockets on shutdown so that no new
requests can come in, but no longer breaks off requests in progress.

Meant to fix #6717.
2015-09-28 15:06:20 +02:00
Wladimir J. van der Laan a5b78c2fa8 build: Remove dependency of bitcoin-cli on secp256k1
bitcoin-cli (in contrast to bitcoin-tx, which does signing ops)
shouldn't need secp256k1, and indeed it doesn't.
2015-09-28 10:36:33 +02:00
Wladimir J. van der Laan 9fea833a12 timedata: Prevent warning overkill
The "please check your computer's data and time" message when the clock
deviates from the network currently generates an overkill of messages:

    orion@lethe:~/bitcoin$ src/bitcoind
    Warning: Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly.

In the log:

    2015-09-27 16:24:13 *** Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly.
    2015-09-27 16:24:13 Warning: Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly.

Remove one level of 'Warning:' and reduce to one log message.
2015-09-27 16:40:16 +02:00
Wladimir J. van der Laan 48efbdbe98
Merge pull request #5264
af3208b Resolve issue 3166. These changes decode valid SIGHASH types on signatures in assembly (asm) representations of scriptSig scripts. This squashed commit incorporates substantial helpful feedback from jtimon, laanwj, and sipa. (mruddy)
2015-09-25 19:19:07 +02:00
EthanHeilman 1534d9a83c Creates unittests for addrman, makes addrman testable.
Adds several unittests for addrman to verify it works as expected.
Makes small modifications to addrman to allow deterministic and targeted tests.
2015-09-24 15:20:48 -04:00
Wladimir J. van der Laan 34dc03d8e0
Merge pull request #6664
51ff777 [trivial] Fix rpc message "help generate" (MarcoFalke)
4c3cab1 [trivial] init cleanup (MarcoFalke)
2015-09-24 18:21:18 +02:00
Wladimir J. van der Laan 82d2aef7b3
Merge pull request #6715
60de0d5 Fix mempool package tracking edge case (Suhas Daftuar)
598b25d Add test showing bug in mempool packages (Suhas Daftuar)
2015-09-24 12:24:41 +02:00
Suhas Daftuar 60de0d5826 Fix mempool package tracking edge case
CalculateMemPoolAncestors was always looping over a transaction's inputs
to find in-mempool parents.  When adding a new transaction, this is the
correct behavior, but when removing a transaction, we want to use the
ancestor set that would be calculated by walking mapLinks (which should
in general be the same set, except during a reorg when the mempool is
in an inconsistent state, and the mapLinks-based calculation would be the
correct one).
2015-09-23 15:30:41 -04:00
Wladimir J. van der Laan 5b77244c60
Merge pull request #6550
3b33ec8 Avoid duplicate CheckBlock checks (Pieter Wuille)
391dff1 Do not store Merkle branches in the wallet. (Pieter Wuille)
2015-09-23 19:37:51 +02:00
Wladimir J. van der Laan e04b2fa9ba
Merge pull request #6653
4dee609 Rename rpcconsole.ui => debugwindow.ui (MarcoFalke)
0d0a2d6 [Qt] Raise debug window when requested (MarcoFalke)
2015-09-23 17:45:10 +02:00
Wladimir J. van der Laan 4dbd43ed0a
Merge pull request #6645
77c6072 Enable wallet key imports without rescan in pruned mode. (Gregory Maxwell)
2015-09-23 17:02:04 +02:00
Wladimir J. van der Laan 4939eabb75
Merge pull request #6688
131c23d Fix locking in GetTransaction. (Alex Morcos)
2015-09-23 16:53:40 +02:00
Wladimir J. van der Laan 999c8be81a
Merge pull request #6148
ae6f957 Enable block relay when pruning (Suhas Daftuar)
0da6ae2 Do not inv old or missing blocks when pruning (Suhas Daftuar)
2015-09-23 14:04:08 +02:00
MarcoFalke 43edd515e5 SanitizeString: Allow hypen char 2015-09-23 12:06:00 +02:00
Wladimir J. van der Laan 6264e5b378
Merge pull request #6646
6ecaec3 [Trivial] [logging] Rm extraneous cleansubver in serveral debug messages. (Gregory Maxwell)
2015-09-23 12:05:05 +02:00
MarcoFalke 4dee609e10 Rename rpcconsole.ui => debugwindow.ui 2015-09-23 10:27:39 +02:00
MarcoFalke 0d0a2d6bf9 [Qt] Raise debug window when requested
* 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-09-23 10:27:39 +02:00
Pieter Wuille 3b33ec85ed Avoid duplicate CheckBlock checks 2015-09-22 18:51:08 +02:00
Pieter Wuille 391dff16fe Do not store Merkle branches in the wallet.
Assume that when a wallet transaction has a valid block hash and transaction position
in it, the transaction is actually there. We're already trusting wallet data in a
much more fundamental way anyway.

To prevent backward compatibility issues, a new record is used for storing the
block locator in the wallet. Old wallets will see a wallet file synchronized up
to the genesis block, and rescan automatically.
2015-09-22 18:51:07 +02:00
Wladimir J. van der Laan e59d2a80f9
Merge pull request #6315
7aac6db [QT] dump banlist to disk in case of ban/unban over QT (Jonas Schnelli)
7f90ea7 [QA] adabt QT_NO_KEYWORDS for QT ban implementation (Jonas Schnelli)
07f70b2 [QA] fix netbase tests because of new CSubNet::ToString() output (Jonas Schnelli)
4ed0510 [Qt] call DumpBanlist() when baning unbaning nodes (Philip Kaufmann)
be89292 [Qt] reenabling hotkeys for ban context menu, use different words (Jonas Schnelli)
b1189cf [Qt] adapt QT ban option to banlist.dat changes (Jonas Schnelli)
65abe91 [Qt] add sorting for bantable (Philip Kaufmann)
51654de [Qt] bantable polish (Philip Kaufmann)
cdd72cd [Qt] simplify ban list signal handling (Philip Kaufmann)
43c1f5b [Qt] remove unused timer-code from banlistmodel.cpp (Jonas Schnelli)
e2b8028 net: Fix CIDR notation in ToString() (Wladimir J. van der Laan)
9e521c1 [Qt] polish ban table (Philip Kaufmann)
607809f net: use CIDR notation in CSubNet::ToString() (Jonas Schnelli)
53caec6 [Qt] bantable overhaul (Jonas Schnelli)
f0bcbc4 [Qt] bantable fix timestamp 64bit issue (Jonas Schnelli)
6135309 [Qt] banlist, UI optimizing and better signal handling (Jonas Schnelli)
770ca79 [Qt] add context menu with unban option to ban table (Jonas Schnelli)
5f42132 [Qt] add ui signal for banlist changes (Jonas Schnelli)
ad204df [Qt] add banlist table below peers table (Jonas Schnelli)
50f0908 [Qt] add ban functions to peers window (Jonas Schnelli)
2015-09-22 13:39:38 +02:00
Wladimir J. van der Laan a3babc826d
Merge pull request #6647
1c1b1b3 [uacomment] Sanitize per BIP-0014 (MarcoFalke)
2015-09-22 11:36:50 +02:00
Wladimir J. van der Laan d3b0d8c0e6
Merge pull request #6694
24cb7c7 [QT] fix thin space word wrap line brake issue (Jonas Schnelli)
2015-09-22 10:48:06 +02:00
Diego Viola 99ee4a656b Fix spelling of Qt 2015-09-22 05:00:10 -03:00
Wladimir J. van der Laan 10fc4fb368
Merge pull request #6668
9b1cdd7 [trivial] Remove obsolete pixmaps (MarcoFalke)
d1acf93 [qt] [trivial] share/qt/make_spinner.py => src/qt/res/movies/makespinner.sh (MarcoFalke)
2015-09-21 18:05:54 +02:00
Wladimir J. van der Laan 5e21388c48
Merge pull request #6695
ddf98d1 Make RPC tests cope with server-side timeout between requests (Wladimir J. van der Laan)
2190ea6 rpc: Split option -rpctimeout into -rpcservertimeout and -rpcclienttimeout (Wladimir J. van der Laan)
8b2d6ed http: Disable libevent debug logging, if not explicitly enabled (Wladimir J. van der Laan)
5ce43da init: Ignore SIGPIPE (Wladimir J. van der Laan)
2015-09-21 17:16:40 +02:00
Wladimir J. van der Laan 2190ea6c4e rpc: Split option -rpctimeout into -rpcservertimeout and -rpcclienttimeout
The two timeouts for the server and client, are essentially different:

- In the case of the server it should be a lower value to avoid clients
clogging up connection slots

- In the case of the client it should be a high value to accomedate slow
  responses from the server, for example for slow queries or when the
  lock is contended

Split the options into `-rpcservertimeout` and `-rpcclienttimeout` with
respective defaults of 30 and 900.
2015-09-21 17:15:36 +02:00
Wladimir J. van der Laan 8b2d6edaa9 http: Disable libevent debug logging, if not explicitly enabled
Add a option "-debug=libevent" to enable libevent debugging for troubleshooting.
Libevent logging is redirected to our own log.
2015-09-21 13:24:34 +02:00
Jonas Schnelli 7aac6db6eb [QT] dump banlist to disk in case of ban/unban over QT 2015-09-20 10:42:35 +02:00
Suhas Daftuar 5add7a74a6 Track transaction packages in CTxMemPoolEntry
Associate with each CTxMemPoolEntry all the size/fees of descendant
mempool transactions.  Sort mempool by max(feerate of entry, feerate
of descendants).  Update statistics on-the-fly as transactions enter
or leave the mempool.

Also add ancestor and descendant limiting, so that transactions can
be rejected if the number or size of unconfirmed ancestors exceeds
a target, or if adding a transaction would cause some other mempool
entry to have too many (or too large) a set of unconfirmed in-
mempool descendants.
2015-09-19 13:25:48 -04:00
Ashley Holman 34628a1807 TxMemPool: Change mapTx to a boost::multi_index_container
Indexes on:
- Tx Hash
- Fee Rate (fee-per-kb)
2015-09-19 13:22:40 -04:00
Wladimir J. van der Laan 5ce43da03d init: Ignore SIGPIPE
Ignore SIGPIPE on all non-win32 OSes, otherwise an unexpectedly disconnecting
RPC client will terminate the application. This problem was introduced
with the libhttp-based RPC server.

Fixes #6660.
2015-09-18 15:38:52 +02:00
Jonas Schnelli 24cb7c7bbb [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)
2015-09-18 13:52:36 +02:00
Alex Morcos 131c23d027 Fix locking in GetTransaction.
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-09-17 20:26:28 -04:00
Jonas Schnelli d76a8acb9b use CBlockIndex* insted of uint256 for UpdatedBlockTip signal
- removes mapBlockIndex find operation
- theoretically allows removing the cs_main lock during zqm notification while introducing a new file position lock
2015-09-16 16:51:21 +02:00
Jonas Schnelli 7f90ea78cb [QA] adabt QT_NO_KEYWORDS for QT ban implementation 2015-09-16 16:50:20 +02:00
Jonas Schnelli 07f70b2dde [QA] fix netbase tests because of new CSubNet::ToString() output 2015-09-16 16:50:20 +02:00
Philip Kaufmann 4ed05101f3 [Qt] call DumpBanlist() when baning unbaning nodes
- this matches RPC call behaviour
2015-09-16 16:50:20 +02:00
Jonas Schnelli be8929265f [Qt] reenabling hotkeys for ban context menu, use different words
- 1 (h)our
- 1 (d)ay
- 1 (w)eek
- 1 (y)ear
2015-09-16 16:50:20 +02:00
Jonas Schnelli b1189cfa10 [Qt] adapt QT ban option to banlist.dat changes 2015-09-16 16:50:20 +02:00
Philip Kaufmann 65abe91ce4 [Qt] add sorting for bantable 2015-09-16 16:50:19 +02:00
Philip Kaufmann 51654deff2 [Qt] bantable polish
- add missing NULL pointer checks
- add better comments and reorder some code in rpcconsole.cpp
- remove unneeded leftovers in bantable.cpp
- update bantable column sizes to prevent cutting of banned until
2015-09-16 16:50:19 +02:00
Philip Kaufmann cdd72cd5fb [Qt] simplify ban list signal handling
- remove banListChanged signal from client model
- directly call clientModel->getBanTableModel()->refresh() without the way
  over clientModel->updateBanlist()

- also fix clearing peer detail window, when selecting (clicking)
  peers in the ban list
2015-09-16 16:50:19 +02:00
Jonas Schnelli 43c1f5b8d7 [Qt] remove unused timer-code from banlistmodel.cpp 2015-09-16 16:50:19 +02:00
Wladimir J. van der Laan e2b8028e4c net: Fix CIDR notation in ToString()
Only use CIDR notation if the netmask can be represented as such.
2015-09-16 16:50:19 +02:00
Philip Kaufmann 9e521c1735 [Qt] polish ban table 2015-09-16 16:50:19 +02:00
Jonas Schnelli 607809f037 net: use CIDR notation in CSubNet::ToString() 2015-09-16 16:50:19 +02:00
Jonas Schnelli 53caec66cc [Qt] bantable overhaul
- some code cleanups
- fix date formatting
- reduce header includes
2015-09-16 16:50:19 +02:00
Jonas Schnelli f0bcbc4c8a [Qt] bantable fix timestamp 64bit issue 2015-09-16 16:50:19 +02:00
Jonas Schnelli 6135309816 [Qt] banlist, UI optimizing and better signal handling 2015-09-16 16:50:19 +02:00
Jonas Schnelli 770ca79aa0 [Qt] add context menu with unban option to ban table 2015-09-16 16:50:19 +02:00
Jonas Schnelli 5f42132950 [Qt] add ui signal for banlist changes 2015-09-16 16:50:19 +02:00
Jonas Schnelli ad204df1a9 [Qt] add banlist table below peers table 2015-09-16 16:50:19 +02:00
Jonas Schnelli 50f090884c [Qt] add ban functions to peers window
add ban option for peer context menu (1h, 24h, 7d, 1y).
2015-09-16 16:50:19 +02:00
Jeff Garzik ca5e2a1864
Merge pull request #6317 2015-09-16 09:40:53 -04:00
MarcoFalke 1c1b1b315f [uacomment] Sanitize per BIP-0014
* SanitizeString() can be requested to be more strict
* Throw error when SanitizeString() changes uacomments
* Fix tests
2015-09-16 15:23:29 +02:00
Jeff Garzik e6a14b64d6 Add ZeroMQ support. Notify blocks and transactions via ZeroMQ
Continues Johnathan Corgan's work.
Publishing multipart messages

Bugfix: Add missing zmq header includes

Bugfix: Adjust build system to link ZeroMQ code for Qt binaries
2015-09-16 11:01:35 +01:00
João Barbosa 5624e055b3 Add UpdatedBlockTip signal to CMainSignals and CValidationInterface 2015-09-16 10:59:32 +01:00
Jeff Garzik 6f55cddf6b
Merge pull request #5665 2015-09-15 12:30:32 -04:00
MarcoFalke d1acf938e6 [qt] [trivial] share/qt/make_spinner.py => src/qt/res/movies/makespinner.sh
* Merge make_spinner.py into makespinner.sh
* Also delete now unused imgs
* Actually use all 36 frames for the spinner animation
2015-09-13 17:57:12 +02:00
MarcoFalke 51ff777357 [trivial] Fix rpc message "help generate" 2015-09-12 18:19:53 +02:00
MarcoFalke 4c3cab14b7 [trivial] init cleanup 2015-09-12 13:28:00 +02:00
Gregory Maxwell 6ecaec395c [Trivial] [logging] Rm extraneous cleansubver in serveral debug messages.
We log the cleanSubVer as part of connect.  It is not uniquely more informative
 than any of the other data we have about a peer, often less.  It's also often
 long now as well.  There is no need to output it as part of mempoolrej,
 AcceptToMemoryPool, or pong entries.  Leaving it out makes our log entries
 more uniform and consistent.
2015-09-08 23:11:10 +00:00
Wladimir J. van der Laan 0c27795140
Merge pull request #6579
afb0cca Add NODE_BLOOM service bit and bump protocol version (Matt Corallo)
2015-09-08 17:10:36 +02:00
Wladimir J. van der Laan 878ea69491
Merge pull request #6594
5ffaaba Disallow duplicate windows. (Casey Rodarmor)
2015-09-08 17:02:00 +02:00
Wladimir J. van der Laan 1d133d9573
Merge pull request #6640
eb3002b [TRIVIAL] Fix typo: exactmath -> exactmatch (paveljanik)
2015-09-08 16:43:26 +02:00
Wladimir J. van der Laan 6f6fb188b5
Merge pull request #6644
7a7e68d Prune the -prune help to reflect that the wallet is no longer disabled. (Gregory Maxwell)
2015-09-08 16:24:08 +02:00
Gregory Maxwell 7a7e68d1e2 Prune the -prune help to reflect that the wallet is no longer disabled.
The wallet hasn't been disabled since 3201035f22.
2015-09-07 18:49:12 +00:00
Daniel Kraft 9cdc3353c5 Simplify logic of REST request suffix parsing.
This patch changes the way the suffix (giving the requested data format) is
parsed for REST requests.  Before, the string was split at '.'
characters and it was assumed that the second part was the suffix.

Now, we look for the last dot and use that to determine the suffix.
This allows for strings that contain dots (not used now, though), and
seems, in general, to be clearer and more intuitive.
2015-09-07 20:38:03 +02:00
Gregory Maxwell 77c6072473 Enable wallet key imports without rescan in pruned mode.
Complete rescan is incompatible with pruning, but rescan is optional on
 our wallet key import RPCs.  Import on use is very useful in some common
 situations in conjunction with pruning, e.g. merchant payment tracking.

This reenables importprivkey/importaddress/importpubkey when rescan
 is not used.

In the future we should consider changing the rescan argument to allow depth
 or date to allow limited rescanning when compatible with the retained
 block depth.
2015-09-07 01:28:32 +00:00
Matt Corallo afb0ccaf9c Add NODE_BLOOM service bit and bump protocol version
Lets nodes advertise that they offer bloom filter support explicitly.
The protocol version bump allows SPV nodes to assume that NODE_BLOOM is
set if NODE_NETWORK is set for pre-70011 nodes.

Also adds an option to turn bloom filter support off for nodes which
advertise a version number >= 70011. Nodes attempting to use bloom
filters on such protocol versions are banned, and a later upgade
should drop nodes of an older version which attempt to use bloom
filters.

Much code stolen from Peter Todd.

Implements BIP 111
2015-09-05 23:29:13 -07:00
Casey Rodarmor 5ffaaba3a1 Disallow duplicate windows. 2015-09-04 15:25:42 -04:00
paveljanik eb3002bb71 [TRIVIAL] Fix typo: exactmath -> exactmatch
... but not yet in trivial tree
2015-09-04 19:22:48 +02:00
Wladimir J. van der Laan 93ff1b9041 net: correctly initialize nMinPingUsecTime
`nMinPingUsecTime` was left uninitialized in CNode.
The correct initialization for a minimum-until-now is int64_t's max value, so initialize it to that.
Thanks @MarcoFalke for noticing.
2015-09-04 16:27:38 +02:00
Wladimir J. van der Laan bbc2b39860
Merge pull request #6633
a6eb4ba Report minimum ping time in getpeerinfo (Matt Corallo)
2015-09-04 15:32:03 +02:00
Wladimir J. van der Laan 9aa90994ee
Merge pull request #5677
d528025 Revert "rpc-tests: re-enable rpc-tests for Windows" (Wladimir J. van der Laan)
1e700c9 doc: update deps in build-unix.md after libevent (Wladimir J. van der Laan)
26c9b83 Move windows socket init to utility function (Wladimir J. van der Laan)
4be0b08 libevent: Windows reuseaddr workaround in depends (Cory Fields)
3a174cd Fix race condition between starting HTTP server thread and setting EventBase() (Wladimir J. van der Laan)
6d2bc22 Document options for new HTTP/RPC server in --help (Wladimir J. van der Laan)
be33f3f Implement RPCTimerHandler for Qt RPC console (Wladimir J. van der Laan)
57d85d9 doc: mention SSL support dropped for RPC in release notes (Wladimir J. van der Laan)
40b556d evhttpd implementation (Wladimir J. van der Laan)
ee2a42b tests: GET requests cannot have request body, use POST in rest.py (Wladimir J. van der Laan)
6e996d3 tests: fix qt payment test (Cory Fields)
3140ef9 build: build-system changes for libevent (Wladimir J. van der Laan)
a9af234 libevent: add depends (Cory Fields)
6a21dd5 Remove rpc_boostasiotocnetaddr test (Wladimir J. van der Laan)
8f9301c qa: Remove -rpckeepalive tests from httpbasics (Wladimir J. van der Laan)
51fcfc0 doc: remove documentation for rpcssl (Wladimir J. van der Laan)
2015-09-04 13:06:32 +02:00
Wladimir J. van der Laan 4b437b227c
Merge pull request #6631
e83df07 Update RPC generate help for numblocks to include required (Ian T)
2015-09-04 10:45:27 +02:00
Matt Corallo a6eb4ba38b Report minimum ping time in getpeerinfo 2015-09-03 13:06:13 -07:00
Wladimir J. van der Laan 195942d58e
Merge pull request #6630
86270c8 Replace boost::reverse_lock with our own. (Casey Rodarmor)
2015-09-03 21:46:08 +02:00
Casey Rodarmor 86270c8164 Replace boost::reverse_lock with our own. 2015-09-03 15:13:40 -04:00
Ian T e83df075f9 Update RPC generate help for numblocks to include required
The `generate` RPC has no default `numblocks` and a numeric value is required.
2015-09-03 13:29:10 -04:00
Tom Harding 9524c4d35c In (strCommand == "tx"), return if AlreadyHave()
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-09-03 10:16:59 -07:00
Wladimir J. van der Laan 69dc5b51a0
Merge pull request #6374
027de94 Use network group instead of CNetAddr in final pass to select node to disconnect (Patrick Strateman)
000c18a Fix comment (Patrick Strateman)
fed3094 Acquire cs_vNodes before changing refrence counts (Patrick Strateman)
69ee1aa CNodeRef copy constructor and assignment operator (Patrick Strateman)
dc81dd0 Return false early if vEvictionCandidates is empty (Patrick Strateman)
17f3533 Better support for nodes with non-standard nMaxConnections (Patrick Strateman)
1317cd1 RAII wrapper for CNode* (Patrick Strateman)
df23937 Add comments to AttemptToEvictConnection (Patrick Strateman)
a8f6e45 Remove redundant whiteconnections option (Patrick Strateman)
b105ba3 Prefer to disconnect peers in favor of whitelisted peers (Patrick Strateman)
2c70153 AttemptToEvictConnection (Patrick Strateman)
4bac601 Record nMinPingUsecTime (Patrick Strateman)
ae037b7 Refactor: Move failure conditions to the top of AcceptConnection (Patrick Strateman)
1ef4817 Refactor: Bail early in AcceptConnection (Patrick Strateman)
541a1dd Refactor: AcceptConnection (Patrick Strateman)
2015-09-03 18:27:24 +02:00
Wladimir J. van der Laan 26c9b83677 Move windows socket init to utility function 2015-09-03 10:59:19 +02:00
Wladimir J. van der Laan 3a174cd400 Fix race condition between starting HTTP server thread and setting EventBase()
Split StartHTTPServer into InitHTTPServer and StartHTTPServer to give
clients a window to register their handlers without race conditions.

Thanks @ajweiss for figuring this out.
2015-09-03 10:59:19 +02:00
Wladimir J. van der Laan 6d2bc22146 Document options for new HTTP/RPC server in --help 2015-09-03 10:59:19 +02:00
Wladimir J. van der Laan be33f3f50b Implement RPCTimerHandler for Qt RPC console
Implement RPCTimerHandler for Qt RPC console, so that `walletpassphrase`
works with GUI and `-server=0`.

Also simplify HTTPEvent-related code by using boost::function directly.
2015-09-03 10:59:19 +02:00
Wladimir J. van der Laan 40b556d374 evhttpd implementation
- *Replace usage of boost::asio with [libevent2](http://libevent.org/)*.
boost::asio is not part of C++11, so unlike other boost there is no
forwards-compatibility reason to stick with it. Together with #4738 (convert
json_spirit to UniValue), this rids Bitcoin Core of the worst offenders with
regard to compile-time slowness.

- *Replace spit-and-duct-tape http server with evhttp*. Front-end http handling
is handled by libevent, a work queue (with configurable depth and parallelism)
is used to handle application requests.

- *Wrap HTTP request in C++ class*; this makes the application code mostly
HTTP-server-neutral

- *Refactor RPC to move all http-specific code to a separate file*.
Theoreticaly this can allow building without HTTP server but with another RPC
backend, e.g. Qt's debug console (currently not implemented) or future RPC
mechanisms people may want to use.

- *HTTP dispatch mechanism*; services (e.g., RPC, REST) register which URL
paths they want to handle.

By using a proven, high-performance asynchronous networking library (also used
by Tor) and HTTP server, problems such as #5674, #5655, #344 should be avoided.

What works? bitcoind, bitcoin-cli, bitcoin-qt. Unit tests and RPC/REST tests
pass. The aim for now is everything but SSL support.

Configuration options:

- `-rpcthreads`: repurposed as "number of  work handler threads". Still
defaults to 4.

- `-rpcworkqueue`: maximum depth of work queue. When this is reached, new
requests will return a 500 Internal Error.

- `-rpctimeout`: inactivity time, in seconds, after which to disconnect a
client.

- `-debug=http`: low-level http activity logging
2015-09-03 10:59:18 +02:00
Cory Fields 6e996d39da tests: fix qt payment test
Now that boost no longer automatically initializes openssl, we have to
do it ourselves.
2015-09-02 18:38:41 +02:00
Wladimir J. van der Laan 3140ef9249 build: build-system changes for libevent 2015-09-02 18:38:41 +02:00
Wladimir J. van der Laan 6a21dd598c Remove rpc_boostasiotocnetaddr test
Dropping all use of boost::asio.
2015-09-02 18:38:41 +02:00
Wladimir J. van der Laan af9305a7e8
Merge pull request #6583
9f3e48e add support for miniupnpc api version 14 (Pavel Vasin)
2015-08-31 17:38:07 +02:00
Patrick Strateman 027de94e1f
Use network group instead of CNetAddr in final pass to select node to disconnect 2015-08-30 22:09:14 -07:00
J Ross Nicoll 9bebf60698
Make sure LogPrint strings are line-terminated 2015-08-29 17:40:13 +01:00
Wladimir J. van der Laan ea19c2bc3f
Merge pull request #6530
c33c11e Improve addrman Select() performance when buckets are nearly empty (Pieter Wuille)
2015-08-26 17:58:40 +02:00
Pieter Wuille c33c11ebac Improve addrman Select() performance when buckets are nearly empty 2015-08-26 01:59:09 +02:00
Patrick Strateman 000c18aace Fix comment 2015-08-25 16:31:13 -07:00
Patrick Strateman fed30940ef Acquire cs_vNodes before changing refrence counts 2015-08-25 16:30:02 -07:00
Patrick Strateman 69ee1aab00 CNodeRef copy constructor and assignment operator 2015-08-25 15:33:29 -07:00
Cory Fields a19338723d 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-08-25 11:31:06 -04:00
Wladimir J. van der Laan da9beb288d
Merge pull request #6576
e938122 Stop parsing JSON after first finished construct. (Daniel Kraft)
2015-08-24 13:44:05 +02:00
Pavel Vasin 9f3e48e521 add support for miniupnpc api version 14
The value of new arg ttl is set to 2 as it's recommended default.
2015-08-23 23:53:49 +03:00
Patrick Strateman dc81dd02a1 Return false early if vEvictionCandidates is empty 2015-08-22 15:38:24 -07:00
Patrick Strateman 17f3533c84 Better support for nodes with non-standard nMaxConnections 2015-08-22 15:38:24 -07:00
Patrick Strateman 1317cd1928 RAII wrapper for CNode* 2015-08-22 15:38:24 -07:00
Patrick Strateman df23937422 Add comments to AttemptToEvictConnection 2015-08-22 15:38:24 -07:00
Patrick Strateman a8f6e45249 Remove redundant whiteconnections option 2015-08-22 15:38:24 -07:00
Patrick Strateman b105ba398b Prefer to disconnect peers in favor of whitelisted peers 2015-08-22 15:38:24 -07:00
Patrick Strateman 2c701537c8 AttemptToEvictConnection 2015-08-22 15:38:24 -07:00
Patrick Strateman 4bac601610 Record nMinPingUsecTime 2015-08-22 15:38:23 -07:00
Patrick Strateman ae037b707c Refactor: Move failure conditions to the top of AcceptConnection 2015-08-22 15:38:23 -07:00
Patrick Strateman 1ef4817614 Refactor: Bail early in AcceptConnection 2015-08-22 15:38:23 -07:00
Patrick Strateman 541a1dd9e6 Refactor: AcceptConnection 2015-08-22 15:38:23 -07:00
Wladimir J. van der Laan 49793fbb09
Merge pull request #6541
e0862c0 Reformat validateaddress help, add missing iswatchonly description. (Pavel Janík)
2015-08-21 12:35:20 +02:00
Wladimir J. van der Laan e3f13ddc54
Merge pull request #6242
17221bf chainparams: don't use std namespace (Cory Fields)
f0deec5 chainparams: move CCheckpointData into chainparams.h (Cory Fields)
2015-08-20 18:26:26 +02:00
Wladimir J. van der Laan e128464bc5
Merge pull request #6545
8be371d Do not store more than 200 timedata samples. (Pavel Janík)
2015-08-20 17:13:52 +02:00
Wladimir J. van der Laan 70ec975ea6
Merge pull request #6556
1123cdb add unit test for CNetAddr::GetGroup. (Alex Morcos)
bba3db1 Fix masking of irrelevant bits in address groups. (Alex Morcos)
2015-08-20 16:45:46 +02:00
Wladimir J. van der Laan 5e6e0898a1
Merge pull request #6571
1d1073c consensus: cache the openssl EC_GROUP to avoid a race condition for each CECKey instantiation (Cory Fields)
2015-08-20 16:33:50 +02:00
Daniel Kraft e938122b7b Stop parsing JSON after first finished construct.
Fix https://github.com/bitcoin/bitcoin/issues/6558.  In particular, stop
parsing JSON after the first object or array is finished.  Check that no
other garbage follows, and fail the parser if it does.
2015-08-20 12:48:43 +02:00
Alex Morcos 1123cdbf4d add unit test for CNetAddr::GetGroup. 2015-08-19 17:06:42 -04:00
Cory Fields 1d1073c2d3 consensus: cache the openssl EC_GROUP to avoid a race condition for each CECKey instantiation 2015-08-19 14:25:01 -04:00
Wladimir J. van der Laan ef30389e2a
Merge pull request #6544
c5c1edf Fix spelling mistake in -> if. (Mark Friedenbach)
e846b2a Correct a possibly intentional pun that is nevertheless hard to read: "two times of nLockTime." What is meant is that there are two kinds, or categories of nLockTime. (Mark Friedenbach)
2015-08-19 17:37:52 +02:00
Wladimir J. van der Laan 80cddbbba9
Merge pull request #6539
9f68ed6 typofixes (found by misspell_fixer) (Veres Lajos)
2015-08-19 17:28:00 +02:00
Wladimir J. van der Laan a6f2affde8
Merge pull request #6565
fb08d92 Make sure we re-acquire lock if a task throws (Casey Rodarmor)
2015-08-19 16:27:40 +02:00
Wladimir J. van der Laan e08a7d9d40
Merge pull request #6561
7bd57bb Add limitedmap test (Casey Rodarmor)
8b06894 Disallow unlimited limited maps (Casey Rodarmor)
fd2d862 Make limited map actually respect max size (Casey Rodarmor)
2015-08-19 15:45:14 +02:00
Casey Rodarmor fb08d92312 Make sure we re-acquire lock if a task throws 2015-08-18 10:40:13 -04:00
Daniel Kraft 2016576998 Fix crash when mining with empty keypool.
Since the introduction of the ScriptForMining callback, the mining
functions (setgenerate and generate) crash with an assertion failure
(due to a NULL pointer script returned) if the keypool is empty.  Fix
this by giving a proper error.
2015-08-18 09:07:33 +02:00
Casey Rodarmor 7bd57bb1d7 Add limitedmap test 2015-08-17 12:15:32 -04:00
Casey Rodarmor 8b06894194 Disallow unlimited limited maps 2015-08-17 12:15:32 -04:00
Casey Rodarmor fd2d862fbc Make limited map actually respect max size 2015-08-17 12:15:32 -04:00
Wladimir J. van der Laan 39ddaeb8fe
Merge pull request #6551
243b80d Handle leveldb::DestroyDB() errors on wipe failure (Adam Weiss)
2015-08-17 16:52:57 +02:00
Jeff Garzik 6feeec1ec5
Merge pull request #6013 2015-08-15 16:09:06 -04:00
Alex Morcos bba3db1a40 Fix masking of irrelevant bits in address groups. 2015-08-14 14:25:19 -05:00
Wladimir J. van der Laan ddd8d80c63
Merge pull request #6415
d042854 SQUASH "Implement watchonly support in fundrawtransaction" (Matt Corallo)
428a898 SQUASH "Add have-pubkey distinction to ISMINE flags" (Matt Corallo)
6bdb474 Implement watchonly support in fundrawtransaction (Matt Corallo)
f5813bd Add logic to track pubkeys as watch-only, not just scripts (Matt Corallo)
d3354c5 Add have-pubkey distinction to ISMINE flags (Matt Corallo)
5c17059 Update importaddress help to push its use to script-only (Matt Corallo)
a1d7df3 Add importpubkey method to import a watch-only pubkey (Matt Corallo)
907a425 Add p2sh option to importaddress to import redeemScripts (Matt Corallo)
983d2d9 Split up importaddress into helper functions (Matt Corallo)
cfc3dd3 Also remove pay-2-pubkey from watch when adding a priv key (Matt Corallo)
2015-08-14 16:28:37 +02:00
Pavel Janík 70180b2e57 Implement REST mempool API, add test and documentation. 2015-08-14 07:01:03 +02:00
Adam Weiss 243b80d292 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-08-12 19:40:09 -04:00
Wladimir J. van der Laan 87f37e259d
Merge pull request #6519
7f1f8f5 Move mempool rejections to new debug category (Wladimir J. van der Laan)
66daed5 Add information to errors in ConnectBlock, CheckBlock (Wladimir J. van der Laan)
6cab808 Remove most logging from transaction validation (Wladimir J. van der Laan)
9003c7c Add function to convert CValidationState to a human-readable message (Wladimir J. van der Laan)
dc58258 Introduce REJECT_INTERNAL codes for local AcceptToMempool errors (Wladimir J. van der Laan)
fbf44e6 Add debug message to CValidationState for optional extra information (Wladimir J. van der Laan)
2015-08-11 17:36:50 +02:00
Wladimir J. van der Laan 7f1f8f5edf Move mempool rejections to new debug category
Move mempool rejections to debug category `mempoolrej`, to make it possible
to show them without enabling the entire category `mempool` which is
high volume.
2015-08-11 17:29:34 +02:00
Wladimir J. van der Laan 66daed5e1b Add information to errors in ConnectBlock, CheckBlock
Add detailed state information to the errors, as it is no longer being
logged downstream.

Also add the state information to mempool rejection debug message in
ProcessMessages.
2015-08-11 17:29:34 +02:00
Wladimir J. van der Laan 6cab808272 Remove most logging from transaction validation
Remove unnecessary direct logging in CheckTransaction,
AcceptToMemoryPool, CheckTxInputs, CScriptCheck::operator()

All status information should be returned in the CValidationState.
Relevant debug information is also added to the CValidationState using
the recently introduced debug message.

Do keep the "BUG! PLEASE REPORT THIS! ConnectInputs failed against MANDATORY but not STANDARD flags"
error as it is meant to appear as bug in the log.
2015-08-11 17:29:34 +02:00
Wladimir J. van der Laan 9003c7cdd8 Add function to convert CValidationState to a human-readable message
It is necessary to be able to concisely log a validation state.
Convert CValidationState to a human-readable message for logging.
2015-08-11 17:29:33 +02:00
Wladimir J. van der Laan dc58258adf Introduce REJECT_INTERNAL codes for local AcceptToMempool errors
Add status codes specific to AcceptToMempool procession of transactions.
These can never happen due to block validation, and must never be sent
over the P2P network. Add assertions where appropriate.
2015-08-11 17:29:33 +02:00
Pavel Janík 8be371db34 Do not store more than 200 timedata samples. 2015-08-11 15:57:52 +02:00
Mark Friedenbach c5c1edfe60 Fix spelling mistake in -> if. 2015-08-10 18:09:59 -07:00
Mark Friedenbach e846b2a1e9 Correct a possibly intentional pun that is nevertheless hard to read: "two times of nLockTime." What is meant is that there are two kinds, or categories of nLockTime. 2015-08-10 18:08:30 -07:00
Veres Lajos 9f68ed6b6d typofixes (found by misspell_fixer) 2015-08-10 22:06:27 +01:00
Pavel Janík e0862c0933 Reformat validateaddress help, add missing iswatchonly description. 2015-08-10 20:10:56 +02:00
Tom Harding 212bcca920 Add optional locktime to createrawtransaction
A non-zero locktime also causes input sequences to be set to
non-max, activating the locktime.
2015-08-10 10:23:59 -07:00
Wladimir J. van der Laan 6bb28058d3
Merge pull request #6346
627468d Add support for data-based outputs (OP_RETURN) to bitcoin-tx. (Pavel Janík)
d707853 Add OP_RETURN support in createrawtransaction RPC call, add tests. (Pavel Janík)
2015-08-10 17:53:07 +02:00
Wladimir J. van der Laan 6c1c7fdfd6
Merge pull request #6534
9493803 Revert "Revert "Assert on probable deadlocks if the second lock isnt try_lock"" (Cory Fields)
605433f locks: don't lock cs_wallet before making rpc calls (Cory Fields)
2015-08-10 17:38:25 +02:00
Philip Kaufmann be942def4b [Qt] add verifySize() function to PaymentServer
- add static verifySize() function to PaymentServer and move the logging
  on error into the function
- also use the new function in the unit test
- the function checks if the size is allowed as per BIP70
2015-08-10 14:12:15 +02:00
Philip Kaufmann 92684bb872 [Qt] minor optimisations in peertablemodel
- remove an unneeded include of net.h in peertablemodel.cpp
- add const after size() in PeerTablePriv
- remove 2x unneeded else in functions
- replace a (int) typecast by (QVariant) to use Qt style
- remove unneeded include of peertablemodel.h from rpcconsole.cpp
2015-08-10 14:11:25 +02:00
Matt Corallo d04285430d SQUASH "Implement watchonly support in fundrawtransaction" 2015-08-08 09:30:53 -07:00
Matt Corallo 428a898acd SQUASH "Add have-pubkey distinction to ISMINE flags" 2015-08-08 09:30:53 -07:00
Daniel Kraft 69c3bde448 Add some const declarations where they are appropriate.
Declare some arguments of functions as "const" pointers where they are
not meant to be modified.
2015-08-08 18:18:41 +02:00
Cory Fields 9493803f4a Revert "Revert "Assert on probable deadlocks if the second lock isnt try_lock""
This reverts commit a4fe57da62.

The issue here should be fixed by the previous commit.
2015-08-07 16:18:16 -04:00
Cory Fields 605433ffb5 locks: don't lock cs_wallet before making rpc calls 2015-08-07 16:17:57 -04:00
Philip Kaufmann 54bd28fa75 [Qt] show client user agent in debug window 2015-08-07 14:01:49 +02:00
Wladimir J. van der Laan 0c465f5e60
Merge pull request #4587
ed166df [Qt] allow users to set -onion via GUI (Philip Kaufmann)
2015-08-07 13:43:13 +02:00
Wladimir J. van der Laan 100c9d3994
Merge pull request #6505
df9c2ee [Qt] replace wifi icon with network symbol (Marco)
9142867 [QT] cleanup icons (Marco)
2015-08-07 12:57:17 +02:00
Wladimir J. van der Laan e545371b77
Merge pull request #6377
c433828 Handle no chain tip available in InvalidChainFound() (Ross Nicoll)
2015-08-07 09:14:53 +02:00
Wladimir J. van der Laan 41d650ff92
Merge pull request #6527
231c560 Use unique name for AlertNotify tempfile (Casey Rodarmor)
2015-08-07 08:22:11 +02:00
Pavel Janík 627468d2ea Add support for data-based outputs (OP_RETURN) to bitcoin-tx. 2015-08-06 20:27:52 +02:00
Pavel Janík d7078533eb Add OP_RETURN support in createrawtransaction RPC call, add tests. 2015-08-06 20:27:52 +02:00
Wladimir J. van der Laan a4fe57da62
Revert "Assert on probable deadlocks if the second lock isnt try_lock"
Disabling this for now - too many intermittent Travis issues.

This reverts commit 0fcc4e1e04
(pull #5515).
2015-08-06 14:15:54 +02:00
Wladimir J. van der Laan 2f746c6e8a
Merge pull request #6177
ef8dfe4 Prevent block.nTime from decreasing (Mark Friedenbach)
2015-08-06 12:01:21 +02:00
Wladimir J. van der Laan fbf44e6f3e Add debug message to CValidationState for optional extra information
Add a field `strDebugMessage` which can be passed to DoS or Invalid,
and queried using GetDebugMessage() to add extra troubleshooting
information to the validation state.
2015-08-06 09:47:01 +02:00
Casey Rodarmor 231c5601a1 Use unique name for AlertNotify tempfile 2015-08-05 23:12:26 -04:00
Wladimir J. van der Laan a0625b8085
Merge pull request #5913
5922b67 Add assertion and cast before sending reject code (Wladimir J. van der Laan)
a651403 Add absurdly high fee message to validation state (for RPC propagation) (Shaul Kfir)
2015-08-05 19:12:48 +02:00
Wladimir J. van der Laan 5922b6774e Add assertion and cast before sending reject code
This gets rid of a warning. Add an assertion to make sure that the
reject code is in the correct range for the network protocol
(if it is outside the range it must be a bug)
2015-08-05 19:02:19 +02:00
Wladimir J. van der Laan c384800027
Merge pull request #6462
7b79cbd limit total length of user agent comments (Pavol Rusnak)
557f8ea implement uacomment config parameter which can add comments to user agent as per BIP-0014 (Pavol Rusnak)
2015-08-05 15:43:10 +02:00
Wladimir J. van der Laan c9c017adf6
Merge pull request #6489
f261f19 Give a better error message if system clock is bad (Casey Rodarmor)
2015-08-05 10:23:01 +02:00
Pavol Rusnak 7b79cbd722 limit total length of user agent comments
Reworked-By: Wladimir J. van der Laan <laanwj@gmail.com>
2015-08-05 09:38:20 +02:00
Pieter Wuille 586a29253d
Merge pull request #6503
19dd40a Consolidate individual references to the current maximum peer connection value of 125 into a single constant declaration. (Matt Quinn)
2015-08-04 19:43:30 +02:00
Marco df9c2ee1c9 [Qt] replace wifi icon with network symbol 2015-08-04 16:53:30 +02:00
Marco 9142867572 [QT] cleanup icons
* Cleanup SVG code
* Unify design ("Typicons" seem to have round edges)
* Fix transparency issue with clock5.png
2015-08-04 12:06:12 +02:00
Wladimir J. van der Laan b6fee6b7c7
Merge pull request #6504
9ca7857 Rationalize currency unit to "BTC" (Ross Nicoll)
2015-08-04 01:24:19 +02:00
Ross Nicoll 9ca7857df7 Rationalize currency unit to "BTC"
Previously various user-facing strings have used inconsistent currency units "BTC",
"btc" and "bitcoins". This adds a single constant and uses it for each reference to
the currency unit.

Also adds a description of the unit for --maxtxfee, and adds the missing "amount"
field description to the (deprecated) move RPC command.
2015-08-03 22:58:30 +01:00
Matt Quinn 19dd40a25f Consolidate individual references to the current maximum peer connection
value of 125 into a single constant declaration.
2015-08-03 14:37:00 -07:00
Casey Rodarmor 2d8c49d126 Clean up tx prioritization when conflict mined 2015-08-03 15:49:01 -04:00
Casey Rodarmor f261f19b4b Give a better error message if system clock is bad
Fixes #2007

This checks to see if the system clock appears to be bad and gives a
helpful error message. If the user's clock is set incorrectly, hopefully
they'll abort, fix it, and then save themselves a fruitless resync.
2015-08-03 15:11:52 -04:00
Wladimir J. van der Laan 219b916545
Merge pull request #6498
a8d0407 Move recentRejects initialization to top of InitBlockIndex (Wladimir J. van der Laan)
0847d9c Keep track of recently rejected transactions (Peter Todd)
d741371 Only use randomly created nonces in CRollingBloomFilter. (Pieter Wuille)
d2d7ee0 Make CRollingBloomFilter set nTweak for you (Peter Todd)
a3d65fe Reuse vector hashing code for uint256 (Pieter Wuille)
bbe4108 Add uint256 support to CRollingBloomFilter (Peter Todd)
2015-08-03 20:13:43 +02:00
Wladimir J. van der Laan 10ac38ed9f
Merge pull request #6284
c6455c7 doc: mention change to option parsing behavior in release notes (Wladimir J. van der Laan)
c38c49d Fix argument parsing oddity with -noX (Wladimir J. van der Laan)
2015-08-03 19:54:52 +02:00
Wladimir J. van der Laan 9e6c33b202
Merge pull request #6356
f0cba6f Delay initial pruning until after wallet init (Adam Weiss)
2015-08-03 19:34:50 +02:00
Wladimir J. van der Laan f18b8ec7cf Make sure LogPrintf strings are line-terminated
Fix the cases where LogPrint[f] was accidentally called without line
terminator, which resulted in concatenated log lines.

(see e.g. #6492)
2015-08-03 17:40:55 +02:00
Wladimir J. van der Laan a8d0407c4f Move recentRejects initialization to top of InitBlockIndex
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.
2015-07-31 17:58:12 +02:00
Pavol Rusnak 557f8eac7a implement uacomment config parameter
which can add comments to user agent as per BIP-0014
2015-07-31 16:19:23 +02:00
Wladimir J. van der Laan 86cfd23f68
Merge pull request #6473
5fb5c9b Clean up chainparams some more. (Daniel Kraft)
2015-07-31 10:10:55 +02:00
Wladimir J. van der Laan 9848d4297b
Merge pull request #6487
eec7757 qt: Introduce PlatformStyle (Wladimir J. van der Laan)
2015-07-31 10:06:49 +02:00
Wladimir J. van der Laan eec7757445 qt: Introduce PlatformStyle
Introduce a PlatformStyle to handle platform-specific customization of
the UI.

This replaces 'scicon', as well as #ifdefs to determine whether to place
icons on buttons.

The selected PlatformStyle defaults to the platform that the application
was compiled on, but can be overridden from the command line with
`-uiplatform=<x>`.

Also fixes the warning from #6328.
2015-07-31 09:35:18 +02:00
mruddy af3208bfa6 Resolve issue 3166.
These changes decode valid SIGHASH types on signatures in assembly (asm) representations of scriptSig scripts.
This squashed commit incorporates substantial helpful feedback from jtimon, laanwj, and sipa.
2015-07-30 19:56:00 -04:00
Daniel Kraft 5fb5c9b213 Clean up chainparams some more.
Clean up the code in chainparams a bit more after the recent
refactorings.  In particular, make sure the structure of the "RegTest"
params matches the structure of the other classes.  This makes the code
clearer to read.

Also remove redundant values of the genesis block in always-specified
optional arguments and mark variable/argument as "const".
2015-07-29 21:13:36 +02:00
Wladimir J. van der Laan 675d2feffa
Merge pull request #6224
59b49cd Eliminate signed/unsigned comparison warning (Suhas Daftuar)
04b5d23 Replace sleep with syncing using pings (Suhas Daftuar)
6b1066f Ignore whitelisting during IBD for unrequested blocks. (Suhas Daftuar)
bfc30b3 Ignore unrequested blocks too far ahead of tip (Suhas Daftuar)
2015-07-29 20:04:15 +02:00
Adam Weiss f0cba6f8eb Delay initial pruning until after wallet init
Don't prune until any wallet rescanning has taken place to avoid
potentially pruning blocks that the wallet rescan may need.
2015-07-29 14:00:25 -04:00
Wladimir J. van der Laan 7cbed7fa28
Merge pull request #6488
17ac0f4 Avoid leaking file descriptors in RegisterLoad (Casey Rodarmor)
2015-07-29 18:59:23 +02:00
Peter Todd 0847d9cb5f
Keep track of recently rejected transactions
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.
2015-07-28 15:50:13 -04:00
Cory Fields 17221bf77e chainparams: don't use std namespace 2015-07-28 15:33:33 -04:00
Cory Fields f0deec572b chainparams: move CCheckpointData into chainparams.h
This unties CChainParams from its dependency on checkpoints. Instead, now it
only depends on the raw checkpoint data.
2015-07-28 15:26:50 -04:00
Pieter Wuille eddaba7b56
Revert "Cache transaction validation successes"
This reverts commit 17b11428c1.
2015-07-28 20:15:00 +02:00
Casey Rodarmor 17ac0f4025 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-07-28 14:01:00 -04:00
Pavel Vasin 5e56ef5152 qt: use CHashWriter also in SignVerifyMessageDialog
This eliminates unnecessary copying of data being hashed.
2015-07-28 10:59:16 +03:00
Pieter Wuille d741371d7d Only use randomly created nonces in CRollingBloomFilter. 2015-07-27 19:09:39 +02:00
Peter Todd d2d7ee0e86 Make CRollingBloomFilter set nTweak for you
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.
2015-07-27 18:38:49 +02:00
Pieter Wuille a3d65fedaa Reuse vector hashing code for uint256 2015-07-27 18:38:45 +02:00
Peter Todd bbe41088c6 Add uint256 support to CRollingBloomFilter 2015-07-27 18:37:18 +02:00
Gavin Andresen 517e6dd256 Unit test doublespends in new blocks
As suggested by Greg Maxwell-- unit test to make sure a block
with a double-spend in it doesn't pass validation if half of
the double-spend is already in the memory pool (so full-blown
transaction validation is skipped) when the block is received.
2015-07-27 15:50:21 +02:00
Pieter Wuille 17b11428c1 Cache transaction validation successes 2015-07-27 15:28:43 +02:00
Wladimir J. van der Laan c38c49d0b7 Fix argument parsing oddity with -noX
`bitcoind -X -noX` ends up, unintuitively, with `X` set.
(for all boolean options X)

This result is due to the odd two-pass processing of arguments. This
patch fixes this oddity and simplifies the code at the same time.
2015-07-27 14:47:54 +02:00
Wladimir J. van der Laan ca37e0f339
Merge pull request #5697
60c8bac Includes: Cleanup around net main and wallet (Jorge Timón)
9dd793f TRIVIAL: Missing includes (Jorge Timón)
2015-07-27 14:40:29 +02:00
Wladimir J. van der Laan 614601be8f rpc: Accept strings in AmountFromValue
Accept strings containing decimal values, in addition to bare values.

Useful from JSON-RPC implementations where it's not possible to have
direct control over the text of numbers (e.g. where numbers are always
doubles), and it's still desired to send an exact value.

This would allow users to post JSON content with numbers encoded like
`{"value": "0.00000001"}` instead of `{"value": 0.00000001}` which some
php/python encoders wrap into 1e-8, or worse.
2015-07-27 13:55:46 +02:00
Wladimir J. van der Laan d43297c5ba
Merge pull request #6468
6f8b6d3 don't try to decode invalid encoded ext keys (Jonas Schnelli)
8d2af54 extend bip32 tests to cover Base58c/CExtKey decode (Jonas Schnelli)
7cb1f9f fix and extend CBitcoinExtKeyBase template (Jonas Schnelli)
2015-07-27 13:20:54 +02:00
Wladimir J. van der Laan f6850d58f7
Merge pull request #6471
060b3d3 fixup: qt 5.5 snuck in another module that needs path hand-holding (Cory Fields)
ecd6a89 depends: make more qt flags explicit (Cory Fields)
ab67dd7 depends: bump to qt 5.5 (Cory Fields)
5189fe3 depends: split qt config options to separate lines (Jacob Welsh)
fe997df build: fix building against qt5.4/5.5 (Cory Fields)
2015-07-27 12:28:42 +02:00
Jonas Schnelli 6f8b6d339b don't try to decode invalid encoded ext keys 2015-07-25 09:51:52 +02:00
Philip Kaufmann ed166dfa82 [Qt] allow users to set -onion via GUI
- also allow users to see, if the default proxy (-proxy) is used for
  reaching peers via IPv6 or Tor
2015-07-24 12:28:06 +02:00
Wladimir J. van der Laan bfd807ff32
Merge pull request #6456
ec249d4 util: use locale-independent parsing in ParseDouble (Wladimir J. van der Laan)
7650449 univalue: Avoid unnecessary roundtrip through double for numbers (Wladimir J. van der Laan)
e061e27 rpc: Make ValueFromAmount always return 8 decimals (Wladimir J. van der Laan)
2015-07-24 11:08:52 +02:00
Cory Fields fe997dfd12 build: fix building against qt5.4/5.5 2015-07-23 21:10:35 -04:00
Jorge Timón 60c8bac77c Includes: Cleanup around net main and wallet
-Move from .h to .cpp: in main, net and wallet
-Remove unnecessary #include "main.h"
-Cleanup some wallet files includes
2015-07-23 21:10:26 +02:00
Jorge Timón 9dd793f499 TRIVIAL: Missing includes 2015-07-23 21:10:22 +02:00
Wladimir J. van der Laan d2464dfee9
Merge pull request #6287
a794284 locking: add a quick example of GUARDED_BY (Cory Fields)
2b890dd locking: fix a few small issues uncovered by -Wthread-safety (Cory Fields)
cd27bba locking: teach Clang's -Wthread-safety to cope with our scoped lock macros (Cory Fields)
2015-07-23 18:45:26 +02:00
Wladimir J. van der Laan d946e9a848
Merge pull request #5515
0fcc4e1 Assert on probable deadlocks if the second lock isnt try_lock (Matt Corallo)
2015-07-23 18:34:35 +02:00
Jonas Schnelli 8d2af54ecc extend bip32 tests to cover Base58c/CExtKey decode 2015-07-23 16:32:31 +02:00
Jonas Schnelli 7cb1f9f7eb fix and extend CBitcoinExtKeyBase template
- fix Decode call (req. only one param)
- add constructor for base58c->CExtKey
2015-07-23 16:32:21 +02:00
Matt Corallo 0fcc4e1e04 Assert on probable deadlocks if the second lock isnt try_lock 2015-07-22 16:49:54 -07:00
Ross Nicoll c433828df9 Handle no chain tip available in InvalidChainFound()
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-07-22 21:10:09 +00:00
Wladimir J. van der Laan 633fe10869
Merge pull request #6149
27d7605 Buffer log messages and explicitly open logs (Adam Weiss)
2015-07-22 18:24:20 +02:00
Wladimir J. van der Laan 45d1f5932b
Merge pull request #6381
c4973aa Chainparams: CTestNetParams and CRegTestParams extend directly from CChainParams (Jorge Timón)
d3cf546 Chainparams: Introduce CreateGenesisBlock() static function (Jorge Timón)
2015-07-21 13:29:16 +02:00
Wladimir J. van der Laan 24f6928192
Merge pull request #6400
1327897 Reformat help text of estimatefee and estimatepriority to match other help texts. (Pavel Janík)
2015-07-21 12:49:41 +02:00
Wladimir J. van der Laan 24ce77d775
Merge pull request #6444
0aad1f1 Exempt unspendable transaction outputs from dust checks (zathras-crypto)
2015-07-21 11:47:57 +02:00
Matt Corallo 6bdb474dc9 Implement watchonly support in fundrawtransaction
Some code and test cases stolen from
Bryan Bishop <bryan@ledgerx.com> (pull #5524).
2015-07-20 16:01:38 -07:00
Matt Corallo f5813bdd3e Add logic to track pubkeys as watch-only, not just scripts 2015-07-20 16:01:37 -07:00
Matt Corallo d3354c52d7 Add have-pubkey distinction to ISMINE flags
This indicates that, eg, we have a public key for a key which may
be used as a pay-to-pubkey-hash. It generally means that we can
create a valid scriptSig except for missing private key(s) with
which to create signatures.
2015-07-20 16:01:37 -07:00
Matt Corallo 5c17059872 Update importaddress help to push its use to script-only 2015-07-20 16:01:37 -07:00
Matt Corallo a1d7df3236 Add importpubkey method to import a watch-only pubkey 2015-07-20 16:01:37 -07:00
Matt Corallo 907a425aa5 Add p2sh option to importaddress to import redeemScripts 2015-07-20 16:01:37 -07:00
Matt Corallo 983d2d90af Split up importaddress into helper functions 2015-07-20 16:01:37 -07:00
Matt Corallo cfc3dd3428 Also remove pay-2-pubkey from watch when adding a priv key 2015-07-20 16:01:37 -07:00
Pavel Janík 1327897aee Reformat help text of estimatefee and estimatepriority to match other help texts. 2015-07-20 19:32:38 +02:00
Wladimir J. van der Laan 6d6b11e793
Merge pull request #6408
dca6040 [Qt] remove std namespace polution from code (Philip Kaufmann)
2015-07-20 18:00:32 +02:00
Pieter Wuille 9e38d0f745 Separate core memory usage computation in core_memusage.h 2015-07-20 11:17:53 -04:00
Wladimir J. van der Laan 89289d875d
Fix warning introduced by #6412
SOCKET are defined as unsigned integers, thus always >=0.
2015-07-20 17:10:02 +02:00
Wladimir J. van der Laan 1a2de3237f
Merge pull request #6412
d422f9b Test whether created sockets are select()able (Pieter Wuille)
2015-07-20 16:54:28 +02:00
Wladimir J. van der Laan dc51608c9c
Merge pull request #6447
2cb8ee9 remove unused inv from ConnectTip() (Pavel Vasin)
2015-07-20 16:43:07 +02:00
Simon Males 0ef9858707 Documenting pruned, pruneheight and softforks in getblockchaininfo 2015-07-19 14:07:35 +02:00
zathras-crypto 0aad1f13b2
Exempt unspendable transaction outputs from dust checks
Since unspendable outputs can't be spent, there is no threshold at which it would be uneconomic to spend them.

This primarily targets transaction outputs with `OP_RETURN`.

---

Initially based on:

commit 9cf0ae26350033d43d5dd3c95054c0d1b1641eda
Author: zathras-crypto <zathrasc@gmail.com>
Date:   Wed Mar 25 02:04:02 2015 -0700

Changes:

- cherry-picked on top of bitcoin:master
- added RPC test for fundrawtransaction
2015-07-18 17:31:55 +02:00
Wladimir J. van der Laan ec249d4a1d util: use locale-independent parsing in ParseDouble
Use locale-indepent C++ based parsing instead of C's strtod,
which checks for different input based on the user's locale.
Fixes #6443.
2015-07-18 09:04:18 +02:00
Wladimir J. van der Laan 7650449a67 univalue: Avoid unnecessary roundtrip through double for numbers
JSON makes no distinction between numbers and reals, and our code
doesn't need to do so either.

This removes VREAL, as well as its specific post-processing in
`UniValue::write`. Non-monetary amounts do not need to be forcibly
formatted with 8 decimals, so the extra roundtrip was unnecessary
(and potentially loses precision).
2015-07-18 09:04:18 +02:00
Wladimir J. van der Laan e061e2778d rpc: Make ValueFromAmount always return 8 decimals
This is the format that was always returned to JSON clients.
The difference was not noticed before, because VREAL values
are post-processed by univalue.

By implementing the functionality directly it breaks the dependency
of rpcserver on utilmoneystr. FormatMoney is now only used for debugging
purposes.

To test, port over the formatting tests from util_tests.cpp to
rpc_tests.cpp.
2015-07-18 09:03:59 +02:00
Philip Kaufmann dca6040a86 [Qt] remove std namespace polution from code 2015-07-16 11:54:28 +02:00
Pavel Vasin 2cb8ee9ac7 remove unused inv from ConnectTip() 2015-07-16 12:31:36 +03:00
Wladimir J. van der Laan ed789ceade
Merge pull request #6438
d4b1d5a openssl: avoid config file load/race (Cory Fields)
2015-07-15 15:49:45 +02:00
Wladimir J. van der Laan ce183dce2e
qt: update forgotten emit to Q_EMIT in macdockiconhandler.mm
Leftover from #6433
2015-07-15 15:09:31 +02:00
Wladimir J. van der Laan d29ec6c230 qt: define QT_NO_KEYWORDS
QT_NO_KEYWORDS prevents Qt from defining the `foreach`, `signals`,
`slots` and `emit` macros.

Avoid overlap between Qt macros and boost - for example #undef hackiness
in #6421.
2015-07-15 07:30:23 +02:00
Cory Fields d4b1d5a8ba openssl: avoid config file load/race 2015-07-14 17:54:04 -04:00
Wladimir J. van der Laan 71cbeaad9a rpc: Implement random-cookie based authentication
When no `-rpcpassword` is specified, use a special 'cookie' file for
authentication. This file is generated with random content when the
daemon starts, and deleted when it exits. Read access to this file
controls who can access through RPC. By default this file is stored in
the data directory but it be overriden with `-rpccookiefile`.

This is similar to Tor CookieAuthentication: see
https://www.torproject.org/docs/tor-manual.html.en

Alternative to #6258. Like that pull, this allows running bitcoind
without any manual configuration. However, daemons should ideally never write to
their configuration files, so I prefer this solution.
2015-07-13 13:11:41 +02:00
Wladimir J. van der Laan 3d9362d5ac
Merge pull request #6398
85ee55b rpc: Remove chain-specific RequireRPCPassword (Wladimir J. van der Laan)
2015-07-13 12:55:06 +02:00
Jorge Timón c4973aaaf6 Chainparams: CTestNetParams and CRegTestParams extend directly from CChainParams
...instead of CMainParams and CTestNetParams respectively

Do the same for CBaseChainParams.
The inheritance was only reducing readibility in this case
2015-07-12 11:13:47 +02:00
Jorge Timón d3cf546ec2 Chainparams: Introduce CreateGenesisBlock() static function 2015-07-12 11:03:06 +02:00
Wladimir J. van der Laan 7cdefb927e
Merge pull request #6410
5098c47 Implement accurate memory accounting for mempool (Pieter Wuille)
2015-07-11 15:47:43 +02:00
Suhas Daftuar 59b49cd074 Eliminate signed/unsigned comparison warning 2015-07-11 07:05:18 -04:00
Pieter Wuille d422f9b1fd Test whether created sockets are select()able 2015-07-10 12:05:09 -04:00
Wladimir J. van der Laan fac21df5f0
Merge pull request #6370
6ebac07 Remove ChainParams::DefaultMinerThreads (Wladimir J. van der Laan)
2015-07-10 17:12:40 +02:00
Wladimir J. van der Laan c52e8b300a
Merge pull request #6379
9cc9152 rpc: Accept scientific notation for monetary amounts in JSON (Wladimir J. van der Laan)
2015-07-10 16:50:46 +02:00
Pieter Wuille 5098c47b24 Implement accurate memory accounting for mempool 2015-07-10 10:49:31 -04:00
Wladimir J. van der Laan 9cc91523db rpc: Accept scientific notation for monetary amounts in JSON
Add a function `ParseFixedPoint` that parses numbers according
to the JSON number specification and returns a 64-bit integer.

Then this in `AmountFromValue`, rather than `ParseMoney`.

Also add lots of tests (thanks to @jonasschnelli for some of them).

Fixes issue #6297.
2015-07-10 15:43:26 +02:00
Wladimir J. van der Laan 943b322d5d
Merge pull request #5486
c45c7ea [REST] add JSON support for /rest/headers/ (Jonas Schnelli)
2015-07-10 15:25:51 +02:00
Wladimir J. van der Laan 445220544e
Merge pull request #5288
e3cae52 Added -whiteconnections=<n> option (Josh Lehan)
2015-07-10 15:07:15 +02:00
Wladimir J. van der Laan 85ee55b5c3 rpc: Remove chain-specific RequireRPCPassword
I've never liked the chain-specific exception to having to set a
password. It gives issues with #6388 which makes it valid to
set no password in every case (as it enables random cookie authentication).

This pull removes the flag, so that all chains are regarded the same.

It also removes the username==password test, which doesn't provide any
substantial extra security.
2015-07-10 15:01:55 +02:00
Wladimir J. van der Laan 708037fcc7
Merge pull request #6384
15e26a6 qt: Force TLS1.0+ for SSL connections (Wladimir J. van der Laan)
2015-07-10 15:00:01 +02:00
Wladimir J. van der Laan 7fc25c2e5d
Merge pull request #6368
cb54d17 CLTV: Add more tests to improve coverage (Esteban Ordano)
2015-07-09 11:20:17 +02:00
Wladimir J. van der Laan aa565327ec
Merge pull request #6378
5e058e7 [Qt] constify foreach uses where possible (Philip Kaufmann)
2015-07-09 10:54:21 +02:00
Wladimir J. van der Laan 11576a57d2
Merge pull request #6387
65ce021 [bitcoin-cli] improve error output (Jonas Schnelli)
2015-07-08 13:39:57 +02:00
Wladimir J. van der Laan 133601f6a5 tests: Fix bitcoin-tx signing testcase
Fixes wrong scriptPubkey problem, which caused the transaction to
not actually be signed.
2015-07-07 18:26:38 +02:00
Jonas Schnelli 65ce0215a4 [bitcoin-cli] improve error output 2015-07-07 17:25:56 +02:00
Philip Kaufmann 5e058e7417 [Qt] constify foreach uses where possible
- this doesn't replace BOOST_FOREACH, it just makes used arguments const
  where possible
2015-07-07 06:53:43 +02:00
Adam Weiss 27d7605804 Buffer log messages and explicitly open logs
Prevents stomping on debug logs in datadirs that are locked by other
instances and lost parameter interaction messages that can get wiped by
ShrinkDebugFile().

The log is now opened explicitly and all emitted messages are buffered
until this open occurs.  The version message and log cut have also been
moved to the earliest possible sensible location.
2015-07-06 21:54:31 -04:00
Esteban Ordano cb54d17355 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)
2015-07-06 13:09:37 -07:00
Wladimir J. van der Laan 15e26a6a9a qt: Force TLS1.0+ for SSL connections 2015-07-06 20:06:16 +02:00
Wladimir J. van der Laan 086cb336cd
Merge pull request #6365
5a7304b Move recently introduced CTransAction::IsEquivalentTo to CWalletTx (Wladimir J. van der Laan)
2015-07-06 19:11:14 +02:00
Wladimir J. van der Laan 9546a977d3
Merge pull request #6335
9238ecb Policy: MOVEONLY: 3 functions to policy.o: (Luke Dashjr)
627b9de Policy: MOVEONLY: Create policy/policy.h with some constants (Jorge Timón)
2015-07-06 18:54:20 +02:00
Jonas Schnelli c45c7ea0fa [REST] add JSON support for /rest/headers/ 2015-07-05 15:48:33 +02:00
Wladimir J. van der Laan 6ebac0782f Remove ChainParams::DefaultMinerThreads
No longer relevant after #5957. This hack existed because of another
hack where the numthreads parameter, on regtest, doubled as how many
blocks to generate.
2015-07-03 16:46:20 +02:00
Wladimir J. van der Laan d0a10c1959
Merge pull request #6329
0c37634 acceptnonstdtxn option to skip (most) "non-standard transaction" checks, for testnet/regtest only (Luke Dashjr)
2015-07-03 14:00:06 +02:00
Luke Dashjr 0c376340a4 acceptnonstdtxn option to skip (most) "non-standard transaction" checks, for testnet/regtest only 2015-07-03 08:29:16 +00:00
Wladimir J. van der Laan 5a7304b69d Move recently introduced CTransAction::IsEquivalentTo to CWalletTx
CTransAction::IsEquivalentTo was introduced in #5881.
This functionality is only useful to the wallet, and should never have
been added to the primitive transaction type.
2015-07-02 20:57:39 +02:00
Jonas Schnelli 177a0e4914 Adding CSubNet constructor over a single CNetAddr 2015-07-02 20:44:27 +02:00
Jonas Schnelli 409bccfbf5 use CBanEntry as object container for banned nodes
- added a reason enum for a ban
- added creation time for a ban

Using CBanEntry as container will keep banlist.dat extenable.
2015-07-02 20:29:36 +02:00
Jonas Schnelli dfa174c295 CAddrDB/CBanDB: change filesize variables from int to uint64_t 2015-07-02 20:29:36 +02:00
Jonas Schnelli f581d3d656 banlist.dat: store banlist on disk 2015-07-02 20:29:36 +02:00
Wladimir J. van der Laan d6db1157bc
Merge pull request #6362
72b9452 When processing RPC commands during warmup phase, parse the request object before returning an error so that id value can be used in the response. (Forrest Voight)
2015-07-02 20:09:28 +02:00
Wladimir J. van der Laan d7ada03b8a
Merge pull request #6361
4716267 Use real number of cores for default -par, ignore virtual cores (Wladimir J. van der Laan)
2015-07-02 20:01:04 +02:00
Wladimir J. van der Laan 3203a0832a
Merge pull request #5881
5d34e16 Add txn_clone.py test (Tom Harding)
defd2d5 Better txn_doublespend.py test (Tom Harding)
b2b3619 Implement CTransaction::IsEquivalentTo(...) (Tom Harding)
2015-07-02 19:59:50 +02:00
Wladimir J. van der Laan 987efae1fd
Merge pull request #6133
e617fe2 Fix various warnings (Luke Dashjr)
2015-07-02 19:54:12 +02:00
Wladimir J. van der Laan 726e28643c
Merge pull request #6247
076badb Add getblockheader RPC call (Peter Todd)
2015-07-02 18:53:18 +02:00
Forrest Voight 72b9452b1d When processing RPC commands during warmup phase, parse the
request object before returning an error so that id value can
be used in the response.

Prior to this commit, RPC commands sent during Bitcoin's
warmup/startup phase were responded to with a JSON-RPC error
with an id of null, which violated the JSON-RPC 2.0 spec:

id: This member is REQUIRED. It MUST be the same as the value
of the id member in the Request Object. If there was an error
in detecting the id in the Request object (e.g. Parse
error/Invalid Request), it MUST be Null.
2015-07-01 21:55:08 -04:00
Wladimir J. van der Laan 6bcb0a21c5
Merge pull request #6353
5ed1079 Show softfork status in getblockchaininfo (Wladimir J. van der Laan)
2015-07-01 19:37:24 +02:00
Wladimir J. van der Laan 5ed10793c2 Show softfork status in getblockchaininfo 2015-07-01 19:36:17 +02:00
Wladimir J. van der Laan 47162673c7 Use real number of cores for default -par, ignore virtual cores
To determine the default for `-par`, the number of script verification
threads, use [boost:🧵:physical_concurrency()](http://www.boost.org/doc/libs/1_58_0/doc/html/thread/thread_management.html#thread.thread_management.thread.physical_concurrency)
which counts only physical cores, not virtual cores.

Virtual cores are roughly a set of cached registers to avoid context
switches while threading, they cannot actually perform work, so spawning
a verification thread for them could even reduce efficiency and will put
undue load on the system.

Should fix issue #6358, as well as some other reported system overload
issues, especially on Intel processors.

The function was only introduced in boost 1.56, so provide a utility
function `GetNumCores` to fall back for older Boost versions.
2015-07-01 18:01:16 +02:00
Jonas Schnelli a7b9623d18 miner: rename UpdateRequestCount signal to ResetRequestCount 2015-07-01 16:09:58 +02:00
Jonas Schnelli 5496253966 add CReserveScript to allow modular script keeping/returning
- use one CReserveScript per mining thread
2015-07-01 16:06:14 +02:00
Shaul Kfir a651403e09 Add absurdly high fee message to validation state (for RPC propagation) 2015-06-30 15:59:11 -04:00
Jonas Schnelli 087e65def9 fix GetScriptForMining() CReserveKey::keepKey() issue 2015-06-30 21:45:46 +02:00
Jonas Schnelli d0fc10a844 detach wallet from miner 2015-06-30 21:45:46 +02:00
Suhas Daftuar 6b1066fab4 Ignore whitelisting during IBD for unrequested blocks. 2015-06-30 09:42:56 -04:00
Wladimir J. van der Laan 0564c5b795
Merge pull request #6337
6a4b97e Testing infrastructure: mocktime fixes (Gavin Andresen)
2015-06-29 16:41:29 +02:00
Luke Dashjr 9238ecb417 Policy: MOVEONLY: 3 functions to policy.o:
- [script/standard.o] IsStandard
- [main.o] IsStandardTx
- [main.o] AreInputsStandard

Also, don't use namespace std in policy.cpp
2015-06-26 17:59:10 +02:00
Jorge Timón 627b9deff4 Policy: MOVEONLY: Create policy/policy.h with some constants 2015-06-26 17:59:07 +02:00
Wladimir J. van der Laan 24f24896d6
Merge pull request #6299
4f40716 test: Move reindex test to standard tests (Wladimir J. van der Laan)
36c97b4 Bugfix: Don't check the genesis block header before accepting it (Jorge Timón)
2015-06-26 15:40:59 +02:00
Wladimir J. van der Laan 41076aad0c
Merge pull request #6124
ffd75ad Enable CHECKLOCKTIMEVERIFY as a standard script verify flag (Peter Todd)
bc60b2b Replace NOP2 with CHECKLOCKTIMEVERIFY (BIP65) (Peter Todd)
48e9c57 Move LOCKTIME_THRESHOLD to src/script/script.h (Peter Todd)
99088d6 Make CScriptNum() take nMaxNumSize as an argument (Peter Todd)
2015-06-26 14:42:45 +02:00
Wladimir J. van der Laan 5aa34c7944
Merge pull request #6333
b932953 Hardcoded seeds update June 2015 (Wladimir J. van der Laan)
884454a contrib: Add port parsing to makeseeds.py (Wladimir J. van der Laan)
ccd4369 contrib: Improvements to hardcoded seeds scripts (Wladimir J. van der Laan)
2015-06-25 17:07:00 +02:00
Wladimir J. van der Laan e34a8acd9f
Merge pull request #6233
3e91433 Advance pindexLastCommonBlock for blocks in chainActive (Suhas Daftuar)
2015-06-25 16:36:23 +02:00
Jonas Schnelli 77aeb7c964 UniValue: don't escape solidus, keep espacing of reverse solidus 2015-06-25 08:10:08 +02:00
Wladimir J. van der Laan b9329536cd Hardcoded seeds update June 2015 2015-06-25 08:05:52 +02:00
Gavin Andresen 6a4b97e863
Testing infrastructure: mocktime fixes
New, undocumented-on-purpose -mocktime=timestamp command-line
argument to startup with mocktime set. Needed because
time-related blockchain sanity checks are done on startup, before a
test has a chance to make a setmocktime RPC call.

And changed the setmocktime RPC call so calling it will not result in
currently connected peers being disconnected due to inactivity timeouts.
2015-06-24 15:18:55 -04:00
Wladimir J. van der Laan 91389e51c7
Merge pull request #6088
2085895 fundrawtransaction tests (Jonas Schnelli)
21bbd92 Add fundrawtransaction RPC method (Matt Corallo)
1e0d1a2 Add FundTransaction method to wallet (Matt Corallo)
2d84e22 Small tweaks to CCoinControl for fundrawtransaction (Matt Corallo)
9b4e7d9 Add DummySignatureCreator which just creates zeroed sigs (Pieter Wuille)
2015-06-23 12:40:00 +02:00
Luke Dashjr e617fe2578 Fix various warnings
Found while building on Debian 7
2015-06-23 08:39:57 +00:00
Peter Todd ffd75adce0
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.
2015-06-22 00:00:48 -04:00
Peter Todd bc60b2b4b4 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.
2015-06-21 23:56:28 -04:00
Peter Todd db6047d61b
Take the training wheels off anti-fee-sniping
Now that the off-by-one error w/nLockTime txs issue has been fixed by
87550eef (75a4d512 in the 0.11 branch) we can make the anti-fee-sniping
protection create transactions with nLockTime set such that they're only
valid in the next block, rather than an earlier block.

There was also a concern about poor propagation, however testing with
transactions with nLockTime = GetAdjustedTime()+1 as a proxy for
nLockTime propagation, as well as a few transactions sent the moment
blocks were received, has turned up no detectable issues with
propagation. If you have a block at a given height you certainly have at
least one peer with that block who will accept the transaction. That
peer will certainly have other peers who will accept it, and soon
essentially the whole network has the transaction. In particular, if a
node recives a transaction that it rejects due to the tx being
non-final, it will be accepted again later as it winds its way around
the network.
2015-06-21 23:39:49 -04:00
Wladimir J. van der Laan b6668209aa build: Remove -DBOOST_SPIRIT_THREADSAFE
Now that boost spirit is no longer used, `-DBOOST_SPIRIT_THREADSAFE`
doesn't need to be passed to the compiler anymore.
2015-06-21 14:09:34 +02:00
Jorge Timón 36c97b4e5d Bugfix: Don't check the genesis block header before accepting it
This fixes an error triggered when running with -reindex after #5975
2015-06-21 01:24:51 +02:00
Wladimir J. van der Laan 247b91449a
Merge pull request #6262
506bae3 Return all available information via validateaddress (dexX7)
2015-06-19 18:30:58 +02:00
Wladimir J. van der Laan 57539884f2
Merge pull request #6290
57092ed rpc: make `gettxoutsettinfo` run lock-free (Wladimir J. van der Laan)
2015-06-19 17:42:50 +02:00
Jonas Schnelli 1c043d5672 fix lock issue for QT node diconnect and RPC disconnectnode 2015-06-19 16:32:22 +02:00
Jonas Schnelli 932687bc10 setban: add IPv6 tests 2015-06-19 13:51:42 +02:00
Jonas Schnelli 62909f68a0 fix missing lock in CNode::ClearBanned() 2015-06-19 13:31:33 +02:00
Wladimir J. van der Laan 40400d53d3
Merge pull request #6272
edbdf88 tests: Extend RPC proxy tests (Wladimir J. van der Laan)
baf0507 Improve proxy initialization (Wladimir J. van der Laan)
2015-06-18 17:53:36 +02:00
Wladimir J. van der Laan 0abfa8a22f
Merge pull request #6158
9d79afe add RPC tests for setban & disconnectnode (Jonas Schnelli)
1f02b80 setban: add RPCErrorCode (Jonas Schnelli)
d624167 fix CSubNet comparison operator (Jonas Schnelli)
4e36e9b setban: rewrite to UniValue, allow absolute bantime (Jonas Schnelli)
3de24d7 rename json field "bannedtill" to "banned_until" (Jonas Schnelli)
433fb1a [RPC] extend setban to allow subnets (Jonas Schnelli)
e8b9347 [net] remove unused return type bool from CNode::Ban() (Jonas Schnelli)
1086ffb [QA] add setban/listbanned/clearbanned tests (Jonas Schnelli)
d930b26 [RPC] add setban/listbanned/clearbanned RPC commands (Jonas Schnelli)
2252fb9 [net] extend core functionallity for ban/unban/listban (Jonas Schnelli)
2015-06-18 16:48:37 +02:00
Jonas Schnelli 1f02b80253 setban: add RPCErrorCode 2015-06-17 21:40:56 +02:00
Jonas Schnelli d624167387 fix CSubNet comparison operator 2015-06-17 21:40:55 +02:00
Jonas Schnelli 4e36e9bcc7 setban: rewrite to UniValue, allow absolute bantime 2015-06-17 21:40:55 +02:00
Jonas Schnelli 3de24d7647 rename json field "bannedtill" to "banned_until" 2015-06-17 21:40:55 +02:00
Jonas Schnelli 433fb1a95d [RPC] extend setban to allow subnets 2015-06-17 21:40:55 +02:00
Jonas Schnelli e8b93473f1 [net] remove unused return type bool from CNode::Ban() 2015-06-17 21:40:55 +02:00
Jonas Schnelli 1086ffba26 [QA] add setban/listbanned/clearbanned tests 2015-06-17 21:40:55 +02:00
Jonas Schnelli d930b26a26 [RPC] add setban/listbanned/clearbanned RPC commands 2015-06-17 21:40:55 +02:00
Jonas Schnelli 2252fb91cd [net] extend core functionallity for ban/unban/listban 2015-06-17 21:40:55 +02:00
Suhas Daftuar ae6f957a62 Enable block relay when pruning 2015-06-17 15:37:50 -04:00
Suhas Daftuar 0da6ae2dc3 Do not inv old or missing blocks when pruning
When responding to a getblocks message, only return inv's as
long as we HAVE_DATA for blocks in the chain, and only for blocks
that we aren't likely to delete in the near future.
2015-06-17 15:37:50 -04:00
Philip Kaufmann 0ce30eaa36 fix crash on shutdown when e.g. changing -txindex and abort action
- fixes #3136
- the problem is related to Boost path and a static initialized internal
  pointer
- using a std::string in CDBEnv::EnvShutdown() prevents the problem
- this removes the boost::filesystem::path path field from CDBEnv
2015-06-16 15:03:50 +02:00
Alex van der Peet 60dbe73016 New RPC command disconnectnode 2015-06-16 14:19:41 +02:00
Wladimir J. van der Laan a903ad7e9c
Merge pull request #6283
26a639e remove using namespace std from addrman.cpp (Philip Kaufmann)
40c592a make CAddrMan::size() return the correct type of size_t (Philip Kaufmann)
2015-06-16 14:06:59 +02:00
Wladimir J. van der Laan 57092ed9e7 rpc: make gettxoutsettinfo run lock-free
For leveldb "An iterator operates on a snapshot of the database taken
when the iterator is created". This means that it is unnecessary to
lock out other threads while computing statistics, and neither to hold
cs_main for the whole time. Let the thread run free.
2015-06-16 13:50:38 +02:00
Cory Fields a794284e61 locking: add a quick example of GUARDED_BY
This was chosen not because it's necessarily helpful, but because its locking
assumptions were already correct.
2015-06-16 04:10:21 -04:00
Cory Fields 2b890dd424 locking: fix a few small issues uncovered by -Wthread-safety
- rpcwallet: No need to lock twice here
- openssl: Clang doesn't understand selective lock/unlock here. Ignore it.
- CNode: Fix a legitimate (though very unlikely) locking bug.
2015-06-16 04:04:02 -04:00
Cory Fields cd27bba060 locking: teach Clang's -Wthread-safety to cope with our scoped lock macros
This allows us to use function/variable/class attributes to specify locking
requisites, allowing problems to be detected during static analysis.

This works perfectly with newer Clang versions (tested with 3.3-3.7). For older
versions (tested 3.2), it compiles fine but spews lots of false-positives.
2015-06-16 03:59:26 -04:00
Cory Fields 72bf90d770 Fix scheduler build with some boost versions.
Some boost versions have a conflicting overload of wait_until that returns void.
Explicitly use a template here to avoid hitting that overload.
2015-06-15 16:29:57 -04:00
Philip Kaufmann 26a639e21f remove using namespace std from addrman.cpp 2015-06-15 14:45:19 +02:00
Philip Kaufmann 40c592aa21 make CAddrMan::size() return the correct type of size_t 2015-06-15 14:43:31 +02:00
Wladimir J. van der Laan c1fb0e1075
Merge pull request #6274
02a6702 Add option `-alerts` to opt out of alert system (Wladimir J. van der Laan)
2015-06-15 09:57:33 +02:00
Wladimir J. van der Laan 02a6702a82 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.
2015-06-15 09:53:33 +02:00
Wladimir J. van der Laan 5ebe7db6d0
Merge pull request #6257
ef2a3de Add paytxfee to getwalletinfo, warnings to getnetworkinfo (Stephen)
2015-06-15 09:39:30 +02:00
Josh Lehan e3cae52538 Added -whiteconnections=<n> option
This sets aside a number of connection slots for whitelisted peers,
useful for ensuring your local users and miners can always get in,
even if your limit on inbound connections has already been reached.
2015-06-14 02:07:15 -07:00
Tom Harding 7d6a85ab5b 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.
2015-06-12 15:31:01 -07:00
Wladimir J. van der Laan ab0ec67903
Merge pull request #6209
e059726 [Qt] deselect peer when switching away from peers tab in RPC console (Philip Kaufmann)
7211ada [Qt] replace Boost foreach with Qt version peertablemodel.cpp (Philip Kaufmann)
1b0db7b [Qt] extend rpc console peers tab (Philip Kaufmann)
2015-06-12 16:49:53 +02:00
Wladimir J. van der Laan 8ccc07c077
Merge pull request #6256
65b9454 Use best header chain timestamps to detect partitioning (Gavin Andresen)
2015-06-12 16:44:36 +02:00
Wladimir J. van der Laan baf05075fa Improve proxy initialization
Simplify and make the code in AppInit2 more clear.

This provides a straightforward flow, gets rid of .count() (which makes
it possible to override an earlier provided proxy option to nothing), as
well as comments the different cases.
2015-06-12 12:41:44 +02:00
Wladimir J. van der Laan ebab5d3c59
Merge pull request #6266
0cc7b23 Fix univalue handling of \u0000 characters. (Daniel Kraft)
2015-06-12 09:15:26 +02:00
Stephen ef2a3de25c Add paytxfee to getwalletinfo, warnings to getnetworkinfo 2015-06-11 16:12:34 -04:00
Wladimir J. van der Laan dd8fe8215a
Merge pull request #6221
c257a8c Prune: Support noncontiguous block files (Adam Weiss)
2015-06-11 18:24:35 +02:00
Daniel Kraft 0cc7b2352e Fix univalue handling of \u0000 characters.
Univalue's parsing of \u escape sequences did not handle NUL characters
correctly.  They were, effectively, dropped.  The extended test-case
fails with the old code, and is fixed with this patch.
2015-06-11 12:09:05 +02:00
Wladimir J. van der Laan 51870fc151
Merge pull request #6264
9b5659d Remove translation for -help-debug options (Wladimir J. van der Laan)
2015-06-11 10:50:01 +02:00
Matt Corallo 21bbd920e5 Add fundrawtransaction RPC method 2015-06-11 01:03:23 -07:00
Matt Corallo 1e0d1a2ff0 Add FundTransaction method to wallet
Some code stolen from Jonas Schnelli <jonas.schnelli@include7.ch>
2015-06-11 01:03:23 -07:00
Matt Corallo 2d84e22703 Small tweaks to CCoinControl for fundrawtransaction 2015-06-11 01:03:23 -07:00
Pieter Wuille 9b4e7d9a5e Add DummySignatureCreator which just creates zeroed sigs 2015-06-11 01:03:23 -07:00
Philip Kaufmann e059726811 [Qt] deselect peer when switching away from peers tab in RPC console 2015-06-11 08:39:08 +02:00
Philip Kaufmann 7211adad85 [Qt] replace Boost foreach with Qt version peertablemodel.cpp 2015-06-11 08:38:02 +02:00
Philip Kaufmann 1b0db7b984 [Qt] extend rpc console peers tab
- add node id, ping wait, whitelisted and common height
- rephrase some labels to make them easier to understand for users
2015-06-11 08:38:01 +02:00
Wladimir J. van der Laan eba2f061a0
Merge pull request #6061
eb83719 Consensus: Refactor: Separate Consensus::CheckTxInputs and GetSpendHeight in CheckInputs (Jorge Timón)
2015-06-10 18:04:38 +02:00
Jorge Timón eb837199a0 Consensus: Refactor: Separate Consensus::CheckTxInputs and GetSpendHeight in CheckInputs 2015-06-10 14:07:30 +02:00
Jorge Timón 425c3a87ff Consensus: Separate CheckIndexAgainstCheckpoint() from ContextualCheckBlockHeader 2015-06-10 13:04:50 +02:00
Wladimir J. van der Laan ac5476e2c1
Merge pull request #6057
7e6569e [squashme] improve/corrects prune mode detection test for required wallet rescans (Jonas Schnelli)
7a12119 [RPC] disable import functions in pruned mode (Jonas Schnelli)
3201035 [autoprune] allow wallet in pruned mode (Jonas Schnelli)
2015-06-10 12:32:31 +02:00
Wladimir J. van der Laan 3a1d3e8f52
Merge pull request #5985
14d4eef Fix removing of orphan transactions (Alex Morcos)
2015-06-10 12:15:19 +02:00
Wladimir J. van der Laan 9b5659d1c4 Remove translation for -help-debug options
Do not translate -help-debug options, Many technical terms, and
only a very small audience, so is unnecessary stress to translators.

Brings the code up to date with translation string policy in
`doc/translation_strings_policy.md`.

Also remove no-longer-relevant "In this mode -genproclimit controls how
many blocks are generated immediately." (as of #5957) from regtest help.
2015-06-10 11:59:23 +02:00
Wladimir J. van der Laan e54ff2fc0e
Merge pull request #6213
eebd4cc [init] add -blockversion help and extend -upnp help (Philip Kaufmann)
2015-06-10 11:39:06 +02:00
Wladimir J. van der Laan 8d9f0a6069
Merge pull request #5927
dce8360 Reduce checkpoints' effect on consensus. (Pieter Wuille)
2015-06-10 10:33:12 +02:00
Wladimir J. van der Laan 9c93ee5ceb
Merge pull request #6222
efd4444 Explicitly set tx.nVersion for the genesis block and mining tests (Mark Friedenbach)
2015-06-10 09:48:00 +02:00
Wladimir J. van der Laan 643114f539
Merge pull request #6239
7d8ffac Changes necessary now that zero values accepted in AmountFromValue (Wladimir J. van der Laan)
a04bdef Get rid of fPlus argument to FormatMoney (Wladimir J. van der Laan)
4b4b9a8 Don't go through double in AmountFromValue and ValueFromAmount (Wladimir J. van der Laan)
2015-06-09 18:38:33 +02:00
Wladimir J. van der Laan 3a2ca9bbde
Merge pull request #6246
0640a5e Add an alternate location of endian.h header (Andriy Voskoboinyk)
2015-06-09 18:24:53 +02:00
dexX7 506bae3ac9
Return all available information via validateaddress
`"validateaddress"` omits some information, even in cases where is it available.

The primary motivation is to be able to retrieve redeemScripts, after using `"addmultisigaddress"`, when not all keys are available in the keystore, but the redeemScript actually is.

The output of `"validateaddress"` with this commit:

Keys not available:
```js
validateaddress "n4KWZKx349gdMQGgTnZ8W6WfgSwybkGSK3"
{
  "isvalid": true,
  "address": "n4KWZKx349gdMQGgTnZ8W6WfgSwybkGSK3",
  "scriptPubKey": "76a914fa20d564550b105787f7ce3a9ad7fd9a45cd407088ac",
  "ismine": false,
  "iswatchonly": false,
  "isscript": false
}
```
```js
validateaddress "2N2g2H7gjA8a11g1yKBgh5VTqndyvbnWpBK"
{
  "isvalid": true,
  "address": "2N2g2H7gjA8a11g1yKBgh5VTqndyvbnWpBK",
  "scriptPubKey": "a9146769c19a16c9400b908756e19a4d2afb9e9760e187",
  "ismine": false,
  "iswatchonly": false,
  "isscript": true
}
```

After adding the redeemScript:
```js
addmultisigaddress 2 '["02537357B156A33306A7A014A3748631C59DF405B56F11BA4AA4A3CE81501AF095","02F1FB200390E7864EF4450C07B15988179A57C3CF3A878F668E1070CB615749FE"]'
2N2g2H7gjA8a11g1yKBgh5VTqndyvbnWpBK

validateaddress "2N2g2H7gjA8a11g1yKBgh5VTqndyvbnWpBK"
{
  "isvalid": true,
  "address": "2N2g2H7gjA8a11g1yKBgh5VTqndyvbnWpBK",
  "scriptPubKey": "a9146769c19a16c9400b908756e19a4d2afb9e9760e187",
  "ismine": false,
  "iswatchonly": false,
  "isscript": true,
  "script": "multisig",
  "hex": "522102537357b156a33306a7a014a3748631c59df405b56f11ba4aa4a3ce81501af0952102f1fb200390e7864ef4450c07b15988179a57c3cf3a878f668e1070cb615749fe52ae",
  "addresses": [
    "n4KWZKx349gdMQGgTnZ8W6WfgSwybkGSK3",
    "mmSKNtbYYHRrhTLKiok5TuYrGEs4Y2A4k6"
  ],
  "sigsrequired": 2,
  "account": ""
}
```

All keys available:
```js
validateaddress "n4KWZKx349gdMQGgTnZ8W6WfgSwybkGSK3"
{
  "isvalid": true,
  "address": "n4KWZKx349gdMQGgTnZ8W6WfgSwybkGSK3",
  "scriptPubKey": "76a914fa20d564550b105787f7ce3a9ad7fd9a45cd407088ac",
  "ismine": true,
  "iswatchonly": false,
  "isscript": false,
  "pubkey": "02537357b156a33306a7a014a3748631c59df405b56f11ba4aa4a3ce81501af095",
  "iscompressed": true,
  "account": ""
}
```
```js
validateaddress "2N2g2H7gjA8a11g1yKBgh5VTqndyvbnWpBK"
{
  "isvalid": true,
  "address": "2N2g2H7gjA8a11g1yKBgh5VTqndyvbnWpBK",
  "scriptPubKey": "a9146769c19a16c9400b908756e19a4d2afb9e9760e187",
  "ismine": true,
  "iswatchonly": false,
  "isscript": true,
  "script": "multisig",
  "hex": "522102537357b156a33306a7a014a3748631c59df405b56f11ba4aa4a3ce81501af0952102f1fb200390e7864ef4450c07b15988179a57c3cf3a878f668e1070cb615749fe52ae",
  "addresses": [
    "n4KWZKx349gdMQGgTnZ8W6WfgSwybkGSK3",
    "mmSKNtbYYHRrhTLKiok5TuYrGEs4Y2A4k6"
  ],
  "sigsrequired": 2,
  "account": ""
}
```
2015-06-09 17:21:27 +02:00
Wladimir J. van der Laan c57e12aeef
Merge pull request #6217
51fc672 [Qt] disconnect peers from peers tab via context menu (Philip Kaufmann)
2015-06-09 17:13:29 +02:00
Gavin Andresen 65b9454503
Use best header chain timestamps to detect partitioning
The partition checking code was using chainActive timestamps
to detect partitioning; with headers-first syncing, it should use
(and with this pull request, does use) pIndexBestHeader timestamps.

Fixes issue #6251
2015-06-08 16:34:58 -04:00
Andriy Voskoboinyk 0640a5eb60 Add an alternate location of endian.h header 2015-06-07 04:54:20 +03:00
Wladimir J. van der Laan 55294a9fb6
Merge pull request #6241
c946ebe fix util_tests.cpp clang warnings (Jonas Schnelli)
2015-06-06 11:31:55 +02:00
Jonas Schnelli c946ebed5e fix util_tests.cpp clang warnings
was introduced with #6121
2015-06-06 10:12:12 +02:00
Wladimir J. van der Laan 7d8ffac186 Changes necessary now that zero values accepted in AmountFromValue
- Add an accept test for zero amounts, and a reject test for negative
  amounts
- Remove ugly hack in `settxfee` that is no longer necessary
- Do explicit zero checks in wallet RPC functions
- Don't add a check for zero amounts in `createrawtransaction` - this
  could be seen as a feature
2015-06-06 09:41:12 +02:00
Wladimir J. van der Laan a04bdefbeb Get rid of fPlus argument to FormatMoney
It's never used with any other value than false, the default.
2015-06-06 09:30:41 +02:00
Wladimir J. van der Laan 4b4b9a8de6 Don't go through double in AmountFromValue and ValueFromAmount
My prime gripe with JSON spirit was that monetary values still had to be
converted from and to floating point which can cause deviations (see #3759
and https://bitcoin.stackexchange.com/questions/22716/bitcoind-sendfrom-round-amount-error).

As UniValue stores internal values as strings, this is no longer
necessary. This avoids risky double-to-integer and integer-to-double
conversions completely, and results in more elegant code to boot.
2015-06-06 09:30:41 +02:00
Peter Todd 076badb60f
Add getblockheader RPC call
Alternative to getblock that works even when the block itself has been
pruned, returning all available information.
2015-06-05 17:07:58 -02:30
Wladimir J. van der Laan 12cdbabc26
Merge pull request #6152
08d9373 Remove unused code from wallet and validation interface (Michael Ford)
2015-06-05 21:24:15 +02:00
Wladimir J. van der Laan 3fce72eaa3
Merge pull request #6206
a9ac95c use const references where appropriate (Philip Kaufmann)
2015-06-05 07:11:44 +02:00
Jonas Schnelli ef5fca8b80 fix rpcmining/getblocktemplate univalue transition logic error 2015-06-04 21:40:11 +02:00
Philip Kaufmann a9ac95c1bc use const references where appropriate 2015-06-04 19:34:18 +02:00
Suhas Daftuar 3e9143386a Advance pindexLastCommonBlock for blocks in chainActive
This prevents an edge case where a block downloaded and pruned
in-between successive calls to FindNextBlocksToDownload could
cause the block to be unnecessarily re-requested.
2015-06-04 13:00:26 -04:00
Jonas Schnelli 44c7474446 univalue: add type check unit tests 2015-06-04 13:58:14 +02:00
Wladimir J. van der Laan c02309204b univalue: add strict type checking 2015-06-04 13:18:57 +02:00
Wladimir J. van der Laan 7e98a3c642 util: Add ParseInt64 and ParseDouble functions
Strict parsing functions for other numeric types.

- ParseInt64 analogous to ParseInt32, but for 64-bit values.
- ParseDouble for doubles.
- Make all three Parse* functions more strict (e.g. reject whitespace on
  the inside)

Also add tests.
2015-06-04 13:18:46 +02:00
Wladimir J. van der Laan 043df2b568 Simplify RPCclient, adapt json_parse_error test
# Conflicts:
#	src/test/rpc_tests.cpp
2015-06-04 13:18:35 +02:00
Jonas Schnelli 519eedeba7 fix univalue json parse tests 2015-06-04 10:35:36 +02:00
Jonas Schnelli c7fbbc7e1d fix missing univalue types during constructing 2015-06-04 09:16:21 +02:00
Jonas Schnelli 8f7e4abbe6 fix rpc batching univalue issue 2015-06-04 09:16:21 +02:00
Jonas Schnelli 9a8897f4ac Remove JSON Spirit wrapper, remove JSON Spirit leftovers
- implement find_value() function for UniValue
- replace all Array/Value/Object types with UniValues, remove JSON Spirit to UniValue wrapper
- remove JSON Spirit sources
2015-06-04 09:16:21 +02:00
Jonas Schnelli 3df0411ad9 remove JSON Spirit UniValue wrapper 2015-06-04 09:16:06 +02:00
Jonas Schnelli 1f263c899e fix rpc unit test, plain numbers are not JSON compatible object
UniValues read() does only read valid json.
2015-06-04 09:16:06 +02:00
Jonas Schnelli e04d9c25cf univalue: correct bool support 2015-06-04 09:16:06 +02:00
Jonas Schnelli 0c5b2cf69a univalue: add support for real, fix percision and make it json_spirit compatible
- avoid breaking the API because of different number/percision handling
2015-06-04 09:16:06 +02:00
Jonas Schnelli 21c10de8c2 special threatment for null,true,false because they are non valid json 2015-06-04 09:16:06 +02:00
Jonas Schnelli 6c7bee0624 expicit set UniValue type to avoid empty values 2015-06-04 09:16:05 +02:00
Jonas Schnelli 53b4671a9d extend conversion to UniValue 2015-06-04 09:16:05 +02:00
Jeff Garzik 15982a8b69 Convert tree to using univalue. Eliminate all json_spirit uses. 2015-06-04 09:16:05 +02:00
Jeff Garzik 5e3060c0d1 UniValue: export NullUniValue global constant 2015-06-04 09:16:05 +02:00
Jeff Garzik efc7883772 UniValue: prefer .size() to .count(), to harmonize w/ existing tree 2015-06-04 09:16:05 +02:00
Wladimir J. van der Laan dbd8550231
Merge pull request #6220
d648236 bump version in clientversion.h (Philip Kaufmann)
2015-06-03 19:30:08 +02:00
Adam Weiss c257a8c9a6 Prune: Support noncontiguous block files
In some corner cases, it may be possible for recent blocks to end up in
the same block file as much older blocks.  Previously, the pruning code
would stop looking for files to remove upon first encountering a file
containing a block that cannot be pruned, now it will keep looking for
candidate files until the target is met and all other criteria are
satisfied.

This can result in a noncontiguous set of block files (by number) on
disk, which is fine except for during some reindex corner cases, so
make reindex preparation smarter such that we keep the data we can
actually use and throw away the rest.  This allows pruning to work
correctly while downloading any blocks needed during the reindex.
2015-06-03 13:25:33 -04:00
Suhas Daftuar bfc30b3437 Ignore unrequested blocks too far ahead of tip 2015-06-03 11:36:04 -04:00
Wladimir J. van der Laan 9d60602444
Merge pull request #5875
aa8c827 P2P regression test for new AcceptBlock behavior (Suhas Daftuar)
9be0e68 Be stricter in processing unrequested blocks (Suhas Daftuar)
2015-06-03 16:20:58 +02:00
Wladimir J. van der Laan 4e157fc60d 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.
2015-06-03 12:18:40 +02:00
Mark Friedenbach efd44440d8 Explicitly set tx.nVersion for the genesis block and mining tests
If/when CTransaction::CURRENT_VERSION is incremented, this will break CChainParams and the miner tests. This fix sets the transaction version explicitly where we depend on the hash value (genesis block, proof of work checks).
2015-06-02 16:39:34 -07:00
Suhas Daftuar 9be0e6837b Be stricter in processing unrequested blocks
AcceptBlock will no longer process an unrequested block, unless it has not
been previously processed and has more work than chainActive.Tip()
2015-06-02 13:54:29 -04:00
Philip Kaufmann d648236d87 bump version in clientversion.h 2015-06-02 17:11:05 +02:00
Philip Kaufmann 51fc672f59 [Qt] disconnect peers from peers tab via context menu
- It is now allowed to disconnect peers from peers tab via
  right-click context menu. Peers are not permanently banned!
2015-06-02 09:34:35 +02:00
Wladimir J. van der Laan f00b62391b
Merge pull request #6203
d449772 Remove P2SH coinbase flag, no longer interesting (Luke Dashjr)
2015-06-02 09:11:13 +02:00
Wladimir J. van der Laan 88a7ead5de
Merge pull request #6172
a1ba077 Ignore getheaders requests when not synced. (Suhas Daftuar)
2015-06-02 07:56:02 +02:00
Philip Kaufmann eebd4cca19 [init] add -blockversion help and extend -upnp help 2015-06-01 14:38:44 +02:00
Wladimir J. van der Laan 87550eefc1
Merge pull request #6183
28bf062 Fix off-by-one error w/ nLockTime in the wallet (Peter Todd)
2015-06-01 11:33:33 +02:00
Wladimir J. van der Laan 8d05ec7bda
Merge pull request #6164
aa41bc8 Update help message to match the #4219 change (lpescher)
f60bb5e Update documentation to match the #4219 change (lpescher)
cb87386 Make command line option to show all debugging consistent with similar options (lpescher)
2015-06-01 11:26:59 +02:00
Wladimir J. van der Laan 4f1677b6ba
Merge pull request #6198
0bb4385 Improve comment explaining purpose of MAX_MONEY constant (Peter Todd)
2015-06-01 11:25:59 +02:00
Wladimir J. van der Laan e9d0d252fc
Merge pull request #6208
d6922aa [net, trivial] remove using namespace std pollution in netbase.cpp (Philip Kaufmann)
49b2292 [net, trivial] explicitly use std::string for FindNode (Philip Kaufmann)
2015-06-01 09:53:45 +02:00
Wladimir J. van der Laan 42746b0476
Merge pull request #6193
6e71efa [REST] remove json input for getutxos, limit to query max. 15 outpoints (Jonas Schnelli)
64b8027 rest.cpp: strip whitespace (Jonas Schnelli)
2015-06-01 09:48:17 +02:00
Wladimir J. van der Laan 921ea89bc3
Merge pull request #6195
8273793 Eliminate compiler warning due to unused variable (Suhas Daftuar)
2015-06-01 08:49:47 +02:00
Philip Kaufmann d6922aad2c [net, trivial] remove using namespace std pollution in netbase.cpp 2015-05-31 15:48:23 +02:00
Philip Kaufmann 49b22928ee [net, trivial] explicitly use std::string for FindNode
- in OpenNetworkConnection we have a FindNode call, which gets a const
  char*, wheras we only have defined a FindNode for std::string
2015-05-31 15:44:22 +02:00
Luke Dashjr d449772cf6 Remove P2SH coinbase flag, no longer interesting 2015-05-31 06:53:48 +00:00
Jonas Schnelli 7e6569ea5b [squashme] improve/corrects prune mode detection test for required wallet rescans 2015-05-28 09:00:45 +02:00
Jonas Schnelli 7a12119d7a [RPC] disable import functions in pruned mode
import functions could lead to a rescan beyond prune level
2015-05-28 09:00:45 +02:00
Jonas Schnelli 3201035f22 [autoprune] allow wallet in pruned mode 2015-05-28 09:00:45 +02:00
Peter Todd 0bb43854c7
Improve comment explaining purpose of MAX_MONEY constant 2015-05-27 21:02:04 -04:00
Mark Friedenbach ef8dfe41d1 Prevent block.nTime from decreasing
Under some circumstances it is possible for there to be a significant,
discontinuous jump in a node's clock value. On mining nodes, this can
result in block templates which are no longer valid due to time-based
nLockTime constraints. UpdateTime() is modified so that it will never
decrease a block's nLockTime, thereby preventing such invalidations.
2015-05-27 14:03:11 -07:00
Jonas Schnelli 6e71efa9f0 [REST] remove json input for getutxos, limit to query max. 15 outpoints
Remove possibility to send json encoded parameters to `/rest/getutxos/` to avoid possible DoS scenarios.

The JSON output option is untouched.
2015-05-27 20:10:02 +02:00
Suhas Daftuar 8273793350 Eliminate compiler warning due to unused variable 2015-05-27 13:04:59 -04:00
Suhas Daftuar a1ba0778dd Ignore getheaders requests when not synced. 2015-05-27 10:36:04 -04:00
Jorge Timón e69734309c Chainparams: Explicit CMessageHeader::MessageStartChars to functions in main:
-UndoWriteToDisk
-WriteBlockToDisk
2015-05-27 16:01:07 +02:00
Wladimir J. van der Laan c7c9af381c
Merge pull request #5669
da29ecb Consensus: MOVEONLY: Move CValidationState from main consensus/validation (jtimon)
27afcd8 Consensus: Refactor: Decouple CValidationState from main::AbortNode() (Cory Fields)
2015-05-27 15:00:02 +02:00
Peter Todd 28bf06236d
Fix off-by-one error w/ nLockTime in the wallet
Previously due to an off-by-one error the wallet ignored
nLockTime-by-height transactions that would be valid in the next block
even though they are accepted into the mempool. The transactions
wouldn't show up until confirmed, nor would they be included in the
unconfirmed balance. Similar to the mempool behavior fix in 665bdd3b,
the wallet code was calling IsFinalTx() directly without taking into
account the fact that doing so tells you if the transaction could have
been mined in the *current* block, rather than the next block.

To fix this we strip IsFinalTx() of non-consensus-critical
functionality, removing the default arguments, and add CheckFinalTx() to
check if a transaction will be final in the next block.
2015-05-27 05:51:33 -04:00
Jonas Schnelli 64b8027c5c rest.cpp: strip whitespace 2015-05-27 09:41:14 +02:00
Wladimir J. van der Laan 0bcf04f046
Merge pull request #6153
8c35b6f Parameter interaction: disable upnp if -proxy set (Wladimir J. van der Laan)
2015-05-27 09:33:01 +02:00
Wladimir J. van der Laan 182686cdbd
Merge pull request #6186
b45c50c Fix two problems in CSubNet parsing (Wladimir J. van der Laan)
19e8d7b Simplify code for CSubnet (Wladimir J. van der Laan)
2015-05-27 09:08:39 +02:00
Wladimir J. van der Laan 165e323d85 qt: Periodic translation update 2015-05-26 14:36:47 +02:00
Wladimir J. van der Laan 9f7809f6c3
Merge pull request #5976
8ba7f84 Reduce download timeouts as blocks arrive (Suhas Daftuar)
2015-05-26 13:02:40 +02:00
Michael Ford 8697ff33ed Remove duplicate chainparams.h include from alert_tests 2015-05-26 17:16:21 +08:00
Wladimir J. van der Laan e9af4e65b5
Merge pull request #5947
36cba8f Alert if it is very likely we are getting a bad chain (Gavin Andresen)
2015-05-26 10:41:17 +02:00
Wladimir J. van der Laan b45c50ce51 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.
2015-05-26 08:59:59 +02:00
Wladimir J. van der Laan 19e8d7be42 Simplify code for CSubnet
Simplify the code by using CAddress.ip directly, instead of the reversed
GetByte() semantics.
2015-05-26 08:59:13 +02:00
Wladimir J. van der Laan e1412d3e96
Merge pull request #6159
ffdda4e Catch errors on datadir lock and pidfile delete (Adam Weiss)
2015-05-24 10:57:22 +02:00
Adam Weiss ffdda4e8a7 Catch errors on datadir lock and pidfile delete
Prevents bad permissions (or other fs related problems) from resulting
in hard crashes with cryptic messages on startup and shutdown.
2015-05-22 14:15:22 -04:00
Wladimir J. van der Laan 7708fcde36
Merge pull request #6098
cc24610 Update Windows resource files (and add one for bitcoin-tx) (Luke Dashjr)
2015-05-22 08:35:38 +02:00
Luke Dashjr cc24610fdb Update Windows resource files (and add one for bitcoin-tx) 2015-05-22 02:56:55 +00:00
Wladimir J. van der Laan bdcf5dea7c Fix intermittent hang issue in scheduler_tests
Don't clear `stopRequested` and `stopWhenEmpty` at the top of
`serviceQueue`, as this results in a race condition: on systems under
heavy load, some of the threads only get scheduled on the CPU when the
other threads have already finished their work. This causes the flags to
be cleared post-hoc and thus those threads to wait forever.

The potential drawback of this change is that the scheduler cannot be
restarted after being stopped (an explicit reset would be needed), but
we don't use this functionality anyway.
2015-05-21 19:07:10 +02:00
Wladimir J. van der Laan 0d862c2739
Merge pull request #6160
16d9cb7 [QT] overviewpage: make sure warning icons gets colored (Jonas Schnelli)
2015-05-20 13:21:01 +02:00
lpescher aa41bc84b1 Update help message to match the #4219 change 2015-05-19 22:35:11 -06:00
lpescher cb87386241 Make command line option to show all debugging consistent with similar options
Most people expect a value of 1 to enable all for command line arguments.
However to do this for the -debug option you must type "-debug=".
This has been changed to allow "-debug=1" as well as "-debug=" to
enable all debug logging
2015-05-19 22:14:35 -06:00
Jonas Schnelli fb21862b92 [QT] mainwindow toolbar must not be movable 2015-05-19 20:28:20 +02:00
Jonas Schnelli 16d9cb7e29 [QT] overviewpage: make sure warning icons gets colored 2015-05-19 16:37:13 +02:00
Wladimir J. van der Laan 377711ff3f
Merge pull request #5996
935bd0a Chainparams: Refactor: Decouple main::GetBlockValue() from Params() [renamed GetBlockSubsidy] (Jorge Timón)
2015-05-19 11:42:47 +02:00
Wladimir J. van der Laan e2e7f9513f
qt: fix unused function warning in scicon.cpp
Enclose MakeSingleColorImage in an anonymous namespace to avoid a
unused function warning on Windows and MacOSX.

Github-Pull: #6143
2015-05-19 11:27:54 +02:00
Wladimir J. van der Laan 8c35b6f3be 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.
2015-05-18 11:22:39 +02:00
Michael Ford 08d9373e2f Remove unused code from wallet and validation interface
Fixes #6109
2015-05-18 17:11:06 +08:00
Alex Morcos 2457dc43ac Change default nTxConfirmTarget to 2 2015-05-18 09:01:30 +02:00
Wladimir J. van der Laan 77ed59df4d wallet: Introduce constant for -txconfirmtarget default 2015-05-18 09:00:24 +02:00
Wladimir J. van der Laan a6d2e31e8b
Merge pull request #6144
881027a Remove assertion from ~LockedPageManager (Wladimir J. van der Laan)
2015-05-18 07:53:09 +02:00
Gavin Andresen 3c60937ce6
Merge pull request #6146
f501054 More robust CScheduler unit test (Gavin Andresen)
2015-05-16 18:03:26 -04:00
Gavin Andresen f50105486f
More robust CScheduler unit test
On a busy or slow system, the CScheduler unit test could fail because it
assumed all threads would be done after a couple of milliseconds.

Replace the hard-coded sleep with CScheduler stop() method that
will cleanly exit the servicing threads when all tasks are completely
finished.
2015-05-16 17:59:23 -04:00
Wladimir J. van der Laan ec82d8c99c
Merge pull request #6062
ff7fe8b Fix for correctly including climits on certain platforms {DragonFlyBSD}. (sinetek)
2015-05-16 10:48:49 +02:00
Wladimir J. van der Laan 97ccfdca8a
Merge pull request #6137
a5baba5 minor: remove unneeded bool in CWalletDB::Recover (Philip Kaufmann)
2015-05-16 09:37:01 +02:00
Wladimir J. van der Laan 2a822987dd
Merge pull request #6129
c208040 Fix for clearing fCheckForPruning (Alex Morcos)
2015-05-15 17:32:54 +02:00
Jorge Timón 935bd0a447 Chainparams: Refactor: Decouple main::GetBlockValue() from Params() [renamed GetBlockSubsidy]
Remove redundant getter CChainParams::SubsidyHalvingInterval()
2015-05-15 16:12:30 +02:00
jtimon da29ecbcc6 Consensus: MOVEONLY: Move CValidationState from main consensus/validation 2015-05-15 16:05:28 +02:00
Cory Fields 27afcd89db Consensus: Refactor: Decouple CValidationState from main::AbortNode() 2015-05-15 16:05:26 +02:00
Wladimir J. van der Laan ac75bafafd
qt: translations update 2015-05-15 14:00:56 +02:00
Wladimir J. van der Laan e47c94e64c
Merge pull request #6135
f13dac9 Comment edits and cleanup (BitcoinPRReadingGroup)
ff734e9 Alphabetic order in makefile (Jorge Timón)
5207f33 fix header include groups (Philip Kaufmann)
59b149f remove unneeded incude of wallet/db.h from rpcmining.cpp (Philip Kaufmann)
3703385 remove unused classes from db.h (Philip Kaufmann)
0a7bcb7 fix IDE/compiler warning "extra ';'" in validationinterface.h (Philip Kaufmann)
3b00e7c [Trivial] Update COPYING (sandakersmann)
dd9e688 Trivial: Corrected owner of DNS seeder (ayeowch)
a60bfd8 [init] better message when no wallet support is compiled in (Philip Kaufmann)
78f44b6 Capitalized P2P (sandakersmann)
8e9248d [Trivial] Cryptocurrency is one word (sandakersmann)
803f51e Typo in GetRawMemPool RPC method help: "]" --> "}" (Chris Arnesen)
605a735 addrman: update comments (Pavel Vasin)
2015-05-15 13:59:07 +02:00
Alex Morcos c208040354 Fix for clearing fCheckForPruning
Previously this was cleared only after UnlinkPrunedFiles, but it should really be cleared after FindFilesToPrune, regardless of whether there are any files to be pruned.
2015-05-15 07:58:41 -04:00
Wladimir J. van der Laan f0043c2d6d
Merge pull request #5968
51aa249 Chainparams: Refactor: Decouple IsSuperMajority from Params() (Jorge Timón)
2015-05-15 13:52:54 +02:00
Wladimir J. van der Laan 6fb90d8983
Merge pull request #6102
86a5f4b Relocate calls to CheckDiskSpace (Alex Morcos)
67708ac Write block index more frequently than cache flushes (Pieter Wuille)
b3ed423 Cache tweak and logging improvements (Pieter Wuille)
fc684ad Use accurate memory for flushing decisions (Pieter Wuille)
046392d Keep track of memory usage in CCoinsViewCache (Pieter Wuille)
540629c Add memusage.h (Pieter Wuille)
2015-05-15 13:43:02 +02:00
Wladimir J. van der Laan 63e7016566
Merge pull request #6140
8f0947b Increase timeouts in pruning.py and modify warning language. (Alex Morcos)
b89f307 Fix incorrect variable name in FindFilesToPrune (Suhas Daftuar)
2015-05-15 13:37:31 +02:00
Wladimir J. van der Laan 881027a79d Remove assertion from ~LockedPageManager
This assertion will occur any time that the client quits without
shutting down properly due to an error condition. As the user will
report this error instead of the error that was the root cause, it is
better to remove it.
2015-05-15 11:44:58 +02:00
Gavin Andresen 36cba8f118
Alert if it is very likely we are getting a bad chain
Create a monitoring task that counts how many blocks have been found in the last four hours.

If very few or too many have been found, an alert is triggered.

"Very few" and "too many" are set based on a false positive rate of once every fifty years of constant running with constant hashing power, which works out to getting 5 or fewer or 48 or more blocks in four hours (instead of the average of 24).

Only one alert per day is triggered, so if you get disconnected from the network (or are being Sybil'ed) -alertnotify will be triggered after 3.5 hours but you won't get another -alertnotify for 24 hours.

Tested with a new unit test and by running on the main network with -debug=partitioncheck

Run test/test_bitcoin --log_level=message to see the alert messages:
    WARNING: check your network connection, 3 blocks received in the last 4 hours (24 expected)
    WARNING: abnormally high number of blocks generated, 60 blocks received in the last 4 hours (24 expected)

The -debug=partitioncheck debug.log messages look like:
    ThreadPartitionCheck : Found 22 blocks in the last 4 hours
    ThreadPartitionCheck : likelihood: 0.0777702
2015-05-14 14:58:44 -04:00
Gavin Andresen b4c219b622
Merge pull request #5964
9a1dcea Use CScheduler for net's DumpAddresses (Gavin Andresen)
ddd0acd Create a scheduler thread for lightweight tasks (Gavin Andresen)
68d370b CScheduler unit test (Gavin Andresen)
cfefe5b scheduler: fix with boost <= 1.50 (Cory Fields)
ca66717 build: make libboost_chrono mandatory (Cory Fields)
928b950 CScheduler class for lightweight task scheduling (Gavin Andresen)
e656560 [Qt] add defaultConfirmTarget constant to sendcoinsdialog (Philip Kaufmann)
2015-05-14 14:27:07 -04:00
Gavin Andresen 9a1dcea2df
Use CScheduler for net's DumpAddresses
Instead of starting Yet Another Thread to dump addresses,
use CScheduler to do it.
2015-05-14 12:50:42 -04:00
Gavin Andresen ddd0acd3db
Create a scheduler thread for lightweight tasks 2015-05-14 12:50:41 -04:00
Gavin Andresen 68d370bec4
CScheduler unit test 2015-05-14 12:50:41 -04:00
Cory Fields cfefe5b88c
scheduler: fix with boost <= 1.50 2015-05-14 10:37:19 -04:00
Gavin Andresen 928b950e3b
CScheduler class for lightweight task scheduling
Simple class to manage a task queue that is serviced by one or
more threads.
2015-05-14 10:37:19 -04:00
Philip Kaufmann e656560edb
[Qt] add defaultConfirmTarget constant to sendcoinsdialog
- replaces some hard-coded values for the default confirmation target
- also simplify code that is using the new constant
2015-05-14 10:37:19 -04:00
Philip Kaufmann a5baba52c5 minor: remove unneeded bool in CWalletDB::Recover 2015-05-14 15:55:17 +02:00
Wladimir J. van der Laan a538126a8c
Merge pull request #6110
ca5f688 [QT] don't colorize icons on win and mac (Jonas Schnelli)
7247d10 [QT] use alert icon with tooltip insted of "(out of sync)" text (Jonas Schnelli)
51c7c70 [QT] remove frame to avoid double-frame situation in sendcoinsentry.ui (Jonas Schnelli)
2a6b844 [QT] change transaction amount and height in overview page (Jonas Schnelli)
2015-05-14 13:50:46 +02:00
BitcoinPRReadingGroup f13dac972c Comment edits and cleanup
Original PR here: https://github.com/bitcoin/bitcoin/pull/6044
2015-05-14 01:02:01 -04:00
Jorge Timón ff734e905f Alphabetic order in makefile 2015-05-14 01:02:01 -04:00
Philip Kaufmann 5207f33f45 fix header include groups 2015-05-14 01:02:01 -04:00
Philip Kaufmann 59b149ff82 remove unneeded incude of wallet/db.h from rpcmining.cpp 2015-05-14 01:02:01 -04:00
Philip Kaufmann 3703385547 remove unused classes from db.h 2015-05-14 01:02:00 -04:00
Philip Kaufmann 0a7bcb7e55 fix IDE/compiler warning "extra ';'" in validationinterface.h 2015-05-14 01:02:00 -04:00
ayeowch dd9e688b3b Trivial: Corrected owner of DNS seeder 2015-05-14 01:02:00 -04:00
Philip Kaufmann a60bfd810f [init] better message when no wallet support is compiled in 2015-05-14 01:02:00 -04:00
Chris Arnesen 803f51efe4 Typo in GetRawMemPool RPC method help: "]" --> "}" 2015-05-14 01:02:00 -04:00
Pavel Vasin 605a735425 addrman: update comments
nUnkBias was removed in https://github.com/bitcoin/bitcoin/pull/5941
2015-05-14 01:02:00 -04:00
Pieter Wuille dce8360e44 Reduce checkpoints' effect on consensus.
Instead of only checking height to decide whether to disable script checks,
actually check whether a block is an ancestor of a checkpoint, up to which
headers have been validated. This means that we don't have to prevent
accepting a side branch anymore - it will be safe, just less fast to
do.

We still need to prevent being fed a multitude of low-difficulty headers
filling up our memory. The mechanism for that is unchanged for now: once
a checkpoint is reached with headers, no headers chain branching off before
that point are allowed anymore.
2015-05-13 12:52:57 -07:00
Gavin Andresen 351f73ecd5
Merge pull request #6125
472b4c5 Clean up parsing of bool command line args (Alex Morcos)
2015-05-13 15:15:33 -04:00
Suhas Daftuar b89f30775d Fix incorrect variable name in FindFilesToPrune 2015-05-13 14:58:55 -04:00
Jonas Schnelli ca5f688547 [QT] don't colorize icons on win and mac 2015-05-13 20:27:26 +02:00
Wladimir J. van der Laan 2cc1372190
Merge pull request #5159
b649e03 Create new BlockPolicyEstimator for fee estimates (Alex Morcos)
2015-05-13 17:10:02 +02:00
Alex Morcos b649e03954 Create new BlockPolicyEstimator for fee estimates
This class groups transactions that have been confirmed in blocks into buckets, based on either their fee or their priority.  Then for each bucket, the class calculates what percentage of the transactions were confirmed within various numbers of blocks.  It does this by keeping an exponentially decaying moving history for each bucket and confirm block count of the percentage of transactions in that bucket that were confirmed within that number of blocks.

-Eliminate txs which didn't have all inputs available at entry from fee/pri calcs

-Add dynamic breakpoints and tracking of confirmation delays in mempool transactions

-Remove old CMinerPolicyEstimator and CBlockAverage code

-New smartfees.py

-Pass a flag to the estimation code, using IsInitialBlockDownload as a proxy for when we are still catching up and we shouldn't be counting how many blocks it takes for transactions to be included.

-Add a policyestimator unit test
2015-05-13 10:36:24 -04:00
Alex Morcos 472b4c5dda Clean up parsing of bool command line args 2015-05-12 16:41:55 -04:00
Alex Morcos 86a5f4b54e Relocate calls to CheckDiskSpace
Make sure we're checking disk space for block index writes and allow for pruning to happen before chainstate writes.
2015-05-12 21:44:56 +02:00
Jonas Schnelli 7247d103ff [QT] use alert icon with tooltip insted of "(out of sync)" text
# Conflicts:
#	src/qt/forms/overviewpage.ui
#	src/qt/overviewpage.cpp
2015-05-12 20:46:12 +02:00
Jonas Schnelli 51c7c7029e [QT] remove frame to avoid double-frame situation in sendcoinsentry.ui 2015-05-12 20:46:10 +02:00
Alex Morcos 14d4eef799 Fix removing of orphan transactions
We don't want to erase orphans that still have missing inputs, they should still be tracked as orphans.  Also, the transaction thats being accepted can't be an orphan otherwise it would have previously been accepted, so doesn't need to be added to the erase queue.
2015-05-12 12:02:38 -04:00
Wladimir J. van der Laan 484821870b
Merge pull request #6123
bba7c24 Avoid crash on start in TestBlockValidity with gen=1. (Gregory Maxwell)
2015-05-12 16:37:19 +02:00
Wladimir J. van der Laan 40de49c358
Merge pull request #5932
107d35b [Qt] add defaultConfirmTarget constant to sendcoinsdialog (Philip Kaufmann)
2015-05-12 14:38:00 +02:00
Gregory Maxwell bba7c24929 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.
2015-05-12 14:07:43 +02:00
Pieter Wuille 67708acff9 Write block index more frequently than cache flushes 2015-05-11 17:58:14 -07:00
Pieter Wuille b3ed4236be Cache tweak and logging improvements 2015-05-11 17:58:14 -07:00
Pieter Wuille fc684ad8af Use accurate memory for flushing decisions 2015-05-11 17:57:27 -07:00
Pieter Wuille 046392dc1d Keep track of memory usage in CCoinsViewCache 2015-05-11 17:56:48 -07:00
Pieter Wuille 540629c6fb Add memusage.h 2015-05-11 17:56:48 -07:00
Wladimir J. van der Laan 7e0e7f823f
Merge pull request #6058
03c5687 appropriate response when trying to get a block in pruned mode (Jonas Schnelli)
1b2e555 add autoprune information to RPC "getblockchaininfo" (Jonas Schnelli)
2015-05-11 16:40:58 +02:00
Jonas Schnelli 03c56872b5 appropriate response when trying to get a block in pruned mode 2015-05-11 16:10:08 +02:00
Wladimir J. van der Laan 23254131a3
Merge pull request #6093
3da7849 [squashme] simplify SetupEnvironment() (by dexX7) (Jonas Schnelli)
b3ffcdf don't imbue boost::filesystem::path with locale "C" on windows (Jonas Schnelli)
2015-05-10 14:22:53 +02:00
Jonas Schnelli 3da7849007 [squashme] simplify SetupEnvironment() (by dexX7) 2015-05-10 10:06:41 +02:00
Peter Todd 48e9c57cf0 Move LOCKTIME_THRESHOLD to src/script/script.h
Will now be needed by CHECKLOCKTIMEVERIFY code.
2015-05-09 04:33:49 -04:00
Peter Todd 99088d60d8 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.
2015-05-09 04:29:47 -04:00
Jonas Schnelli a1d0ec44d7 re-add -reindex help message
was suddenly removed with fc44231cb7 (probably not by purpose)
2015-05-08 19:59:01 +02:00
Wladimir J. van der Laan fec5c0ea05
Merge pull request #6112
1c54757 Add more script edge condition tests. (Dave Collins)
2015-05-07 18:07:50 +02:00
Wladimir J. van der Laan 6a877e870e
Merge pull request #6034
a574899 chaincodes: abstract away more chaincode behavior [squashme] replace struct CCainCode with a typedef uint256 ChainCode (Cory Fields)
8cf1485 Abstract chaincodes into CChainCode (Pieter Wuille)
2015-05-06 18:37:49 +02:00
Cory Fields a574899671 chaincodes: abstract away more chaincode behavior
[squashme] replace struct CCainCode with a typedef uint256 ChainCode
2015-05-06 17:22:46 +02:00
Dave Collins 1c54757f86 Add more script edge condition tests.
This commit adds some tests to the script_valid.json and tx_invalid.json
data which exercise more edge conditions that are not currently being
tested.
2015-05-06 10:20:18 -05:00
Wladimir J. van der Laan 1fd2d39529
Merge pull request #5420
6b4feb8 [QA] rest.py RPC test: change setgenerate() to generate() (Jonas Schnelli)
97ee866 [REST] getutxos REST command (based on Bip64) (Jonas Schnelli)
2015-05-06 16:50:05 +02:00
Jonas Schnelli 2a6b844427 [QT] change transaction amount and height in overview page 2015-05-06 16:47:29 +02:00
Jorge Timón 51aa24927e Chainparams: Refactor: Decouple IsSuperMajority from Params() 2015-05-06 16:39:15 +02:00
Wladimir J. van der Laan 12f3488253
Merge pull request #6047
a56054b Update key.cpp to use new libsecp256k1 (Pieter Wuille)
a591d98 Squashed 'src/secp256k1/' changes from 1897b8e..22f60a6 (Pieter Wuille)
2015-05-06 12:29:07 +02:00
Wladimir J. van der Laan 00820f921d
Merge pull request #6055
a8cdaf5 checkpoints: move the checkpoints enable boolean into main (Cory Fields)
11982d3 checkpoints: Decouple checkpoints from Params (Cory Fields)
6996823 checkpoints: make checkpoints a member of CChainParams (Cory Fields)
9f13a10 checkpoints: store mapCheckpoints in CCheckpointData rather than a pointer (Cory Fields)
2015-05-06 11:38:39 +02:00
Wladimir J. van der Laan 40f5e8dc2a
Merge pull request #5937
a71ab10 QA: add RPC tests for error reporting of "signrawtransaction" (dexX7)
8ac2a4e RPC: show script verification errors in "signrawtransaction" result (dexX7)
2015-05-05 19:04:53 +02:00
Wladimir J. van der Laan 31c0bf1c46
Merge pull request #6080
1a0259f add jonasschnellis dns seeder (Jonas Schnelli)
2015-05-05 18:56:48 +02:00
dexX7 8ac2a4e178
RPC: show script verification errors in "signrawtransaction" result
If there are any script verification errors, when using "signrawtransaction", they are shown in the RPC result:

```
// ...

Result:
{
  "hex" : "value",           (string) The hex-encoded raw transaction with signature(s)
  "complete" : true|false,   (boolean) If the transaction has a complete set of signatures
  "errors" : [                 (json array of objects) Script verification errors (if there are any)
    {
      "txid" : "hash",           (string) The hash of the referenced, previous transaction
      "vout" : n,                (numeric) The index of the output to spent and used as input
      "scriptSig" : "hex",       (string) The hex-encoded signature script
      "sequence" : n,            (numeric) Script sequence number
      "error" : "text"           (string) Verification or signing error related to the input
    }
    ,...
  ]
}
```
2015-05-05 09:40:55 +02:00
Wladimir J. van der Laan 12f78ed4f9
qt: update translations from Transifex - first run for 0.11 2015-05-05 08:48:54 +02:00
Wladimir J. van der Laan fc44231cb7
trivial: Merge pruning help message after Transifex comment
The prune help message was broken in nonsensical parts. Merge it into
one, this is easier for translators.

Reported by yahoe.001 on transifex.
2015-05-04 18:48:38 +02:00
Wladimir J. van der Laan 04140457f4 Show an init message while activating best chain
Connecting the chain can take quite a while.
All the while it is still showing `Loading wallet...`.
Add an init message to inform the user what is happening.
2015-05-04 17:39:19 +02:00
Pieter Wuille a56054be65 Update key.cpp to use new libsecp256k1
libsecp256k1's API changed, so update key.cpp to use it.

Libsecp256k1 now has explicit context objects, which makes it completely thread-safe.
In turn, keep an explicit context object in key.cpp, which is explicitly initialized
destroyed. This is not really pretty now, but it's more efficient than the static
initialized object in key.cpp (which made for example bitcoin-tx slow, as for most of
its calls, libsecp256k1 wasn't actually needed).

This also brings in the new blinding support in libsecp256k1. By passing in a random
seed, temporary variables during the elliptic curve computations are altered, in such
a way that if an attacker does not know the blind, observing the internal operations
leaks less information about the keys used. This was implemented by Greg Maxwell.
2015-05-04 14:45:34 +02:00
Wladimir J. van der Laan 16341cc15c
Merge pull request #5418
bba2216 RPC test for "#5418 Report missing inputs in sendrawtransaction" (Jonas Schnelli)
de8e801 Report missing inputs in sendrawtransaction (Pieter Wuille)
2015-05-04 12:42:26 +02:00
Wladimir J. van der Laan 59305cebee
qt: fix numerusform in English translation
Ref: transifex issue https://www.transifex.com/projects/p/bitcoin/translate/#da/qt-translation-011x/c/47723791
2015-05-04 12:25:22 +02:00
Wladimir J. van der Laan 7f5d7e9d6d
Merge pull request #6086
d3c09ba Trivial: useless cast (ptime)(I'm ptime) (svost)
2015-05-04 09:30:04 +02:00
Wladimir J. van der Laan 20b3dc85ed
qt: English translation update before enabling translation for 0.11 2015-05-04 08:09:37 +02:00
Wladimir J. van der Laan 00e76db8c2
Merge pull request #6085
b05a89b Non-grammatical language improvements (Luke Dashjr)
7e6d23b Bugfix: Grammar fixes (Corinne Dashjr)
2015-05-04 08:01:58 +02:00
Daniel Kraft 835c12291e Clean up change computation in CreateTransaction.
Compute the change directly as difference between the "requested" and
the actual value returned by SelectCoins.  This removes a duplication of
the fee logic code.
2015-05-03 10:56:48 +02:00
Luke Dashjr b05a89b2de Non-grammatical language improvements 2015-05-02 15:23:59 +00:00
Pieter Wuille 8cf1485f3b Abstract chaincodes into CChainCode
# Conflicts:
#	src/key.cpp
#	src/key.h
2015-05-02 11:17:16 +02:00
Jonas Schnelli b3ffcdf916 don't imbue boost::filesystem::path with locale "C" on windows
fixes https://github.com/bitcoin/bitcoin/issues/6078
2015-05-01 13:32:25 +02:00
Corinne Dashjr 7e6d23b171 Bugfix: Grammar fixes 2015-05-01 11:21:27 +00:00
Cory Fields a8cdaf5c96 checkpoints: move the checkpoints enable boolean into main
This pertains to app-state, so it doesn't make sense to handle inside the
checkpoint functions.
2015-04-30 23:14:48 -04:00
Cory Fields 11982d366d checkpoints: Decouple checkpoints from Params
Pass checkpoint data in as necessary
2015-04-30 23:14:48 -04:00
Cory Fields 699682304f checkpoints: make checkpoints a member of CChainParams
This drops the virtual call and simplifies the logic
2015-04-30 23:14:48 -04:00
Cory Fields 9f13a10548 checkpoints: store mapCheckpoints in CCheckpointData rather than a pointer 2015-04-30 23:14:08 -04:00
svost d3c09ba67e Trivial: useless cast (ptime)(I'm ptime) 2015-04-30 23:11:52 +03:00
Pieter Wuille f46a680f42 Better mruset unit test 2015-04-30 08:16:30 -07:00
Pieter Wuille d4d5022cfc Use ring buffer of set iterators instead of deque of copies in mruset 2015-04-30 08:16:30 -07:00
Gavin Andresen d81cff32e5 Replace mruset setAddrKnown with CRollingBloomFilter addrKnown
Use a probabilistic bloom filter to keep track of which addresses
we think we have given our peers, instead of a list.

This uses much less memory, at the cost of sometimes failing to
relay an address to a peer-- worst case if the bloom filter happens
to be as full as it gets, 1-in-1,000.

Measured memory usage of a full mruset setAddrKnown: 650Kbytes
Constant memory usage of CRollingBloomFilter addrKnown: 37Kbytes.

This will also help heap fragmentation, because the 37K of storage
is allocated when a CNode is created (when a connection to a peer
is established) and then there is no per-item-remembered memory
allocation.

I plan on testing by restarting a full node with an empty peers.dat,
running a while with -debug=addrman and -debug=net, and making sure
that the 'addr' message traffic out is reasonable.
(suggestions for better tests welcome)
2015-04-30 08:16:20 -07:00
Gavin Andresen 69a5f8be0a Rolling bloom filter class
For when you need to keep track of the last N items
you've seen, and can tolerate some false-positives.

Rebased-by: Pieter Wuille <pieter.wuille@gmail.com>
2015-04-30 07:58:29 -07:00
Wladimir J. van der Laan 8a10000222
Merge pull request #6022
b74dcb3 Separate CTranslationInterface from CClientUIInterface (Jorge Timón)
2015-04-30 16:37:18 +02:00
Wladimir J. van der Laan f026ab606d
Merge pull request #6059
739d615 chainparams: use SeedSpec6's rather than CAddress's for fixed seeds (Cory Fields)
2015-04-30 14:57:04 +02:00
Wladimir J. van der Laan 9c25397619
Merge pull request #6081
7f386d2 DragonFlyBSD thread renaming. (sinetek)
2015-04-29 19:08:33 +02:00
Jonas Schnelli 1a0259f7f0 add jonasschnellis dns seeder 2015-04-29 16:42:41 +02:00
Wladimir J. van der Laan df1609f314
Merge pull request #6075
9fadf1c Add additional script edge condition tests. (Dave Collins)
2015-04-29 15:56:30 +02:00
sinetek 7f386d2ff2 DragonFlyBSD thread renaming. 2015-04-29 20:04:34 +07:00
Wladimir J. van der Laan 23c998d811
Merge pull request #5511
e9c3215 [Wallet] sort pending wallet transactions before reaccepting (dexX7)
2015-04-29 09:52:39 +02:00
Wladimir J. van der Laan 948beaf190
Merge pull request #6074
d8f4cc3 Correct the PUSHDATA4 minimal encoding test. (Dave Collins)
2015-04-29 09:04:29 +02:00
Cory Fields 8b08d9530b wallet: fix boost::get usage with boost 1.58 2015-04-28 11:45:10 -04:00
Pieter Wuille 7bf5d5efa6
Merge pull request #5918
f7303f9 Use equivalent PoW for non-main-chain requests (Pieter Wuille)
2015-04-28 07:46:27 -07:00
Pieter Wuille de8e801d3f Report missing inputs in sendrawtransaction 2015-04-28 07:16:39 -07:00
Philip Kaufmann 107d35b700 [Qt] add defaultConfirmTarget constant to sendcoinsdialog
- replaces some hard-coded values for the default confirmation target
- also simplify code that is using the new constant
2015-04-28 14:49:46 +02:00
Philip Kaufmann d1af89e655 use const reference as param in ConnectThroughProxy/Socks5
- also ensure code style conformance by replacing bool static with static bool
2015-04-28 14:44:56 +02:00
Wladimir J. van der Laan 18d2832678
Merge pull request #5971
351593b replace absolute sleep with conditional wait (pstratem)
2015-04-28 10:41:46 +02:00
Wladimir J. van der Laan 5048465fc5
Merge pull request #5662
00dcaf4 Change download logic to allow calling getheaders/getdata on inbound peers (Suhas Daftuar)
2015-04-28 10:17:04 +02:00
Wladimir J. van der Laan 6364408122
Merge pull request #5199
1ec900a Remove broken+useless lock/unlock log prints (Matt Corallo)
352ed22 Add merkle blocks test (Matt Corallo)
59ed61b Add RPC call to generate and verify merkle blocks (Matt Corallo)
30da90d Add CMerkleBlock constructor for tx set + block and an empty one (Matt Corallo)
2015-04-28 10:07:25 +02:00
Wladimir J. van der Laan f9645ba80a
qt: translation update 2015-04-28 09:47:26 +02:00
Dave Collins 9fadf1c874 Add additional script edge condition tests.
This commit adds several tests to the script_invalid.json data which
exercise some edge conditions that are not currently being tested.

These are mainly being added to cover several cases a branch coverage
analysis of btcd showed are not already being covered, but given more
tests of edge conditions are always a good thing, I'm contributing
them upstream.
2015-04-28 02:35:43 -05:00
Dave Collins d8f4cc328e Correct the PUSHDATA4 minimal encoding test.
The test which is intended to prove that the script engine is properly
rejecting non-minimally encoded PUSHDATA4 data is using the wrong
opcode and value.  The test is using 0x4f, which is OP_1NEGATE instead
of the desired 0x4e, which is OP_PUSHDATA4.  Further, the push of data
is intended to be 256 bytes, but the value the test is using is
0x00100000 (4096), instead of the desired 0x00010000 (256).

This commit fixes both issues.

This was found while examining the branch coverage in btcd against only
these tests to help find missing branch coverage.
2015-04-27 21:47:55 -05:00
pstratem 351593b9c8 replace absolute sleep with conditional wait 2015-04-27 11:48:31 -07:00
Jonas Schnelli 1b2e555593 add autoprune information to RPC "getblockchaininfo" 2015-04-26 23:23:09 +02:00
Wladimir J. van der Laan 1d9d314573
Merge pull request #5696
691161d Consensus: Create consensus/consensus.h with some constants (jtimon)
2015-04-26 14:42:09 +02:00
sinetek ff7fe8b19e Fix for correctly including climits on certain platforms {DragonFlyBSD}. 2015-04-25 22:07:32 +07:00
Cory Fields 739d6155d3 chainparams: use SeedSpec6's rather than CAddress's for fixed seeds
This negates the need for CAddress here at all
2015-04-24 14:32:39 -04:00
Wladimir J. van der Laan 1623f6e337
Merge pull request #6033
cd558b4 FreeBSD, OpenBSD thread renaming. (sinetek)
2015-04-24 16:36:00 +02:00
Wladimir J. van der Laan b9311fb631
Merge pull request #6028
1d5b47a nLastTry is only used for addrman entries (Pieter Wuille)
2015-04-24 16:11:23 +02:00
Wladimir J. van der Laan 585b5dba74
Merge pull request #6036
f89b092 add rpc test for listunspents support for zero value txouts (Jonas Schnelli)
219953c Show zero value txouts in listunspent. (Gregory Maxwell)
2015-04-24 14:57:43 +02:00
Matt Corallo 1ec900a29e Remove broken+useless lock/unlock log prints 2015-04-24 02:28:47 -07:00
Wladimir J. van der Laan c2713042a3
Merge pull request #5863
f9ec3f0 Add block pruning functionality (mrbandrews)
2015-04-24 10:36:48 +02:00
Matt Corallo 59ed61b389 Add RPC call to generate and verify merkle blocks 2015-04-23 17:50:39 -07:00