Commit graph

10467 commits

Author SHA1 Message Date
Wladimir J. van der Laan 8d6d43e933
Merge #10290: Add -stopatheight for benchmarking
b297426 Add -stopatheight for benchmarking (Pieter Wuille)

Tree-SHA512: e8a4cca7fc1accd0dcd3a0eda97839fc34c61f25d6302082a8d6ecf9a0291b4abacbde16a0ecba7bdd2a56dd0c8d4d54300ad3b3478386da21dd7697acce381c
2017-05-01 09:17:15 +02:00
Spencer Lievens 56f09df9d8 [Makefile] Alphabetically Reorder addrdb.cpp
To keep conformity.
2017-04-30 13:25:39 +02:00
Pieter Wuille db994b2de9 Simplify DisconnectBlock arguments/return value
DisconnectBlock currently has a complicated interface:

  Situation       Return value
                  pfClean != nullptr   pfClean == nullptr

  All good:       true                 true
  Failure:        false                false
  Unclean rewind: true                 false
                  with *pfClean=false

Change this to return a tristate enum instead. As an added bonus,
remove the ValidationState& argument which was unused.
2017-04-28 16:15:01 -07:00
John Newbery 77c54b270d [net] listbanned RPC and QT should show correct banned subnets 2017-04-28 11:24:33 -04:00
jonnynewbs 0ff9320bf5 refactor TxToJSON() and ScriptPubKeyToJSON() 2017-04-28 10:01:56 -04:00
Marcos Mayorga 4fbae77929 Improved efficiency in COutPoint constructors 2017-04-28 09:33:34 +01:00
Pieter Wuille b297426c96 Add -stopatheight for benchmarking 2017-04-27 14:39:27 -07:00
Wladimir J. van der Laan 4c924011f5
Merge #10075: Remove unused C++ code not covered by unit tests
b51aaf1 Remove unused C++ code not covered by unit tests (practicalswift)

Tree-SHA512: 267bbd87df01a296bf23e82a8b6ee968e13e23a6aaecc535d803890a3e3e9f6208c7fc4c1f97afd98ed3e498b12fe1ada7e3cb2977ad12359a813f57336c74e5
2017-04-27 20:25:15 +02:00
Pieter Wuille a550f6e415
Merge #10283: Cleanup: reduce to one GetMinimumFee call signature
3edbd79 cleanup: reduce to one GetMinimumFee call signature (Alex Morcos)

Tree-SHA512: da7ae6f0eb06db630792243a47c95d4ceff3baf0ce1ebefa73f1eb6cab1c6fdf0a000770cf61700dd7a9e260d7a313083b79e1d667bd5cbef0b1fe8fbec411e7
2017-04-27 09:25:24 -07:00
MarcoFalke 47535d7c3e
Merge #10280: [test] Unit test amount.h/amount.cpp
dcb69fd [test] Unit test amount.h/amount.cpp (Jimmy Song)

Tree-SHA512: dc50e6158322a282a8b8b60c8eab7ce327a33c48113a1455b8a1784f07e6277ad499e85ec978199468a2dc34e9e288287c8803c215f810fa2d841cdda9a414f5
2017-04-26 23:49:39 +02:00
Alex Morcos 3edbd79a65 cleanup: reduce to one GetMinimumFee call signature 2017-04-26 15:54:23 -04:00
practicalswift b51aaf1c42 Remove unused C++ code not covered by unit tests 2017-04-26 21:20:02 +02:00
Jimmy Song dcb69fde5a [test] Unit test amount.h/amount.cpp
Add tests for MoneyRange, binary operators, ToString and a constructor
2017-04-26 07:25:57 -07:00
Wladimir J. van der Laan cf5782508a
Merge #9614: [wallet] [refactor] Simplify getbalance implementation
02d9f50 [wallet] Remove unneeded legacy getbalance code (Russell Yanofsky)
82b7dc3 [wallet] Add GetLegacyBalance method to simplify getbalance RPC (Russell Yanofsky)

Tree-SHA512: c3b890ff1f5a3df7e886309bad94bdf5cc3c12b72983bb79c72f8655ce16edf581bff0faaade2f18c2cb723f50d516e53f87792f81c3f8143b0c4377c0d80e87
2017-04-26 13:11:32 +02:00
Russell Yanofsky 02d9f50d5f [wallet] Remove unneeded legacy getbalance code 2017-04-26 06:36:38 -04:00
Russell Yanofsky 82b7dc373a [wallet] Add GetLegacyBalance method to simplify getbalance RPC
This adds a simpler new implementation of getbalance logic along with asserts
to confirm it behaves identically to the old logic. The old logic is removed in
the next commit.
2017-04-26 06:36:38 -04:00
Wladimir J. van der Laan 6fdb319165
Merge #9743: Fix several potential issues found by sanitizers
1d31093 fix tsan: utiltime race on nMockTime (Pieter Wuille)
321bbc2 fix ubsan: bitcoin-tx: not initialize context before IsFullyValid (Pieter Wuille)

Tree-SHA512: 39ea83c6122f06339cd425deb236357694e84ce2e4e9c61c10b90a8909b6e42e8c7b76396175cdc4723ababd2fa4f935d48f8a469baf853c5a06d7b962a5c8dc
2017-04-26 12:29:05 +02:00
Wladimir J. van der Laan 8254a8ae21
Merge #10278: [test] Add Unit Test for GetListenPort
1b14449 [test] Add Unit Test for GetListenPort (Jimmy Song)

Tree-SHA512: aea5f60fb3699680cc5acac9d9c8d8712634db9d629bbfa1815a29e5cf46c22f783886c608664baaa91b3282c52ce8069c358850cf4f90acf731a9e6c1701caa
2017-04-26 09:34:41 +02:00
Wladimir J. van der Laan 9c94fb6c32
Merge #9930: Trivial: Correct indentation and bracing
31a14d4 Correct indentation and remove unnecessary braces (Matthias Grundmann)

Tree-SHA512: c0e827ec4474133c7674254dfd13f59608820cd639debc7759bddae71d73451645fcfe14384f343d08f74d69ac3922bafc12a514f3b790ae2bf9271aa67d5f36
2017-04-26 08:50:18 +02:00
Jimmy Song 1b144495d0 [test] Add Unit Test for GetListenPort
Add very basic unit test for GetListenPort in net_tests.cpp
2017-04-25 10:17:04 -07:00
Wladimir J. van der Laan c29a0d4812
Merge #10265: [wallet] [moveonly] Check non-null pindex before potentially referencing
c36ea69 [wallet] Make sure pindex is non-null before possibly referencing in LogPrintf call. (Karl-Johan Alm)

Tree-SHA512: a14c9f3e1228bca91977bea821c56a377d80889b41d250050c9be67aa93e460319a7cf1d4b63ee40f23b5a34159590f0e3fe15dc88698dc694c0c8098bd2db4d
2017-04-25 16:04:23 +02:00
Wladimir J. van der Laan cb007e4346
Merge #10263: Trivial: fix fee estimate write error log message
94807be Trivial: fix fee estimate write error log message (CryptAxe)

Tree-SHA512: 998c9b331e901562c9ba575a85bc6c66f28d926dfe8116f08ab903e024c63a13fd37a58d19eb6504ad880d5bbccfbf6cba83ba0a6917f5d9068c52114f71b437
2017-04-25 13:28:26 +02:00
Wladimir J. van der Laan 95f5e44075
Merge #10270: Remove Clang workaround for Boost 1.46
93dbb15 Remove Clang workaround for Boost 1.46 (fanquake)

Tree-SHA512: 1246841b264688f5fe5a2a514dd732d400307fa068686857e8aedaebb292ae65b21ab96b5ff9477ccd2f049882b967b6e143683963ce1be0b9e781596c5372d1
2017-04-25 12:04:52 +02:00
Karl-Johan Alm c36ea693ee
[wallet] Make sure pindex is non-null before possibly referencing in LogPrintf call. 2017-04-25 16:18:52 +09:00
Pavel Janík 5ec883667f Prevent warning: variable 'x' is uninitialized 2017-04-25 08:47:58 +02:00
fanquake 93dbb15954
Remove Clang workaround for Boost 1.46 2017-04-25 09:16:57 +08:00
Pieter Wuille c73af5416b
Merge #10249: Switch CCoinsMap from boost to std unordered_map
e6756ad Switch CCoinsMap from boost to std unordered_map (Pieter Wuille)
344a2c4 Add support for std::unordered_{map,set} to memusage.h (Pieter Wuille)

Tree-SHA512: 51288301e7c0f29ffac8c59f4cc73ddc36b7abeb764009da6543f2eaeeb9f89bd47dde48131a7e0aefad8f7cb0b74b2f33b8be052c8e8a718339c3e6bb963447
2017-04-24 16:06:15 -07:00
Wladimir J. van der Laan fa1ac2881f
Merge #9951: Wallet database handling abstractions/simplifications
911a480 wallet: Add comment describing the various classes in walletdb.h (Wladimir J. van der Laan)
69d2e9b wallet: Make IsDummy private in CWalletDBWrapper (Wladimir J. van der Laan)
3323281 wallet: CWalletDB CDB composition not inheritance (Wladimir J. van der Laan)
be9e1a9 wallet: Reduce references to global bitdb environment (Wladimir J. van der Laan)
071c955 wallet: Get rid of fFileBacked (Wladimir J. van der Laan)
71afe3c wallet: Introduce database handle wrapper (Wladimir J. van der Laan)

Tree-SHA512: e4e72953c61a2f6995d609a32f8ed8e18cab9a92bc9e193d46a1d1f06d9daa5c6da6fce2867d4e3ba4fc0439141901a3d35f246486f0fa8f59587786379dfcbd
2017-04-24 16:31:34 +02:00
Wladimir J. van der Laan 342b9bc390
Merge #9792: FastRandomContext improvements and switch to ChaCha20
4fd2d2f Add a FastRandomContext::randrange and use it (Pieter Wuille)
1632922 Switch FastRandomContext to ChaCha20 (Pieter Wuille)
e04326f Add ChaCha20 (Pieter Wuille)
663fbae FastRandom benchmark (Pieter Wuille)
c21cbe6 Introduce FastRandomContext::randbool() (Pieter Wuille)

Tree-SHA512: 7fff61e3f6d6dc6ac846ca643d877b377db609646dd401a0e8f50b052c6b9bcd2f5fc34de6bbf28f04afd1724f6279ee163ead5f37d724fb782a00239f35db1d
2017-04-24 14:28:49 +02:00
CryptAxe 94807be8c6
Trivial: fix fee estimate write error log message 2017-04-23 10:36:26 -07:00
MarcoFalke ed22eb4a62
Merge #10258: Fixed typo in documentation for merkleblock.h
dd07068 Fixed typo in documentation for merkleblock.h (Mikerah)

Tree-SHA512: 92655c8022eb33852c116da517b12bd17b3b668713cd85fe185a15245ea9810605626b1d0955fa117f7b56863e0a52b3a86dab42409332452b5eb72a7d34f30d
2017-04-23 16:49:53 +02:00
Mikerah dd07068d6b Fixed typo in documentation for merkleblock.h 2017-04-22 07:22:17 -04:00
Wladimir J. van der Laan a6548a47a5
Merge #10201: pass Consensus::Params& to ReceivedBlockTransactions()
25660e9 pass Consensus::Params& to ReceivedBlockTransactions() (Mario Dian)

Tree-SHA512: d3a5b19d93313e4bda622b322bc9cbfb7e31486010eac40fca6eea9703f814f9667f778122ba7366bb304482a2c03e2e3325083beecac374751692361952e467
2017-04-21 18:42:06 +02:00
Wladimir J. van der Laan 911a4808fb wallet: Add comment describing the various classes in walletdb.h 2017-04-21 16:04:26 +02:00
Pieter Wuille f478d98fe4 Fix some empty vector references
streams.h has some methods that can be tricked into dereferencing
null pointers or end() iterators. Fix this.
2017-04-21 05:58:31 -07:00
Pieter Wuille e6756ad335 Switch CCoinsMap from boost to std unordered_map 2017-04-21 05:34:14 -07:00
Pieter Wuille 344a2c4122 Add support for std::unordered_{map,set} to memusage.h 2017-04-21 05:26:23 -07:00
Wladimir J. van der Laan 27faa6cccd
Merge #10228: build: regenerate bitcoin-config.h as necessary
91ab8f5 build: fix bitcoin-config.h regeneration after touching build files (Cory Fields)
3577603 build: remove wonky auto top-level convenience targets (Cory Fields)

Tree-SHA512: 2e68634439eeb7eca43cd2858135a583bfe0cf146e021a8384a24f7267aacc6f99bdc7a6d497a04d32e6a03e9446f0f599afb5bd53346dadf19f47d5fb2ea9f9
2017-04-21 11:12:29 +02:00
Wladimir J. van der Laan f6f3b58a72
Merge #10242: [qt] Don't call method on null WalletModel object
fb463d1 [qt] Don't call method on null WalletModel object (Russell Yanofsky)

Tree-SHA512: 84c9d394a16eb44e2673e7d16961ea9514fd0ef3912baf7cd7b8424a46ead138ac8ecc59c4eebfb46941fa3081555fd6ee15fec699a3952e81f960932e06cee0
2017-04-21 10:57:16 +02:00
Wladimir J. van der Laan 86ea3c2ff2
Merge #10181: Include cleanup
1c897fc Missing includes (Jorge Timón)
a1fd450 Trivial: Remove unneeded includes from .h: (Jorge Timón)

Tree-SHA512: ada3e62cc2435e58172a88b380be371b717a05725956c15e5493b6e19fe2903e5e6e43fd22dc24699333a0e8a0c7b42eb1ae61b41cb4ba82495be18e2d4ef3c6
2017-04-20 23:24:00 +02:00
Alex Morcos c0a273f4c8 Change file format for fee estimates.
Move buckets and bucketMap to be stored as part of overall serialization of estimator.
Add some placeholder data so file format is only changed once.
Maintain 3 different TxConfirmStats with potential for different decays and scales.
2017-04-20 15:46:15 -04:00
Russell Yanofsky fb463d1717 [qt] Don't call method on null WalletModel object
This doesn't crash currently because the method doesn't access any object
members, but this behavior is fragile and incompatible with #10102.
2017-04-20 15:17:17 -04:00
Wladimir J. van der Laan 14c948987f
Merge #9942: Refactor CBlockPolicyEstimator
68af651 MOVEONLY: move TxConfirmStats to cpp (Alex Morcos)
2332f19 Initialize TxConfirmStats in constructor (Alex Morcos)
5ba81e5 Read and Write fee estimate file directly from CBlockPolicyEstimator (Alex Morcos)
14e10aa Call estimate(Smart)Fee directly from CBlockPolicyEstimator (Alex Morcos)
dbb9e36 Give CBlockPolicyEstimator it's own lock (Alex Morcos)
f6187d6 Make processBlockTx private. (Alex Morcos)
ae7327b Make feeEstimator its own global instance of CBlockPolicyEstimator (Alex Morcos)

Tree-SHA512: dbf3bd2b30822e609a35f3da519b62d23f8a50e564750695ddebd08553b4c01874ae3e07d792c6cc78cc377d2db33b951ffedc46ac7edaf5793f9ebb931713af
2017-04-20 21:17:17 +02:00
Wladimir J. van der Laan 69d2e9ba67 wallet: Make IsDummy private in CWalletDBWrapper
This is only for use in the low-level functions, and CDB is already
a friend class.
2017-04-20 17:55:01 +02:00
Wladimir J. van der Laan 33232810dc wallet: CWalletDB CDB composition not inheritance
CWalletDB now contains a CDB instead of inheriting from it.

This makes it easier to replace the internal transaction with a different
database, without leaking through internals.
2017-04-20 17:55:01 +02:00
Wladimir J. van der Laan be9e1a968d wallet: Reduce references to global bitdb environment 2017-04-20 17:15:31 +02:00
Wladimir J. van der Laan 071c95570b wallet: Get rid of fFileBacked
Instead, CWalletDB() with a dummy handle will just give you a no-op
database in which writes always succeeds and reads always fail. CDB
already had functionality for this, so just use that.
2017-04-20 17:15:31 +02:00
Wladimir J. van der Laan 71afe3c099 wallet: Introduce database handle wrapper
Abstract database handle from explicit strFilename into
CWalletDBWrapper.

Also move CWallet::Backup to db.cpp - as it deals with representation
details this is a database specific operation.
2017-04-20 17:15:30 +02:00
Pieter Wuille 1d31093d4d fix tsan: utiltime race on nMockTime 2017-04-20 06:25:15 -07:00
Pieter Wuille 321bbc2079 fix ubsan: bitcoin-tx: not initialize context before IsFullyValid 2017-04-20 06:25:15 -07:00
Wladimir J. van der Laan 987a6c0956
Merge #10231: [Qt] Reduce a significant cs_main lock freeze
4082fb0 Add missing <atomic> header in clientmodel.h (Jonas Schnelli)
928d4a9 Set both time/height header caches at the same time (Jonas Schnelli)
610a917 Declare headers height/time cache mutable, re-set the methods const (Jonas Schnelli)
cf92bce Update the remaining blocks left in modaloverlay at init. (Jonas Schnelli)
7148f5e Reduce cs_main locks during modal overlay by adding an atomic cache (Jonas Schnelli)

Tree-SHA512: a92ca22f90b8b2a5e8eb94fdce531ef44542e21a8dbbb0693f7723d7018592cb68de687a2a0aac91d31cbf019793f8e922550656d2b130ed3d854d60630341db
2017-04-20 13:41:07 +02:00
Jonas Schnelli 4082fb0003
Add missing <atomic> header in clientmodel.h 2017-04-20 13:29:12 +02:00
Wladimir J. van der Laan a987def4f6
Merge #10143: [net] Allow disconnectnode RPC to be called with node id
d54297f [tests] disconnect_ban: add tests for disconnect-by-nodeid (John Newbery)
5cc3ee2 [tests] disconnect_ban: remove dependency on urllib (John Newbery)
12de2f2 [tests] disconnect_ban: use wait_until instead of sleep (John Newbery)
2077fda [tests] disconnect_ban: add logging (John Newbery)
395561b [tests] disconnectban test - only use two nodes (John Newbery)
e367ad5 [tests] rename nodehandling to disconnectban (John Newbery)
d6564a2 [tests] fix nodehandling.py flake8 warnings (John Newbery)
23e6e64 Allow disconnectnode() to be called with node id (John Newbery)

Tree-SHA512: a371bb05a24a91cdb16a7ac4fbb091d5d3bf6554b29bd69d74522cb7523d3f1c5b1989d5e7b03f3fc7369fb727098dd2a549de551b731dd480c121d9517d3576
2017-04-20 11:47:22 +02:00
Jonas Schnelli 928d4a9ac5
Set both time/height header caches at the same time 2017-04-20 09:51:41 +02:00
Jonas Schnelli 610a91719c
Declare headers height/time cache mutable, re-set the methods const 2017-04-20 09:51:05 +02:00
Jonas Schnelli cf92bce526
Update the remaining blocks left in modaloverlay at init. 2017-04-19 20:54:30 +02:00
Jonas Schnelli 7148f5e7d7
Reduce cs_main locks during modal overlay by adding an atomic cache 2017-04-19 20:54:18 +02:00
John Newbery 23e6e64a24 Allow disconnectnode() to be called with node id
disconnectnode() can currently only be called with the IP address/port
of the node the user wishes to connect. This commit allows the node to
be disconnected using the nodeid returned by getpeerinfo().
2017-04-19 13:47:51 -04:00
Wladimir J. van der Laan c91ca0ace9
Merge #9827: Improve ScanForWalletTransactions return value
30abce7 Improve ScanForWalletTransactions return value (Russell Yanofsky)

Tree-SHA512: 195028553b103052a842b6a37e67410118a20c32475b80f7fd22d6d8622f92eca1c2d84f291d1092bef2161d3187d91052799b533e1e265b7613d51955490b8d
2017-04-19 12:30:02 +02:00
Jonas Schnelli e96486cbeb
Merge #10221: Stop treating coinbase outputs differently in GUI: show them at 1conf
608bbcc [qt] Stop treating coinbase outputs differently: show them at 1conf (Matt Corallo)

Tree-SHA512: 62ba10520da8b83cf8e97c86dec3ccdcca8b7bfae0174d1a4099d33aa5d11933cc7c248394bf67c2b105211cf7931955816c741957832e703211030c7f4f002f
2017-04-19 11:15:06 +02:00
Wladimir J. van der Laan 64c45aada7
Merge #10226: wallet: Use boost to more portably ensure -wallet specifies only a filename
a4186dd wallet: Use boost to more portably ensure -wallet specifies only a filename (Luke Dashjr)

Tree-SHA512: 6dfde31fa599638e5ec76489363e2fed97403be3e5762e4560dfc6ac261ce169a92b5a1b92bb34a893cc898e6073c81f74f49528e8df07e86273ddb37dd1ce80
2017-04-19 10:55:13 +02:00
Cory Fields 91ab8f5a99 build: fix bitcoin-config.h regeneration after touching build files
This was a long-standing and annoying problem.

If autogen.sh was not manually run after touching configure.ac,
bitcoin-config.h would not be properly regenerated. This causes very subtle
problems when configure appears to enable a new value, but it does not end up
reflected in the build.
2017-04-18 19:14:25 -04:00
Luke Dashjr a4186dd239 wallet: Use boost to more portably ensure -wallet specifies only a filename 2017-04-18 15:39:16 +00:00
Wladimir J. van der Laan 393160cf6c
Merge #10208: [wallet] Rescan abortability
9141622 [rpc] Add abortrescan command to RPC interface. (Kalle Alm)
75a08e7 [wallet] Add support for aborting wallet transaction rescans. (Kalle Alm)

Tree-SHA512: 18545a1dc48c6dc112993f971f3adc7c0341fa621186c6d70bef1052e1d127ca116c5769595d721a209d502ca2019f2ad33876fe35d2b17216393404607a6c76
2017-04-18 08:05:24 +02:00
Kalle Alm 9141622a0f
[rpc] Add abortrescan command to RPC interface. 2017-04-18 11:41:46 +09:00
MarcoFalke 50a1cc0f0a
Merge #10207: Clarify importprivkey help text ... example of blank label without rescan
c9e31c3 Clarify importprivkey help text with example of blank label without rescan Occasionally I waste a lot of time not remembering that the second parameter to importprivkey must be blank if you intend to stop rescan with "false" as the third parameter. (Warren Togami)

Tree-SHA512: 23781e1d6fd59a9d06d6e12ad10e8ed6641947b3e4a1f66c8fdb5d44cbd8f291e8f2a5e686aa9f9ba5e4bab8ca688caa17244e837f651546055ddf7cc8e7df8f
2017-04-17 22:11:03 +02:00
Kalle Alm 75a08e7d17
[wallet] Add support for aborting wallet transaction rescans. 2017-04-17 23:35:53 +09:00
Matt Corallo 608bbccfb9 [qt] Stop treating coinbase outputs differently: show them at 1conf 2017-04-17 10:16:21 -04:00
Wladimir J. van der Laan 2584925077
Merge #10178: Remove CValidationInterface::UpdatedTransaction
9fececb Remove CValidationInterface::UpdatedTransaction (Matt Corallo)
d89f8ad Make DisconnectBlock and ConnectBlock static in validation.cpp (Matt Corallo)

Tree-SHA512: 146597b538c09c1e8071f4f88ffeba0645c6816f86030b142174bd298cc18ae09a400e6ca8de04d091e37b635f99f4c05982c09e6729691eb8ca6b8439ab97ca
2017-04-17 14:46:04 +02:00
Pieter Wuille a077a90da8
Merge #10215: Check interruptNet during dnsseed lookups
b2c9254 Check interruptNet during dnsseed lookups (Matt Corallo)

Tree-SHA512: a76b5749b085d5571ac65a6925bb1c50fa1d02c02854d9126224dc2ec419eb9103f7c92bf9a0bbd39c7dee93a2266dc3973fb16b48e8daea057f45d452e2513c
2017-04-17 05:15:37 -07:00
Pieter Wuille c5e9e428a9
Merge #9693: Prevent integer overflow in ReadVarInt.
45f0961 Prevent integer overflow in ReadVarInt. (Gregory Maxwell)

Tree-SHA512: 385ea0efb6b59d44c45a49227e5f6fff236b4775544cbeb236312a3fd87fd75c226ac56f7aa1bca66b853639da75a579610074f7582f92cf2ebd4a74bc40f6f0
2017-04-17 04:58:31 -07:00
Matt Corallo b2c9254205 Check interruptNet during dnsseed lookups 2017-04-14 16:52:42 -04:00
Wladimir J. van der Laan f4db00f9a5
Merge #10204: [rpc] rename disconnectnode argument
883154c [rpc] rename disconnectnode argument (John Newbery)

Tree-SHA512: 14245befd0a7315edd9e03c8bb283ff6b546cf4ef93c3ce02c01de687fea3bb96c510a638a42d2d6799e5e3e5b4f800021c2530b504baeaa4a4dc99323165986
2017-04-14 10:16:01 +02:00
Karl-Johan Alm 1ae86ec5ec
Changed event RAII helper functions to inline to deal with duplicate symbol linker errors. 2017-04-14 13:44:10 +09:00
Warren Togami c9e31c36ff Clarify importprivkey help text with example of blank label without rescan
Occasionally I waste a lot of time not remembering that the second parameter to importprivkey must be blank if you intend to stop rescan with "false" as the third parameter.
2017-04-13 20:11:42 -07:00
John Newbery 883154cbcb [rpc] rename disconnectnode argument 2017-04-13 15:38:59 -04:00
Pieter Wuille b7365f0545
Merge #9480: De-duplicate SignatureCacheHasher
f9c8807 Deduplicate SignatureCacheHasher (Jeremy Rubin)

Tree-SHA512: 714a0f39d1c836fedd1868369b4ebf1096cd800cc544d57b54101da338c80c627a3e59c6644b3268054efe85053cf1a7be508af935f624491e7acfae61123994
2017-04-13 10:13:13 -07:00
Matt Corallo 185c7f08be Avoid reading the old hd master key during wallet encryption
This makes SetHDMasterKey responsible for maintinaing the CHDChain
version instead of always creating it with the latest version and
making EncryptWallet responsible for keeping the version from
changing.
2017-04-13 11:55:43 -04:00
Wladimir J. van der Laan eab00d96df
Merge #9665: Use cached [compact] blocks to respond to getdata messages
b49ad44 Add comment about cs_most_recent_block coverage (Matt Corallo)
c47f5b7 Cache witness-enabled state with recent-compact-block-cache (Matt Corallo)
efc135f Use cached [compact] blocks to respond to getdata messages (Matt Corallo)

Tree-SHA512: ffc478bddbf14b8ed304a3041f47746520ce545bdeffa9652eff2ccb25c8b0d5194abe72568c10f9c1b246ee361176ba217767af834752a2ca7263d292005e87
2017-04-13 17:22:26 +02:00
Mario Dian 25660e91ef pass Consensus::Params& to ReceivedBlockTransactions() 2017-04-13 22:37:46 +08:00
Matt Corallo 9fececb2cb Remove CValidationInterface::UpdatedTransaction
This removes another callback from block connection logic, making it
easier to reason about the wallet-RPCs-returns-stale-info issue.

UpdatedTransaction was previously used by the GUI to display
coinbase transactions only after they have a block built on top of
them. This worked fine for in most cases, but only worked due to a
corner case if the user received a coinbase payout in a block
immediately prior to restart. In that case, the normal process of
caching the most recent coinbase transaction's hash would not work,
and instead it would only work because of the on-load -checkblocks
calling DisconnectBlock and ConnectBlock on the current tip.

In order to make this more robust, a full mapWallet loop after the
first block which is connected after restart was added.
2017-04-13 10:36:21 -04:00
Wladimir J. van der Laan cf8a8b1028
Merge #10176: net: gracefully handle NodeId wrapping
c851be4 net: define NodeId as an int64_t (Cory Fields)

Tree-SHA512: 2ccc931cfcdc555313b9434d8de2f6cea759b31891212ca62f962208f60157d4fc593010e3ca61265d1a20d6f78c6ca79103600b85df77983d5509d192875b96
2017-04-13 16:35:27 +02:00
Wladimir J. van der Laan 70f6f56e9d
Merge #10165: [Wallet] Refactoring by using CInputCoin instead of std::pair
c37e32a [Wallet] Prevent CInputCoin to be in a null state (NicolasDorier)
f597dcb [Wallet] Simplify code using CInputCoin (NicolasDorier)
e78bc45 [Wallet] Decouple CInputCoin from CWalletTx (NicolasDorier)
fd44ac1 [Wallet] Rename std::pair<const CWalletTx*, unsigned int> to CInputCoin (NicolasDorier)

Tree-SHA512: d24361fc514a0566bce1c3953d766dfe4fece79c549cb4db2600695a4ce08e85caa61b7717812618e523a2f2a1669877dad2752ed079e2ed2d27249f9bc8590e
2017-04-13 12:08:26 +02:00
Wladimir J. van der Laan c9ff4f8ee6
Merge #10186: Remove SYNC_TRANSACTION_NOT_IN_BLOCK magic number
d0cd0bd Make CWallet::SyncTransactions() interface friendlier (John Newbery)
714e4ad AddToWalletIfInvolvingMe should test pIndex, not posInBlock (John Newbery)

Tree-SHA512: d02e7ffce635c53f3e099c37cc5613b431f74e0e3ea189269132901a99fc539477849ddad0282ce721d46a4d794c2d46523d58b64f0c26c655f70b5808c745a5
2017-04-13 10:50:00 +02:00
aideca 9f82134779 Add friendly output to dumpwallet refs #9564 2017-04-13 08:39:07 +00:00
NicolasDorier c37e32af0d [Wallet] Prevent CInputCoin to be in a null state 2017-04-13 05:32:24 +00:00
NicolasDorier f597dcb7c8 [Wallet] Simplify code using CInputCoin 2017-04-13 05:31:08 +00:00
NicolasDorier e78bc45810 [Wallet] Decouple CInputCoin from CWalletTx 2017-04-13 05:30:52 +00:00
Jorge Timón 1c897fc3da
Missing includes 2017-04-13 02:31:44 +02:00
Jorge Timón a1fd450328
Trivial: Remove unneeded includes from .h:
- validation.h doesn't need to include chain.h anymore
- Remove unneeded includes from net.h
2017-04-13 02:27:27 +02:00
Jeremy Rubin f9c88079df Deduplicate SignatureCacheHasher
This moves the SignatureCacheHasher to the sigcache header, out of the anonymous
namespace, so that the tests can import it.
2017-04-12 14:42:41 -07:00
Wladimir J. van der Laan de01da7cad
Merge #10177: Changed "Send" button default status from true to false
8c3e6c6 Changed "Send" button default status from true to false (KibbledJiveElkZoo)

Tree-SHA512: e60d7481351e88925d99b33bdb616f3c234e93ef052571b9c4a1328186ec9abb8b61b0c4299afcb731edad2634aef6b1adaad121646b6c0c56dc933662904674
2017-04-12 20:15:37 +02:00
Wladimir J. van der Laan 350b22497c
Merge #10150: [rpc] Add logging rpc
7fd50c3 allow libevent logging to be updated during runtime (John Newbery)
5255aca [rpc] Add logging RPC (John Newbery)
4d9950d Set BCLog::LIBEVENT correctly for old libevent versions. (John Newbery)

Tree-SHA512: d6788a7205372c0528da71eca052910dfb055f2940ca884f422ff3db66e23a2b49c6a15b8f27d5255554fe5c5a928f5dd903fdc63b0bd6c8fa7783e77bb30fe8
2017-04-12 19:57:22 +02:00
Cory Fields c851be4b25 net: define NodeId as an int64_t
This should make occurances of NodeId wrapping essentially impossible for
real-world usage.
2017-04-12 13:42:02 -04:00
John Newbery d0cd0bd6d9 Make CWallet::SyncTransactions() interface friendlier 2017-04-11 17:17:46 -04:00
John Newbery 714e4ad13d AddToWalletIfInvolvingMe should test pIndex, not posInBlock 2017-04-11 10:23:32 -04:00
John Newbery 7fd50c3b70 allow libevent logging to be updated during runtime 2017-04-10 17:05:59 -04:00
John Newbery 5255aca3f4 [rpc] Add logging RPC
Adds an RPC to get and set currently active logging categories.
2017-04-10 17:05:59 -04:00
John Newbery 4d9950d3bc Set BCLog::LIBEVENT correctly for old libevent versions. 2017-04-10 17:05:59 -04:00
practicalswift 66082e0119 [trivial] Fix typos (tempoarily → temporarily, inadvertantly → inadvertently) 2017-04-10 22:44:57 +02:00
Matt Corallo d89f8adf25 Make DisconnectBlock and ConnectBlock static in validation.cpp 2017-04-10 16:20:12 -04:00
Wladimir J. van der Laan 67023e9004
Merge #9725: CValidationInterface Cleanups
b1a6d4c Take a CTransactionRef in AddToWalletIfInvolvingMe to avoid a copy (Matt Corallo)
1c95e2f Use std::shared_ptr instead of boost::shared_ptr in ScriptForMining (Matt Corallo)
91f1e6c Remove dead-code tracking of requests for blocks we generated (Matt Corallo)
acad82f Add override to functions using CValidationInterface methods (Matt Corallo)
e6d5e6c Hold cs_wallet for whole block [dis]connection processing (Matt Corallo)
461e49f SyncTransaction->TxAddedToMempool/BlockConnected/Disconnected (Matt Corallo)
f404334 Handle SyncTransaction in ActivateBestChain instead of ConnectTrace (Matt Corallo)
a147687 Keep conflictedTxs in ConnectTrace per-block (Matt Corallo)
d3167ba Handle conflicted transactions directly in ConnectTrace (Matt Corallo)
29e6e23 Make ConnectTrace::blocksConnected private, hide behind accessors (Matt Corallo)
822000c Add pblock to connectTrace at the end of ConnectTip, not start (Matt Corallo)
f5e9a01 Include missing #include in zmqnotificationinterface.h (Matt Corallo)

Tree-SHA512: 8893d47559da3b28d2ef7359768547cba8a4b43b6f891d80f5848f995a84b1517bfb0f706fdc8cd43f09a1350349eb440d9724a59363ab517dfcc4fcb31b2018
2017-04-10 21:21:01 +02:00
Alex Morcos 68af651498 MOVEONLY: move TxConfirmStats to cpp 2017-04-10 13:56:50 -04:00
Alex Morcos 2332f19bef Initialize TxConfirmStats in constructor
and change to storing as a pointer.
2017-04-10 13:56:50 -04:00
Alex Morcos 5ba81e54e0 Read and Write fee estimate file directly from CBlockPolicyEstimator 2017-04-10 13:56:50 -04:00
Alex Morcos 14e10aa842 Call estimate(Smart)Fee directly from CBlockPolicyEstimator 2017-04-10 13:56:50 -04:00
Alex Morcos dbb9e3699b Give CBlockPolicyEstimator it's own lock 2017-04-10 13:51:51 -04:00
Alex Morcos f6187d6e39 Make processBlockTx private. 2017-04-10 13:51:51 -04:00
Alex Morcos ae7327b832 Make feeEstimator its own global instance of CBlockPolicyEstimator 2017-04-10 13:51:51 -04:00
KibbledJiveElkZoo 8c3e6c6987 Changed "Send" button default status from true to false
Changed the "Send" button's default status from true to false to prevent
quirky Windows autofocus behavior.
2017-04-10 11:52:18 -05:00
Wladimir J. van der Laan e183ea2047
Merge #10164: Wallet: reduce excess logic InMempool()
3491476 Wallet: reduce excess logic InMemPool() (Kewde)

Tree-SHA512: 554ea2827cfd482281fae0ba3d0a7989dbfeace98a35462732ea08bf3cc94c9564a9ea8ca2fa9905b963367d0b56a490ef0d83ceb6731c8f06187de98b6a7f23
2017-04-10 15:27:34 +02:00
Luke Dashjr c99ab3ca4b RPC: Allow multiple names for parameters 2017-04-10 09:26:03 -04:00
Wladimir J. van der Laan e19586a8a9
Merge #10135: [p2p] Send the correct error code in reject messages
5d08c9c Send the correct error code in reject messages (John Newbery)

Tree-SHA512: 0cd3ef3ae202584b138cc0bbfba4125635822e0c5a755fb9276a604b39286959ab22dabc3104aa5d7e71358cd69d965de2a333ff04bf3e8ed43cf0296ac01264
2017-04-10 14:44:22 +02:00
Wladimir J. van der Laan a27dbc55b1
Merge #9949: [bench] Avoid function call arguments which are pointers to uninitialized values
218d915 [bench] Avoid function call arguments which are pointers to uninitialized values (practicalswift)

Tree-SHA512: 68d62e9442094f171433291b7f13dba20fc7ead5fd7f2292e1eb97ae51aa2345d40224c4a65c2e5d3552802b3cd0f675a82b6181cf5b77e964355650b25089f0
2017-04-10 14:19:55 +02:00
Wladimir J. van der Laan 51833a1734
Merge #10156: Fix for issues with startup and multiple monitors on windows.
e9ff818 Fix for issues with startup and multiple monitors on windows. (Allan Doensen)

Tree-SHA512: 8502042a9b5a2fd6f5e409163bee9bd7c85e34c158754f393065f8cc6cdd0f8505b9a1803069d01fc1fb2df04d1b2ed6291388851f2ed3608eb2dd53fc22e06e
2017-04-10 11:34:20 +02:00
Allan Doensen e9ff818b69 Fix for issues with startup and multiple monitors on windows. 2017-04-10 11:17:12 +02:00
Jonas Schnelli 1fa4ae67a3
Merge #9890: Add a button to open the config file in a text editor
9ab9e7d Add a button to open the config file in a text editor (Eric Shaw Jr)

Tree-SHA512: 1d13be9ac788a05a5116dbb3e1136ef65732dc2b5634547860612658109668922c9ea80b77bde4ba5beaa762d54f2a986a6064d4e34e963cdcd3d126a4eced37
2017-04-10 10:46:21 +02:00
practicalswift 9a763d4f86 Remove excess logic. 2017-04-10 10:24:49 +02:00
Wladimir J. van der Laan 813eacf81b
Merge #10167: [trivial] Fix typo ("improssible" → "impossible")
bcca57e [trivial] Fix typo ("improssible" → "impossible") (practicalswift)

Tree-SHA512: 87cdd0474b9e5d5150d3be7f93c61df126f7444f6e0cf34e763b25d68ad9149497535f34f7638eb42291a78d1ca2cff576014331151daedd26c57df5c31b9b0c
2017-04-10 09:27:25 +02:00
Wladimir J. van der Laan ed09dd3f5a
Merge #10142: Run bitcoin_test-qt under minimal QPA platform
bf10264 Run bitcoin_test-qt under minimal QPA platform (Russell Yanofsky)

Tree-SHA512: 35782f0d7e4dcdc27d991d5a10fcffbd2d201139293fe7917ef6f7cd7ae4d3a162ebc21f83266d821ae3bad86f62d947b047bb317f6c5899df4d6bcb4c957157
2017-04-10 09:01:58 +02:00
NicolasDorier fd44ac1e8b [Wallet] Rename std::pair<const CWalletTx*, unsigned int> to CInputCoin 2017-04-08 03:50:14 +00:00
John Newbery dd7e43e438 Fix build warning from #error text 2017-04-07 14:37:25 -04:00
practicalswift bcca57eff0 [trivial] Fix typo ("improssible" → "impossible") 2017-04-07 18:29:54 +02:00
Wladimir J. van der Laan a5fd746674
Merge #9681: Refactor Bumpfee, move core functionality to CWallet
5f59d3e Improve CFeeBumper interface, add comments, make use of std::move (Jonas Schnelli)
0df22ed Cancel feebump is vErrors is not empty (Jonas Schnelli)
44cabe6 Use static calls for GetRequiredFee and GetMinimumFee, remove make_pair from emplace_back (Jonas Schnelli)
bb78c15 Restore CalculateMaximumSignedTxSize function signature (Jonas Schnelli)
51ea44f Use "return false" instead assert() in CWallet::SignTransaction (Jonas Schnelli)
bcc72cc Directly abort execution in FeeBumper::commit if wallet or tx is not available (Jonas Schnelli)
2718db0 Restore invalid fee check (must be > 0) (Jonas Schnelli)
0337a39 Refactor Bumpfee core functionality (Jonas Schnelli)
d1a95e8 Bumpfee move request parameter interaction to the top (Jonas Schnelli)

Tree-SHA512: 0e6d1f3322ed671fa2291e59ac9556ce4646bc78267edc6eedc46b0014b7b08aa83c30315358b911d82898847d4845634a18b67e253a7b699dcc852eb2652c07
2017-04-07 15:51:26 +02:00
Wladimir J. van der Laan 928695bee6
Merge #10155: build: Deduplicate version numbers
9ff7818 doc: Update release process for simplified version bumping (Wladimir J. van der Laan)
08d9aee build: Remove duplicate version information from src/clientversion.h (Wladimir J. van der Laan)
168a703 doc: Make build system insert version in Doxyfile (Wladimir J. van der Laan)
b67eb8d doc: Remove version numbers from READMEs (Wladimir J. van der Laan)

Tree-SHA512: 531e44282b1c1383a382847a5605177917dfbf78acfaa754d1cbadd2e165c7e34ddbd01790f87615083fac359571708c2551ad24b712aab1f84a2068360c3a17
2017-04-07 15:41:04 +02:00
Wladimir J. van der Laan a3a2160b66
Merge #10162: [trivial] Log calls to getblocktemplate
1352092 Log calls to getblocktemplate (John Newbery)

Tree-SHA512: de2c6faac8baea2f63eb499dbcd0669062a71759050cf8bcada9b454fe82f056c23635d41c755badf55158ffc40a380f82bea1f40c8a2cc51604d981515b71eb
2017-04-07 14:55:29 +02:00
Matt Corallo b1a6d4cd56 Take a CTransactionRef in AddToWalletIfInvolvingMe to avoid a copy 2017-04-07 11:53:43 +02:00
Matt Corallo 1c95e2f9c9 Use std::shared_ptr instead of boost::shared_ptr in ScriptForMining 2017-04-07 11:53:43 +02:00
Matt Corallo 91f1e6ce5e Remove dead-code tracking of requests for blocks we generated 2017-04-07 11:53:43 +02:00
Matt Corallo acad82f375 Add override to functions using CValidationInterface methods 2017-04-07 11:53:43 +02:00
Matt Corallo e6d5e6cbbe Hold cs_wallet for whole block [dis]connection processing
This simplifies fixing the wallet-returns-stale-info issue as we
now hold cs_wallet across an entire block instead of only per-tx.
2017-04-07 11:53:43 +02:00
Matt Corallo 461e49fee2 SyncTransaction->TxAddedToMempool/BlockConnected/Disconnected
This simplifies fixing the wallet-returns-stale-info issue as we
can now hold cs_wallet across an entire block instead of only
per-tx (though we only actually do so in the next commit).

This change also removes the NOT_IN_BLOCK constant in favor of only
passing the CBlockIndex* parameter to SyncTransactions when a new
block is being connected, instead of also when a block is being
disconnected.

This change adds a parameter to BlockConnectedDisconnected which
lists the transactions which were removed from mempool due to
confliction as a result of this operation. While its somewhat of a
shame to make block-validation-logic generate a list of mempool
changes to be included in its generated callbacks, fixing this isnt
too hard.

Further in this change-set, CValidationInterface starts listening
to mempool directly, placing it in the middle and giving it a bit
of logic to know how to route notifications from block-validation,
mempool, etc (though not listening for conflicted-removals yet).
2017-04-07 11:53:43 +02:00
Matt Corallo f404334910 Handle SyncTransaction in ActivateBestChain instead of ConnectTrace
This makes a later change to move it all into one per-block callback
simpler.
2017-04-07 11:53:43 +02:00
Matt Corallo a1476877ce Keep conflictedTxs in ConnectTrace per-block 2017-04-07 11:53:43 +02:00
Matt Corallo d3167ba9bb Handle conflicted transactions directly in ConnectTrace 2017-04-07 11:53:42 +02:00
Matt Corallo 29e6e231c8 Make ConnectTrace::blocksConnected private, hide behind accessors 2017-04-07 11:53:42 +02:00
Matt Corallo 822000cf82 Add pblock to connectTrace at the end of ConnectTip, not start
This makes ConnectTip responsible for the ConnectTrace instead
of splitting the logic between ActivateBestChainStep and ConnectTip
2017-04-07 11:53:41 +02:00
Matt Corallo f5e9a019a4 Include missing #include in zmqnotificationinterface.h 2017-04-07 11:52:38 +02:00
Kewde 3491476b6f Wallet: reduce excess logic InMemPool()
removed the excess logic, return directly instead of using if-statement.
2017-04-07 00:53:12 +00:00
Jorge Timón 618d07faa2
MOVEONLY: tx functions to consensus/tx_verify.o
Functions related to transaction verification.
2017-04-06 23:36:46 +02:00
Wladimir J. van der Laan 8c28670e92
Merge #9902: Lightweight abstraction of boost::filesystem
f110272 Remove `namespace fs=fs` (Wladimir J. van der Laan)
75594bd torcontrol: Use fs::path instead of std::string for private key path (Wladimir J. van der Laan)
2a5f574 Use fsbridge for fopen and freopen (Wladimir J. van der Laan)
bac5c9c Replace uses of boost::filesystem with fs (Wladimir J. van der Laan)
7d5172d Replace includes of boost/filesystem.h with fs.h (Wladimir J. van der Laan)
19e36bb Add fs.cpp/h (Wladimir J. van der Laan)

Tree-SHA512: 2c34f059dfa6850b9323f3389e9090a6b5f839a457a2960d182c2ecfafd9883c956f5928bb796613402d3aad68ebc78259796a7a313f4a6cfa98aaf507a66842
2017-04-06 20:35:15 +02:00
John Newbery 1352092dbd Log calls to getblocktemplate 2017-04-06 10:37:30 -04:00
Wladimir J. van der Laan 08d9aee3eb build: Remove duplicate version information from src/clientversion.h
Fail when the version information is not defined otherwise when
HAVE_CONFIG_H is not set.
2017-04-06 10:41:34 +02:00
Thomas Snider ad415bc16a [net] Added SetSocketNoDelay() utility function 2017-04-05 11:31:43 -07:00
Wladimir J. van der Laan c7e73eafa1
Merge #10151: [logging] initialize flag variable to 0 (and continue if GetLogCategory() fails)
cd7f394 initialize flag variable to 0 (and continue if GetLogCategory() fails) (John Newbery)

Tree-SHA512: d0f2653bd0e71ed763220cb08d3a5335c5bdfe2f54ff7f9302d97f3265d7aa7f57606fe416a61aaac1535dbb046d0fb40a61f5a9d5cf234b042268e00ee7679d
2017-04-05 11:30:10 +02:00
Wladimir J. van der Laan 3c95bd43d8
Merge #10154: init: Remove redundant logging code
faafa80 init: Remove redundant logging code (MarcoFalke)

Tree-SHA512: 5ad0e9aba0e25a36025dd4ee5e5fddd2c0039f95bafd0f33300ea59e2f9bba807da6a1a8b4311d6aad5a360b99163edf4a4f161cb13f0f38580d8d6b504c94ad
2017-04-05 11:28:07 +02:00
Wladimir J. van der Laan fade78854c
Merge #10153: logging: Fix off-by-one for shrinkdebugfile default
faab624 logging: Fix off-by-one for shrinkdebugfile (MarcoFalke)

Tree-SHA512: d6153e06067906172ff0611af9e585a3ecf0a7d56925b6ad7c12e75aa802441047059b9b6f6c78e79916c3f2abc8f1998bfd2d5b84201ec6421f727c08da3c21
2017-04-05 09:23:58 +02:00
Wladimir J. van der Laan f93f9b9296
Merge #10144: Prioritisetransaction wasn't always updating ancestor fee
9bef02e Bugfix: ancestor modifed fees were incorrect for descendants (Suhas Daftuar)
ba7dd8b Test prioritisetransaction and ancestor fee state (Suhas Daftuar)

Tree-SHA512: 01977d88e1afb093a003f22a6f29ea60df3d70a179fe7e55910b9c8c340c4af9fb20cdc804c40235b62c43c453f0194eda0d0d4dbd365d2d98347f5dbe5de01c
2017-04-05 08:36:52 +02:00
Wladimir J. van der Laan 5fc6a77aa6
Merge #10133: Clean up calculations of pcoinsTip memory usage
1b55e07 Make threshold for flushing more conservative. (Alex Morcos)
f33afd3 Lower default memory footprint slightly (Alex Morcos)
5b95a19 Make pcoinsTip memory calculations consistent (Alex Morcos)

Tree-SHA512: d0061138596cf89008397b8729d9b25293938b1ad454cc99a6fe2f6210e94f76dfa78a8f0fce4c1ba3efec4e742a9c1a3ab26676a4a8346d3e7c3055d032669b
2017-04-05 08:10:43 +02:00
MarcoFalke faafa801e8 init: Remove redundant logging code 2017-04-05 01:03:26 +02:00
MarcoFalke faab6241d0 logging: Fix off-by-one for shrinkdebugfile 2017-04-05 00:42:48 +02:00
John Newbery cd7f39467a initialize flag variable to 0 (and continue if GetLogCategory() fails) 2017-04-04 14:59:35 -04:00
Wladimir J. van der Laan 72bc7e1303
Merge #10146: Better error handling for submitblock
30f30c0 Add braces to submitblock per current style. (Gregory Maxwell)
4f15ea1 Check transaction count early in submitblock. (Gregory Maxwell)
ada0caa Make GetWitnessCommitmentIndex callable on blocks without a coinbase txn. (Gregory Maxwell)

Tree-SHA512: 02dcd337ad9cdd8e4fa6a42c009d016026d1229c193676ed6fcc9ce55e924fedec57f516ac1e95c3db0985243ba908307338ce783a70416cb292bed881002bfc
2017-04-04 09:00:23 +02:00
Suhas Daftuar 9bef02e365 Bugfix: ancestor modifed fees were incorrect for descendants
If prioritisetransaction was called for a tx with in-mempool
descendants, the modified ancestor fee values for those descendants was
incorrect.
2017-04-03 15:50:15 -04:00
Wladimir J. van der Laan 471ed00fcd
Merge #10123: Allow debug logs to be excluded from specified component
3bde556 Add -debugexclude option to switch off logging for specified components (John Newbery)

Tree-SHA512: 30202e3f2085fc2fc5dd4bedb92988f4cb162c612a42cf8f6395a7da326f34975ddc347f82bc4ddca6c84c438dc0cc6e87869f90c7ff88105dbeaa52a947fa43
2017-04-03 17:42:40 +02:00
Russell Yanofsky bf1026412d Run bitcoin_test-qt under minimal QPA platform
Fixes broken "make check" reported by Matt Corallo <git@bluematt.me> in
https://github.com/bitcoin/bitcoin/issues/10110

Fix was suggested and initially implemented by
Cory Fields <cory-nospam-@coryfields.com> in
https://github.com/bitcoin/bitcoin/pull/10117#issuecomment-290275236
2017-04-03 11:07:40 -04:00
John Newbery 3bde556429 Add -debugexclude option to switch off logging for specified components 2017-04-03 09:04:42 -04:00
Wladimir J. van der Laan cb598cfba1
Merge #9533: Allow non-power-of-2 signature cache sizes
7482781 Allow non-power-of-2 signature cache sizes (Pieter Wuille)

Tree-SHA512: 5731c22b46c5ae81cf6d52000c28e39b243a47d96d91079942a5b5a10db214449217f71aa2195e18f8a3917cb206b04c75dc13e4522eb700a1dbf1819013ba22
2017-04-03 13:24:34 +02:00
Wladimir J. van der Laan f110272dc9 Remove namespace fs=fs
Having these inside functions is silly and redundant now.
2017-04-03 12:33:14 +02:00
Wladimir J. van der Laan 75594bd7f2 torcontrol: Use fs::path instead of std::string for private key path 2017-04-03 12:33:14 +02:00
Wladimir J. van der Laan 2a5f574762 Use fsbridge for fopen and freopen
Abstracts away how a path is opened to a `FILE*`.

Reduces the number of places where path is converted to a string
for anything else but printing.
2017-04-03 12:32:32 +02:00
Wladimir J. van der Laan bac5c9cf64 Replace uses of boost::filesystem with fs
Step two in abstracting away boost::filesystem.

To repeat this, simply run:
```
git ls-files \*.cpp \*.h | xargs sed -i 's/boost::filesystem/fs/g'
```
2017-04-03 12:32:32 +02:00
Wladimir J. van der Laan 7d5172d354 Replace includes of boost/filesystem.h with fs.h
This is step one in abstracting the use of boost::filesystem.
2017-04-03 12:32:32 +02:00
Wladimir J. van der Laan 19e36bbef6 Add fs.cpp/h 2017-04-03 12:32:32 +02:00
Wladimir J. van der Laan a2cd0b0eec
Merge #10058: No need to use OpenSSL malloc/free
6d5dd60 No need to use OpenSSL malloc/free (Thomas Snider)

Tree-SHA512: 29f790067ffd5a10a8e1a621318a0ba445691f57c804aa3b7c8ca372c8408d8c7fe703c42b48018e400fc32e3feff5ab401d97433910ce2c50e69da0b8a6662e
2017-04-03 12:06:02 +02:00
Gregory Maxwell 30f30c0f99 Add braces to submitblock per current style. 2017-04-03 07:23:07 +00:00
Gregory Maxwell 4f15ea102d Check transaction count early in submitblock.
There is no point in even hashing a submitted block which doesn't have
 a coinbase transaction.

This also results in more useful error reporting on corrupted input.

Thanks to rawodb for the bug report.
2017-04-03 07:15:36 +00:00
Gregory Maxwell ada0caa165 Make GetWitnessCommitmentIndex callable on blocks without a coinbase txn.
This isn't actually needed anywhere, but it's less brittle.
2017-04-02 21:28:17 +00:00
practicalswift 4b87973c32 [rpc] Remove auth cookie on shutdown
Accidentally removed in 40b556d374
2017-04-02 15:52:41 +02:00
Matthias Grundmann 31a14d4909
Correct indentation and remove unnecessary braces 2017-04-02 14:41:38 +02:00
Wladimir J. van der Laan 2b477e6aa1
Merge #10098: Make qt wallet test compatible with qt4
e9a6461 Make qt wallet test compatible with qt4 (Russell Yanofsky)

Tree-SHA512: a3e4598986cb3c5c20aaa1d440abc886d84fcc69a6ee4079787cfc8e3a2dce655060ff95612cb15ce8b5a9b8911e4afe2281345b59a4353ec32edf3771338381
2017-04-02 11:58:41 +02:00
Jonas Schnelli 5f59d3ecb7
Improve CFeeBumper interface, add comments, make use of std::move 2017-04-02 10:12:43 +02:00
Jonas Schnelli 0df22ed6fd
Cancel feebump is vErrors is not empty 2017-04-02 10:12:43 +02:00
Jonas Schnelli 44cabe6380
Use static calls for GetRequiredFee and GetMinimumFee, remove make_pair from emplace_back 2017-04-02 10:12:43 +02:00
Jonas Schnelli bb78c1599e
Restore CalculateMaximumSignedTxSize function signature 2017-04-02 10:12:43 +02:00
Jonas Schnelli 51ea44f01c
Use "return false" instead assert() in CWallet::SignTransaction 2017-04-02 10:12:43 +02:00
Jonas Schnelli bcc72cccc7
Directly abort execution in FeeBumper::commit if wallet or tx is not available 2017-04-02 10:12:42 +02:00
Jonas Schnelli 2718db0705
Restore invalid fee check (must be > 0) 2017-04-02 10:12:42 +02:00
Jonas Schnelli 0337a39d31
Refactor Bumpfee core functionality 2017-04-02 10:12:39 +02:00
Jonas Schnelli d1a95e8d3d
Bumpfee move request parameter interaction to the top 2017-04-02 09:48:48 +02:00
Wladimir J. van der Laan 427d2fd04e
Merge #10128: Speed Up CuckooCache tests
3f098cc Decrease testcase sizes in cuckoocache tests (Jeremy Rubin)

Tree-SHA512: 71a0e171be8d5473c791440aa4353d99b885b926b7284a3a1914c95e0c2c77925d5f3a6f329778cd81931a4e5832a082cb31d82ee8adb433d357d2e2b4f7a9e5
2017-04-02 09:04:03 +02:00
Gregory Maxwell 6b3bb3d9ba Change LogAcceptCategory to use uint32_t rather than sets of strings.
This changes the logging categories to boolean flags instead of strings.

This simplifies the acceptance testing by avoiding accessing a scoped
 static thread local pointer to a thread local set of strings.  It
 eliminates the only use of boost::thread_specific_ptr outside of
 lockorder debugging.

This change allows log entries to be directed to multiple categories
 and makes it easy to change the logging flags at runtime (e.g. via
 an RPC, though that isn't done by this commit.)

It also eliminates the fDebug global.

Configuration of unknown logging categories now produces a warning.
2017-04-01 18:53:29 +00:00
Wladimir J. van der Laan 351d0ad404
Merge #10129: scheduler: fix sub-second precision with boost < 1.50
e025246 scheduler: fix sub-second precision with boost < 1.50 (Cory Fields)

Tree-SHA512: b9d4875406c1a2bf3cb6412d7511c24d871bfba6a2ea5ccfbbf7392f2f8850027b001b776da422fea592878da21d897b1aa56d92bc2239869055dce79fd442ac
2017-04-01 12:25:56 +02:00
Alex Morcos 1b55e07b7a Make threshold for flushing more conservative.
Always leave a reasonable buffer of 50MB for usage from newly connected block (once over 50%) and increase the high water mark buffer to 200MB.
2017-03-31 14:30:31 -04:00
John Newbery 5d08c9c579 Send the correct error code in reject messages 2017-03-31 14:22:25 -04:00
Alex Morcos f33afd3b2b Lower default memory footprint slightly 2017-03-31 14:07:56 -04:00
Alex Morcos 5b95a190e8 Make pcoinsTip memory calculations consistent
Since we are more accurately measuring pcoinsTip peak usage at twice the current in dynamic usage, it makes sense to double the default (this will lead to the same effective usage and peak usage as previously).
We should also double the buffer used to avoid flushing if above 90% but still sufficient space remaining.
2017-03-31 13:15:39 -04:00
Cory Fields e025246fe2 scheduler: fix sub-second precision with boost < 1.50 2017-03-31 11:54:58 -04:00
Wladimir J. van der Laan 4aa07fa735
Merge #10095: refactor: Move GetDifficulty out of rpc/server.h
f885b67 refactor: Make rest.cpp dependency on `*toJSON` in `blockchain.cpp` explicit (Wladimir J. van der Laan)
8d8f28d refactor: Move RPCNotifyBlockChange out of `rpc/server.h` (Wladimir J. van der Laan)
e6dcfee refactor: Move GetDifficulty out of `rpc/server.h` (Wladimir J. van der Laan)

Tree-SHA512: fc2656611d18442f2fddba5ac1554d958151f6785c2039afdfc36735d7e71592d9686ff6cc7b2ad95180071d7514470e62c52d697c5a1e88f851bddaf5942edb
2017-03-31 12:57:30 +02:00
Wladimir J. van der Laan 9ab26bf7e4
Merge #10126: Compensate for memory peak at flush time
7228ce8 Compensate for memory peak at flush time (Pieter Wuille)

Tree-SHA512: 97e9848410fab061402c85d8440c54a50dd8a0203b2ea194013ea116700a6dc1b4b26b8c5f9c9c68c1f5c6b935c5d6c737437c1911b003d9ff5445c570cd449d
2017-03-31 12:06:14 +02:00
Wladimir J. van der Laan ba12b3a844
Merge #10120: util: Work around (virtual) memory exhaustion on 32-bit w/ glibc
625488a util: Work around (virtual) memory exhaustion on 32-bit w/ glibc (Wladimir J. van der Laan)

Tree-SHA512: 99b610a8cf9561998af90e16fc19320fddd30c987e8f33325d63df0f56d70235b94d9482e80f28154d4b33a3ecf4961686380c444ec18d1da5e8804a8b6f4de1
2017-03-31 11:30:59 +02:00
Wladimir J. van der Laan de301b0488
Merge #10130: bitcoin-tx input verification (awemany, jnewbery)
19ecd1e Add tests for bitcoin-tx input checking (John Newbery)
21704f6 Check stderr when testing bitcoin-tx (John Newbery)
eb66bf9 bitcoin-tx: Fix missing range check (Awemany)

Tree-SHA512: 08c6153cf7dd5e0ecd23e24d81af4c0f17534d484179dd91dcd78d42df14c91284341d31cc695469a64c507bce72c34231748b7cabb7df8f1051d228fb0a62c5
2017-03-31 10:21:38 +02:00
Awemany eb66bf9bdd bitcoin-tx: Fix missing range check
The number of arguments is not checked MutateTxAddOutAddr(..), meaning
that

> ./bitcoin-tx -create outaddr=

accessed the vStrInputParts vector beyond its bounds.

This also includes work by jnewbery to check the inputs for
MutateTxAddPubKey()
2017-03-30 15:35:24 -04:00
Jeremy Rubin 3f098cccf6 Decrease testcase sizes in cuckoocache tests 2017-03-30 15:30:45 -04:00
Pieter Wuille 7228ce853d Compensate for memory peak at flush time 2017-03-30 12:05:05 -07:00
Wladimir J. van der Laan cde9b1a864
Merge #9959: Mining: Prevent slowdown in CreateNewBlock on large mempools
011124a Update benchmarking with package statistics (Suhas Daftuar)
42cd8c8 Add benchmarking for CreateNewBlock (Suhas Daftuar)
eed816a Mining: return early when block is almost full (Suhas Daftuar)

Tree-SHA512: c0d8f71e4e0441acf3f4ca12f8705e413b59b323659346a447145653def71710537fb4c6d80cad8e36d68b0aabf19c92e9eab7135a8897b053ed58720856cdda
2017-03-30 20:55:29 +02:00
Wladimir J. van der Laan 625488ace5 util: Work around (virtual) memory exhaustion on 32-bit w/ glibc
glibc-specific: On 32-bit systems set the number of arenas to 1. By
default, since glibc 2.10, the C library will create up to two heap
arenas per core. This is known to cause excessive virtual address space
usage in our usage. Work around it by setting the maximum number of
arenas to 1.
2017-03-30 09:45:41 +02:00
Pieter Wuille 4fd2d2fc97 Add a FastRandomContext::randrange and use it 2017-03-29 11:26:08 -07:00
Pieter Wuille 16329224e7 Switch FastRandomContext to ChaCha20 2017-03-29 11:26:08 -07:00
Suhas Daftuar 011124a2b2 Update benchmarking with package statistics 2017-03-29 13:57:52 -04:00
Suhas Daftuar 42cd8c890f Add benchmarking for CreateNewBlock 2017-03-29 13:57:52 -04:00
Suhas Daftuar eed816af6c Mining: return early when block is almost full 2017-03-29 13:57:52 -04:00
Wladimir J. van der Laan f34cdcbd80
Merge #9294: Use internal HD chain for change outputs (hd split)
4115af7 Fix rebase issue where pwalletMain was used instead of pwallet Ser./Deser. nInternalChainCounter as last element (Jonas Schnelli)
9382f04 Do not break backward compatibility during wallet encryption (Jonas Schnelli)
1df08d1 Add assertion for CanSupportFeature(FEATURE_HD_SPLIT) (Jonas Schnelli)
cd468d0 Define CWallet::DeriveNewChildKey() as private (Jonas Schnelli)
ed79e4f Optimize GetOldestKeyPoolTime(), return as soon as we have both oldest keys (Jonas Schnelli)
771a304 Make sure we set the wallets min version to FEATURE_HD_SPLIT at the very first point (Jonas Schnelli)
1b3b5c6 Slightly modify fundrawtransaction.py test (change getnewaddress() into getrawchangeaddress()) (Jonas Schnelli)
003e197 Remove FEATURE_HD_SPLIT bump TODO (Jonas Schnelli)
d9638e5 Overhaul the internal/external key derive switch (Jonas Schnelli)
1090502 Fix superfluous cast and code style nits in RPC wallet-hd.py test (Jonas Schnelli)
58e1483 CKeyPool avoid "catch (...)" in SerializationOp (Jonas Schnelli)
e138876 Only show keypoolsize_hd_internal if HD split is enabled (Jonas Schnelli)
add38d9 GetOldestKeyPoolTime: if HD & HD Chain Split is enabled, response max(oldest-internal-key, oldest-external-key) (Jonas Schnelli)
dd526c2 Don't switch to HD-chain-split during wallet encryption of non HD-chain-split wallets (Jonas Schnelli)
79df9df Switch to 100% for the HD internal keypool size (Jonas Schnelli)
bcafca1 Make sure we always generate one keypool key at minimum (Jonas Schnelli)
d0a627a Fix issue where CDataStream->nVersion was taken a CKeyPool record version (Jonas Schnelli)
9af8f00 Make sure we hand out keypool keys if HD_SPLIT is not enabled (Jonas Schnelli)
469a47b Make sure ReserveKeyFromKeyPool only hands out internal keys if HD_SPLIT is supported (Jonas Schnelli)
05a9b49 Fix wrong keypool internal size in RPC getwalletinfo help (Jonas Schnelli)
01de822 Removed redundant IsLocked() check in NewKeyPool() (Jonas Schnelli)
d59531d Immediately return setKeyPool's size if HD or HD_SPLIT is disabled or not supported (Jonas Schnelli)
02592f4 [Wallet] split the keypool in an internal and external part (Jonas Schnelli)

Tree-SHA512: 80d355d5e844b48c3163b56c788ab8b5b5285db0ceeb19858a3ef517d5a702afeca21dbae526d7b8fb4101c2a745af1d92bf557c40cf516780f17992bf678c1a
2017-03-29 12:51:06 +02:00
Wladimir J. van der Laan 9692be4a9a
Merge #10084: rpc: Rename first named arg of createrawtransaction
fa55853 rpc: Rename first named arg of createrawtransaction (MarcoFalke)

Tree-SHA512: f2e07183f2503344e676e08fe0fd73e995d7c6fda3fc11c64116208dec8e445f0627583dfba85014129b6f2dc7e253b9d760e57e66811272db89e9ba25ce6dbc
2017-03-29 10:44:47 +02:00
Wladimir J. van der Laan f885b67029 refactor: Make rest.cpp dependency on *toJSON in blockchain.cpp explicit 2017-03-29 09:56:47 +02:00
Pieter Wuille e04326fe66 Add ChaCha20 2017-03-29 00:40:17 -07:00
Pieter Wuille 663fbae777 FastRandom benchmark 2017-03-29 00:40:17 -07:00
Pieter Wuille c21cbe61c6 Introduce FastRandomContext::randbool() 2017-03-29 00:40:17 -07:00
Pieter Wuille 4bd0e9b90a
Merge #10088: Trivial: move several relay options into the relay help group
0fb2887 Move several relay options into the Relay help group (Jameson Lopp)

Tree-SHA512: 31fdfd8c741adb6fe6806a28955f0fbbc9360b1d8c3d8a28684794822f1b3231fffab93357357d986b81a4532c9eeabb79e5ede9378ff3ad8930ceb6588d9eb6
2017-03-29 00:31:34 -07:00
Pieter Wuille 7438ceac71
Merge #10086: Trivial: move rpcserialversion into RPC option group
1403b1a move rpcserialversion into RPC option group (Jameson Lopp)

Tree-SHA512: c56cc318ea09ac27a8e12b8b9a1006992dcb969e6112df5046975b548aad30f729a4204f4893c8fe9bf5b50442eba6c75b5f8dd6d1261cf83c938474e93e9a7e
2017-03-29 00:28:51 -07:00
Thomas Snider 6d5dd60c88 No need to use OpenSSL malloc/free 2017-03-28 17:36:31 -07:00
Ryan Havar 53351321c4 ApproximateBestSubset should take inputs by reference, not value 2017-03-28 12:11:44 -06:00
Jonas Schnelli 4115af7ac7
Fix rebase issue where pwalletMain was used instead of pwallet
Ser./Deser. nInternalChainCounter as last element
2017-03-28 09:18:20 +02:00
Russell Yanofsky e9a64615c8 Make qt wallet test compatible with qt4
Unlike Qt5, the Qt4 signals implementation doesn't allow a signal to be
directly connected to a c++ lambda expression. Work around this by defining a
Callback QObject with a virtual method that can forward calls to a closure.

The Qt4 error was reported by Patrick Strateman <patrick.strateman@gmail.com>
in https://github.com/bitcoin/bitcoin/pull/10039#issuecomment-289248763
2017-03-27 14:34:38 -04:00
Wladimir J. van der Laan 8d8f28dd52 refactor: Move RPCNotifyBlockChange out of rpc/server.h 2017-03-27 16:23:22 +02:00
Wladimir J. van der Laan e6dcfeec05 refactor: Move GetDifficulty out of rpc/server.h
It has no business in `rpcserver.h`. Define it in the interface header
of the implementation unit `rpcblockchain` where it is defined.

Also modernize the signature to:

    double GetDifficulty(const CBlockIndex* blockindex = nullptr);

(remove `extern`, replace `NULL` with `nullptr`)
2017-03-27 12:21:35 +02:00
Wladimir J. van der Laan 5114f81136
Merge #10057: [init] Deduplicated sigaction() boilerplate
81a3857 Deduplicated sigaction() boilerplate (Thomas Snider)

Tree-SHA512: 705b73f285a3d76504ba01476e072fdce67731b65f309bb04e4bbd765556c37e127cb769b475de2d68b33f50d7737fb136aefa0fa7c725a11ad16a47b9d0365f
2017-03-27 10:36:57 +02:00
Wladimir J. van der Laan e6156a0aa3
Merge #10056: [zmq] Call va_end() on va_start()ed args.
5ba61f0 [zmq] Call va_end() on va_start()ed args. (Karl-Johan Alm)

Tree-SHA512: fbd3a0c29308ca9607f362f14fa7ea9c949a3f25dc09a349fe3b3ffd316b573c86778e29d3b9d55c684571eacae50aca90bb872e2e5489818d0af8310511fe79
2017-03-27 10:34:18 +02:00
Jonas Schnelli 7278537730
[Qt] Don't add arguments of sensitive command to console window 2017-03-27 10:25:52 +02:00
Jonas Schnelli 0ddea4430d
Merge #10060: [Qt] Ensure an item exists on the rpcconsole stack before adding
4df76e2 Ensure an item exists on the rpcconsole stack before adding (Andrew Chow)

Tree-SHA512: f3fd5e70da186949aff794f6e2ba122da2145331212dcc5e0595285bee9dc3aa6b400b15e8eeec4476099965b74f46c4ef80f8ed1e05d490580167b002b9a5e7
2017-03-27 09:55:17 +02:00
Jonas Schnelli 9382f0425e
Do not break backward compatibility during wallet encryption 2017-03-27 09:51:55 +02:00
Jameson Lopp 0fb288725b Move several relay options into the Relay help group 2017-03-26 15:02:26 -04:00
Jameson Lopp 1403b1a689 move rpcserialversion into RPC option group 2017-03-26 10:25:17 -04:00
Jameson Lopp d5690f1ab8 remove 'noconnect' option from documentation 2017-03-26 09:13:20 -04:00
MarcoFalke fa55853219 rpc: Rename first named arg of createrawtransaction 2017-03-26 12:08:44 +02:00
Wladimir J. van der Laan 90dd9e6c4c
Merge #9946: Fix build errors if spaces in path or parent directory
b1f584d fix build if spaces in src dir path (Matthew Zipkin)

Tree-SHA512: 5834690c1f63b85ed04bb8ed411a94da04738534364d58bd9ee333ccff7129b2bbb710f31598c40123199e023da02c1745514294af3efdbb2c2e4c1320aded35
2017-03-25 12:15:06 +01:00
Wladimir J. van der Laan 5d7eb39aec
Merge #10067: [trivial] Dead code removal
c59aedc [trivial] Dead code removal (Thomas Snider)

Tree-SHA512: 09962c1ae36fb2f19b7e4a03abf3de6632bab984ce30040ca3f843431df33a0f8fa6a2c1d55b076b800547bb656e344d74ea085ff081b613bcdfd7d2f9826374
2017-03-25 09:10:03 +01:00
Andrew Chow 4df76e270c Ensure an item exists on the rpcconsole stack before adding
Ensures that there is an item on the rpcconsole stack before adding something to the current stack so that a segmentation fault does not occur.
2017-03-24 21:41:34 -04:00
Matthew Zipkin b1f584dbc1 fix build if spaces in src dir path 2017-03-24 18:22:34 -07:00
Matthew Zipkin 557c9a68fb RPC: getblockchaininfo: BIP9 stats
add RPC tests for BIP9 counting stats
2017-03-24 16:57:05 -07:00
Thomas Snider 81a3857c4e Deduplicated sigaction() boilerplate 2017-03-24 10:32:56 -07:00
Jonas Schnelli 1df08d1580
Add assertion for CanSupportFeature(FEATURE_HD_SPLIT) 2017-03-24 10:57:55 +01:00
Jonas Schnelli cd468d07d5
Define CWallet::DeriveNewChildKey() as private 2017-03-24 10:57:31 +01:00
Jonas Schnelli ed79e4f497
Optimize GetOldestKeyPoolTime(), return as soon as we have both oldest keys 2017-03-24 10:54:48 +01:00
Jonas Schnelli 771a304ffe
Make sure we set the wallets min version to FEATURE_HD_SPLIT at the very first point 2017-03-24 10:53:35 +01:00
Jonas Schnelli 003e197498
Remove FEATURE_HD_SPLIT bump TODO 2017-03-24 10:28:40 +01:00
Jonas Schnelli d9638e5aa4
Overhaul the internal/external key derive switch 2017-03-24 10:28:40 +01:00
Jonas Schnelli 1090502c3e
Fix superfluous cast and code style nits in RPC wallet-hd.py test 2017-03-24 10:28:40 +01:00
Jonas Schnelli 58e148333e
CKeyPool avoid "catch (...)" in SerializationOp 2017-03-24 10:28:40 +01:00
Jonas Schnelli e138876f0a
Only show keypoolsize_hd_internal if HD split is enabled 2017-03-24 10:28:40 +01:00
Jonas Schnelli add38d9b83
GetOldestKeyPoolTime: if HD & HD Chain Split is enabled, response max(oldest-internal-key, oldest-external-key) 2017-03-24 10:28:39 +01:00
Jonas Schnelli dd526c2a2d
Don't switch to HD-chain-split during wallet encryption of non HD-chain-split wallets 2017-03-24 10:28:39 +01:00
Jonas Schnelli 79df9df348
Switch to 100% for the HD internal keypool size 2017-03-24 10:28:39 +01:00
Jonas Schnelli bcafca1077
Make sure we always generate one keypool key at minimum 2017-03-24 10:28:39 +01:00
Jonas Schnelli d0a627a53a
Fix issue where CDataStream->nVersion was taken a CKeyPool record version 2017-03-24 10:28:39 +01:00
Jonas Schnelli 9af8f00a75
Make sure we hand out keypool keys if HD_SPLIT is not enabled 2017-03-24 10:28:38 +01:00
Jonas Schnelli 469a47b760
Make sure ReserveKeyFromKeyPool only hands out internal keys if HD_SPLIT is supported 2017-03-24 10:28:38 +01:00
Jonas Schnelli 05a9b493eb
Fix wrong keypool internal size in RPC getwalletinfo help 2017-03-24 10:28:38 +01:00
Jonas Schnelli 01de822c8d
Removed redundant IsLocked() check in NewKeyPool() 2017-03-24 10:28:38 +01:00
Jonas Schnelli d59531ddfc
Immediately return setKeyPool's size if HD or HD_SPLIT is disabled or not supported 2017-03-24 10:28:37 +01:00
Jonas Schnelli 02592f4c5e
[Wallet] split the keypool in an internal and external part 2017-03-24 10:28:37 +01:00
Thomas Snider c59aedc1b0 [trivial] Dead code removal 2017-03-23 15:08:54 -07:00
Eric Shaw Jr 9ab9e7d1b3 Add a button to open the config file in a text editor 2017-03-23 12:54:36 -04:00
Jonas Schnelli 3568b30ca3
Merge #9500: [Qt][RPC] Autocomplete commands for 'help' command in debug console
6d8fe35 'help' rpc commands autocomplete (Andrew Chow)

Tree-SHA512: 289bc4fa16a1c0291262998caa18556f1c5aa89662c85528606dc03b596b8833a0fb2c5c9c068b6dcf2adb3a136d4f154591d4a95b8c3313638b77355aaed955
2017-03-23 08:27:16 +01:00
Jonas Schnelli 7b585cf70e
Merge #9558: Clarify assumptions made about when BlockCheck is called
c4a6929 Clarify assumptions made about when BlockCheck is called (Matt Corallo)

Tree-SHA512: 2eceb0c4f06c7fd6b290b93843bda11a4b63131559c5e8226bfec84596ed4e54ee6d8f5bc9cf789a80675be8b8079cf9234c96032df306258cb2260b9d8c7825
2017-03-23 08:18:43 +01:00
Jonas Schnelli 86f7d5b69b
Merge #10029: Fix parameter naming inconsistencies between .h and .cpp files
97b8213 Fix parameter naming inconsistencies between .h and .cpp files (practicalswift)

Tree-SHA512: 4f46cc3973a898d2478bdb1b8c8d1829c3a7298b63bc47359c5dc2f135466773072d9672134ef3e7557dfc913720e49b675176b9e435b8bd1992af9ad53866e4
2017-03-23 08:16:27 +01:00
Karl-Johan Alm 5ba61f0034
[zmq] Call va_end() on va_start()ed args. 2017-03-22 12:56:44 -07:00
Kalle Alm fd369d267b
Switched httpserver.cpp to use RAII wrapped libevents. 2017-03-22 10:32:58 -07:00
John Newbery 91c91e140a Control mempool persistence using a command line parameter.
Mempool persistence was added in
3f78562df5, and is always on. This commit
introduces a command-line parameter -persistmempool, which defaults to
true. When set to false:
- mempool.dat is not loaded when the node starts.
- mempool.dat is not written when the node stops.
2017-03-22 11:17:17 -04:00
Jonas Schnelli 90586b6897
Merge #10045: [trivial] Fix typos in comments
dbf30ff [trivial] Fix typos in comments (practicalswift)

Tree-SHA512: a841c96ba1a80ab57206e8ef4fa9b40ecff2244075a5539fc09f57e763bf2e92b0ed089e32a0dbac3902518dcda43d224f75a3462a560148841746560640ba70
2017-03-22 08:38:24 +01:00
practicalswift dbf30ff10f [trivial] Fix typos in comments 2017-03-21 19:49:08 +01:00
Wladimir J. van der Laan 919aaf6508
Merge #10039: Fix compile errors with Qt 5.3.2 and Boost 1.55.0
b5bec4e Avoid QTimer::singleShot compile error with Qt 5.3.2 (Russell Yanofsky)
d5046e7 Avoid scoped_connection compile error with boost 1.55.0 (Russell Yanofsky)

Tree-SHA512: 96362b872817681b062e05c8fcb76cfc23b6e87e0371584a6aae0e17535fd34ccdba922380aa4b669a8e75ef3f9fadd25061541f77cb3198173f04249a7bcd62
2017-03-21 11:46:55 +01:00
Russell Yanofsky b5bec4e330 Avoid QTimer::singleShot compile error with Qt 5.3.2
Construct QTimer object directly, instead of relying on QTimer::singleShot
overloads accepting lambdas, which weren't introduced until Qt 5.4.

Avoids the following compile error in debian jessie:

```
qt/test/wallettests.cpp: In function ‘void {anonymous}::ConfirmSend()’:
qt/test/wallettests.cpp:34:6: error: no matching function for call to ‘QTimer::singleShot(int, Qt::TimerType, {anonymous}::ConfirmSend()::<lambda()>)’
     });
      ^
qt/test/wallettests.cpp:34:6: note: candidates are:
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QTimer:1:0,
                 from ./qt/sendcoinsdialog.h:13,
                 from qt/test/wallettests.cpp:7:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtimer.h:81:17: note: static void QTimer::singleShot(int, const QObject*, const char*)
     static void singleShot(int msec, const QObject *receiver, const char *member);
                 ^
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtimer.h:81:17: note:   no known conversion for argument 2 from ‘Qt::TimerType’ to ‘const QObject*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtimer.h:82:17: note: static void QTimer::singleShot(int, Qt::TimerType, const QObject*, const char*)
     static void singleShot(int msec, Qt::TimerType timerType, const QObject *receiver, const char *member);
                 ^
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtimer.h:82:17: note:   candidate expects 4 arguments, 3 provided
```

Error reported by Pavel Janík <Pavel@Janik.cz> in
https://github.com/bitcoin/bitcoin/pull/9974#issuecomment-287574436
2017-03-20 12:35:37 -04:00
Russell Yanofsky d5046e72f4 Avoid scoped_connection compile error with boost 1.55.0
Construct scoped_connection directly instead of relying on copy initialization
and move constructor. Avoids the following compile error in debian jessie:

```
In file included from /usr/include/boost/signals2/signal.hpp:21:0,
                 from ./util.h:29,
                 from ./dbwrapper.h:11,
                 from ./txdb.h:10,
                 from ./test/test_bitcoin.h:11,
                 from qt/test/wallettests.cpp:11:
/usr/include/boost/signals2/connection.hpp: In function ‘uint256 {anonymous}::SendCoins(CWallet&, SendCoinsDialog&, const CBitcoinAddress&, CAmount)’:
/usr/include/boost/signals2/connection.hpp:234:7: error: ‘boost::signals2::scoped_connection::scoped_connection(const boost::signals2::scoped_connection&)’ is private
       scoped_connection(const scoped_connection &other);
       ^
qt/test/wallettests.cpp:47:6: error: within this context
     });
      ^
```

Error reported by Pavel Janík <Pavel@Janik.cz> in
https://github.com/bitcoin/bitcoin/pull/9974#issuecomment-287550034
2017-03-20 12:27:07 -04:00
John Newbery 63d66ba20a Move src/test/bitcoin-util-test.py to test/util/bitcoin-util-test.py 2017-03-20 10:40:31 -04:00
Wladimir J. van der Laan d34995a7ba
Merge #10038: Add mallocinfo mode to getmemoryinfo RPC
e141aa4 Add mallocinfo mode to `getmemoryinfo` RPC (Wladimir J. van der Laan)

Tree-SHA512: e778631765c29b3b5fb94eb66e5f50a8f108a234891bdcc4883f1e6e2fdd223f7660fad987eb2d7cbda5b800482d78adc1a309a3f6f83a84c556af43ebee2ed7
2017-03-20 15:05:56 +01:00
Wladimir J. van der Laan e141aa4ba6 Add mallocinfo mode to getmemoryinfo RPC
This adds a mode argument to `getmemoryinfo`. By default the output
will remain the same. However if a mode argument of `mallocinfo` is
provided the result of glibc `malloc_info` (if available) will
be returned as a string, as-is.

This is useful for tracking heap usage over time or troubleshooting
memory fragmentation issues.
2017-03-20 10:30:18 +01:00
James Evans 05a9f22358 Trivial: Fix typo in help getrawtransaction RPC 2017-03-20 05:19:41 -03:00
Wladimir J. van der Laan 5c1a958124
Merge #10027: Set to nullptr after delete
d93b97f Set to nullptr after delete (practicalswift)

Tree-SHA512: 7201cef4541557ffe31f52ce7527c4b08a2ff5aa1eae5268bdfee5b4843881f8fd115257bef6d1b4dfb71166951950a912ce87aef160ca89c2ca2ae264cfab1b
2017-03-20 08:39:18 +01:00
practicalswift 97b8213674 Fix parameter naming inconsistencies between .h and .cpp files
Inconsistencies prior to this commit:

* serializeFlags vs serialFlags
src/core_io.h:std::string EncodeHexTx(const CTransaction& tx, const int serializeFlags = 0);
src/core_write.cpp:std::string EncodeHexTx(const CTransaction& tx, const int serialFlags)

* statusOut vs outStatus
src/rpc/server.h:bool RPCIsInWarmup(std::string *statusOut);
src/rpc/server.cpp:bool RPCIsInWarmup(std::string *outStatus)

* hashesToUpdate vs vHashesToUpdate
src/txmempool.h:    void UpdateTransactionsFromBlock(const std::vector<uint256> &hashesToUpdate);
src/txmempool.cpp:void CTxMemPool::UpdateTransactionsFromBlock(const std::vector<uint256> &vHashesToUpdate)

* nPruneUpToHeight vs nManualPruneHeight
src/validation.h:void PruneBlockFilesManual(int nPruneUpToHeight);
src/validation.cpp:void PruneBlockFilesManual(int nManualPruneHeight);
2017-03-19 16:14:29 +01:00
Michael Goldstein f490dae56b Trivial: Fix typo in key.h comment 2017-03-18 18:13:55 -07:00
practicalswift d93b97fbcf Set to nullptr after delete 2017-03-18 12:40:58 +01:00
Wladimir J. van der Laan baae3149d6
Merge #9911: Wshadow: various gcc fixes
d7f80b6 Rename first iterator to prevent shadowing. (Pavel Janík)
b42ff60 Fix shadowing of local variables. (Pavel Janík)
c4b60b3 Make some global variables less-global (static) (Pavel Janík)
bb2aaee Prevent -Wshadow warnings with gcc versions 4.8.5, 5.3.1 and 6.2.1. (Pavel Janík)

Tree-SHA512: 3aea4e28146c8f2a31351c6e2b0cce88b6f1e567a0ea0e6131624453e7193d0904e30d81b1439d8c69e281cf0e369b895851fb882ae48d5967b5c2e2c227404e
2017-03-18 11:00:16 +01:00
Wladimir J. van der Laan a328904480
Merge #9999: [LevelDB] Plug leveldb logs to bitcoin logs
cfce581 [LevelDB] Plug leveldb logs to bitcoin logs (NicolasDorier)

Tree-SHA512: e40a2c2644c269bb2da7be04aec39ff64ad350d508391750a757955ed3f9d96998775d01e04b282a75b36d776c3960a345cc7b6f1466e6ae167d27518bf4baee
2017-03-18 10:58:22 +01:00
Wladimir J. van der Laan aab1e55860
Merge #9987: Remove unused code
8dc957a Remove unused code (practicalswift)

Tree-SHA512: c7bb286e3b92e42fec8aa1ac2491fd38be36602efca16b4bdc4e9d5ada75c11d99e7713092ec13794abd69d5ef2c732b86209a6d01710e5ebf6fc51b8a65c92a
2017-03-18 10:10:33 +01:00
Pavel Janík d7f80b6dcb Rename first iterator to prevent shadowing. 2017-03-18 07:59:51 +01:00
Pavel Janík b42ff60c7e Fix shadowing of local variables. 2017-03-18 07:59:50 +01:00
Pavel Janík c4b60b3d9c Make some global variables less-global (static) 2017-03-18 07:59:50 +01:00
Pavel Janík bb2aaeeeea Prevent -Wshadow warnings with gcc versions 4.8.5, 5.3.1 and 6.2.1. 2017-03-18 07:59:50 +01:00
Wladimir J. van der Laan 3d857f307b
Merge #9818: Save watch only key timestamps when reimporting keys
7759aa2 Save watch only key timestamps when reimporting keys (Russell Yanofsky)

Tree-SHA512: 433b5a78e5626fb2f3166e6c84c22eabd5239d451dc82694da95af237e034612a24f1a8bc959b7d2f2e576ce0b679be1fa4af929ebfae758c7e832056ab67061
2017-03-17 21:52:14 +01:00
Jonas Schnelli 9c7b7cf0bb
Merge #9592: [Qt] Add checkbox in the GUI to opt-in to RBF when creating a transaction
c4e4792 [Qt] Change RBF checkbox to reflect -walletrbf setting (Russell Yanofsky)
838a58e [Qt] Add simple optin-RBF checkbox and confirmation info (Jonas Schnelli)
568c05a Allow to opt-into RBF when creating a transaction (Jonas Schnelli)

Tree-SHA512: 3d52dcd4e44da8aed4d631748074afef78d38c860f2a8b95323f4801a989d6599a3498a753fc10daba4098c527ef5a0eb942e5b3f1bfd656e1a6bd272b8e6c57
2017-03-17 15:31:52 +01:00
Jonas Schnelli a387d3a807
Merge #9690: Change 'Clear' button string to 'Reset'
9155241 Change 'Clear' button string to 'Reset' (Daniel Aleksandersen)

Tree-SHA512: 9d68aaaeef88f174b29bffced81f3b2cb6a76f7a2dd8c43df4d9bd5d29cdbcf073c1f250c6bdfad12540976b1bb27a764e5033d219a1491f27f4d89ddd06e49b
2017-03-17 14:45:03 +01:00
Jonas Schnelli b9f930b383
Merge #9974: Add basic Qt wallet test
9576b01 Enable xvfb in travis to allow running test_bitcoin-qt (Russell Yanofsky)
9e6817e Add new test_bitcoin-qt static library dependencies (Russell Yanofsky)
2754ef1 Add simple qt wallet test sending a transaction (Russell Yanofsky)
b61b34c Add braces to if statements in Qt test_main (Russell Yanofsky)
cc9503c Make qt test compatible with TestChain100Setup framework (Russell Yanofsky)
91e3035 Make test_bitcoin.cpp compatible with Qt Test framework (Russell Yanofsky)

Tree-SHA512: da491181848b8c39138e997ae5ff2df0b16eef2d9cdd0a965229b1a28d4fa862d5f1ef314a1736e5050e88858f329124d15c689659fc6e50fefde769ba24e523
2017-03-17 14:31:22 +01:00
practicalswift 8dc957ae06 Remove unused code 2017-03-17 04:37:43 +01:00
Pavol Rusnak 9350e13396
util: rename variable to avoid shadowing 2017-03-16 17:33:58 +01:00
Wladimir J. van der Laan 8b789d8141
Merge #9921: build: Probe MSG_DONTWAIT in the same way as MSG_NOSIGNAL
a4d1c9f compat: use `unsigned int` instead of `u_int` (Wladimir J. van der Laan)
25da1ee build: cleanup: define MSG_DONTWAIT/MSG_NO_SIGNAL locally (Wladimir J. van der Laan)
c459d50 build: Probe MSG_DONTWAIT in the same way as MSG_NOSIGNAL (Wladimir J. van der Laan)

Tree-SHA512: 60d79d69439bb181465e4244aa5ddc28bbd84f69c0ca0c753956b3798c9022394e29d791bc085fe7ffb1268c64c789a57e24797daad63525bb776088188ff9ae
2017-03-16 12:03:00 +01:00
MarcoFalke c49355c717
Merge #9993: Initialize nRelockTime
fb6f90a Initialize nRelockTime (Patrick Strateman)

Tree-SHA512: 82675ab4b05d5f3ea08a99e85d3f49d18068887d23cbacb5e899ad66799049c5f1d5bd33768dbe153116424c9f0caddaa3622000924e373aa01ac2a54b5f3577
2017-03-16 11:44:32 +01:00
practicalswift a3ca43bb32 [trivial] Fix a typo (introduced two days ago) in the default fee warning 2017-03-16 09:05:30 +01:00
NicolasDorier cfce581d11 [LevelDB] Plug leveldb logs to bitcoin logs 2017-03-16 02:14:27 +00:00
Russell Yanofsky 9e6817ed11 Add new test_bitcoin-qt static library dependencies
Avoids following error when qt is statically linked into the test binary, as on
travis:

This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".
2017-03-15 13:02:02 -04:00
Russell Yanofsky 2754ef1c4a Add simple qt wallet test sending a transaction 2017-03-15 12:02:02 -05:00
Russell Yanofsky b61b34c89d Add braces to if statements in Qt test_main 2017-03-15 13:02:02 -04:00
Patrick Strateman fb6f90a4ce Initialize nRelockTime 2017-03-14 15:48:08 -07:00
Wladimir J. van der Laan ce01e6226c
Merge #9481: [Qt] Show more significant warning if we fall back to the default fee
7abe7bb Qt/Send: Give fallback fee a reasonable indent (Luke Dashjr)
3e4d7bf Qt/Send: Figure a decent warning colour from theme (Luke Dashjr)
c5adf8f [Qt] Show more significant warning if we fall back to the default fee (Jonas Schnelli)

Tree-SHA512: 9e85b5b398d7a49aaf6c42578d63750b1b7aa9cc9e84d008fe21d6c53f1ffe2fb69286a1a764e634ebca3286564615578eea0a1bc883e4b332be8306d9883d14
2017-03-14 13:06:44 +01:00
Wladimir J. van der Laan 416809c11b
Merge #9955: Don't require segwit in getblocktemplate for segwit signalling or mining
c85ffe6 Test transaction selection when gbt called without segwit support (Suhas Daftuar)
abe7b3d Don't require segwit in getblocktemplate for segwit signalling or mining (Suhas Daftuar)

Tree-SHA512: 172496b6d7cdf1879de1266748f2b4ed9fd2ba9ff4a1fd964d74d73c674c16d74bf01a3ba42bf25f2d69f348217c0bbf3412ac64821f222efc9de25a287a5240
2017-03-14 12:55:52 +01:00
Wladimir J. van der Laan 2c781fb920
Merge #9497: CCheckQueue Unit Tests
96c7f2c Add CheckQueue Tests (Jeremy Rubin)
e207342 Fix CCheckQueue IsIdle (potential) race condition and remove dangerous constructors. (Jeremy Rubin)

Tree-SHA512: 5989743ad0f8b08998335e7ca9256e168fa319053f91b9dece9dbb134885bef7753b567b591acc7135785f23d19799ed7e6375917f59fe0178d389e961633d62
2017-03-14 12:23:41 +01:00
Suhas Daftuar abe7b3d3ab Don't require segwit in getblocktemplate for segwit signalling or mining
Segwit's version bit will be signalled for all invocations of CreateNewBlock,
and not specifying segwit only will cause CreateNewBlock to skip transactions
with witness from being selected.
2017-03-14 06:43:37 -04:00
Wladimir J. van der Laan 67ed40ed82
Merge #9505: Prevector Quick Destruct
45a5aaf Only call clear on prevector if it isn't trivially destructible and don't loop in clear (Jeremy Rubin)
aaa02e7 Add prevector destructor benchmark (Jeremy Rubin)

Tree-SHA512: 52bc8163b65b71310252f2d578349d0ddc364a6c23795c5e06e101f5449f04c96cbdca41c0cffb1974b984b8e33006471137d92b8dd4a81a98e922610a94132a
2017-03-14 10:43:10 +01:00
Wladimir J. van der Laan 1b046603b3
Merge #8665: Assert all the things!
4d51e9b Assert ConnectBlock block and pIndex are the same block (NicolasDorier)
972714c pow: GetNextWorkRequired never called with NULL pindexLast (Daniel Cousens)
cc44c8f ContextualCheckBlockHeader should never have pindexPrev to NULL (NicolasDorier)

Tree-SHA512: 7cc568bf9417267c335f21ec3d1505b26e56e5b3d5f4d3dbb555279489800aaa65a3bcd7bc376e274dd102912aec16ddbb18de2e2060b2667b41eb979cd9321e
2017-03-14 10:38:27 +01:00
Wladimir J. van der Laan 8040ae6fc5
Merge #9963: util: Properly handle errors during log message formatting
b651270 util: Throw tinyformat::format_error on formatting error (Wladimir J. van der Laan)
3b092bd util: Properly handle errors during log message formatting (Wladimir J. van der Laan)

Tree-SHA512: 85e3b7afec2255fc88034187f1abd6060e9421de17ed4e3d918416f393429a99cc2c974b362099aaaff6970549df47664bea4c857c4e46acc0789663201dc541
2017-03-13 14:43:19 +01:00
Wladimir J. van der Laan afcd7c0e52
Merge #9830: Add safe flag to listunspent result
dcf2112 Add safe flag to listunspent result (NicolasDorier)
af61d9f Add COutput::fSafe member for safe handling of unconfirmed outputs (Russell Yanofsky)

Tree-SHA512: 311edb6fa8075b3ede5b24cb8c6e5d133ccd8ac9ecafea07b604ffa812ee4f071337e31695e662d8573590a0460af20aaaeb39d49c9ea87924449ea50bdfb0b3
2017-03-13 07:01:29 +01:00
Wladimir J. van der Laan f8a709161f
Merge #9953: Fix shutdown hang with >= 8 -addnodes set
819b513 Add missing braces in semaphore posts in net (Matt Corallo)
e007b24 Fix shutdown hang with >= 8 -addnodes set (Matt Corallo)

Tree-SHA512: f2d7562bd5d333cd0e80562eb3b1fe329fc10ee713996e053d2ed669db6d9eb39550e0a6c6ab768cd070bfe92a5ea85e0f752470206706de196bd4a689b9bc07
2017-03-13 06:57:24 +01:00
Wladimir J. van der Laan b651270cd6 util: Throw tinyformat::format_error on formatting error
Throw tinyformat::format_error on formatting error instead of the
`std::runtime_error`.
2017-03-13 06:51:15 +01:00
Wladimir J. van der Laan 3b092bd9b6 util: Properly handle errors during log message formatting
Instead of having an exception propagate into the program when an
error happens while formatting a log message, just print a message to
the log.

Addresses #9423.
2017-03-12 07:58:06 +01:00
Russell Yanofsky cc9503cec9 Make qt test compatible with TestChain100Setup framework
Reset global state after rpc tests, and remove unnecessary ECC initialization
to prevent assert error if it is initialized twice.
2017-03-10 15:52:29 -05:00
Russell Yanofsky 91e303595b Make test_bitcoin.cpp compatible with Qt Test framework
Move Boost.Test main function and global overrides to a new test_bitcoin_main.cpp file.
2017-03-10 15:47:41 -05:00
NicolasDorier dcf2112de6 Add safe flag to listunspent result 2017-03-10 05:11:10 +00:00
Russell Yanofsky af61d9f78b Add COutput::fSafe member for safe handling of unconfirmed outputs
This exposes a value computed in CWallet::AvailableCoins so it can used for
other things, like inclusion in listunspent output.
2017-03-10 05:11:10 +00:00
MarcoFalke 5703dff093
Merge #9962: [trivial] Fix typo in rpc/protocol.h
9ea2490 [trival] Fix typo introduced into rpc/protocol.h in commit 338bf06 (practicalswift)

Tree-SHA512: bfa60dc9f40db867b09e60dbe803db79c86ff939048c91e551c0794a91428bde3aa42c4aabf915c640cd15565005608da10dae051942e806fdf5d28e9704d765
2017-03-09 12:32:46 +01:00
Wladimir J. van der Laan e3e7db829e
Merge #9538: [util] Remove redundant call to get() on smart pointer (thread_specific_ptr)
53a2ba3 [util] Remove redundant call to get() on smart pointer (thread_specific_ptr) (practicalswift)

Tree-SHA512: ec8ace4218ae0657d1aaf8ba7682b0cdd140fe0844173058d3cbf4575dee8d9ad5f241e5bacf1e9e4ad3f7dd282f56a8cb0f306de2093f2c0f6333daedd58261
2017-03-09 10:33:28 +01:00
Wladimir J. van der Laan c71f0ca5f8
Merge #9960: Trivial: Add const modifier to GetHDChain and IsHDEnabled
3cef950 Trivial: Add const modifier to GetHDChain and IsHDEnabled (NicolasDorier)

Tree-SHA512: 73126689e179d70e6823950b51aae4da0a1e348436bc72338814f3afeec27868bb479d9e8261f86e4fe851e84492778a30c5f1fe76c9d7dd91796d0e38baeaf0
2017-03-09 10:27:31 +01:00
practicalswift 53a2ba351a [util] Remove redundant call to get() on smart pointer (thread_specific_ptr) 2017-03-09 10:22:35 +01:00
practicalswift 9ea249014a [trival] Fix typo introduced into rpc/protocol.h in commit 338bf06
The typo was introduced in commit 338bf065a4, which was merged yesterday.

Changes summarized to facilitate reviewing:
* exampled → example
2017-03-09 10:16:16 +01:00
Wladimir J. van der Laan b403ec5c0f
Merge #9916: Fix msvc compiler error C4146 (minus operator applied to unsigned type)
8e0720b Fix msvc compiler error C4146 (unary minus operator applied to unsigned type) (kobake)
292112f Fix msvc compiler error C4146 (minus operator applied to unsigned type) (kobake)

Tree-SHA512: 25f408daf7bf9ffe4b8b4bd62f6f6d326219189a9faf8f8c0a135c5a0cb0511af765aa2b6087a091c8863c701289bda49a2379b00cd9b10854d316a5c3fc3f8e
2017-03-09 10:02:55 +01:00
Wladimir J. van der Laan 02bd6e9bc6
Merge #9853: Fix error codes from various RPCs
adaa281 Update release notes to include RPC error code changes. (John Newbery)
338bf06 Add commenting around JSON error codes (John Newbery)
dab804c Return correct error codes in fundrawtransaction(). (John Newbery)
a012087 Return correct error codes in setban(). (John Newbery)
960bc7f Return correct error codes in removeprunedfunds(). (John Newbery)
c119096 Return correct error codes in blockchain.cpp. (John Newbery)
6d07c62 Return correct error codes in bumpfee(). (John Newbery)

Tree-SHA512: 4bb39ad221cd8c83d98ac5d7ad642f3a8c265522720dc86b2eebc70e74439a85b06d6ddcd6a874e879d986511de3ab0878bb7fe58b50cb0546b78913632ea809
2017-03-09 10:02:17 +01:00
Wladimir J. van der Laan 6805c4112c
Merge #9575: Remove unused, non-working RPC PostCommand signal
54fae05 Remove unreachable code (g_rpcSignals.PostCommand) (practicalswift)

Tree-SHA512: b416d63ffa1c35fa0434b6bc0a930ae1b04919a12114ef65154ce4621aa43d744eb4fc515f48eac2e96c0f528cedb4cdbe2349952d215c2c74e900a63e155e0a
2017-03-09 10:01:03 +01:00
practicalswift 54fae05dad Remove unreachable code (g_rpcSignals.PostCommand) 2017-03-09 09:47:04 +01:00
Wladimir J. van der Laan 8152d3fe57
Merge #9476: [refactor] Remove using namespace <xxx> from rpc/ & script/ sources
8cbfc4e Refactor: Remove using namespace <xxx> from script/ (Karl-Johan Alm)
f3c264e Refactor: Remove using namespace <xxx> from rpc/ (Karl-Johan Alm)

Tree-SHA512: 407e80eeda0b8e1df22c5fcba33572e117542fde83c67357f6c2d98fa60bcc7b21bb88ad9a1ee59062fbec17fadaa4836b69e8e6d18188b4027b794357634467
2017-03-09 08:15:44 +01:00
NicolasDorier 3cef95058c Trivial: Add const modifier to GetHDChain and IsHDEnabled 2017-03-09 11:32:02 +09:00
Matt Corallo 819b513a54 Add missing braces in semaphore posts in net 2017-03-08 14:55:28 -05:00
Matt Corallo e007b243c4 Fix shutdown hang with >= 8 -addnodes set
We previously would block waiting for a CSemaphoreGrant in
ThreadOpenAddedConnections, when we did not need to. This would
block as the posts in CConnman shutdown were both to the wrong
semaphore and in the wrong location.
2017-03-08 14:41:57 -05:00
John Newbery 338bf065a4 Add commenting around JSON error codes
RPC_INVALID_REQUEST and RPC_METHOD_NOT_FOUND are mapped internally to
HTTP error codes and should not be used for application-layer errors.
This commit adds commenting around those definitions to warn not to use
them for application errors.
2017-03-08 14:22:55 -05:00
Karl-Johan Alm a57845c20e
Refactor: Remove using namespace <xxx> from util* 2017-03-08 08:47:02 -08:00
Karl-Johan Alm 8a5228197c
Refactor: Remove using namespace <xxx> from wallet/ 2017-03-08 08:46:59 -08:00
Karl-Johan Alm 8cbfc4e472
Refactor: Remove using namespace <xxx> from script/ 2017-03-08 08:08:17 -08:00
Karl-Johan Alm f3c264e9a6
Refactor: Remove using namespace <xxx> from rpc/ 2017-03-08 08:07:55 -08:00
practicalswift 218d915445 [bench] Avoid function call arguments which are pointers to uninitialized values 2017-03-08 16:40:12 +01:00
MarcoFalke 8bfa13b15b
Merge #9936: [trivial] Fix three typos introduced into walletdb.h in commit 7184e25
fdab309 [trivial] Fix typos introduced in 7184e25c80 (practicalswift)

Tree-SHA512: 091666f996267fc5d9f911e6ff25051df5c198851a9c2a6cae73692ffacc64f4275932260487aa48a224ca7f80c58f79933065c72d42aeccae540293c67bcee9
2017-03-08 14:15:47 +01:00
kobake 8e0720bdb9 Fix msvc compiler error C4146 (unary minus operator applied to unsigned type)
On msvc14, int literal '-2147483648' is invalid, because '2147483648' is unsigned type and cant't apply minus operator to unsigned type.
To define the int literal correctly, use '-2147483647 - 1' formula that is also used to define INT_MIN in limits.h.
2017-03-08 15:43:40 +09:00
John Newbery 6c1fb73dd1 Improve logging in bctest.py if there is a formatting mismatch 2017-03-07 18:07:08 -05:00
John Newbery dab804c18a Return correct error codes in fundrawtransaction().
The fundrawtransaction() RPC was returning misleading or incorrect error
codes (for example RPC_INTERNAL_ERROR when funding the transaction
failed). This commit fixes those error codes:

- RPC_INTERNAL_ERROR should not be returned for application-level
errors, only for genuine internal errors such as corrupted data.

That error code has been replaced with RPC_WALLET_ERROR.

This commit also updates the test cases to explicitly test the error code.
2017-03-07 16:45:09 -05:00
John Newbery a012087667 Return correct error codes in setban().
The setban() RPC was returning misleading or incorrect error
codes (for example RPC_CLIENT_NODE_ALREADY_ADDED when an invalid IP
address was entered). This commit fixes those error codes:

- RPC_CLIENT_INVALID_IP_OR_SUBNET should be returned if the client
  enters an invalid IP address or subnet.

This commit also updates the test cases to explicitly test the error code.

This commit also adds a testcase for trying to setban on an invalid subnet.
2017-03-07 16:45:09 -05:00
John Newbery 960bc7f778 Return correct error codes in removeprunedfunds().
The removeprunedfunds() RPC was returning misleading or incorrect error
codes (for example RPC_INTERNAL_ERROR when the transaction was
not found in the wallet). This commit fixes those error codes:

- RPC_INTERNAL_ERROR should not be returned for application-level
errors, only for genuine internal errors such as corrupted data.

This error code has been replaced with RPC_WALLET_ERROR.

This commit also updates the test cases to explicitly test the error code.
2017-03-07 16:45:09 -05:00
John Newbery c1190963b3 Return correct error codes in blockchain.cpp.
RPCs in blockchain.cpp were returning misleading or incorrect error
codes (for example getblock() returning RPC_INTERNAL_ERROR when the
block had been pruned). This commit fixes those error codes:

- RPC_INTERNAL_ERROR should not be returned for application-level
  errors, only for genuine internal errors such as corrupted data.
- RPC_METHOD_NOT_FOUND should not be returned in response to a
  JSON request for an existing method.

Those error codes have been replaced with RPC_MISC_ERROR or
RPC_INVALID_PARAMETER as appropriate.
2017-03-07 16:45:09 -05:00
John Newbery 6d07c62322 Return correct error codes in bumpfee().
The bumpfee() RPC was returning misleading or incorrect error codes
(for example RPC_INVALID_ADDRESS_OR_KEY when the transaction was not
BIP125 replacable). This commit fixes those error codes:

- RPC_INVALID_ADDRESS_OR_KEY if an invalid address was provided:
    - Invalid change address given
- RPC_INVALID_PARAMETER if a single (non-address/key) parameter is incorrect
    - confTarget and totalFee options should not both be set.
    - Invalid confTarget
    - Insufficient totalFee (cannot be less than required fee)
- RPC_WALLET_ERROR for any other error
    - Transaction has descendants in the wallet
    - Transaction has descendants in the mempool
    - Transaction has been mined, or is conflicted with a mined transaction
    - Transaction is not BIP 125 replaceable
    - Transaction has already been bumped
    - Transaction contains inputs that don't belong to the wallet
    - Transaction has multiple change outputs
    - Transaction does not have a change output
    - Fee is higher than maxTxFee
    - New fee rate is less than the minimum fee rate
    - Change output is too small.

This commit also updates the test cases to explicitly test the error code.
2017-03-07 16:45:09 -05:00
Wladimir J. van der Laan 47510ad3dd
Merge #9548: Remove min reasonable fee
ad82cb0 Remove unnecessary min fee argument in CTxMemPool constructor (Alex Morcos)
2a7b56c CBlockPolicyEstimator now uses hard coded minimum bucket feerate (Alex Morcos)
ac9d3d2 Change fee estimation bucket limit variable names (Alex Morcos)

Tree-SHA512: 6e3bc7df3497ed60c7620845d222063e33a0238020f5c3316e61e0eff758078588ea8dd51196ceb59aa561ba106f8cdae62cebe521adb3247108bb49f15252d6
2017-03-07 19:49:00 +01:00
Wladimir J. van der Laan 30ff3a2fc9
Merge #9602: Remove coin age priority and free transactions - implementation
b421e6d Update example bitcoin.conf (Alex Morcos)
7d4e950 Allow setting minrelaytxfee to 0 (Alex Morcos)
359e8a0 [cleanup] Remove coin age priority completely. (Alex Morcos)
f9b9371 [rpc] Remove priorityDelta from prioritisetransaction (Alex Morcos)
49be7e1 [rpc] Remove priority information from mempool RPC calls (Alex Morcos)
0315888 [test] Remove priority from tests (Alex Morcos)
f838005 No longer allow "free" transactions (Alex Morcos)
ad727f4 [rpc] sendrawtransaction no longer bypasses minRelayTxFee (Alex Morcos)
fe282ac [cleanup] Remove estimatePriority and estimateSmartPriority (Alex Morcos)
400b151 [debug] Change -printpriority option (Alex Morcos)
272b25a [mining] Remove -blockprioritysize. (Alex Morcos)
12839cd [rpc] Remove estimatepriority and estimatesmartpriority. (Alex Morcos)
ddf58c7 wallet: Remove sendfree (MarcoFalke)

Tree-SHA512: a9a4499405923ce794ef18f9e334dbbd59dfc73a3dc2df6f85cc9c62af6f353ec2eed9c2d5e58e904f918d0d7ab738f403dd4939d9bc2276136864fe63710782
2017-03-07 19:30:23 +01:00
Wladimir J. van der Laan 3178b2c740
Merge #9369: Factor out CWallet::nTimeSmart computation into a method.
630fc54 Clean up braces in CWallet::ComputeTimeSmart (Russell Yanofsky)
6c996c2 Add documentation describing CWallet::nTimeSmart. (Russell Yanofsky)
1f98abe Factor out CWallet::nTimeSmart computation into a method. (Russell Yanofsky)
c6b82d1 Add tests for CWalletTx::nTimeSmart (Russell Yanofsky)

Tree-SHA512: 457a30251e572cf20dac0198af1a94128d269b1e0ce6605a213d56fc14d85c84a0a494e3dcbb18c201c4f39e6f7b000bd9cb6f283930d8452e4bb93ba406f8d4
2017-03-07 17:11:59 +01:00
Wladimir J. van der Laan 6015df5b85
Merge #9912: Optimize GetWitnessHash() for non-segwit transactions
02c57b5 Optimize GetWitnessHash() for non-segwit transactions (Suhas Daftuar)

Tree-SHA512: 405d07c11930f3432ae25b11232466a30ba2339be98e0fb5149934d792e014f504fedbe62b9c8e5febbbdad459bd1573ea896e527b9aa591926bbc774b895e6a
2017-03-07 11:03:32 +01:00
Wladimir J. van der Laan 779f2f9747
Merge #9605: Use CScheduler for wallet flushing, remove ThreadFlushWalletDB
0235be1 Rename FlushWalletDB -> CompactWalletDB, add function description (Matt Corallo)
735d9b5 Use CScheduler for wallet flushing, remove ThreadFlushWalletDB (Matt Corallo)
73296f5 CScheduler boost->std::function, use millisecs for times, not secs (Matt Corallo)

Tree-SHA512: c04f97beab65706c444c126be229d02887df9b0972d8fb15ca1f779ef0e628cf7ecef2bf533c650d9b44645b63e01de22f17266a05907e778938d64cc6e19de6
2017-03-07 11:00:55 +01:00
practicalswift fdab309670 [trivial] Fix typos introduced in 7184e25c80 2017-03-07 09:16:46 +01:00
MarcoFalke 19be26afe3
Merge #9555: [test] Avoid reading a potentially uninitialized variable in tx_invalid-test (transaction_tests.cpp)
8455e36 [test] Avoid reading a potentially uninitialized variable in tx_invalid-test (practicalswift)

Tree-SHA512: 1064cdd5c9e4612a05397a5880535d93dbb18dec4897b4bbda9e6ad78d30f4c72303e4d23159398f1b33545ff5819e739e374d7cde757e402b26c355268a2319
2017-03-07 01:22:12 +01:00
Matt Corallo 0235be1e7a Rename FlushWalletDB -> CompactWalletDB, add function description 2017-03-06 18:35:20 -05:00
Matt Corallo 735d9b5362 Use CScheduler for wallet flushing, remove ThreadFlushWalletDB 2017-03-06 18:35:19 -05:00
Matt Corallo 73296f54d6 CScheduler boost->std::function, use millisecs for times, not secs 2017-03-06 18:33:50 -05:00
kobake 292112f87e Fix msvc compiler error C4146 (minus operator applied to unsigned type)
On msvc14, the compiler error C4146 (unary minus operator applied to unsigned type, result still unsigned) had been occured.
Use '0 - x' styled formula instead of '-x' so as to fix the error.
2017-03-07 02:42:44 +09:00
Wladimir J. van der Laan 72fb5158b1
Merge #9906: Disallow copy constructor CReserveKeys
188f89c Disallow copy of CReserveKeys (Gregory Sanders)

Tree-SHA512: e55ce10bf7f2dc91de9797e60ab7767fb51f25255995d62ddf358c52b7aaa23c26fbfb522e1610ff950b86804ddbc38dc0d7708bfab2c4d33ad99a275d8c77db
2017-03-06 18:33:24 +01:00
Gregory Sanders 188f89c3bb Disallow copy of CReserveKeys 2017-03-06 09:26:10 -05:00
Jonas Schnelli 7184e25c80
[Wallet] refactor CWallet/CWalletDB/CDB
Try to hide CDB/bitdb behinde CWalletDB.
Prepare for full wallet database abstraction.
2017-03-06 11:30:24 +01:00
Wladimir J. van der Laan fa625b078b
Merge #9333: Document CWalletTx::mapValue entries and remove erase of nonexistent "version" entry.
87ed396 [trivial] Add comment documenting bumpfee mapValues (Russell Yanofsky)
a1fe944 Remove reference to nonexistent "version" wallet transaction mapvalue field (Russell Yanofsky)
654e044 [trivial] Add comment documenting CWalletTx::mapValue (Russell Yanofsky)

Tree-SHA512: 1fd1860e345c59b13634db2007fff4ba30aaf1f177fdd765f47bf9257fac117cdcd5d491424416da304c08e85effbb27f3424f072f7c9587ef39cb98531b932a
2017-03-06 10:18:19 +01:00
Wladimir J. van der Laan d32581cc29
Merge #9547: bench: Assert that division by zero is unreachable
db07f91 Assert that what might look like a possible division by zero is actually unreachable (practicalswift)

Tree-SHA512: f1652eb37196a5b72f356503a1fbb44fb98aa8a94954ad1765f86d81ebf41a2337d4eb58c4f19937fda3752f5d2d642756e44afdbd438015b87ac20801246bff
2017-03-06 10:08:14 +01:00
Wladimir J. van der Laan 5a6af31722
Merge #9908: Define 7200 second timestamp window constant
e57a1fd Define 7200 second timestamp window constant (Russell Yanofsky)

Tree-SHA512: 449d20e4fd23905cd96be36f717c55a0a2360aba1002aaf55a3699cce4a41f6e94acc2fbe511a93c5cbe8f8e68386995a76cad67620ebb66ba9283e6080ab567
2017-03-06 10:02:05 +01:00
Wladimir J. van der Laan 56ab672b59
Merge #9576: [wallet] Remove redundant initialization
343ba8f [wallet] Remove redundant initialization (practicalswift)

Tree-SHA512: 54b94d7703b1735cb1ae0bd7eba61ca9d2f18e20b70e46c94aa3b0653495dce4fdea00cf953ec08215b96b5792eabb8b38c3f9b3cd36e52b82fcb2f1fd8a3540
2017-03-06 09:40:06 +01:00
Wladimir J. van der Laan a4d1c9f041 compat: use unsigned int instead of u_int
`u_int` is not available on some platforms (not sure what standard it's
supposed to be part of), we don't use it anywhere else, and it doesn't
hurt to simply write `unsigned int` out here.
2017-03-05 09:51:21 +00:00
Wladimir J. van der Laan 25da1ee36c build: cleanup: define MSG_DONTWAIT/MSG_NO_SIGNAL locally
Define MSG_DONTWAIT and MSG_NO_SIGNAL in the implementation files that
use them (`net.cpp` and `netbase.cpp`), instead of compat.h which is
included all over the place.

This avoids putting them in the global namespace, as defining them as 0
is a hack that works for our specific usage, but it is not a general
solution.

Also makes sure they are defined only once so the `!defined(MSG_x)` guard can go.
2017-03-05 09:47:29 +00:00
Wladimir J. van der Laan c459d509b7 build: Probe MSG_DONTWAIT in the same way as MSG_NOSIGNAL
Instead of the WIN32-specific workaround, detect lack of `MSG_DONTWAIT`
in the build system. This allows other platforms without `MSG_DONTWAIT`
to work too.
2017-03-05 09:29:37 +00:00
Alex Morcos 7d4e9509ad Allow setting minrelaytxfee to 0
Setting minrelaytxfee to 0 will allow all transactions regardless of fee to enter your mempool until it reaches its size limit.  However now that mempool limiting is governed by a separate incrementalrelay fee, it is an unnecessary restriction to prevent a minrelaytxfee of 0.
2017-03-03 16:50:20 -05:00
Alex Morcos 359e8a03d1 [cleanup] Remove coin age priority completely.
Remove GetPriority and ComputePriority.  Remove internal machinery for tracking priority in CTxMemPoolEntry.
2017-03-03 16:50:20 -05:00
Alex Morcos f9b9371c60 [rpc] Remove priorityDelta from prioritisetransaction
This a breaking API change to the prioritisetransaction RPC call which previously required exactly three arguments and now requires exactly two (hash and feeDelta).  The function prioritiseTransaction is also updated.
2017-03-03 16:50:19 -05:00
Alex Morcos 49be7e1bef [rpc] Remove priority information from mempool RPC calls
"startingpriority" and "currentpriority" are no longer returned in the JSON information about a mempool entry.  This affects getmempoolancestors, getmempooldescendants, getmempooolentry, and getrawmempool.
2017-03-03 16:50:19 -05:00
Alex Morcos 0315888d0d [test] Remove priority from tests
Remove all coin age priority functionality from unit tests and RPC tests.
2017-03-03 16:50:19 -05:00
Alex Morcos f838005444 No longer allow "free" transactions
Remove -limitfreerelay and always enforce minRelayTxFee in the mempool (except from disconnected blocks)

Remove -relaypriority, the option was only used for the ability to allow free transactions to be relayed regardless of their priority.  Both notions no longer apply.
2017-03-03 16:50:19 -05:00
Russell Yanofsky e57a1fd899 Define 7200 second timestamp window constant 2017-03-03 13:51:41 -05:00
Suhas Daftuar 02c57b521a Optimize GetWitnessHash() for non-segwit transactions 2017-03-03 13:33:42 -05:00
Russell Yanofsky 7759aa23d1 Save watch only key timestamps when reimporting keys
Previously if an existing watch only key was reimported with a new timestamp,
the new timestamp would not be saved in the key metadata, and would not be used
to update the wallet nTimeFirstKey value (which could cause rescanning to start
at the wrong point and miss transactions).

Issue was pointed out by Jonas Schnelli <dev@jonasschnelli.ch> in
https://github.com/bitcoin/bitcoin/pull/9108#issuecomment-279715550
2017-03-03 11:22:44 -05:00
Russell Yanofsky 630fc549e2 Clean up braces in CWallet::ComputeTimeSmart 2017-03-03 11:22:44 -05:00
Wladimir J. van der Laan 53c300fb52
Merge #9910: Docs: correct and elaborate -rpcbind doc
e5b449c Docs: correct and elaborate -rpcbind doc (Ian Kelling)

Tree-SHA512: e1cdaa32f7248f304d463e3f37d7d5da23ee0e506bd453420b87f4cc9c704cc30214e41c9266294890d65f2ee270f9355f38b542e8c01452637bdbba8273c755
2017-03-03 17:22:44 +01:00
Russell Yanofsky 6c996c2df7 Add documentation describing CWallet::nTimeSmart.
Most of the text comes from the 2012 Luke Dashjr <luke-jr+git@utopios.org>
c3f95ef commit message.
2017-03-03 11:22:44 -05:00
Russell Yanofsky 1f98abe47b Factor out CWallet::nTimeSmart computation into a method.
No change in behavior, this change just pulls some code out of
CWallet::AddToWallet that was making it very long into a separate method.
2017-03-03 11:22:44 -05:00
Russell Yanofsky c6b82d1db5 Add tests for CWalletTx::nTimeSmart 2017-03-03 11:22:44 -05:00
Wladimir J. van der Laan 90cb2a218e
Merge #9774: Enable host lookups for -proxy and -onion parameters
f36bdf0 Enable host lookups for -proxy and -onion parameters (Johnathan Corgan)

Tree-SHA512: 40f5ef3954721333e58d34653874d9f6ac5426c817762d132838f3b6f968ca5ca05aa56d02fd742cb5a8dc040f1a28dad6d54f667342eceba62fb2af18b58fc0
2017-03-03 16:22:22 +01:00
Wladimir J. van der Laan 67c5cc1917
Merge #9828: Avoid -Wshadow warnings in wallet_tests
09fe346 Avoid -Wshadow warnings in wallet_tests (Russell Yanofsky)

Tree-SHA512: 03a026787438efc9eba94299c2dd7de07a71ec7363b058b4f086d5ff0be844660fff2ef4f40e43d91313ea53de25f3de3c677b080b564d37f0693057498d3233
2017-03-03 16:08:50 +01:00
Wladimir J. van der Laan 75d012e8c7
Merge #8808: Do not shadow variables (gcc set)
ad1ae7a Check and enable -Wshadow by default. (Pavel Janík)
9de90bb Do not shadow variables (gcc set) (Pavel Janík)

Tree-SHA512: 9517feb423dc8ddd63896016b25324673bfbe0bffa97f22996f59d7a3fcbdc2ebf2e43ac02bc067546f54e293e9b2f2514be145f867321e9031f895c063d9fb8
2017-03-03 15:48:53 +01:00
Wladimir J. van der Laan ba80a684cf
Merge #9903: Docs: add details to -rpcclienttimeout doc
90a1d9a Docs: add details to -rpcclienttimeout doc (Ian Kelling)

Tree-SHA512: 7f9524f279a54b4d902674740d92624785abd54865aba82f7261151ceda50b5d51bf4d91c4fc0360168e190f8df890cc141bea5e1a9f4f2e62b8f9effda212cc
2017-03-03 14:57:02 +01:00
Wladimir J. van der Laan eb281842b7
Merge #8775: RPC refactoring: Access wallet using new GetWalletForJSONRPCRequest
d678771 Wallet: Sanitise -wallet parameter (Luke Dashjr)
9756be3 Wallet/RPC: Use filename rather than CWallet pointer, for lockwallet RPCRunLater job name (Luke Dashjr)
86be48a More tightly couple EnsureWalletIsAvailable with GetWalletForJSONRPCRequest where appropriate (Luke Dashjr)
a435632 Move wallet RPC declarations to rpcwallet.h (Luke Dashjr)
ad15734 RPC: Pass on JSONRPCRequest metadata (URI/user/etc) for "help" method (Luke Dashjr)
bf8a04a Reformat touched lines with C++11 (Luke Dashjr)
2e518e3 Move nWalletUnlockTime to CWallet::nRelockTime, and name timed task unique per CWallet (Luke Dashjr)
d77ad6d RPC: Do all wallet access through new GetWalletForJSONRPCRequest (Luke Dashjr)
eca550f RPC/Wallet: Pass CWallet as pointer to helper functions (Luke Dashjr)

Tree-SHA512: bfd592da841693390e16f83b451503eb5cedb71208089aa32b3fc45e973555584a3ed7696dd239f6409324464d565dacf0f3d0e36e8e13ae6a7843848465f960
2017-03-03 13:38:42 +01:00
Ian Kelling e5b449c3e8 Docs: correct and elaborate -rpcbind doc
The default was incorrect unless -rpcallowip was also specified.
2017-03-03 04:14:10 -08:00
Russell Yanofsky cf66f04368 Add FindEarliestAtLeast test for edge cases
E.g. repeated max timestamps, extreme int64_t & unsigned int search values.
2017-03-03 06:19:09 -05:00
Wladimir J. van der Laan 58861ad91b
Merge #9904: test: Fail if InitBlockIndex fails
6485466 test: Report InitBlockIndex result (Wladimir J. van der Laan)

Tree-SHA512: 8e1408aa8d56ec1873190f886af24aa68b0555ec4996b2b8a5a39a51ded58c8fba5843c07881ed33ab6dcb00e62c2322bcf2a6fb8f1083f77e0d93e7295ab938
2017-03-03 07:16:32 +01:00
MarcoFalke f7ec7cfd38
Merge #9359: Add test for CWalletTx::GetImmatureCredit() returning stale values.
7ed143c Add test for CWalletTx::GetImmatureCredit() returning stale values. (Russell Yanofsky)

Tree-SHA512: c95088ed6dfc5a0774ddaa2fe14ac0a9ebd830922a4d77100ec3d51fdeb6df40ad97de4f2ea970ed0f4122dcc0022ee1d43ab3c7188becd7f90c1c6af0ed39b7
2017-03-02 22:30:15 +01:00
Wladimir J. van der Laan 64854666f5 test: Report InitBlockIndex result
If InitBlockIndex fails, then it will segfault later. Same for the later
ActivateBestChain. BOOST_REQUIRE the result, so that an error will be
reported and the test case aborted.
2017-03-02 14:54:47 +01:00
Ian Kelling 90a1d9a55d Docs: add details to -rpcclienttimeout doc 2017-03-02 04:42:37 -08:00
Wladimir J. van der Laan 65d90f585a
Merge #9143: Refactor ZapWalletTxes to avoid layer violations
0165a56 Refactor ZapWalletTxes to avoid layer vialotions (Jonas Schnelli)

Tree-SHA512: 51e3abbb866185817d14d685a65cb1070a7a60aa3db692670f3a5fdd328aad59afa765c5a6b13d9e8f6d219e735487f8c87998f2fb38fdd911c1fe19bea373b9
2017-03-02 11:32:34 +01:00
Wladimir J. van der Laan 0496e15aef
Merge #9894: remove 'label' filter for rpc command help
6665977 remove 'label' filter for rpc command help (Gregory Sanders)

Tree-SHA512: 0676c55b2893a469cd6785963affbb04126b9a32c130f1bb22dfd233ede6998f695187264e897ced4e0dac48451d9ae0311ebb4f7442096cad632fd22f75080e
2017-03-02 10:07:31 +01:00
Jonas Schnelli b00ba6251f
Merge #9834: qt: clean up initialize/shutdown signals
5b528d7 qt: clean up initialize/shutdown signals (Marko Bencun)

Tree-SHA512: 4a8326ba05a1cc037203a7abe01d4e77b6ff83e62ec14f09834ada4b35a23ffb1f28b5587aa2e02601f0f6c7d62c5647a7f10320239b4bac132791be29930ddb
2017-03-02 09:37:40 +01:00
Gregory Sanders 666597798c remove 'label' filter for rpc command help 2017-03-01 09:15:39 -08:00
Wladimir J. van der Laan d19d45a1e6
Merge #9821: util: Specific GetOSRandom for Linux/FreeBSD/OpenBSD
7e6dcd9 random: Add fallback if getrandom syscall not available (Wladimir J. van der Laan)
7cad849 sanity: Move OS random to sanity check function (Wladimir J. van der Laan)
aa09ccb squashme: comment that NUM_OS_RANDOM_BYTES should not be changed lightly (Wladimir J. van der Laan)
224e6eb util: Specific GetOSRandom for Linux/FreeBSD/OpenBSD (Wladimir J. van der Laan)

Tree-SHA512: 9fd408b1316c69de86674f342339b2f89192fd317c8c036b5df4320f828fa263c7966146bfc1904c51137ee4a26e4cb0f560b2cd05e18cde4d808b9b92ad15c4
2017-03-01 12:41:53 +01:00
Wladimir J. van der Laan cbdb4732f1
Merge #9868: Abstract out the command line options for block assembly
277b472 Run miner_tests with fixed options (Pieter Wuille)
48faf0b Abstract out BlockAssembler options (Pieter Wuille)

Tree-SHA512: 8e910904864c8653fb0358d820a4181d0496bdcbc3454c17a742af7505bfb59f7078c6d0faa9c753bdaf23b6d93d228a09913cc867fbddccd515483ebe7bfad0
2017-03-01 12:38:04 +01:00
Wladimir J. van der Laan 22f609f25a
Merge #9861: Trivial: Debug log ambiguity fix for peer addrs
6d37ee8 Trivial: Debug log ambiguity fix for peer addrs (keystrike)

Tree-SHA512: 9605f12bffd067427a206655c29b0b42689e9b28c313d1f6d6b0ef71351277b98b40f2e2a2ec0ac83c095a9f6f54e7a87762da400a56d2a833f8c2d14e5ac8d5
2017-03-01 11:16:59 +01:00
Russell Yanofsky 30abce7a99 Improve ScanForWalletTransactions return value
Change ScanForWalletTransactions return value so it is possible to distinguish
scans that skip reading every block (due to the nTimeFirstKey optimization)
from scans that fail while reading the chainActive.Tip() block. Return value is
now non-null in the non-failing case.

This change doesn't affect any user-visible behavior, it is only an internal
API improvement. The only code currently using the ScanForWalletTransactions
return value is in importmulti, and importmulti always calls
ScanForWalletTransactions with a pindex pointing to the first block in
chainActive whose block time is >= (nLowestTimestamp - 7200), while
ScanForWalletTransactions would only return null without reading blocks when
pindex and every block after it had a block time < (nTimeFirstKey - 7200).
These conditions could never happen at the same time because nTimeFirstKey <=
nLowestTimestamp.

I'm planning to make a more substantial API improvement in the future (making
ScanForWalletTransactions private and exposing a higher level rescan method to
RPC code), but Matt Corallo <git@bluematt.me> pointed out this odd behavior
introduced by e2e2f4c "Return errors from importmulti if complete rescans are
not successful" yesterday, so I'm following up now to get rid of badness
introduced by that merge.
2017-03-01 05:16:24 -05:00
Russell Yanofsky 7ed143c10e Add test for CWalletTx::GetImmatureCredit() returning stale values.
Add test for cached immature credit flag not being cleared in
CWalletTx::MarkDirty() bug, which was fixed in
https://github.com/bitcoin/bitcoin/pull/8717, commit a560378.
2017-03-01 05:11:46 -05:00
keystrike 6d37ee8314 Trivial: Debug log ambiguity fix for peer addrs
This line can be misinterpreted as loading wallet addresses which is confusing, especially when the wallet is disabled.
2017-02-28 22:14:24 -03:00
practicalswift 343ba8fef5 [wallet] Remove redundant initialization
Prior to this commit pindexRescan was initialized to a chainActive.Tip().
However, the value of pindexRescan set at time of initialization was never
read before pindexRescan was being set to either chainActive.Genesis()
(case 1), FindForkInGlobalIndex(chainActive, locator) (case 2) or
chainActive.Genesis() (case 3). Thus, the initialization was redundant.

This commit a.) removes the redundant initialization and b.) simplifies
this logic so that pindexRescan is initialized to chainActive.Genesis()
(case 1 and 3), and set to FindForkInGlobalIndex(chainActive, locator)
(case 2) as needed.
2017-02-28 16:54:43 +01:00
practicalswift 95543d8747 [net] Avoid possibility of NULL pointer dereference in MarkBlockAsInFlight(...)
In the case that the branch ...

    if (itInFlight != mapBlocksInFlight.end() && itInFlight->second.first == nodeid) {

... is taken, there was prior to this commit an implicit assumption that
MarkBlockAsInFlight(...) was being called with its fifth and optional
argument (pit) being present (and non-NULL).
2017-02-28 15:49:49 +01:00
practicalswift 5844609451 [net] Avoid initialization to a value that is never read
Prior to this commit the value stored to `s` at initialization
was never read (in the case of STRERROR_R_CHAR_P).
2017-02-28 14:24:16 +01:00
Wladimir J. van der Laan 7e2a2212ec
Merge #9829: Fix importmulti returning rescan errors for wrong keys
306bd72 Fix importmulti returning rescan errors for wrong keys (Russell Yanofsky)

Tree-SHA512: ae9998236cbd3ff749d6b5c716bd76c9cec386b0708583e4912e4e05bf4584545258e1d0543aa5445024d2b5decf859a64f40c6503029773366a0f9a9ddf9b88
2017-02-28 13:52:50 +01:00
Wladimir J. van der Laan b7547fa93e
Merge #9822: Remove block file location upgrade code
4b183d3 Remove block file location upgrade code (Marko Bencun)

Tree-SHA512: fac1fce95341e0df645c08c7e794195b22b54df08826aa8728f2f97aede1e42f724f8133781b97f836d4a392d044d08c846bce471a6b478582014f8be501a712
2017-02-28 12:31:33 +01:00
Wladimir J. van der Laan c322fa472e
Merge #9732: [Trivial] Remove nonsense #undef foreach
467df39 Remove nonsense #undef foreach (John Newbery)

Tree-SHA512: b8c3c6654eb8a9e5008a1923bee46f7ef9f8216c8f4f1b4662d82c26410ca8d8afe41e24e48a3e2e8b2a25c81c33795a4073dabfe357caf0aa820519d4fffc71
2017-02-28 12:29:43 +01:00
Wladimir J. van der Laan f5ef8e9dd2
Merge #9867: Replace remaining sprintf with snprintf
19cafc6 test: Replace remaining sprintf with snprintf (Wladimir J. van der Laan)
0a17714 uint256: replace sprintf with HexStr and reverse-iterator (Wladimir J. van der Laan)

Tree-SHA512: 2ba1dd4d25e1cbfff4d67b2f483448aa7c34ab5c799cddd48ba5826e5fa6df425abe35e244aaf4c52db9fccfb4d2a25a14bb4597bf9d1fce95991f270da6bb26
2017-02-28 12:02:44 +01:00
Wladimir J. van der Laan 30bdcfca2b
Merge #9865: Change bitcoin address in RPC help message
83ac719 Change bitcoin address in RPC helpaddress to an invalid address, so people don't accidentally send coins there (like I did). (Marijn Stollenga)

Tree-SHA512: ca1163466a149d567b97efbfcfa8fdfe2d474245b4dd5a1a92555b4e87f8e99df5fee4cd79ef1ce6a98db2337846af78f37c2e6b31d02008b11fa0e151ce6590
2017-02-28 11:59:34 +01:00
Wladimir J. van der Laan 65fdc37ac3
Merge #9856: Terminate immediately when allocation fails
d4ee7ba prevector: assert successful allocation (Cory Fields)
c5f008a don't throw std::bad_alloc when out of memory. Instead, terminate immediately (Cory Fields)

Tree-SHA512: 699ce8df5b1775a99c71d3cfc952b45da1c0091e1a4b6adfac52d5be6144c3d98f88ac3af90e5c73fff2f74666a499feb4a34434683ce5979814e869c0aeddc3
2017-02-28 11:37:36 +01:00
MarcoFalke 88c2ae3ed2
Merge #9350: [Trivial] Adding label for amount inside of tx_valid/tx_invalid.json
988ce2d Adding 'amount' label to tx_valid/tx_invalid.json files (Chris Stewart)

Tree-SHA512: 11c216c6565ecaa5ff4eb6122f87d3b28f89db52d1e473c0678f61c240e133698adb05e717bfb9d3db36409dfb230b902dca4029a58633be36c9f85e0db3d973
2017-02-27 22:33:55 +01:00
Luke Dashjr d678771c66 Wallet: Sanitise -wallet parameter 2017-02-27 20:45:18 +00:00
Luke Dashjr 9756be382e Wallet/RPC: Use filename rather than CWallet pointer, for lockwallet RPCRunLater job name
The job name is logged, and could pose as an information leak to someone attacking the process, helping them counteract ASLR protections
2017-02-27 20:45:18 +00:00
Luke Dashjr 86be48a77c More tightly couple EnsureWalletIsAvailable with GetWalletForJSONRPCRequest where appropriate 2017-02-27 20:45:18 +00:00
Luke Dashjr a4356328e0 Move wallet RPC declarations to rpcwallet.h 2017-02-27 20:45:18 +00:00
Luke Dashjr ad1573472e RPC: Pass on JSONRPCRequest metadata (URI/user/etc) for "help" method 2017-02-27 20:45:18 +00:00
Luke Dashjr bf8a04a165 Reformat touched lines with C++11 2017-02-27 20:45:18 +00:00
Luke Dashjr 2e518e313b Move nWalletUnlockTime to CWallet::nRelockTime, and name timed task unique per CWallet 2017-02-27 20:45:17 +00:00
Luke Dashjr d77ad6d416 RPC: Do all wallet access through new GetWalletForJSONRPCRequest 2017-02-27 20:45:17 +00:00
Luke Dashjr eca550f250 RPC/Wallet: Pass CWallet as pointer to helper functions 2017-02-27 20:45:17 +00:00
Cory Fields d4ee7baef7 prevector: assert successful allocation 2017-02-27 14:52:15 -05:00
Alex Morcos ad727f4eaf [rpc] sendrawtransaction no longer bypasses minRelayTxFee
The prioritisetransaction API can always be used if a transaction needs to be submitted that bypasses minRelayTxFee.
2017-02-27 11:23:51 -05:00
Alex Morcos fe282acd76 [cleanup] Remove estimatePriority and estimateSmartPriority
Unused everywhere now except one test.
2017-02-27 11:23:51 -05:00
Alex Morcos 400b15147c [debug] Change -printpriority option
-printpriority output is now changed to only show the fee rate and hash of transactions included in a block by the mining code.
2017-02-27 11:23:50 -05:00
Alex Morcos 272b25a6a9 [mining] Remove -blockprioritysize.
Remove ability of mining code to fill part of a block with transactions sorted by coin age.
2017-02-27 11:23:50 -05:00
Alex Morcos 12839cdd56 [rpc] Remove estimatepriority and estimatesmartpriority.
The RPC calls were already deprecated.
2017-02-27 11:23:50 -05:00
MarcoFalke ddf58c7573 wallet: Remove sendfree
This removes the option from the wallet to not pay a fee on "small"
transactions which spend "old" inputs.

This code is no longer worth keeping around, as almost all miners
prefer not to include transactions which pay no fee at all.
2017-02-27 11:23:50 -05:00
Russell Yanofsky 306bd72157 Fix importmulti returning rescan errors for wrong keys
Bug was a missing ++i line in a new range for loop added in commit e2e2f4c
"Return errors from importmulti if complete rescans are not successful"
2017-02-27 07:38:51 -05:00
Wladimir J. van der Laan 75a109338f tests: Fix dangling pwalletMain pointer in wallet tests 2017-02-27 13:15:39 +01:00
Wladimir J. van der Laan 19cafc6239 test: Replace remaining sprintf with snprintf
Use of `sprintf` is seen as a red flag as many of its uses are insecure.
OpenBSD warns about it while compiling, and some modern platforms, e.g.
[cloudlibc from cloudabi](https://github.com/NuxiNL/cloudlibc) don't
even provide it anymore.

Although our uses of these functions are secure, it can't hurt to
replace them anyway. There are only 3 occurences left, all in the
tests.
2017-02-27 10:03:20 +01:00
Wladimir J. van der Laan 0a177148e7 uint256: replace sprintf with HexStr and reverse-iterator
Instead of calling sprintf for every byte, format the hex bytes
ourselves by help of HexStr and a reverse_iterator.
2017-02-27 10:02:45 +01:00
Pieter Wuille 277b472fb2 Run miner_tests with fixed options 2017-02-26 16:13:51 -08:00
Pieter Wuille 48faf0bf63 Abstract out BlockAssembler options 2017-02-26 16:13:17 -08:00
Marijn Stollenga 83ac719d34 Change bitcoin address in RPC helpaddress to an invalid address, so people don't accidentally send coins there (like I did). 2017-02-26 14:01:05 +01:00
Wladimir J. van der Laan 6206252e50
Merge #9847: Extra test vector for BIP32
30aedcb BIP32 extra test vector (Pieter Wuille)
2017-02-25 10:43:29 +01:00
Cory Fields c5f008a416 don't throw std::bad_alloc when out of memory. Instead, terminate immediately 2017-02-25 01:09:11 -05:00
Wladimir J. van der Laan f19afdbfb4
Merge #9612: [trivial] Rephrase the definition of difficulty.
dc222f8 Trivial: Rephrase the definition of difficulty in the code. (Karl-Johan Alm)
2017-02-24 12:48:56 +01:00
Wladimir J. van der Laan dd6e0d6301
Merge #9833: Trivial: fix comments referencing AppInit2
ef9f495 Trivial: fix comments referencing AppInit2 (Marko Bencun)
2017-02-24 10:53:32 +01:00
Wladimir J. van der Laan 00285cece8
Merge #9840: Update sendfrom RPC help to correct coin selection misconception
f81f0d0 Update sendfrom RPC help to correct coin selection misconception (Russell Yanofsky)
2017-02-24 10:22:04 +01:00
Karl-Johan Alm dc222f8f63
Trivial: Rephrase the definition of difficulty in the code. 2017-02-23 22:06:37 -08:00
Pieter Wuille 30aedcbdb4 BIP32 extra test vector 2017-02-23 17:59:52 -08:00
Marko Bencun ef9f495e93 Trivial: fix comments referencing AppInit2
It was refactored into multiple functions in
0cc8b6bc44.
2017-02-24 09:19:29 +09:00
Matt Corallo b49ad44efe Add comment about cs_most_recent_block coverage 2017-02-23 15:41:53 -05:00
Matt Corallo c47f5b7982 Cache witness-enabled state with recent-compact-block-cache 2017-02-23 15:41:52 -05:00
Matt Corallo efc135ff6d Use cached [compact] blocks to respond to getdata messages 2017-02-23 15:41:52 -05:00
Russell Yanofsky f81f0d0030 Update sendfrom RPC help to correct coin selection misconception 2017-02-23 13:44:12 -05:00
Wladimir J. van der Laan e68c266f3d
Merge #9789: build: add --enable-werror and warn on vla's
205830a build: add --enable-werror option (Cory Fields)
b602fe0 build: warn about variable length arrays (Cory Fields)
2017-02-23 10:48:46 +01:00
Marko Bencun 5b528d746c qt: clean up initialize/shutdown signals
- Change initializeResult(int) to initializeResult(bool) to avoid
   implicit type conversion.
 - Use EXIT_FAILURE and EXIT_SUCCESS instead of magic numbers.
 - Remove the argument from shutdownResult(int); it was called with a
   constant argument.
2017-02-23 17:21:39 +09:00
Cory Fields 205830a37b build: add --enable-werror option
This turns some compiler warnings into errors. Useful for c-i.
2017-02-23 01:06:04 -05:00
Russell Yanofsky 09fe346a4f Avoid -Wshadow warnings in wallet_tests
Warnings introduced by commit e2e2f4c "Return errors from importmulti if
complete rescans are not successful" and reported by Pavel Janík
<Pavel@Janik.cz> in https://github.com/bitcoin/bitcoin/pull/9773 and
https://github.com/bitcoin/bitcoin/pull/9827

wallet/test/wallet_tests.cpp: In member function ‘void wallet_tests::rescan::test_method()’:
wallet/test/wallet_tests.cpp:377:17: warning: declaration of ‘wallet’ shadows a global declaration [-Wshadow]
         CWallet wallet;
2017-02-22 14:11:44 -05:00
Wladimir J. van der Laan bed5b30a56
Merge #9711: [Trivial] Remove incorrect help message from gettxoutproof()
9949ebf [Trivial] Remove incorrect help message from gettxoutproof() (John Newbery)
2017-02-22 13:03:42 +01:00
Wladimir J. van der Laan 1efc99c4dc
Merge #9819: Remove harmless read of unusued priority estimates
bc8fd12 Remove harmless read of unusued priority estimates (Alex Morcos)
2017-02-22 13:02:10 +01:00
Wladimir J. van der Laan ba7220b5e8
Merge #9773: Return errors from importmulti if complete rescans are not successful
e2e2f4c Return errors from importmulti if complete rescans are not successful (Russell Yanofsky)
2017-02-22 12:43:11 +01:00
Marko Bencun 4b183d33f3 Remove block file location upgrade code
An effort to reduce the size of AppInitMain().

The removed code upgrades the location of the block files when
upgrading to 0.8. 0.8 seems to be the oldest version still in use.
2017-02-22 20:32:47 +09:00
Wladimir J. van der Laan a8c5751038
Merge #9801: Removed redundant parameter from mempool.PrioritiseTransaction
eaea2bb Removed redundant parameter from mempool.PrioritiseTransaction (gubatron)
2017-02-22 12:18:38 +01:00
Wladimir J. van der Laan 5b583efaa7
Merge #9805: Add seed.btc.petertodd.org to mainnet DNS seeds
3b4dd2a Add seed.btc.petertodd.org to mainnet DNS seeds (Peter Todd)
2017-02-22 12:14:37 +01:00
Wladimir J. van der Laan 92dd6c8dfd
Merge #9815: Trivial: use EXIT_ codes instead of magic numbers
a87d02a use EXIT_ codes instead of magic numbers (Marko Bencun)
2017-02-22 11:48:45 +01:00
Wladimir J. van der Laan 7e6dcd9995 random: Add fallback if getrandom syscall not available
If the code was compiled with newer (>=3.17) kernel headers but executed
on a system without the system call, every use of random would crash the
program. Add a fallback for that case.
2017-02-22 08:51:26 +01:00
Wladimir J. van der Laan 7cad849299 sanity: Move OS random to sanity check function
Move the OS random test to a sanity check function that is called every
time bitcoind is initialized.

Keep `src/test/random_tests.cpp` for the case that later random tests
are added, and keep a rudimentary test that just calls the sanity check.
2017-02-22 08:02:50 +01:00
Wladimir J. van der Laan aa09ccbb74 squashme: comment that NUM_OS_RANDOM_BYTES should not be changed lightly 2017-02-22 07:38:42 +01:00
gubatron eaea2bbb41 Removed redundant parameter from mempool.PrioritiseTransaction
(Also made the `const uint256 hash` parameter a `const uint256& hash` as suggested by @sdaftuar)
2017-02-21 20:44:23 -07:00
Wladimir J. van der Laan 224e6eb089 util: Specific GetOSRandom for Linux/FreeBSD/OpenBSD
These are available in sandboxes without access to files or
devices. Also [they are safer and more straightforward](https://en.wikipedia.org/wiki/Entropy-supplying_system_calls)
to use than `/dev/urandom` as reading from a file has quite a few edge
cases:

- Linux: `getrandom(buf, buflen, 0)`. [getrandom(2)](http://man7.org/linux/man-pages/man2/getrandom.2.html)
  was introduced in version 3.17 of the Linux kernel.
- OpenBSD: `getentropy(buf, buflen)`. The [getentropy(2)](http://man.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man2/getentropy.2)
  function appeared in OpenBSD 5.6.
- FreeBSD and NetBSD: `sysctl(KERN_ARND)`. Not sure when this was added
  but it has existed for quite a while.

Alternatives:

- Linux has sysctl `CTL_KERN` / `KERN_RANDOM` / `RANDOM_UUID`
  which gives 16 bytes of randomness. This may be available
  on older kernels, however [sysctl is deprecated on Linux](https://lwn.net/Articles/605392/)
  and even removed in some distros so we shouldn't use it.

Add tests for `GetOSRand()`:

- Test that no error happens (otherwise `RandFailure()` which aborts)
- Test that all 32 bytes are overwritten (initialize with zeros, try multiple times)

Discussion:

- When to use these? Currently they are always used when available.
  Another option would be to use them only when `/dev/urandom` is not
  available. But this would mean these code paths receive less testing,
  and I'm not sure there is any reason to prefer `/dev/urandom`.

Closes: #9676
2017-02-21 20:57:34 +01:00
ロハン ダル d60d54ddb3 merge with bitcoin core 2017-02-21 11:31:13 -08:00
Alex Morcos bc8fd12289 Remove harmless read of unusued priority estimates 2017-02-21 11:12:44 -05:00
Wladimir J. van der Laan 5f0556d032
Merge #9727: Remove fallbacks for boost_filesystem < v3
056aba2 Remove fallbacks for boost_filesystem < v3 (Wladimir J. van der Laan)
2017-02-21 17:08:37 +01:00
Jonas Schnelli 312c4f1057
Fix segfault crash when shutdown the GUI in disablewallet mode 2017-02-21 14:37:20 +01:00
Wladimir J. van der Laan 8ad31f9aa3
Merge #9798: Fix Issue #9775 (Check returned value of fopen)
40f11f8 Fix for issue #9775. Added check for open() returning a NULL pointer. (kirit93)
2017-02-21 14:32:58 +01:00
Marko Bencun a87d02adad use EXIT_ codes instead of magic numbers
To be consistent with other exit() calls.
2017-02-21 17:17:24 +09:00
kirit93 40f11f8872 Fix for issue #9775. Added check for open() returning a NULL pointer. 2017-02-20 23:53:18 +05:30
Pavel Janík 171fc91f06 Read/write mempool.dat as a binary.
mempool.dat is a binary file and thus it should be read/written as such.

Fixes #9810.
2017-02-20 18:14:06 +01:00
Wladimir J. van der Laan 7639d38f14
Merge #9726: netbase: Do not print an error on connection timeouts through proxy
3ddfe29 netbase: Do not print an error on connection timeouts through proxy (Wladimir J. van der Laan)
13f6085 netbase: Make InterruptibleRecv return an error code instead of bool (Wladimir J. van der Laan)
2017-02-20 17:49:51 +01:00
Wladimir J. van der Laan aa791e2911
Merge #9619: Bugfix: RPC/Mining: GBT should return 1 MB sizelimit before segwit activates
279f944 QA: Test GBT size/weight limit values (Luke Dashjr)
9fc7f0b Bugfix: RPC/Mining: GBT should return 1 MB sizelimit before segwit activates (Luke Dashjr)
2017-02-20 17:32:02 +01:00
Wladimir J. van der Laan 2dad02232a
Merge #9760: [wallet] Remove importmulti always-true check
ec1267f [wallet] Remove importmulti always-true check (Russell Yanofsky)
2017-02-20 17:30:07 +01:00
Wladimir J. van der Laan 1a9fd5cb9d
Merge #9724: Qt/Intro: Add explanation of IBD process
f6d18f5 Qt/Intro: Explain a bit more what will happen first time (Luke Dashjr)
50c5657 Qt/Intro: Storage shouldn't grow significantly with pruning enabled (Luke Dashjr)
9adb694 Qt/Intro: Move sizeWarningLabel text into C++ code (Luke Dashjr)
2017-02-20 17:26:15 +01:00
Johnathan Corgan f36bdf02ce Enable host lookups for -proxy and -onion parameters
* Extends -dns parameter (via fNameLookup) to control these two new
  parameters in addition to -addnode, -connect, and -seednode

* Moves fNameLookup assignment earlier as needed

* Changes -proxy and -onion to use Lookup() instead of LookupNumeric()
2017-02-20 00:06:27 -06:00
Peter Todd 3b4dd2a676
Add seed.btc.petertodd.org to mainnet DNS seeds 2017-02-19 16:11:54 -05:00
Wladimir J. van der Laan 1f9e904f45
Merge #9791: Avoid VLA in hash.h
5c8fd50 Avoid VLA in hash.h (Pieter Wuille)
2017-02-19 13:28:30 +01:00
NicolasDorier 4d51e9be16 Assert ConnectBlock block and pIndex are the same block 2017-02-19 14:02:45 +09:00
MarcoFalke aa5fa642b0
Merge #9696: [trivial] Fix recently introduced typos in comments
0c9b9b7 [trivial] Fix recently introduced typos in comments (practicalswift)
2017-02-18 12:13:09 +01:00
Pieter Wuille 5c8fd50811 Avoid VLA in hash.h 2017-02-17 15:28:28 -08:00
Wladimir J. van der Laan 12f46fa7d8
Merge #9786: boost: remove iostreams includes
3301587 boost: remove iostreams includes (Cory Fields)
2017-02-17 21:48:37 +01:00
Cory Fields 3301587dc5 boost: remove iostreams includes
They're unused and produce nasty deprecation warnings
2017-02-17 15:06:09 -05:00
Pieter Wuille c801c82e25 Move BIP70_MAX_PAYMENTREQUEST_SIZE to header 2017-02-17 11:54:32 -08:00
Pieter Wuille 914fad155d Make KEY_SIZE a compile-time constant 2017-02-17 11:42:22 -08:00
Russell Yanofsky e2e2f4c856 Return errors from importmulti if complete rescans are not successful 2017-02-17 14:12:31 -05:00
Wladimir J. van der Laan f87e8f5392
build: bump version to 0.14.99
Now that 0.14 branch has been split off, master is 0.14.99 (pre-0.15).

Also clean out release notes.
2017-02-17 17:27:18 +01:00
Russell Yanofsky ec1267f13b [wallet] Remove importmulti always-true check
Remove "nLowestTimestamp <= chainActive.Tip()->GetBlockTimeMax()" check from
importmulti, which is always true because nLowestTimestamp is set to the
minimum of the most recent block time and all the imported key timestamps,
which is necessarily lower than the maximum block time.
2017-02-17 07:00:41 -05:00
Wladimir J. van der Laan 9828f9a996
Merge #9761: Use 2 hour grace period for key timestamps in importmulti rescans
e662af3 Use 2 hour grace period for key timestamps in importmulti rescans (Russell Yanofsky)
38d3e9e [qa] Extend import-rescan.py to test imports on pruned nodes. (Russell Yanofsky)
c28583d [qa] Extend import-rescan.py to test specific key timestamps (Russell Yanofsky)
8be0866 [qa] Simplify import-rescan.py (Russell Yanofsky)
2017-02-17 12:53:41 +01:00
Wladimir J. van der Laan ad168ef4e3
Merge #9778: Add two hour buffer to manual pruning
91fb506 Add two hour buffer to manual pruning (Alex Morcos)
2017-02-17 12:51:08 +01:00
Wladimir J. van der Laan 3c02b95740
Merge #9779: Update nMinimumChainWork and defaultAssumeValid.
3f78e46 Update nMinimumChainWork and defaultAssumeValid. (Gregory Maxwell)
2017-02-17 12:41:49 +01:00
Luke Dashjr 7abe7bbf61
Qt/Send: Give fallback fee a reasonable indent 2017-02-17 11:00:52 +01:00
Luke Dashjr 3e4d7bfcb7
Qt/Send: Figure a decent warning colour from theme 2017-02-17 11:00:46 +01:00
Wladimir J. van der Laan 8dee822177
Merge #9777: Handle unusual maxsigcachesize gracefully
55c403b Ensure `-maxsigcachesize` is in valid range (John Newbery)
2017-02-17 09:05:48 +01:00
John Newbery 55c403b8fe Ensure -maxsigcachesize is in valid range
- If the -maxsigcachesize parameter is set to zero, setup a minimum sized
sigcache (2 elements) rather than segfaulting.
- Handle maxsigcachesize being negative
- Handle maxsigcachesize being too large
2017-02-17 09:04:37 +01:00
Alex Morcos 91fb506e0a Add two hour buffer to manual pruning 2017-02-16 17:47:56 -05:00
Gregory Maxwell 3f78e460ba Update nMinimumChainWork and defaultAssumeValid. 2017-02-16 19:31:03 +00:00
Russell Yanofsky e662af3583 Use 2 hour grace period for key timestamps in importmulti rescans
Gregory Maxwell <greg@xiph.org> pointed out the lack of grace period in
https://github.com/bitcoin/bitcoin/pull/9490#issue-199407998.

The importwallet RPC which uses key timestamps in a similar way already has a 2
hour grace period.
2017-02-16 09:05:55 -05:00
Wladimir J. van der Laan 8743320d6c
Merge #9763: [Trivial] Update comments referencing main.cpp
00e623d [Trivial] Update comments referencing main.cpp (CryptAxe)
2017-02-16 14:01:14 +01:00
CryptAxe 00e623d0b8 [Trivial] Update comments referencing main.cpp 2017-02-16 13:52:38 +01:00
Wladimir J. van der Laan e43a58514d
Merge #9771: Add missing cs_wallet lock that triggers new lock held assertion
07afcd6 Add missing cs_wallet lock that triggers new lock held assertion (Russell Yanofsky)
2017-02-16 10:30:33 +01:00
Wladimir J. van der Laan f8af89a918
Merge #9764: wallet: Prevent "overrides a member function but is not marked 'override'" warnings
6c5427d wallet: Prevent "overrides a member function but is not marked 'override'" warnings (Wladimir J. van der Laan)
2017-02-16 10:24:24 +01:00
Wladimir J. van der Laan 1e92e041dd
Merge #9765: Harden against mistakes handling invalid blocks
ba803ef Harden against mistakes handling invalid blocks (Suhas Daftuar)
2017-02-16 10:23:41 +01:00
Jeremy Rubin 96c7f2c345 Add CheckQueue Tests 2017-02-16 01:37:53 -05:00
Russell Yanofsky 07afcd6379 Add missing cs_wallet lock that triggers new lock held assertion
A new AssertLockHeld(cs_wallet) call was added in commit a58370e
"Dedup nTimeFirstKey update logic" (part of PR #9108).

The lock held assertion will fail when loading prexisting wallets files from
before the #9108 merge that have watch-only keys.
2017-02-15 17:01:30 -05:00
Wladimir J. van der Laan 7a93af8340
Merge #9756: Return error when importmulti called with invalid address.
9acf25c Return error when importmulti called with invalid address. (Russell Yanofsky)
2017-02-15 16:29:16 +01:00
Wladimir J. van der Laan 476cc47da0
Merge #9758: Selectively suppress deprecation warnings
4b6cccc Selectively suppress deprecation warnings (Jonas Schnelli)
2017-02-15 15:08:59 +01:00
Suhas Daftuar ba803efb68 Harden against mistakes handling invalid blocks
Fixes a bug in AcceptBlock() in invoking CheckBlock() with incorrect
arguments, and restores a call to CheckBlock() from ProcessNewBlock()
as belt-and-suspenders.

Updates the (overspecified) tests to match behavior.
2017-02-15 08:17:57 -05:00
Daniel Cousens 972714c956 pow: GetNextWorkRequired never called with NULL pindexLast 2017-02-15 22:11:29 +09:00
NicolasDorier cc44c8f143 ContextualCheckBlockHeader should never have pindexPrev to NULL 2017-02-15 22:11:28 +09:00
Wladimir J. van der Laan 6c5427d24c wallet: Prevent "overrides a member function but is not marked 'override'" warnings
Because it is used inconsistently at least version 5.4.0 of g++ to
complains about methods that don't use override. There is two ways to go
about this: remove override from the methods having it, or add it to the
methods missing it. I chose the second.
2017-02-15 11:31:28 +01:00
Wladimir J. van der Laan d8e8b06bd0
Merge #9108: Use importmulti timestamp when importing watch only keys (on top of #9682)
a80f98b Use importmulti timestamp when importing watch only keys (Russell Yanofsky)
a58370e Dedup nTimeFirstKey update logic (Russell Yanofsky)
2017-02-15 11:13:48 +01:00
Wladimir J. van der Laan 4c69d683f2
Merge #9553: Use z = std::max(x - y, 0) instead of z = x - y; if (z < 0) z = 0;
a47da4b Use z = std::max(x - y, 0); instead of z = x - y; if (z < 0) z = 0; (practicalswift)
2017-02-15 09:27:47 +01:00
practicalswift 0c9b9b7d64 [trivial] Fix recently introduced typos in comments 2017-02-14 20:19:40 +01:00
Jonas Schnelli a441db01b5
Merge #9755: Bugfix: Qt/Options: Restore persistent "restart required" notice
0b4f273 Bugfix: Qt/Options: Restore persistent "restart required" notice (Luke Dashjr)
2017-02-14 15:57:02 +01:00
Wladimir J. van der Laan e87ce95fbd
Merge #9720: net: fix banning and disallow sending messages before receiving verack
d943491 qa: add a test to detect leaky p2p messages (Cory Fields)
8650bbb qa: Expose on-connection to mininode listeners (Matt Corallo)
5b5e4f8 qa: mininode learns when a socket connects, not its first action (Matt Corallo)
cbfc5a6 net: require a verack before responding to anything else (Cory Fields)
8502e7a net: parse reject earlier (Cory Fields)
c45b9fb net: correctly ban before the handshake is complete (Cory Fields)
2017-02-14 14:42:29 +01:00
Wladimir J. van der Laan b08656e343
Merge #9715: Disconnect peers which we do not receive VERACKs from within 60 sec
66f861a Add a test for P2P inactivity timeouts (Matt Corallo)
b436f92 qa: Expose on-connection to mininode listeners (Matt Corallo)
8aaba7a qa: mininode learns when a socket connects, not its first action (Matt Corallo)
2cbd119 Disconnect peers which we do not receive VERACKs from within 60 sec (Matt Corallo)
2017-02-14 14:35:15 +01:00
Wladimir J. van der Laan edc9e63c57
Merge #9682: Require timestamps for importmulti keys
266a811 Use MTP for importmulti "now" timestamps (Russell Yanofsky)
3cf9917 Add test to check new importmulti "now" value (Russell Yanofsky)
442887f Require timestamps for importmulti keys (Russell Yanofsky)
2017-02-14 14:32:22 +01:00
Jonas Schnelli 4b6ccccc16
Selectively suppress deprecation warnings 2017-02-14 13:50:57 +01:00
Wladimir J. van der Laan ec66d06e6e
Merge #9735: devtools: Handle Qt formatting characters edge-case in update-translations.py
7179e7c qt: Periodic translations update (Wladimir J. van der Laan)
5e903a5 devtools: Handle Qt formatting characters edge-case in update-translations.py (Wladimir J. van der Laan)
2017-02-14 12:21:34 +01:00
Cory Fields cbfc5a6728 net: require a verack before responding to anything else
7a8c251901 made this logic hard to follow. After that change, messages would
not be sent to a peer via SendMessages() before the handshake was complete, but
messages could still be sent as a response to an incoming message.

For example, if a peer had not yet sent a verack, we wouldn't notify it about
new blocks, but we would respond to a PING with a PONG.

This change makes the behavior straightforward: until we've received a verack,
never send any message other than version/verack/reject.

The behavior until a VERACK is received has always been undefined, this change
just tightens our policy.

This also makes testing much easier, because we can now connect but not send
version/verack, and anything sent to us is an error.
2017-02-13 18:55:35 -05:00
Cory Fields 8502e7acbe net: parse reject earlier
Prior to this change, all messages were ignored until a VERSION message was
received, as well as possibly incurring a ban score.

Since REJECT messages can be sent at any time (including as a response to a bad
VERSION message), make sure to always parse them.

Moving this parsing up keeps it from being caught in the
if (pfrom->nVersion == 0) check below.
2017-02-13 18:55:35 -05:00
Cory Fields c45b9fb54c net: correctly ban before the handshake is complete
7a8c251901 made a change to avoid getting into SendMessages() until the
version handshake (VERSION + VERACK) is complete. That was done to avoid
leaking out messages to nodes who could connect, but never bothered sending
us their version/verack.

Unfortunately, the ban tally and possible disconnect are done as part of
SendMessages(). So after 7a8c251901, if a peer managed to do something
bannable before completing the handshake (say send 100 non-version messages
before their version), they wouldn't actually end up getting
disconnected/banned. That's fixed here by checking the banscore as part of
ProcessMessages() in addition to SendMessages().
2017-02-13 18:55:34 -05:00
Russell Yanofsky 9acf25cc01 Return error when importmulti called with invalid address.
Lack of error checking noticed by Alex Morcos <morcos@chaincode.com>
2017-02-13 17:54:51 -05:00
Luke Dashjr 0b4f273e9c Bugfix: Qt/Options: Restore persistent "restart required" notice 2017-02-13 22:50:16 +00:00
ロハン ダル 64aa36e203 param variables made const 2017-02-13 14:39:48 +09:00
Wladimir J. van der Laan d978c41e1e
Merge #9736: Pre-0.14.0 hardcoded seeds update
a60677e Pre-0.14.0 hardcoded seeds update (Wladimir J. van der Laan)
bfa9393 contrib/seeds: Update PATTERN_AGENT (Wladimir J. van der Laan)
4dfac2c Update seeds tooling to Python 3 (Wladimir J. van der Laan)
2017-02-11 08:46:10 +01:00
Russell Yanofsky a80f98b1c7 Use importmulti timestamp when importing watch only keys
When importing a watch-only address over importmulti with a specific timestamp,
the wallet's nTimeFirstKey is currently set to 1. After this change, the
provided timestamp will be used and stored as metadata associated with
watch-only key. This can improve wallet performance because it can avoid the
need to scan the entire blockchain for watch only addresses when timestamps are
provided.

Also adds timestamp to validateaddress return value (needed for tests).

Fixes #9034.
2017-02-10 16:11:19 -05:00
Russell Yanofsky a58370e6a2 Dedup nTimeFirstKey update logic
Also make nTimeFirstKey member variable private.

This is just a cleanup change, it doesn't change behavior in any significant
way.
2017-02-10 15:49:00 -05:00
Russell Yanofsky 266a8114cb Use MTP for importmulti "now" timestamps 2017-02-10 15:40:28 -05:00
Russell Yanofsky 3cf991756c Add test to check new importmulti "now" value
Easiest way to test this was to expose the timestamp via the validateaddress
RPC (which was already looking up and returning key metadata).
2017-02-10 15:40:28 -05:00
Russell Yanofsky 442887f27f Require timestamps for importmulti keys
Additionally, accept a "now" timestamp, to allow avoiding rescans for keys
which are known never to have been used.

Note that the behavior when "now" is specified is slightly different than the
previous behavior when no timestamp was specified at all. Previously, when no
timestamp was specified, it would avoid rescanning during the importmulti call,
but set the key's nCreateTime value to 1, which would not prevent future block
reads in later ScanForWalletTransactions calls. With this change, passing a
"now" timestamp will set the key's nCreateTime to the current block time
instead of 1.

Fixes #9491
2017-02-10 15:40:28 -05:00
Matt Corallo db2dc7a58c Move CNode::addrLocal access behind locked accessors 2017-02-10 11:32:41 -05:00
Matt Corallo 036073bf87 Move CNode::addrName accesses behind locked accessors 2017-02-10 11:32:41 -05:00
Matt Corallo d8f2b8a8c0 Make nTimeBestReceived atomic 2017-02-10 11:32:41 -05:00
Matt Corallo 22b4966a29 Move [clean|str]SubVer writes/copyStats into a lock 2017-02-10 11:32:41 -05:00
Matt Corallo 0f31872615 Make nServices atomic 2017-02-10 11:32:41 -05:00
Matt Corallo 96f42d8a12 Make nStartingHeight atomic 2017-02-10 11:32:40 -05:00
Matt Corallo 512731bed0 Access fRelayTxes with cs_filter lock in copyStats 2017-02-10 11:32:40 -05:00
Matt Corallo ae683c1b19 Avoid copying CNodeStats to make helgrind OK with buggy std::string 2017-02-10 11:32:40 -05:00
Matt Corallo 644f1234e2 Make nTimeConnected const in CNode 2017-02-10 11:32:40 -05:00
Cory Fields 321d0fc6b6 net: fix a few races. Credit @TheBlueMatt
These are (afaik) all long-standing races or concurrent accesses. Going
forward, we can clean these up so that they're not all individual atomic
accesses.

- Reintroduce cs_vRecv to guard receive-specific vars
- Lock vRecv/vSend for CNodeStats
- Make some vars atomic.
- Only set the connection time in CNode's constructor so that it doesn't change
2017-02-10 11:32:39 -05:00
Wladimir J. van der Laan 2447c1024e
Merge #9698: net: fix socket close race
9a0b784 net: add a lock around hSocket (Cory Fields)
45e2e08 net: rearrange so that socket accesses can be grouped together (Cory Fields)
2017-02-10 12:42:53 +01:00
Wladimir J. van der Laan 056aba2b4f Remove fallbacks for boost_filesystem < v3
Minimum boost version was bumped to 1.47.0 in #8920, which
means the configure step won't even pass with older boost.

This version has boost filesystem v3, which means the
(crappy) fallbacks for older versions can go.
2017-02-10 12:32:52 +01:00
Wladimir J. van der Laan a60677e394 Pre-0.14.0 hardcoded seeds update 2017-02-10 11:04:34 +01:00
Wladimir J. van der Laan 7179e7ca0d qt: Periodic translations update 2017-02-10 08:56:36 +00:00
John Newbery 467df390f0 Remove nonsense #undef foreach
This commit removes a preprocessor #undef for a macro that was never
defined. Should make no difference to compiled code.
2017-02-09 14:00:02 -05:00
Jonas Schnelli ca9955e706
Remove bitseed.xf2.org form the dns seed list 2017-02-09 11:28:01 +01:00
Wladimir J. van der Laan 3ddfe29837 netbase: Do not print an error on connection timeouts through proxy
If a timeout happens while reading the proxy response, this effectively
means we timed out while connecting to the remote node. This is very
common for Tor, so do not print an error message.
2017-02-09 08:53:22 +01:00
Wladimir J. van der Laan 13f608582c netbase: Make InterruptibleRecv return an error code instead of bool 2017-02-09 08:51:53 +01:00
Wladimir J. van der Laan 36f9d3ae6d
Merge #9718: Qt/Intro: Various fixes
a9baa6d Bugfix: Qt/Intro: Pruned nodes never require *more* space (Luke Dashjr)
93ffba7 Bugfix: Qt/Intro: Chain state needs to be stored even with the full blockchain (Luke Dashjr)
c8cee26 Qt/Intro: Update block chain size (Luke Dashjr)
2017-02-09 07:30:10 +01:00
Luke Dashjr f6d18f5b33 Qt/Intro: Explain a bit more what will happen first time 2017-02-09 05:07:19 +00:00
Luke Dashjr 50c56570b2 Qt/Intro: Storage shouldn't grow significantly with pruning enabled 2017-02-08 19:24:43 +00:00
Luke Dashjr 9adb694b17 Qt/Intro: Move sizeWarningLabel text into C++ code 2017-02-08 19:23:31 +00:00
Luke Dashjr a9baa6d742 Bugfix: Qt/Intro: Pruned nodes never require *more* space 2017-02-08 19:16:00 +00:00
Luke Dashjr 93ffba7163 Bugfix: Qt/Intro: Chain state needs to be stored even with the full blockchain 2017-02-08 18:51:05 +00:00
Luke Dashjr c8cee26100 Qt/Intro: Update block chain size 2017-02-08 18:51:05 +00:00
Wladimir J. van der Laan dd163f5788
Merge #9674: Always enforce strict lock ordering (try or not)
618ee92 Further-enforce lockordering by enforcing directly after TRY_LOCKs (Matt Corallo)
2a962d4 Fixup style a bit by moving { to the same line as if statements (Matt Corallo)
8465631 Always enforce lock strict lock ordering (try or not) (Matt Corallo)
fd13eca Lock cs_vSend and cs_inventory in a consistent order even in TRY (Matt Corallo)
2017-02-08 14:46:43 +01:00
Matt Corallo 2cbd1196b7 Disconnect peers which we do not receive VERACKs from within 60 sec 2017-02-07 17:44:46 -05:00
Matt Corallo 618ee9249b Further-enforce lockordering by enforcing directly after TRY_LOCKs 2017-02-07 14:15:28 -05:00
Wladimir J. van der Laan 29c53289a9 bench: Fix initialization order in registration
The initialization order of global data structures in different
implementation units is undefined. Making use of this is essentially
gambling on what the linker does, the so-called [Static initialization
order fiasco](https://isocpp.org/wiki/faq/ctors#static-init-order).

In this case it apparently worked on Linux but failed on OpenBSD and
FreeBSD.

To create it on first use, make the registration structure local to
a function.

Fixes #8910.
2017-02-07 19:07:29 +01:00
John Newbery 9949ebfa6a [Trivial] Remove incorrect help message from gettxoutproof() 2017-02-07 11:21:14 -05:00
practicalswift a47da4b6fe Use z = std::max(x - y, 0); instead of z = x - y; if (z < 0) z = 0; 2017-02-07 15:46:38 +01:00
Wladimir J. van der Laan b709fe7ffc
Merge #9532: Remove unused variables
90fd29b Remove unused int64_t nSinceLastSeen (practicalswift)
ac4a095 Remove unused Python variables (practicalswift)
2017-02-07 15:28:50 +01:00
Wladimir J. van der Laan 729de15b63
Merge #9604: [Trivial] add comment about setting peer as HB peer.
dd5b011 [Trivial] add comment about setting peer as HB peer. (John Newbery)
2017-02-07 13:03:57 +01:00
Cory Fields 9a0b784dea net: add a lock around hSocket 2017-02-06 14:48:50 -05:00
Cory Fields 45e2e08561 net: rearrange so that socket accesses can be grouped together 2017-02-06 14:48:50 -05:00
Wladimir J. van der Laan 02464da5e4
Merge #9227: Make nWalletDBUpdated atomic to avoid a potential race.
d63ff62 Make nWalletDBUpdated atomic to avoid a potential race. (Patrick Strateman)
2017-02-06 16:14:17 +01:00
Wladimir J. van der Laan 870cd2b58a
Merge #9378: [trivial] Add documentation for CWalletTx::fFromMe member.
39c77b0 Add documentation for CWalletTx::fFromMe member. (Russell Yanofsky)
2017-02-06 14:58:02 +01:00
Wladimir J. van der Laan 40f7e27d25
Merge #9650: Better handle invalid parameters to signrawtransaction
6dbfe08 [qa] test signrawtransaction merge with missing inputs (Matt Corallo)
ec4f7e4 [qa] Add second input to signrawtransaction test case (Matt Corallo)
691710a [qa] Test that decoderawtransaction throws with extra data appended (Matt Corallo)
922bea9 Better handle invalid parameters to signrawtransaction (Matt Corallo)
7ea0ad5 Fail in DecodeHexTx if there is extra data at the end (Matt Corallo)
2017-02-06 14:51:00 +01:00
Wladimir J. van der Laan 09e0c28f85
Merge #9659: Net: Turn some methods and params/variables const
0729102 Net: pass interruptMsgProc as const where possible (Jorge Timón)
fc7f2ff Net: Make CNetMsgMaker more const (Jorge Timón)
d45955f Net: CConnman: Make some methods const (Jorge Timón)
2017-02-06 14:34:53 +01:00
Wladimir J. van der Laan 986ba005ed
Merge #9651: Fix typos
5f62e3e Fix typos (practicalswift)
2017-02-06 14:20:05 +01:00
Wladimir J. van der Laan 8d6447ecf7
Merge #9673: Set correct metadata on bumpfee wallet transactions
4ec057d [wallet] Set correct metadata on bumpfee wallet transactions (Russell Yanofsky)
2017-02-06 12:48:55 +01:00
Wladimir J. van der Laan fc67cd22f8
Merge #9691: Init ECC context for test_bitcoin_fuzzy.
ac719c9 Init ECC context for test_bitcoin_fuzzy. (Gregory Maxwell)
2017-02-06 09:22:14 +01:00
Gregory Maxwell 45f09618f2 Prevent integer overflow in ReadVarInt.
We don't normally use ReadVarInt from untrusted inputs, but we might
 see this in the case of corruption.

This is exposed in test_bitcoin_fuzzy.
2017-02-06 02:52:27 +00:00
Pieter Wuille 923dc447ea
Merge #9578: Add missing mempool lock for CalculateMemPoolAncestors
003cd60 Add missing mempool lock for CalculateMemPoolAncestors (Matt Corallo)
2017-02-05 12:08:08 -08:00
Gregory Maxwell ac719c936d Init ECC context for test_bitcoin_fuzzy.
This avoids calling things like pubkey_parse with a null context argument.
2017-02-05 17:37:13 +00:00
Daniel Aleksandersen 9155241bd9 Change 'Clear' button string to 'Reset'
Easier to understand what the button does (it resets the graph view).

'Clear' might mean that the graph is emptied and stops updating, whereas
its easier to see that you're just starting fresh with 'Reset'.
2017-02-05 06:48:31 +01:00
Matt Corallo 2a962d4540 Fixup style a bit by moving { to the same line as if statements 2017-02-04 16:44:05 -05:00
Wladimir J. van der Laan 7821db30e1
Merge #9671: Fix super-unlikely race introduced in 236618061a
885cfdd Fix super-unlikely race introduced in 236618061a (Matt Corallo)
2017-02-04 11:39:17 +01:00
Wladimir J. van der Laan 496691741d
Merge #9609: net: fix remaining net assertions
08bb6f4 net: log an error rather than asserting if send version is misused (Cory Fields)
7a8c251 net: Disallow sending messages until the version handshake is complete (Cory Fields)
12752af net: don't run callbacks on nodes that haven't completed the version handshake (Cory Fields)
2046617 net: deserialize the entire version message locally (Cory Fields)
80ff034 Dont deserialize nVersion into CNode, should fix #9212 (Matt Corallo)
2017-02-04 11:38:02 +01:00
Matt Corallo 7b2d96b634 Access WorkQueue::running only within the cs lock.
This removes a "race" between Interrupt() and Run(), though it
should not effect any of our supported platforms.
2017-02-03 13:50:17 -05:00
Matt Corallo 8465631845 Always enforce lock strict lock ordering (try or not) 2017-02-02 22:31:27 -05:00
Matt Corallo fd13eca147 Lock cs_vSend and cs_inventory in a consistent order even in TRY 2017-02-02 20:03:46 -05:00
Russell Yanofsky 4ec057dfa7 [wallet] Set correct metadata on bumpfee wallet transactions
Preserve comment, order form, and account strings from the original wallet
transaction. Also set fTimeReceivedIsTxTime and fFromMe fields for consistency
with CWallet::CreateTransaction. The latter two fields don't influence current
wallet behavior, but do record that the transaction originated in the wallet
instead of coming from the network or sendrawtransaction.
2017-02-02 17:34:22 -05:00
Matt Corallo 922bea90c2 Better handle invalid parameters to signrawtransaction
This silently skips trying to merge signatures from inputs which
do not exist from transactions provided to signrawtransaction,
instead of hitting an assert.
2017-02-02 17:32:27 -05:00
Matt Corallo 7ea0ad539f Fail in DecodeHexTx if there is extra data at the end 2017-02-02 17:32:27 -05:00
Cory Fields 08bb6f4ed4 net: log an error rather than asserting if send version is misused
Also cleaned up the comments and moved from the header to the .cpp so that
logging headers aren't needed from net.h
2017-02-02 16:14:16 -05:00
Cory Fields 7a8c251901 net: Disallow sending messages until the version handshake is complete
This is a change in behavior, though it's much more sane now than before.
2017-02-02 16:14:16 -05:00
Cory Fields 12752af0cc net: don't run callbacks on nodes that haven't completed the version handshake
Since ForEach* are can be used to send messages to  all nodes, the caller may
end up sending a message before the version handshake is complete. To limit
this, filter out these nodes. While we're at it, may as well filter out
disconnected nodes as well.

Delete unused methods rather than updating them.
2017-02-02 16:14:16 -05:00
Cory Fields 2046617b5e net: deserialize the entire version message locally
This avoids having some vars set if the version negotiation fails.

Also copy it all into CNode at the same site. nVersion and
fSuccessfullyConnected are set last, as they are the gates for the other vars.
Make them atomic for that reason.
2017-02-02 16:13:52 -05:00
Luke Dashjr 9fc7f0bce9 Bugfix: RPC/Mining: GBT should return 1 MB sizelimit before segwit activates 2017-02-02 20:00:25 +00:00
Matt Corallo 80ff0344ae Dont deserialize nVersion into CNode, should fix #9212 2017-02-02 13:56:05 -05:00
Matt Corallo 885cfdd217 Fix super-unlikely race introduced in 236618061a
Once the CNode has been added to vNodes, it is possible that it is
disconnected+deleted in the socket handler thread. However, after
that we now call InitializeNode, which accesses the pnode.

helgrind managed to tickle this case (somehow), but I suspect it
requires in immensely braindead scheduler.
2017-02-02 13:51:57 -05:00
Wladimir J. van der Laan 4e19efba03
Merge #9556: Remove redundant semicolons
8fc6989 Remove redundant semicolons (practicalswift)
2017-02-02 11:57:40 +01:00
practicalswift db07f91899 Assert that what might look like a possible division by zero is actually unreachable 2017-02-02 10:43:48 +01:00
Wladimir J. van der Laan e30d9287fd
Merge #9663: [RPC] clarify listunspent amount description
3eba88d clarify listunspent amount description (Gregory Sanders)
2017-02-02 10:13:21 +01:00
Gregory Sanders 3eba88d44c clarify listunspent amount description 2017-02-01 12:18:31 -05:00
Wladimir J. van der Laan 77bd8c4cab
Merge #9625: Increase minimum debug.log size to 10MB after shrink.
29fb311 Increase minimum debug.log size to 10MB after shrink. (Alex Morcos)
2017-02-01 11:41:00 +01:00
Suhas Daftuar 9522b53a91 rpc: bumpfee: handle errors more gracefully 2017-01-31 20:03:45 -05:00
Suhas Daftuar f62659448c rpc: bumpfee: use correct maximum signed tx size for fee calculation
More accurate than simply adding one byte per input, and properly handles the
case where the original transaction happened to have very small signatures
2017-01-31 20:03:45 -05:00
Jorge Timón 0729102f99
Net: pass interruptMsgProc as const where possible 2017-01-31 23:45:47 +01:00
Jorge Timón fc7f2ffad4
Net: Make CNetMsgMaker more const 2017-01-31 23:29:28 +01:00
Jorge Timón d45955fa09
Net: CConnman: Make some methods const 2017-01-31 23:20:26 +01:00
Suhas Daftuar d625b907a1 wallet: Refactor dummy signature signing for reusability 2017-01-30 11:47:10 -05:00
Wladimir J. van der Laan e99f0d7ad4
Merge #9647: Skip RAII event tests if libevent is built without event_set_mem_functions
95f97f4 Skip RAII event tests if libevent is built without event_set_mem_functions (Luke Dashjr)
2017-01-30 13:56:24 +01:00
MarcoFalke 53ab12d931
Merge #9649: [doc] Remove unused clang format dev script
fa5137c [doc] Remove unused clang format dev script (MarcoFalke)
2017-01-30 13:50:01 +01:00
Wladimir J. van der Laan 71fc17f667
qt: periodic translations update 2017-01-30 13:33:00 +01:00
MarcoFalke 668de70be0
Merge #9644: [refactor] Remove using namespace <xxx> from src/
b7b48c8 Refactor: Remove using namespace <xxx> from src/*.cpp. (Karl-Johan Alm)
2017-01-30 13:13:20 +01:00
Wladimir J. van der Laan 36966a1c0e
Merge #9626: Clean up a few CConnman cs_vNodes/CNode things
2366180 Do not add to vNodes until fOneShot/fFeeler/fAddNode have been set (Matt Corallo)
3c37dc4 Ensure cs_vNodes is held when using the return value from FindNode (Matt Corallo)
5be0190 Delete some unused (and broken) functions in CConnman (Matt Corallo)
2017-01-30 12:48:43 +01:00
Wladimir J. van der Laan d2c9e4d422
Merge #9615: Wallet incremental fee
4b189c1 Change bumpfee result value from 'oldfee' to 'origfee'. (Alex Morcos)
0c0c63f Introduce WALLET_INCREMENTAL_RELAY_FEE (Alex Morcos)
e8021ec Use CWallet::GetMinimumFee in bumpfee (Alex Morcos)
ae9719a Refactor GetMinimumFee to give option of providing targetFee (Alex Morcos)
fe8e8ef [rpc] Add incremental relay fee to getnetworkinfo (Alex Morcos)
6b331e6 Fix to have miner test aware of new separate block min tx fee (Alex Morcos)
de6400d Fix missing use of dustRelayFee (Alex Morcos)
5b15870 Use incrementalRelayFee for BIP 125 replacement (Alex Morcos)
2017-01-30 10:38:56 +01:00
practicalswift 5f62e3eb63 Fix typos 2017-01-29 18:19:55 +01:00
MarcoFalke fa5137c11d [doc] Remove unused clang format dev script
Also, update the clang format file to reflect the current coding
style mentioned in the developer notes.
2017-01-28 16:57:08 +01:00
Luke Dashjr 95f97f4b94 Skip RAII event tests if libevent is built without event_set_mem_functions 2017-01-28 08:04:57 +00:00
practicalswift cc16d99f1d [trivial] Fix typos in comments 2017-01-27 21:22:35 +01:00
Karl-Johan Alm b7b48c8bbd Refactor: Remove using namespace <xxx> from src/*.cpp. 2017-01-27 18:13:20 +09:00
Alex Morcos 4b189c1340 Change bumpfee result value from 'oldfee' to 'origfee'.
The result value indicates the actual fee on the transaction that was replaced. But there is an error message which uses the description 'oldfee' to refer to the original fee rate applied to the new transaction's estimated max size.  It was confusing that two different uses of 'oldfee' had two different numeric values.
2017-01-26 12:03:47 -05:00
Alex Morcos 0c0c63f70a Introduce WALLET_INCREMENTAL_RELAY_FEE
Have wallet's default bump value be higher than the default incrementalRelayFee to future proof against changes to incremental relay fee.  Only applies when not setting the fee rate directly.
2017-01-26 12:03:47 -05:00
Alex Morcos e8021ec919 Use CWallet::GetMinimumFee in bumpfee
Use the wallet's fee calculation logic to properly clamp fee against minimums and maximums when calculating the fee for a bumpfee transaction.  Unless totalFee is explictly given, in which case, manually check against min, but do nothing to adjust given fee.

In all cases do a final check against maxTxFee (after adding any incremental amount).
2017-01-26 09:43:00 -05:00
Jonas Schnelli 04b877361b
[Qt] fix transaction details output-index to reflect vout index 2017-01-26 13:22:36 +01:00
Wladimir J. van der Laan 9b4d2673b7
Merge #9519: Exclude RBF replacement txs from fee estimation
de1ae32 Exclude RBF txs from fee estimation (Alex Morcos)
2017-01-26 10:53:14 +01:00
Wladimir J. van der Laan fd7021142a
Merge #9594: Send final alert message to older peers after connecting.
8ff8d21 Send final alert message to older peers after connecting. (Gregory Maxwell)
2017-01-26 10:31:55 +01:00
Wladimir J. van der Laan 10dc58a2aa
Merge #9587: Do not shadow local variable named tx.
44f2baa Do not shadow local variable named `tx`. (Pavel Janík)
2017-01-26 10:15:21 +01:00
Wladimir J. van der Laan 07421cf2a7
Merge #9613: [wallet] Clarify getbalance help string to explain interaction with bumpfee
5a00659 [wallet] Clarify getbalance help string to explain interaction with bumpfee (Russell Yanofsky)
2017-01-26 10:14:13 +01:00
Wladimir J. van der Laan 3f9f9629cc
Merge #9606: net: Consistently use GetTimeMicros() for inactivity checks
99464bc net: Consistently use GetTimeMicros() for inactivity checks (Suhas Daftuar)
2017-01-26 09:57:45 +01:00
Alex Morcos ae9719ab87 Refactor GetMinimumFee to give option of providing targetFee 2017-01-25 22:24:40 -05:00
Matt Corallo 236618061a Do not add to vNodes until fOneShot/fFeeler/fAddNode have been set 2017-01-25 18:59:16 -05:00
Russell Yanofsky 87ed396159 [trivial] Add comment documenting bumpfee mapValues 2017-01-25 13:18:25 -05:00
Russell Yanofsky c4e4792c53 [Qt] Change RBF checkbox to reflect -walletrbf setting
Before this commit, the checkbox would always start off unchecked. After this
commit it will respect the -walletrbf setting (which is currently false by
default).
2017-01-25 12:51:06 -05:00
Jonas Schnelli 838a58e7ca [Qt] Add simple optin-RBF checkbox and confirmation info 2017-01-25 12:51:06 -05:00
Suhas Daftuar 99464bc38e net: Consistently use GetTimeMicros() for inactivity checks
The use of mocktime in test logic means that comparisons between
GetTime() and GetTimeMicros()/1000000 are unreliable since the former
can use mocktime values while the latter always gets the system clock;
this changes the networking code's inactivity checks to consistently
use the system clock for inactivity comparisons.

Also remove some hacks from setmocktime() that are no longer needed,
now that we're using the system clock for nLastSend and nLastRecv.
2017-01-25 09:48:14 -05:00
Alex Morcos 29fb311858 Increase minimum debug.log size to 10MB after shrink. 2017-01-24 20:28:00 -05:00
Matt Corallo 3c37dc40d3 Ensure cs_vNodes is held when using the return value from FindNode 2017-01-24 17:01:45 -05:00
Matt Corallo 5be01906e5 Delete some unused (and broken) functions in CConnman 2017-01-24 17:01:43 -05:00
John Newbery ac9a84679a [Trivial] fix logging typo in FlushStateToDisk() 2017-01-24 12:08:07 -05:00
Jonas Schnelli 0165a56f20
Refactor ZapWalletTxes to avoid layer vialotions 2017-01-24 14:25:42 +01:00
Wladimir J. van der Laan 1ac878ace6
Merge #9617: [Trivial] Update license year range to 2017
be31a2b [Trivial] Update license year range to 2017 (Lauda)
2017-01-24 13:27:07 +01:00
Wladimir J. van der Laan 4a1dc35ca5
Merge #9371: Notify on removal
094e4b3 Better document usage of SyncTransaction (Alex Morcos)
4afbde6 Introduce MemPoolConflictRemovalTracker (Alex Morcos)
ff25c32 mempool: add notification for added/removed entries (Wladimir J. van der Laan)
2017-01-24 10:08:01 +01:00
Jonas Schnelli 50864529b6
Merge #9588: qt: Use nPowTargetSpacing constant
fa4d478 qt: Use nPowTargetSpacing constant (MarcoFalke)
2017-01-24 09:24:41 +01:00
Lauda be31a2b363 [Trivial] Update license year range to 2017
The same as #7363.
2017-01-23 23:46:06 +01:00
Jonas Schnelli 568c05a591 Allow to opt-into RBF when creating a transaction 2017-01-23 16:23:39 -05:00
Alex Morcos 094e4b3383 Better document usage of SyncTransaction 2017-01-23 15:43:22 -05:00
Alex Morcos 4afbde6028 Introduce MemPoolConflictRemovalTracker
Analogue to ConnectTrace that tracks transactions that have been removed from the mempool due to conflicts and then passes them through SyncTransaction at the end of its scope.
2017-01-23 15:43:22 -05:00
Wladimir J. van der Laan ff25c32392 mempool: add notification for added/removed entries
Add notification signals to make it possible to subscribe to mempool
changes:

- NotifyEntryAdded(CTransactionRef)>
- NotifyEntryRemoved(CTransactionRef, MemPoolRemovalReason)>

Also add a mempool removal reason enumeration, which is passed to the
removed notification based on why the transaction was removed from
the mempool.
2017-01-23 15:43:22 -05:00
Pieter Wuille 71148b8947
Merge #9596: [bugfix] save feeDelta instead of priorityDelta in DumpMempool
bd92f24 [bugfix] save feeDelta instead of priorityDelta in DumpMempool (Alex Morcos)
2017-01-23 10:42:36 -08:00
Wladimir J. van der Laan 727a798360
Merge #9516: Bug-fix: listsinceblock: use fork point as reference for blocks in reorg'd chains
7ba0a00 Testing: listsinceblock should not use orphan block height. (Karl-Johan Alm)
ee5c1ce Bug-fix: listsinceblock: use closest common ancestor when a block hash was provided for a chain that was not the main chain. (Karl-Johan Alm)
2017-01-23 16:16:37 +01:00
Russell Yanofsky 5a00659b58 [wallet] Clarify getbalance help string to explain interaction with bumpfee
Documentation change only, no change in behavior.
2017-01-23 09:54:11 -05:00
Wladimir J. van der Laan 7884956414
Merge #9511: Don't overwrite validation state with corruption check
116419e Don't overwrite validation state with corruption check (Alex Morcos)
2017-01-23 13:18:16 +01:00
Wladimir J. van der Laan eafba4e273
Merge #9583: Move wallet callbacks into cs_main (this effectively reverts #7946)
9899893 Move wallet callbacks into cs_main (this effectively reverts #7946) (Matt Corallo)
2017-01-23 07:43:47 +01:00
MarcoFalke ff58b1c3bd
Merge #9610: [Trivial] Grammar and typo correction (laudaa)
5c66d41 [Trivial] Grammar and typo correction (Lauda)
2017-01-22 13:28:43 +01:00
Lauda 5c66d41b7f [Trivial] Grammar and typo correction
Minor corrections in src\test\* .
2017-01-22 13:18:51 +01:00
MarcoFalke 0b96abc35f
Merge #9554: [test] Avoid potential NULL pointer dereference in addrman_tests.cpp
afab9f4 [test] Avoid potential NULL pointer dereference in addrman_tests.cpp (practicalswift)
2017-01-22 13:17:41 +01:00
practicalswift 8455e367fe [test] Avoid reading a potentially uninitialized variable in tx_invalid-test
Prior to this commit the err variable was not guaranteed to be set before
the check ...

    BOOST_CHECK_MESSAGE(err != SCRIPT_ERR_OK, ScriptErrorString(err));
2017-01-21 10:57:00 +01:00
Jeremy Rubin e2073424fd Fix CCheckQueue IsIdle (potential) race condition and remove dangerous constructors. 2017-01-20 18:18:59 -05:00
Matt Corallo 003cd60cc3 Add missing mempool lock for CalculateMemPoolAncestors 2017-01-20 18:11:24 -05:00
John Newbery dd5b0114cf [Trivial] add comment about setting peer as HB peer.
This adds a comment to the new logic for setting HB peers based
on block validation (and aligns the code below to reflect the comment).
It's not obvious why we're checking mapBlocksInFlight. Add a comment to
explain.
2017-01-20 15:05:12 -05:00
Alex Morcos de1ae324bf Exclude RBF txs from fee estimation 2017-01-20 15:04:16 -05:00
Wladimir J. van der Laan af01cd3a3d
qt: Periodic translation update 2017-01-20 14:45:12 +01:00
Wladimir J. van der Laan b8d1b81077
trivial: squash missing field 'argNames' initializer warning in qt tests
The additional initializer is for the named arguments, which are unused
in the test (and unfilled global fields will be initialized to 0
anyhow), so this is a no-op apart from the warning.
2017-01-20 14:39:50 +01:00
Wladimir J. van der Laan fb75cd04bb
Merge #9377: fundrawtransaction: Keep change-output keys by default, make it optional
c9f3062 Add fundrawtransactions new reserveChangeKey option to the release notes (Jonas Schnelli)
9eb325d [QA] Add test for fundrawtransactions new reserveChangeKey option (Jonas Schnelli)
9aa4e6a [Wallet] Add an option to keep the change address key, true by default (Jonas Schnelli)
2017-01-20 14:32:42 +01:00
Alex Morcos fe8e8efcf9 [rpc] Add incremental relay fee to getnetworkinfo 2017-01-20 07:40:36 -05:00
Pavel Janík 44f2baac48 Do not shadow local variable named tx. 2017-01-20 10:55:47 +01:00
Gregory Maxwell 8ff8d219c3 Send final alert message to older peers after connecting.
The old Bitcoin alert system has long since been retired.
( See also: https://bitcoin.org/en/alert/2016-11-01-alert-retirement )

This change causes each node to send any old peers that
 it connects with a copy of the final alert.

The alert it hardcode cancels all other alerts including
 other final alerts.
2017-01-20 07:33:58 +00:00
Alex Morcos bd92f2481c [bugfix] save feeDelta instead of priorityDelta in DumpMempool 2017-01-19 23:45:02 -05:00
Alex Morcos 6b331e6cf9 Fix to have miner test aware of new separate block min tx fee 2017-01-19 21:35:39 -05:00
Alex Morcos de6400de5d Fix missing use of dustRelayFee 2017-01-19 20:31:29 -05:00
Alex Morcos 5b158707f2 Use incrementalRelayFee for BIP 125 replacement 2017-01-19 20:31:29 -05:00
MarcoFalke fa4d47814f qt: Use nPowTargetSpacing constant 2017-01-19 20:47:04 +01:00
Jonas Schnelli 9aa4e6a6c2
[Wallet] Add an option to keep the change address key, true by default 2017-01-19 20:38:37 +01:00
Wladimir J. van der Laan 82274c02ed
Merge #9535: Split CNode::cs_vSend: message processing and message sending
376b3c2 Make the cs_sendProcessing a LOCK instead of a TRY_LOCK (Matt Corallo)
d7c58ad Split CNode::cs_vSend: message processing and message sending (Matt Corallo)
2017-01-19 20:20:04 +01:00
Jonas Schnelli b25068697f
Merge #9461: [Qt] Improve progress display during headers-sync and peer-finding
40ec7c7 [Qt] Improve progress display during headers-sync and peer-finding (Jonas Schnelli)
2017-01-19 20:09:49 +01:00
Wladimir J. van der Laan 2ef52d3cf1
Merge #8456: [RPC] Simplified bumpfee command.
cc0243a [RPC] bumpfee (mrbandrews)
52dde66 [wallet] Add include_unsafe argument to listunspent RPC (Russell Yanofsky)
766e8a4 [wallet] Add IsAllFromMe: true if all inputs are from wallet (Suhas Daftuar)
2017-01-19 19:59:24 +01:00
Matt Corallo 989989354b Move wallet callbacks into cs_main (this effectively reverts #7946) 2017-01-19 11:31:05 -05:00
mrbandrews cc0243ad32 [RPC] bumpfee
This command allows a user to increase the fee on a wallet transaction T, creating a "bumper" transaction B.
T must signal that it is BIP-125 replaceable.
T's change output is decremented to pay the additional fee.  (B will not add inputs to T.)
T cannot have any descendant transactions.
Once B bumps T, neither T nor B's outputs can be spent until either T or (more likely) B is mined.

Includes code by @jonasschnelli and @ryanofsky
2017-01-19 11:29:29 -05:00
Russell Yanofsky 52dde66770 [wallet] Add include_unsafe argument to listunspent RPC 2017-01-19 11:29:29 -05:00
Wladimir J. van der Laan 054d664215
Merge #9498: Basic CCheckQueue Benchmarks
aad4cb5 Address ryanofsky feedback on CCheckQueue benchmarks. Eliminated magic numbers, fixed scoping of vectors (and memory movement component of benchmark). (Jeremy Rubin)
9f03110 Add Basic CheckQueue Benchmark (Jeremy Rubin)
2017-01-19 15:29:09 +01:00
Jonas Schnelli 40ec7c7b0d
[Qt] Improve progress display during headers-sync and peer-finding 2017-01-19 09:10:04 +01:00
Johnson Lau 0da49b5926 Skip precompute sighash for transactions without witness 2017-01-19 16:09:57 +08:00
Wladimir J. van der Laan 9c9af5ab2d
Merge #9499: Use recent-rejects, orphans, and recently-replaced txn for compact-block-reconstruction
c594580 Add braces around AddToCompactExtraTransactions (Matt Corallo)
1ccfe9b Clarify comment about mempool/extra conflicts (Matt Corallo)
fac4c78 Make PartiallyDownloadedBlock::InitData's second param const (Matt Corallo)
b55b416 Add extra_count lower bound to compact reconstruction debug print (Matt Corallo)
863edb4 Consider all (<100k memusage) txn for compact-block-extra-txn cache (Matt Corallo)
7f8c8ca Consider all orphan txn for compact-block-extra-txn cache (Matt Corallo)
93380c5 Use replaced transactions in compact block reconstruction (Matt Corallo)
1531652 Keep shared_ptrs to recently-replaced txn for compact blocks (Matt Corallo)
edded80 Make ATMP optionally return the CTransactionRefs it replaced (Matt Corallo)
c735540 Move ORPHAN constants from validation.h to net_processing.h (Matt Corallo)
2017-01-19 09:03:46 +01:00
Wladimir J. van der Laan 6012967c47
Merge #9512: Fix various things -fsanitize complains about
82e8baa Avoid boost dynamic_bitset in rest_getutxos (Pieter Wuille)
99f001e Fix memory leak in multiUserAuthorized (Pieter Wuille)
5a0b7e4 Fix memory leak in net_tests (Pieter Wuille)
6b03bfb Fix memory leak in wallet tests (Pieter Wuille)
f94f3e0 Avoid integer overflows in scriptnum tests (Pieter Wuille)
843c560 Avoid unaligned access in crypto i/o (Pieter Wuille)
2017-01-18 20:05:30 +01:00
MarcoFalke b0b57a1730
Merge #9508: Remove unused Python imports
95bab82 Remove unused Python imports (practicalswift)
2017-01-18 10:48:52 +01:00
Karl-Johan Alm ee5c1ce5a6 Bug-fix: listsinceblock: use closest common ancestor when a block hash was provided for a chain that was not the main chain. 2017-01-18 12:07:13 +09:00
Alex Morcos ad82cb06ce Remove unnecessary min fee argument in CTxMemPool constructor 2017-01-17 13:21:35 -05:00
Alex Morcos 2a7b56cc0e CBlockPolicyEstimator now uses hard coded minimum bucket feerate 2017-01-17 13:21:31 -05:00
Alex Morcos ac9d3d25f7 Change fee estimation bucket limit variable names 2017-01-17 13:19:32 -05:00
Matt Corallo c5945804ca Add braces around AddToCompactExtraTransactions 2017-01-16 23:00:58 -05:00
Matt Corallo 1ccfe9b1c9 Clarify comment about mempool/extra conflicts 2017-01-16 22:58:06 -05:00
Pieter Wuille 6696b4635c
Merge #9561: Wake message handling thread when we receive a new block
241d893 Wake message handling thread when we receive a new block (Matt Corallo)
f13914a Make WakeMessageHandler public (Matt Corallo)
2017-01-16 19:54:52 -08:00
Pieter Wuille 812714fd80
Merge #9484: Introduce assumevalid setting to skip validation presumed valid scripts.
7b5e3fe Add assumevalid testcase (John Newbery)
e440ac7 Introduce assumevalid setting to skip presumed valid scripts. (Gregory Maxwell)
2017-01-16 14:07:30 -08:00
Wladimir J. van der Laan b0819c7e9b
qt: periodic translations update 2017-01-16 20:59:50 +01:00
Wladimir J. van der Laan dd98f04538
Merge #9380: Separate different uses of minimum fees
eb30d1a Introduce -dustrelayfee (Alex Morcos)
7b1add3 Introduce -incrementalrelayfee (Alex Morcos)
daec955 Introduce -blockmintxfee (Alex Morcos)
2017-01-16 19:33:08 +01:00
Alex Morcos eb30d1a5b2 Introduce -dustrelayfee 2017-01-16 08:40:40 -05:00
Alex Morcos 7b1add3c28 Introduce -incrementalrelayfee 2017-01-16 08:39:03 -05:00
Pieter Wuille 8a445c5651
Merge #9400: Set peers as HB peers upon full block validation
d4781ac Set peers as HB peers upon full block validation (Gregory Sanders)
2017-01-15 09:44:33 -08:00
Wladimir J. van der Laan f62bc10a60
Merge #9486: Make peer=%d log prints consistent
e6111b2 Make peer id logging consistent ("peer=%d" instead of "peer %d") (Matt Corallo)
2017-01-15 06:44:54 +01:00
Matt Corallo 241d8938f4 Wake message handling thread when we receive a new block
This forces the message handling thread to make another full
iteration of SendMessages prior to going back to sleep, ensuring
we announce the new block to all peers before sleeping.
2017-01-14 16:00:16 -08:00
Matt Corallo f13914a0e9 Make WakeMessageHandler public 2017-01-14 16:00:16 -08:00
Matt Corallo c4a6929a3d Clarify assumptions made about when BlockCheck is called 2017-01-14 13:40:46 -08:00
practicalswift 8fc698935f Remove redundant semicolons 2017-01-14 21:45:32 +01:00
practicalswift afab9f47f6 [test] Avoid potential NULL pointer dereference in addrman_tests.cpp 2017-01-14 20:18:20 +01:00
MarcoFalke 8daf103fa1
Merge #9528: [qt] Rename formateNiceTimeOffset(qint64) to formatNiceTimeOffset(qint64)
988d300 [qt] Rename formateNiceTimeOffset(qint64) to formatNiceTimeOffset(qint64) (practicalswift)
2017-01-14 11:24:11 +01:00
Pieter Wuille e126d0c12c
Merge #9490: Replace FindLatestBefore used by importmuti with FindEarliestAtLeast.
4b06e41 Add unit test for FindEarliestAtLeast (Suhas Daftuar)
997a98a Replace FindLatestBefore used by importmuti with FindEarliestAtLeast. (Gregory Maxwell)
2017-01-13 16:06:05 -08:00
Pieter Wuille 3908fc4728
Merge #9375: Relay compact block messages prior to full block connection
02ee4eb Make most_recent_compact_block a pointer to a const (Matt Corallo)
73666ad Add comment to describe callers to ActivateBestChain (Matt Corallo)
962f7f0 Call ActivateBestChain without cs_main/with most_recent_block (Matt Corallo)
0df777d Use a temp pindex to avoid a const_cast in ProcessNewBlockHeaders (Matt Corallo)
c1ae4fc Avoid holding cs_most_recent_block while calling ReadBlockFromDisk (Matt Corallo)
9eb67f5 Ensure we meet the BIP 152 old-relay-types response requirements (Matt Corallo)
5749a85 Cache most-recently-connected compact block (Matt Corallo)
9eaec08 Cache most-recently-announced block's shared_ptr (Matt Corallo)
c802092 Relay compact block messages prior to full block connection (Matt Corallo)
6987219 Add a CValidationInterface::NewPoWValidBlock callback (Matt Corallo)
180586f Call AcceptBlock with the block's shared_ptr instead of CBlock& (Matt Corallo)
8baaba6 [qa] Avoid race in preciousblock test. (Matt Corallo)
9a0b2f4 [qa] Make compact blocks test construction using fetch methods (Matt Corallo)
8017547 Make CBlockIndex*es in net_processing const (Matt Corallo)
2017-01-13 14:52:26 -08:00
Matt Corallo 02ee4eb263 Make most_recent_compact_block a pointer to a const 2017-01-13 16:28:15 -05:00
Matt Corallo 376b3c2c6e Make the cs_sendProcessing a LOCK instead of a TRY_LOCK
Technically cs_sendProcessing is entirely useless now because it
is only ever taken on the one MessageHandler thread, but because
there may be multiple of those in the future, it is left in place
2017-01-13 10:34:38 -08:00
Matt Corallo d7c58ad514 Split CNode::cs_vSend: message processing and message sending
cs_vSend is used for two purposes - to lock the datastructures used
to queue messages to place on the wire and to only call
SendMessages once at a time per-node. I believe SendMessages used
to access some of the vSendMsg stuff, but it doesn't anymore, so
these locks do not need to be on the same mutex, and also make
deadlocking much more likely.
2017-01-13 10:34:37 -08:00
practicalswift 95bab821b3 Remove unused Python imports 2017-01-13 19:03:20 +01:00
Pieter Wuille 8b66bf74e2
Merge #9441: Net: Massive speedup. Net locks overhaul
e60360e net: remove cs_vRecvMsg (Cory Fields)
991955e net: add a flag to indicate when a node's send buffer is full (Cory Fields)
c6e8a9b net: add a flag to indicate when a node's process queue is full (Cory Fields)
4d712e3 net: add a new message queue for the message processor (Cory Fields)
c5a8b1b net: rework the way that the messagehandler sleeps (Cory Fields)
c72cc88 net: remove useless comments (Cory Fields)
ef7b5ec net: Add a simple function for waking the message handler (Cory Fields)
f5c36d1 net: record bytes written before notifying the message processor (Cory Fields)
60befa3 net: handle message accounting in ReceiveMsgBytes (Cory Fields)
56212e2 net: set message deserialization version when it's actually time to deserialize (Cory Fields)
0e973d9 net: remove redundant max sendbuffer size check (Cory Fields)
6042587 net: wait until the node is destroyed to delete its recv buffer (Cory Fields)
f6315e0 net: only disconnect if fDisconnect has been set (Cory Fields)
5b4a8ac net: make GetReceiveFloodSize public (Cory Fields)
e5bcd9c net: make vRecvMsg a list so that we can use splice() (Cory Fields)
53ad9a1 net: fix typo causing the wrong receive buffer size (Cory Fields)
2017-01-13 10:02:18 -08:00
practicalswift 988d300932 [qt] Rename formateNiceTimeOffset(qint64) to formatNiceTimeOffset(qint64) 2017-01-13 18:58:15 +01:00
practicalswift 90fd29bd0d Remove unused int64_t nSinceLastSeen 2017-01-13 18:55:10 +01:00
Gregory Maxwell e440ac7ef3 Introduce assumevalid setting to skip presumed valid scripts.
This disentangles the script validation skipping from checkpoints.

A new option is introduced "assumevalid" which specifies a block whos
 ancestors we assume all have valid scriptsigs and so we do not check
 them when they are also burried under the best header by two weeks
 worth of work.

Unlike checkpoints this has no influence on consensus unless you set
 it to a block with an invalid history.  Because of this it can be
 easily be updated without risk of influencing the network consensus.

This results in a massive IBD speedup.

This approach was independently recommended by Peter Todd and Luke-Jr
 since POW based signature skipping (see PR#9180) does not have the
 verifiable properties of a specific hash and may create bad incentives.

The downside is that, like checkpoints, the defaults bitrot and older
 releases will sync slower.  On the plus side users can provide their
 own value here, and if they set it to something crazy all that will
 happen is more time will be spend validating signatures.

Checkblocks and checklevel are also moved to the hidden debug options:
 Especially now that checkblocks has a low default there is little need
 to change these settings, and users frequently misunderstand them as
 influencing security or IBD speed.  By hiding them we offset the
 space added by this new option.
2017-01-13 15:42:24 +00:00
Cory Fields e60360e139 net: remove cs_vRecvMsg
vRecvMsg is now only touched by the socket handler thread.

The accounting vars (nRecvBytes/nLastRecv/mapRecvBytesPerMsgCmd) are also
only used by the socket handler thread, with the exception of queries from
rpc/gui. These accesses are not threadsafe, but they never were. This needs to
be addressed separately.

Also, update comment describing data flow
2017-01-12 23:08:08 -05:00
Cory Fields 991955ee81 net: add a flag to indicate when a node's send buffer is full
Similar to the recv flag, but this one indicates whether or not the net's send
buffer is full.

The socket handler checks the send queue when a new message is added and pauses
if necessary, and possibly unpauses after each message is drained from its buffer.
2017-01-12 23:05:59 -05:00
Cory Fields c6e8a9bcff net: add a flag to indicate when a node's process queue is full
Messages are dumped very quickly from the socket handler to the processor, so
it's the depth of the processing queue that's interesting.

The socket handler checks the process queue's size during the brief message
hand-off and pauses if necessary, and the processor possibly unpauses each time
a message is popped off of its queue.
2017-01-12 23:05:47 -05:00
Cory Fields 4d712e366c net: add a new message queue for the message processor
This separates the storage of messages from the net and queued messages for
processing, allowing the locks to be split.
2017-01-12 23:05:25 -05:00
Cory Fields c5a8b1b946 net: rework the way that the messagehandler sleeps
In order to sleep accurately, the message handler needs to know if _any_ node
has more processing that it should do before the entire thread sleeps.

Rather than returning a value that represents whether ProcessMessages
encountered a message that should trigger a disconnnect, interpret the return
value as whether or not that node has more work to do.

Also, use a global fProcessWake value that can be set by other threads,
which takes precedence (for one cycle) over the messagehandler's decision.

Note that the previous behavior was to only process one message per loop
(except in the case of a bad checksum or invalid header). That was changed in
PR #3180.

The only change here in that regard is that the current node now falls to the
back of the processing queue for the bad checksum/invalid header cases.
2017-01-12 23:05:24 -05:00
Cory Fields c72cc88ed3 net: remove useless comments 2017-01-12 23:05:09 -05:00
Cory Fields ef7b5ecbb7 net: Add a simple function for waking the message handler
This may be used publicly in the future
2017-01-12 23:05:09 -05:00
Cory Fields f5c36d19b6 net: record bytes written before notifying the message processor 2017-01-12 23:05:09 -05:00
Cory Fields 60befa3997 net: handle message accounting in ReceiveMsgBytes
This allows locking to be pushed down to only where it's needed

Also reuse the current time rather than checking multiple times.
2017-01-12 23:05:09 -05:00
Matt Corallo fac4c78028 Make PartiallyDownloadedBlock::InitData's second param const 2017-01-12 12:20:11 -08:00
Matt Corallo b55b416346 Add extra_count lower bound to compact reconstruction debug print 2017-01-12 12:19:14 -08:00
Matt Corallo 73666ad059 Add comment to describe callers to ActivateBestChain 2017-01-12 12:15:17 -08:00
Pieter Wuille 82e8baab3c Avoid boost dynamic_bitset in rest_getutxos 2017-01-12 12:06:32 -08:00
Pieter Wuille 99f001eb52 Fix memory leak in multiUserAuthorized 2017-01-12 11:52:53 -08:00
Pieter Wuille 5a0b7e4106 Fix memory leak in net_tests 2017-01-12 11:52:53 -08:00
Pieter Wuille 6b03bfb840 Fix memory leak in wallet tests 2017-01-12 11:52:53 -08:00
Pieter Wuille f94f3e0df8 Avoid integer overflows in scriptnum tests 2017-01-12 11:52:53 -08:00
Pieter Wuille 843c560003 Avoid unaligned access in crypto i/o 2017-01-12 11:52:45 -08:00
Pieter Wuille 7482781347 Allow non-power-of-2 signature cache sizes 2017-01-12 10:16:39 -08:00
Suhas Daftuar 4b06e41c30 Add unit test for FindEarliestAtLeast 2017-01-12 14:22:15 +00:00
Gregory Maxwell 997a98a674 Replace FindLatestBefore used by importmuti with FindEarliestAtLeast.
In spite of the name FindLatestBefore used std::lower_bound to try
 to find the earliest block with a nTime greater or equal to the
 the requested value.  But lower_bound uses bisection and requires
 the input to be ordered with respect to the comparison operation.
 Block times are not well ordered.

I don't know what lower_bound is permitted to do when the data
 is not sufficiently ordered, but it's probably not good.
 (I could construct an implementation which would infinite loop...)

To resolve the issue this commit introduces a maximum-so-far to the
 block indexes and searches that.

For clarity the function is renamed to reflect what it actually does.

An issue that remains is that there is no grace period in importmulti:
 If a address is created at time T and a send is immediately broadcast
 and included by a miner with a slow clock there may not yet have been
 any block with at least time T.

The normal rescan has a grace period of 7200 seconds, but importmulti
 does not.
2017-01-12 14:21:43 +00:00
MarcoFalke 02e5308c1b
Merge #9525: test: Include tx data in EXTRA_DIST
fa29736 test: Include tx data in EXTRA_DIST (MarcoFalke)
2017-01-12 13:41:32 +01:00
MarcoFalke fa2973678e test: Include tx data in EXTRA_DIST 2017-01-12 13:13:07 +01:00
Wladimir J. van der Laan 7cb024eba6
Merge #9222: Add 'subtractFeeFromAmount' option to 'fundrawtransaction'.
453bda6 Add 'subtractFeeFromOutputs' option to 'fundrawtransaction'. (Chris Moore)
2017-01-12 12:49:10 +01:00
Wladimir J. van der Laan 2742568a00
Merge #9261: Add unstored orphans with rejected parents to recentRejects
dfbe0d5 Add unstored orphans with rejected parents to recentRejects (Alex Morcos)
2017-01-12 12:34:44 +01:00
Wladimir J. van der Laan d5d4ad87af
Merge #8883: Add all standard TXO types to bitcoin-tx
0c50909 testcases: explicitly specify transaction version 1 (John Newbery)
b7e144b Add test cases to test new bitcoin-tx functionality (jnewbery)
61a1534 Add all transaction output types to bitcoin-tx. (jnewbery)
1814b08 add p2sh and segwit options to bitcoin-tx outscript command (Stanislas Marion)
2017-01-12 12:24:35 +01:00
Wladimir J. van der Laan fac0f30482
Merge #9472: Disentangle progress estimation from checkpoints and update it
df36371 Update estimated transaction count data (Pieter Wuille)
e356d9a Shorten variable names and switch to tx/s (Pieter Wuille)
6dd8116 Remove SIGCHECK_VERIFICATION_FACTOR (Pieter Wuille)
3641141 Move tx estimation data out of CCheckPointData (Pieter Wuille)
a4bac66 [MOVEONLY] Move progress estimation out of checkpoints (Pieter Wuille)
2017-01-12 12:13:14 +01:00
MarcoFalke a65ced1a66
Merge #9518: Return height of last block pruned by pruneblockchain RPC
918d1fb Return height of last block pruned by pruneblockchain RPC (Russell Yanofsky)
2017-01-12 11:50:14 +01:00
MarcoFalke 2456a835f0
Merge #9520: Deprecate non-txindex getrawtransaction and better warning
db904db Deprecate non-txindex getrawtransaction and better warning (Pieter Wuille)
2017-01-12 10:52:32 +01:00
Matt Corallo 962f7f054f Call ActivateBestChain without cs_main/with most_recent_block
There is still a call to ActivateBestChain with cs_main if a peer
requests the block prior to it being validated, but this one is
more specifically-gated, so should be less of an issue.
2017-01-11 21:18:48 -08:00
MarcoFalke 0b738075bd
Merge #9297: Various RPC help outputs updated
54ee3fc RPC help updated (Michael Rotarius)
2017-01-12 02:11:04 +01:00
Pieter Wuille db904db7e6 Deprecate non-txindex getrawtransaction and better warning 2017-01-11 15:34:13 -08:00
Matt Corallo 0df777db6d Use a temp pindex to avoid a const_cast in ProcessNewBlockHeaders 2017-01-11 14:47:52 -08:00
Jeremy Rubin aad4cb5059 Address ryanofsky feedback on CCheckQueue benchmarks. Eliminated magic numbers, fixed scoping of vectors (and memory movement component of benchmark). 2017-01-11 17:05:06 -05:00
Pieter Wuille 05950427d3
Merge #9507: Fix use-after-free in CTxMemPool::removeConflicts()
fe7e593 Fix use-after-free in CTxMemPool::removeConflicts() (Suhas Daftuar)
2017-01-11 13:59:00 -08:00
Michael Rotarius 54ee3fcb8f RPC help updated 2017-01-11 22:05:23 +01:00
Russell Yanofsky 918d1fb86b Return height of last block pruned by pruneblockchain RPC
Change suggested by Jonas Schnelli <dev@jonasschnelli.ch> in
https://github.com/bitcoin/bitcoin/pull/7871#discussion_r95577623
2017-01-11 14:25:32 -05:00
Pieter Wuille df3637177a Update estimated transaction count data 2017-01-11 08:21:40 -08:00
Pieter Wuille e356d9a758 Shorten variable names and switch to tx/s 2017-01-11 08:21:37 -08:00
Wladimir J. van der Laan e2e624d9ce
Merge #7871: Manual block file pruning.
afffeea fixup! Add pruneblockchain RPC to enable manual block file pruning. (Russell Yanofsky)
1fc4ec7 Add pruneblockchain RPC to enable manual block file pruning. (mrbandrews)
2017-01-11 14:26:00 +01:00
Wladimir J. van der Laan bbf193fef0
Merge #9513: build: fix qt distdir builds (retry)
67ca130 build: fix for out-of-tree/distdir qt builds (Cory Fields)
2017-01-11 13:45:28 +01:00
Cory Fields 67ca130f73 build: fix for out-of-tree/distdir qt builds 2017-01-10 20:03:38 -05:00
Jeremy Rubin 45a5aaf147 Only call clear on prevector if it isn't trivially destructible and don't loop in clear 2017-01-10 18:23:10 -05:00
Jeremy Rubin aaa02e7f24 Add prevector destructor benchmark 2017-01-10 18:23:00 -05:00
Alex Morcos 116419e58d Don't overwrite validation state with corruption check
AcceptToMemoryPool has several classes of return false statements.
- return state.Invalid or state.DoS directly itself
- return false and set fMissingInputs (state is valid)
- return false and state is set by failed CheckTransaction
- return false and state is set by failed CheckInputs.

This commit patches the last case where the state variable was reused for additional calls to CheckInputs to identify witness stripping as cause of validation failure.  After this commit, it should be the case that if !fMissingInputs, state is always Invalid if AcceptToMemoryPool returns false.
2017-01-10 16:53:10 -05:00
Suhas Daftuar fe7e593b24 Fix use-after-free in CTxMemPool::removeConflicts() 2017-01-10 15:21:21 -05:00
Matt Corallo 863edb45b9 Consider all (<100k memusage) txn for compact-block-extra-txn cache 2017-01-10 14:48:42 -05:00
Matt Corallo 7f8c8cab1e Consider all orphan txn for compact-block-extra-txn cache 2017-01-10 14:48:42 -05:00
Matt Corallo 93380c5247 Use replaced transactions in compact block reconstruction 2017-01-10 14:48:42 -05:00
Matt Corallo 1531652e02 Keep shared_ptrs to recently-replaced txn for compact blocks 2017-01-10 14:48:42 -05:00
Suhas Daftuar 766e8a40b4 [wallet] Add IsAllFromMe: true if all inputs are from wallet 2017-01-10 08:14:50 -05:00
Wladimir J. van der Laan 5754e0341b
Merge #8811: rpc: Add support for JSON-RPC named arguments
4e7e2e1 Update RPC argument names (John Newbery)
481f289 rpc: Named argument support for bitcoin-cli (Wladimir J. van der Laan)
9adb4e1 rpc: Argument name consistency (Wladimir J. van der Laan)
8d713f7 rpc: Named arguments for rawtransaction calls (Wladimir J. van der Laan)
37a166f rpc: Named arguments for wallet calls (Wladimir J. van der Laan)
78b684f rpc: Named arguments for mining calls (Wladimir J. van der Laan)
b8ebc59 rpc: Named arguments for net calls (Wladimir J. van der Laan)
2ca9dcd test: Add test for RPC named arguments (Wladimir J. van der Laan)
fba1a61 rpc: Named arguments for misc calls (Wladimir J. van der Laan)
286ec08 rpc: Add 'echo' call for testing (Wladimir J. van der Laan)
495eb44 rpc: Named arguments for blockchain calls (Wladimir J. van der Laan)
6f1c76a rpc: Support named arguments (Wladimir J. van der Laan)
5865d41 authproxy: Add support for RPC named arguments (Wladimir J. van der Laan)
2017-01-10 14:14:50 +01:00
Russell Yanofsky afffeea7d9 fixup! Add pruneblockchain RPC to enable manual block file pruning.
Extend pruneblockchain RPC to accept block timestamps as well as block indices.
2017-01-10 08:14:50 -05:00
mrbandrews 1fc4ec7bf2 Add pruneblockchain RPC to enable manual block file pruning. 2017-01-10 08:14:50 -05:00
Wladimir J. van der Laan 68eb56203b
qt: periodic translations update 2017-01-10 12:52:02 +01:00
John Newbery 4e7e2e16e4 Update RPC argument names 2017-01-10 12:04:54 +01:00
Wladimir J. van der Laan 481f289765 rpc: Named argument support for bitcoin-cli
Usage e.g.:

    $ src/bitcoin-cli -testnet -named echo arg0="dfdf"
    [
    "dfdf"
    ]

Argument conversion also works, for arguments thus flagged in the table in
`src/rpc/client.cpp`.

    $ src/bitcoin-cli -testnet -named echojson arg0="[1,2,3]"
    [
      [
        1,
        2,
        3
      ]
    ]

Unknown parameter (detected server-side):

    $ src/bitcoin-cli -testnet -named getinfo arg0="dfdf"
    error code: -8
    error message:
    Unknown named parameter arg0
2017-01-10 12:04:54 +01:00
MarcoFalke 98c80e374b
Merge #9496: Rename lambda argument name to prevent shadowing
7df5e38 Rename lambda argument name to prevent shadowing. (Pavel Janík)
2017-01-10 10:14:22 +01:00
Andrew Chow 6d8fe35b94 'help' rpc commands autocomplete
Adds autocompletion of the commands for when getting the help of a command by using `help <command>`
2017-01-09 21:23:16 -05:00
John Newbery 0c50909347 testcases: explicitly specify transaction version 1 2017-01-09 16:42:45 -05:00
Matt Corallo edded808fc Make ATMP optionally return the CTransactionRefs it replaced 2017-01-09 14:15:18 -05:00
Matt Corallo c735540428 Move ORPHAN constants from validation.h to net_processing.h 2017-01-09 14:15:18 -05:00
Jeremy Rubin 9f03110f32 Add Basic CheckQueue Benchmark 2017-01-09 14:07:02 -05:00
Pavel Janík 7df5e382e5 Rename lambda argument name to prevent shadowing. 2017-01-09 19:31:19 +01:00
Pieter Wuille 07fd147b9f
Merge #9353: Add data() method to CDataStream (and use it)
5113474 wallet: Use CDataStream.data() (Wladimir J. van der Laan)
e2300ff bench: Use CDataStream.data() (Wladimir J. van der Laan)
adff950 dbwrapper: Use new .data() method of CDataStream (Wladimir J. van der Laan)
a2141e4 streams: Remove special cases for ancient MSVC (Wladimir J. van der Laan)
af4c44c streams: Add data() method to CDataStream (Wladimir J. van der Laan)
2017-01-09 08:47:47 -08:00
Pieter Wuille 12e3112794
Merge #9404: Smarter coordination of change and fee in CreateTransaction.
20449ef Don't overpay fee if we have selected new coins that result in a smaller transaction. (Alex Morcos)
42f5ce4 Try to reduce change output to make needed fee in CreateTransaction (Alex Morcos)
2017-01-09 08:37:35 -08:00
Pieter Wuille 8c87f175d3
Merge #9310: Assert FRESH validity in CCoinsViewCache::BatchWrite
dd44ea3 Check FRESH validity in CCoinsViewCache::BatchWrite (Russell Yanofsky)
2017-01-09 08:01:08 -08:00
Matt Corallo e6111b2398 Make peer id logging consistent ("peer=%d" instead of "peer %d") 2017-01-07 16:19:34 -05:00
Douglas Roark cc0589639c
Remove stray semicolon (Fix empty body warning)
Empty body introduced by commit #9319 should not be empty.
2017-01-07 09:49:14 -08:00
Pieter Wuille 46b249e578
Merge #9408: Allow shutdown during LoadMempool, dump only when necessary
325e400 [Qt] Do proper shutdown (Jonas Schnelli)
9479f8d Allow shutdown during LoadMempool, dump only when necessary (Jonas Schnelli)
2017-01-06 09:37:43 -08:00
Pieter Wuille a55716abe5
Merge #9319: Break addnode out from the outbound connection limits.
032ba3f RPC help documentation for addnode peerinfo. (Gregory Maxwell)
90f13e1 Add release notes for addnode changes. (Gregory Maxwell)
50bd12c Break addnode out from the outbound connection limits. (Gregory Maxwell)
2017-01-06 08:37:47 -08:00
Alex Morcos 20449ef09e Don't overpay fee if we have selected new coins that result in a smaller transaction.
On repeated calls to SelectCoins we try to meet the fee necessary for the last transaction, the new fee required might be smaller, so increase our change by the difference if we can.
2017-01-06 10:18:56 -05:00
Alex Morcos 42f5ce4093 Try to reduce change output to make needed fee in CreateTransaction
Once we've picked coins and dummy-signed the transaction to calculate fee, if we don't have sufficient fee, then try to meet the fee by reducing change before resorting to picking new coins.
2017-01-06 10:12:05 -05:00
Jonas Schnelli c5adf8f267
[Qt] Show more significant warning if we fall back to the default fee 2017-01-06 10:49:49 +01:00
Pieter Wuille f646275b90
Merge #9138: Improve fee estimation
44b64b9 Fix edge case with stale fee estimates (Alex Morcos)
78ae62d Add clarifying comments to fee estimation (Alex Morcos)
5fe0f47 Add extra logging to processBlock in fee estimation. (Alex Morcos)
dc008c4 Add IsCurrentForFeeEstimatation (Alex Morcos)
ebafdca Pass pointers to existing CTxMemPoolEntries to fee estimation (Alex Morcos)
d825838 Always update fee estimates on new blocks. (Alex Morcos)
6f06b26 rename bool to validFeeEstimate (Alex Morcos)
84f7ab0 Remove member variable hadNoDependencies from CTxMemPoolEntry (Alex Morcos)
60ac00d Don't track transactions at all during IBD. (Alex Morcos)
4df4479 Remove extraneous LogPrint from fee estimation (Alex Morcos)
2017-01-05 14:22:19 -08:00
Pieter Wuille c252685aa5
Merge #8610: Share unused mempool memory with coincache
ba3cecf Share unused mempool memory with coincache (Pieter Wuille)
2017-01-05 13:52:24 -08:00
Pieter Wuille a7d55c9338
Merge #9465: [Wallet] Do not perform ECDSA signing in the fee calculation inner loop.
b3d7b1c Wallet: Do not perform ECDSA in the fee calculation inner loop. (Gregory Maxwell)
2017-01-05 13:37:03 -08:00
Matt Corallo c1ae4fcf7d Avoid holding cs_most_recent_block while calling ReadBlockFromDisk 2017-01-05 15:16:34 -05:00
Jonas Schnelli fd7d8c7b35
Merge #9413: [CoinControl] Allow non-wallet owned change addresses
54f8026 [CoinControl] Allow non-wallet owned change addresses (Jonas Schnelli)
2017-01-05 21:00:06 +01:00
Wladimir J. van der Laan a72f76ca3d
Merge #9312: Increase mempool expiry time to 2 weeks
5f0e27f Increase mempool expiry time to 2 weeks (Alex Morcos)
2017-01-05 20:32:57 +01:00
Gregory Maxwell 032ba3f066 RPC help documentation for addnode peerinfo.
Also adds a comment about the netgroup exclusion behavior.
2017-01-05 19:02:15 +00:00
Gregory Maxwell 50bd12ce0c Break addnode out from the outbound connection limits.
Previously addnodes were in competition with outbound connections
 for access to the eight outbound slots.

One result of this is that frequently a node with several addnode
 configured peers would end up connected to none of them, because
 while the addnode loop was in its two minute sleep the automatic
 connection logic would fill any free slots with random peers.
 This is particularly unwelcome to users trying to maintain links
 to specific nodes for fast block relay or purposes.

Another result is that a group of nine or more nodes which are
 have addnode configured towards each other can become partitioned
 from the public network.

This commit introduces a new limit of eight connections just for
 addnode peers which is not subject to any of the other connection
 limitations (including maxconnections).

The choice of eight is sufficient so that under no condition would
 a user find themselves connected to fewer addnoded peers than
 previously.  It is also low enough that users who are confused
 about the significance of more connections and have gotten too
 copy-and-paste happy will not consume more than twice the slot
 usage of a typical user.

Any additional load on the network resulting from this will likely
 be offset by a reduction in users applying even more wasteful
 workaround for the prior behavior.

The retry delays are reduced to avoid nodes sitting around without
 their added peers up, but are still sufficient to prevent overly
 aggressive repeated connections.  The reduced delays also make
 the system much more responsive to the addnode RPC.

Ban-disconnects are also exempted for peers added via addnode since
 the outbound addnode logic ignores bans.  Previously it would ban
 an addnode then immediately reconnect to it.

A minor change was also made to CSemaphoreGrant so that it is
 possible to re-acquire via an object whos grant was moved.
2017-01-05 19:02:09 +00:00
Gregory Maxwell b3d7b1cbe7 Wallet: Do not perform ECDSA in the fee calculation inner loop.
Performing signing in the inner loop has terrible performance
 when many passes through are needed to complete the selection.

Signing before the algorithm is complete also gets in the way
 of correctly setting the fee (e.g. preventing over-payment when
 the fee required goes down on the final selection.)

Use of the dummy might overpay on the signatures by a couple bytes
 in uncommon cases where the signatures' DER encoding is smaller
 than the dummy: Who cares?
2017-01-05 18:15:01 +00:00
Matt Corallo 9eb67f5000 Ensure we meet the BIP 152 old-relay-types response requirements
In order to do this, we must call ActivateBestChain prior to
responding getdata requests for blocks which we announced using
compact blocks.

For getheaders responses we dont need code changes, but do note
that we must reset the bestHeaderSent so that the SendMessages call
re-announces the header in question.

While we could do something smarter for getblocks, calling
ActivateBestChain is simple and more obviously correct, instead of
doing something more similar to getheaders.

See-also the BIP clarifications at
https://github.com/bitcoin/bips/pull/486
2017-01-05 10:32:07 -05:00
Matt Corallo 5749a853b9 Cache most-recently-connected compact block 2017-01-05 10:32:07 -05:00
Matt Corallo 9eaec08dd2 Cache most-recently-announced block's shared_ptr 2017-01-05 10:32:07 -05:00
Matt Corallo c802092142 Relay compact block messages prior to full block connection 2017-01-05 10:32:07 -05:00
Matt Corallo 6987219577 Add a CValidationInterface::NewPoWValidBlock callback 2017-01-05 10:32:07 -05:00
Jonas Schnelli 325e400f9b
[Qt] Do proper shutdown 2017-01-05 12:40:10 +01:00
Wladimir J. van der Laan ce43630d1e
Merge #8747: [rpc] Fix transaction size comments and RPC help text.
d29505d Fix transaction size comments. Size now refers to virtual size as defined in BIP141. (jonnynewbs)
2017-01-05 12:06:42 +01:00
MarcoFalke 4cfd57d2e3
Merge #9281: Refactor: Remove using namespace <xxx> from bench/ & test/ sources
73f4119 Refactoring: Removed using namespace <xxx> from bench/ and test/ source files. (Karl-Johan Alm)
2017-01-05 11:32:05 +01:00
Wladimir J. van der Laan 9adb4e1a59 rpc: Argument name consistency
The meaning is clear from the context, and we're inconsistent here.
Also save typing when using named arguments.

- `bitcoinaddress` -> `address`
- `bitcoinprivkey` -> `privkey`
- `bitcoinpubkey` -> `pubkey`
2017-01-05 11:30:20 +01:00
Wladimir J. van der Laan 8d713f761b rpc: Named arguments for rawtransaction calls 2017-01-05 11:30:20 +01:00
Wladimir J. van der Laan 37a166f146 rpc: Named arguments for wallet calls 2017-01-05 11:30:20 +01:00
Wladimir J. van der Laan 78b684f2ac rpc: Named arguments for mining calls 2017-01-05 11:30:20 +01:00
Wladimir J. van der Laan b8ebc595bb rpc: Named arguments for net calls
Also add a more descriptive message for `setnetworkactive`.
2017-01-05 11:30:20 +01:00
Wladimir J. van der Laan fba1a6150c rpc: Named arguments for misc calls 2017-01-05 11:30:20 +01:00
Wladimir J. van der Laan 286ec08cb0 rpc: Add 'echo' call for testing
This hidden call simply returns what is passed in.
2017-01-05 11:30:20 +01:00
Wladimir J. van der Laan 495eb44a4f rpc: Named arguments for blockchain calls 2017-01-05 11:30:20 +01:00
Wladimir J. van der Laan 6f1c76ae14 rpc: Support named arguments
The [JSON-RPC specification](http://www.jsonrpc.org/specification) allows passing parameters as an Array, for by-position
arguments, or an Object, for by-name arguments.

This implements by-name arguments, but preserves full backwards compatibility. API using by-name arguments are
easier to extend, and easier to use (no need to guess which argument goes where).

Named are mapped to positions by a per-call structure, provided through the RPC command table.

Missing arguments will be replaced by null, except if at the end, then the argument is left out completely.

Currently calls fail (though not crash) on intermediate nulls, but this should be improved on a per-call basis later.
2017-01-05 11:30:20 +01:00
Wladimir J. van der Laan cfe41d7a60
Merge #9387: [Refactor] RAII of libevent stuff using unique ptrs with deleters
05a55a6 Added EVENT_CFLAGS to test makefile to explicitly include libevent headers. (Karl-Johan Alm)
280a559 Added some simple tests for the RAII-style events. (Karl-Johan Alm)
7f7f102 Switched bitcoin-cli.cpp to use RAII unique pointers with deleters. (Karl-Johan Alm)
e5534d2 Added std::unique_ptr<> wrappers with deleters for libevent modules. (Karl-Johan Alm)
2017-01-05 11:11:17 +01:00
Wladimir J. van der Laan c4b7d4f79c
Merge #9417: Do not evaluate hidden LogPrint arguments
407cdd6 Do not evaluate hidden LogPrint arguments (Pieter Wuille)
2017-01-05 10:49:00 +01:00
Wladimir J. van der Laan 48d7e0d5e4
Merge #9474: Mark the minconf parameter to move as ignored
ce370c1 Mark the minconf parameter to move as ignored (Pieter Wuille)
2017-01-05 10:29:26 +01:00
Wladimir J. van der Laan 7014506415
Merge #9475: Let autoconf detect presence of EVP_MD_CTX_new
0388afe Let autoconf detect presence of EVP_MD_CTX_new (Luke Dashjr)
2017-01-05 10:28:47 +01:00
Pieter Wuille 6dd81169fc Remove SIGCHECK_VERIFICATION_FACTOR 2017-01-04 13:18:49 -08:00
Pieter Wuille 3641141c8f Move tx estimation data out of CCheckPointData 2017-01-04 13:18:49 -08:00
Pieter Wuille a4bac66cca [MOVEONLY] Move progress estimation out of checkpoints 2017-01-04 13:18:49 -08:00
Matt Corallo 180586fd44 Call AcceptBlock with the block's shared_ptr instead of CBlock& 2017-01-04 15:56:08 -05:00
Matt Corallo 80175472d1 Make CBlockIndex*es in net_processing const 2017-01-04 15:56:08 -05:00
Russell Yanofsky dd44ea39bb Check FRESH validity in CCoinsViewCache::BatchWrite 2017-01-04 14:56:17 -05:00
Pieter Wuille 7dac1e5e9e
Merge #9107: Safer modify new coins
b50cd7a Fix dangerous condition in ModifyNewCoins. (Alex Morcos)
2017-01-04 11:56:17 -08:00
Luke Dashjr 0388afe69d Let autoconf detect presence of EVP_MD_CTX_new
Fixes LibreSSL compatibility
2017-01-04 18:37:37 +00:00
Alex Morcos daec955fd6 Introduce -blockmintxfee 2017-01-04 13:24:19 -05:00
Alex Morcos 44b64b933d Fix edge case with stale fee estimates 2017-01-04 12:10:18 -05:00
Alex Morcos 78ae62d264 Add clarifying comments to fee estimation 2017-01-04 12:10:18 -05:00
Alex Morcos 5fe0f47aa7 Add extra logging to processBlock in fee estimation. 2017-01-04 12:10:18 -05:00
Alex Morcos dc008c462f Add IsCurrentForFeeEstimatation
Make a more conservative notion of whether the node is caught up to the rest of the network and only count transactions as fee estimation data points if the node is caught up.
2017-01-04 12:10:17 -05:00
Alex Morcos ebafdcabb1 Pass pointers to existing CTxMemPoolEntries to fee estimation 2017-01-04 12:09:34 -05:00
Alex Morcos d825838e64 Always update fee estimates on new blocks.
All decisions about whether the transactions are valid data points are made at the time the transaction arrives. Updating on blocks all the time will now cause stale fee estimates to decay quickly when we restart a node.
2017-01-04 12:09:34 -05:00
Alex Morcos 6f06b268c1 rename bool to validFeeEstimate 2017-01-04 12:09:33 -05:00
Alex Morcos 84f7ab08d2 Remove member variable hadNoDependencies from CTxMemPoolEntry
Fee estimation can just check its own mapMemPoolTxs to determine the same information.  Note that now fee estimation for block processing must happen before those transactions are removed, but this shoudl be a speedup.
2017-01-04 12:09:33 -05:00
Alex Morcos 60ac00de85 Don't track transactions at all during IBD.
This was an oversight, where blocks and mempool tracking were ignored during IBD, but transactions that arrived during IBD but were included in blocks after IBD were not ignored.
2017-01-04 12:05:05 -05:00
Alex Morcos 4df44794c9 Remove extraneous LogPrint from fee estimation
Once priority estimation was removed, not all transactions in the mempool are tracked in the fee estimation mempool tracking.  So there is no error if a transaction is not found for removal.
2017-01-04 12:03:44 -05:00
Pieter Wuille ce370c1811 Mark the minconf parameter to move as ignored 2017-01-04 08:48:21 -08:00
Alex Morcos b50cd7a67e Fix dangerous condition in ModifyNewCoins.
We were marking coins FRESH before being sure they were not overwriting dirty undo data. This condition was never reached in existing code because undo data was always flushed before UpdateCoins was called with new transactions, but could have been exposed in an otherwise safe refactor.
Clarify in the comments the assumptions made in ModifyNewCoins.
Add ability to undo transactions to UpdateCoins unit test.
Thanks to Russ Yanofsky for suggestion on how to make logic clearer and fixing up the ccoins_modify_new test cases.
2017-01-04 11:20:42 -05:00
Wladimir J. van der Laan 123ea73624
Merge #9457: [qt] Select more files for translation
facf3e7 [qt] `make translate` (MarcoFalke)
fae26e8 [qt] Add more sources to translate (MarcoFalke)
2017-01-04 16:41:29 +01:00
Cory Fields 56212e20ac net: set message deserialization version when it's actually time to deserialize
We'll soon no longer have access to vRecvMsg, and this is more intuitive anyway.
2017-01-04 10:10:35 -05:00
Cory Fields 0e973d970a net: remove redundant max sendbuffer size check
This is left-over from before there was proper accounting. Hitting 2x the
sendbuffer size should not be possible.
2017-01-04 10:10:35 -05:00
Cory Fields 60425870d7 net: wait until the node is destroyed to delete its recv buffer
when vRecvMsg becomes a private buffer, it won't make sense to allow other
threads to mess with it anymore.
2017-01-04 09:29:14 -05:00
Cory Fields f6315e07f9 net: only disconnect if fDisconnect has been set
These conditions are problematic to check without locking, and we shouldn't be
relying on the refcount to disconnect.
2017-01-04 09:29:14 -05:00
Cory Fields 5b4a8ac6d6 net: make GetReceiveFloodSize public
This will be needed so that the message processor can cork incoming messages
2017-01-04 09:29:14 -05:00
Cory Fields e5bcd9c84f net: make vRecvMsg a list so that we can use splice() 2017-01-04 09:29:14 -05:00
Cory Fields 53ad9a133a net: fix typo causing the wrong receive buffer size
Surprisingly this hasn't been causing me any issues while testing, probably
because it requires lots of large blocks to be flying around.

Send/Recv corks need tests!
2017-01-04 09:29:14 -05:00
MarcoFalke df1ab5b4d6
Merge #9470: qt: Set (count) placeholder in sendcoinsdialog to notranslate
388ea19 qt: Set (count) placeholder in sendcoinsdialog to notranslate (Wladimir J. van der Laan)
2017-01-04 15:19:00 +01:00
Wladimir J. van der Laan 388ea19bf2 qt: Set (count) placeholder in sendcoinsdialog to notranslate 2017-01-04 14:37:53 +01:00
MarcoFalke c2ea1e6561
Merge #9401: Make rpcauth help message clearer, add example in example .conf
0513c70 Make rpcauth help message clearer, add example in example .conf (Gregory Sanders)
2017-01-04 13:00:12 +01:00
Wladimir J. van der Laan d65a13b773
Merge #9396: Updated listsinceblock rpc documentation
3f67972 updated listsinceblock rpc docs (accraze)
2017-01-04 12:47:56 +01:00
Wladimir J. van der Laan 1ce7ede2a9
Merge #9288: Fix a bug if the min fee is 0 for FeeFilterRounder
f8d43b8 Avoid rollingMinimumFeeRate never being able to decay below half (Alex Morcos)
eab8e1b fix a bug if the min fee is 0 for FeeFilterRounder (Alex Morcos)
2017-01-04 12:33:56 +01:00
Wladimir J. van der Laan 869781c51c
Merge #9283: A few more CTransactionRef optimizations
91335ba Remove unused MakeTransactionRef overloads (Pieter Wuille)
6713f0f Make FillBlock consume txn_available to avoid shared_ptr copies (Pieter Wuille)
62607d7 Convert COrphanTx to keep a CTransactionRef (Pieter Wuille)
c44e4c4 Make AcceptToMemoryPool take CTransactionRef (Pieter Wuille)
2017-01-04 12:23:10 +01:00
Wladimir J. van der Laan d9ae1cefa0
Merge #9289: net: drop boost::thread_group
67ee4ec net: misc header cleanups (Cory Fields)
8b3159e net: make proxy receives interruptible (Cory Fields)
5cb0fce net: remove thread_interrupted catch (Cory Fields)
d3d7056 net: make net processing interruptible (Cory Fields)
0985052 net: make net interruptible (Cory Fields)
799df91 net: add CThreadInterrupt and InterruptibleSleep (Cory Fields)
7325b15 net: a few small cleanups before replacing boost threads (Cory Fields)
2017-01-04 12:21:53 +01:00
MarcoFalke facf3e7608 [qt] make translate 2017-01-04 12:13:03 +01:00
MarcoFalke fae26e8dfc [qt] Add more sources to translate 2017-01-04 12:12:43 +01:00
Wladimir J. van der Laan c0ddd32bf6
Merge #9450: Increment MIT licence copyright header year on files modified in 2016
27765b6 Increment MIT Licence copyright header year on files modified in 2016 (isle2983)
2017-01-04 12:09:05 +01:00
Karl-Johan Alm 05a55a639b Added EVENT_CFLAGS to test makefile to explicitly include libevent headers. 2017-01-04 18:16:55 +09:00
Wladimir J. van der Laan 649cf5fe89
Merge #9462: [qt] Do not translate tilde character
fab6c5f [qt] Do not translate `~` (MarcoFalke)
2017-01-04 08:21:04 +01:00
Cory Fields 67ee4ec901 net: misc header cleanups 2017-01-03 17:56:21 -05:00
Cory Fields 8b3159ef0a net: make proxy receives interruptible 2017-01-03 17:56:21 -05:00
Cory Fields 5cb0fcee81 net: remove thread_interrupted catch
This is now a std::thread, so there's no hope of catching a boost interruption
point.
2017-01-03 17:56:21 -05:00
Cory Fields d3d7056d2a net: make net processing interruptible 2017-01-03 17:56:20 -05:00
Cory Fields 0985052319 net: make net interruptible
Also now that net threads are interruptible, switch them to use std
threads/binds/mutexes/condvars.
2017-01-03 17:53:09 -05:00
Cory Fields 799df9115f net: add CThreadInterrupt and InterruptibleSleep 2017-01-03 17:53:09 -05:00
Cory Fields 7325b15566 net: a few small cleanups before replacing boost threads
- Drop the interruption point directly after the pnode allocation. This would
    be leaky if hit.
- Rearrange thread creation so that the socket handler comes first
2017-01-03 17:53:09 -05:00
Pieter Wuille 2a524b8e8f
Merge #8776: Wallet refactoring leading up to multiwallet
5394b39 Wallet: Split main logic from InitLoadWallet into CreateWalletFromFile (Luke Dashjr)
fb0c934 Wallet: Let the interval-flushing thread figure out the filename (Luke Dashjr)
2017-01-03 14:11:11 -08:00
Pieter Wuille ce5c1f4aca
Merge #9252: Release cs_main before calling ProcessNewBlock, or processing headers (cmpctblock handling)
bd02bdd Release cs_main before processing cmpctblock as header (Suhas Daftuar)
680b0c0 Release cs_main before calling ProcessNewBlock (cmpctblock handling) (Suhas Daftuar)
2017-01-03 13:52:16 -08:00
MarcoFalke fab6c5f46b [qt] Do not translate ~ 2017-01-03 17:51:12 +01:00
Jonas Schnelli 6dc4c43d32
Merge #8877: Qt RPC console: history sensitive-data filter, and saving input line when browsing history
8562792 GUI/RPCConsole: Include importmulti in history sensitive-command filter (Luke Dashjr)
ff77faf Qt/RPCConsole: Use RPCParseCommandLine to perform command filtering (Luke Dashjr)
a79598d Qt/Test: Make sure filtering sensitive data works correctly in nested commands (Luke Dashjr)
629cd42 Qt/RPCConsole: Teach RPCParseCommandLine how to filter out arguments to sensitive commands (Luke Dashjr)
e2d9213 Qt/RPCConsole: Make it possible to parse a command without executing it (Luke Dashjr)
1755c04 Qt/RPCConsole: Truncate filtered commands to just the command name, rather than skip it entirely in history (Luke Dashjr)
d80a006 Qt/RPCConsole: Add signmessagewithprivkey to list of commands filtered from history (Luke Dashjr)
afde12f Qt/RPCConsole: Refactor command_may_contain_sensitive_data function out of RPCConsole::on_lineEdit_returnPressed (Luke Dashjr)
de8980d Bugfix: Do not add sensitive information to history for real (Luke Dashjr)
9044908 Qt/RPCConsole: Don't store commands with potentially sensitive information in the history (Jonas Schnelli)
fc95daa Qt/RPCConsole: Save current command entry when browsing history (Jonas Schnelli)
2017-01-03 16:57:21 +01:00
Wladimir J. van der Laan d45b21e2b3 qt: Fill in English numerusforms
minute/minutes block/blocks and so forth.
2017-01-03 15:03:37 +01:00
Wladimir J. van der Laan a9d6151802 qt,wallet: Fix a few typos in messages
As reported by [yahoe.001](https://www.transifex.com/user/profile/yahoe.001/).
2017-01-03 15:01:46 +01:00
Jonas Schnelli 510c0d9c79
Merge #9446: SetMerkleBranch: remove unused code, remove cs_main lock requirement
9e351c9 SetMerkleBranch: remove unused code, remove cs_main lock requirement (Jonas Schnelli)
2017-01-03 09:31:57 +01:00
Karl-Johan Alm 73f41190b9 Refactoring: Removed using namespace <xxx> from bench/ and test/ source files. 2017-01-02 20:35:23 +09:00
Wladimir J. van der Laan 1d2d67692c
qt: Set transifex slug to 0.14
Also perform update of source translations.
2017-01-02 09:36:03 +01:00
isle2983 27765b6403 Increment MIT Licence copyright header year on files modified in 2016
Edited via:

$ contrib/devtools/copyright_header.py update .
2016-12-31 11:01:21 -07:00
Gregory Sanders d4781ac6c2 Set peers as HB peers upon full block validation 2016-12-30 14:05:13 -05:00
Jonas Schnelli 9e351c9586
SetMerkleBranch: remove unused code, remove cs_main lock requirement 2016-12-30 10:37:13 +01:00
jnewbery b7e144bb73 Add test cases to test new bitcoin-tx functionality
This commit add testcases to test the following functions in bitcoin-tx:

- add a pay to non-standard script output
- add a P2SH output
- add a P2WSH output
- add a P2WSH wrapped in a P2SH output
- add a pay to pub key output
- add a P2WPKH output
- add a P2WPKH wrapped in a P2SH output
- add a bare multisig output
- add a multisig in P2SH output
- add a multisig in a P2WSH output
- add a multisig in a P2WSH wrapped in as P2SH output
2016-12-29 15:40:40 +00:00
jnewbery 61a153443e Add all transaction output types to bitcoin-tx.
This commit enhances bitcoin-tx so all remaining standard TXO types can be created:

- Pay to Pub Key
- Multi-sig
  - bare multi-sig
  - multi-sig in Pay To Script Hash
  - multi-sig in Pay to Witness Script Hash
  - multi-sig in Pay to Witness Script Hash, wrapped in P2SH
- Pay to Witness Pub Key Hash
  - Pay to Witness Pub Key Hash, wrapped in P2SH
- Pay to Witness Script Hash
  - Pay to Witness Script Hash, wrapped in P2SH
2016-12-29 15:40:40 +00:00
Stanislas Marion 1814b089fb add p2sh and segwit options to bitcoin-tx outscript command 2016-12-29 15:40:40 +00:00
Luke Dashjr 8562792095 GUI/RPCConsole: Include importmulti in history sensitive-command filter 2016-12-29 11:47:58 +00:00
Luke Dashjr ff77faf480 Qt/RPCConsole: Use RPCParseCommandLine to perform command filtering 2016-12-29 11:47:58 +00:00
Luke Dashjr a79598ddf4 Qt/Test: Make sure filtering sensitive data works correctly in nested commands 2016-12-29 11:46:26 +00:00
Luke Dashjr 629cd42364 Qt/RPCConsole: Teach RPCParseCommandLine how to filter out arguments to sensitive commands 2016-12-29 11:46:26 +00:00
Luke Dashjr e2d9213c32 Qt/RPCConsole: Make it possible to parse a command without executing it 2016-12-29 11:43:29 +00:00
Luke Dashjr 1755c04576 Qt/RPCConsole: Truncate filtered commands to just the command name, rather than skip it entirely in history 2016-12-29 11:43:29 +00:00
Luke Dashjr d80a00660f Qt/RPCConsole: Add signmessagewithprivkey to list of commands filtered from history 2016-12-29 11:43:29 +00:00
Luke Dashjr afde12f265 Qt/RPCConsole: Refactor command_may_contain_sensitive_data function out of RPCConsole::on_lineEdit_returnPressed 2016-12-29 11:43:29 +00:00
Luke Dashjr de8980df9d Bugfix: Do not add sensitive information to history for real
Original code was missing braces, and short-circuited before checking everything after importprivkey
2016-12-29 11:43:29 +00:00
Jonas Schnelli 9044908636 Qt/RPCConsole: Don't store commands with potentially sensitive information in the history
Filters importprivkey, signrawtransaction, walletpassphrase, walletpassphrasechange, and encryptwallet
2016-12-29 11:43:28 +00:00
Jonas Schnelli fc95daa97f Qt/RPCConsole: Save current command entry when browsing history
Shell-like, but doesn't store changed history commands until executing it.
2016-12-29 11:43:28 +00:00
MarcoFalke dce853ef76
Merge #9436: test: Include tx data in EXTRA_DIST
fa558be test: Include tx data in EXTRA_DIST (MarcoFalke)
2016-12-28 12:58:20 +01:00
Pieter Wuille 2db4cbcc43
Merge #9349: Make CScript (and prevector) c++11 movable.
2ddfcfd Make CScript (and prevector) c++11 movable. (Pieter Wuille)
2016-12-27 11:04:14 -08:00
Pieter Wuille 7aa700424c
Merge #9243: Clean up mapArgs and mapMultiArgs Usage
c2f61be Add a ForceSetArg method for testing (Matt Corallo)
4e04814 Lock mapArgs/mapMultiArgs access in util (Matt Corallo)
4cd373a Un-expose mapArgs from utils.h (Matt Corallo)
71fde55 Get rid of mapArgs direct access in ZMQ construction (Matt Corallo)
0cf86a6 Introduce (and use) an IsArgSet accessor method (Matt Corallo)
2b5f085 Fix non-const mapMultiArgs[] access after init. (Matt Corallo)
c8042a4 Remove arguments to ParseConfigFile (Matt Corallo)
2016-12-27 10:17:11 -08:00
MarcoFalke fa558be2c1 test: Include tx data in EXTRA_DIST 2016-12-27 19:16:17 +01:00
MarcoFalke dbc8a8c86a
Merge #9435: Removed unused variable in test, fixing warning.
35356b4 Remove unused variable in test, fixing warning. (Russell Yanofsky)
2016-12-27 18:51:36 +01:00
Matt Corallo c2f61bebb1 Add a ForceSetArg method for testing 2016-12-27 13:52:07 +01:00
Russell Yanofsky 35356b40ef Remove unused variable in test, fixing warning.
Pointed out by Pavel Janík <Pavel@Janik.cz> in
https://github.com/bitcoin/bitcoin/pull/9308.
2016-12-27 07:35:39 -05:00
Suhas Daftuar bd02bddb93 Release cs_main before processing cmpctblock as header 2016-12-26 05:34:54 -05:00
Suhas Daftuar 680b0c0138 Release cs_main before calling ProcessNewBlock (cmpctblock handling) 2016-12-26 05:30:26 -05:00
Matt Corallo 4e048142a5 Lock mapArgs/mapMultiArgs access in util 2016-12-24 11:29:33 -05:00
Matt Corallo 4cd373aea8 Un-expose mapArgs from utils.h 2016-12-24 11:29:33 -05:00
Matt Corallo 71fde5563b Get rid of mapArgs direct access in ZMQ construction 2016-12-24 11:10:39 -05:00
Matt Corallo 0cf86a6678 Introduce (and use) an IsArgSet accessor method 2016-12-23 21:30:16 -05:00
Matt Corallo 2b5f085ad1 Fix non-const mapMultiArgs[] access after init.
Swap mapMultiArgs for a const-reference to a _mapMultiArgs which is
only accessed in util.cpp
2016-12-23 21:30:15 -05:00
Matt Corallo c8042a48f0 Remove arguments to ParseConfigFile 2016-12-23 21:30:15 -05:00
Pieter Wuille 407cdd6cb8 Do not evaluate hidden LogPrint arguments 2016-12-23 14:22:46 -08:00
Jonas Schnelli 54f80263fc
[CoinControl] Allow non-wallet owned change addresses 2016-12-23 16:07:37 +01:00
Jonas Schnelli 9479f8dfcf
Allow shutdown during LoadMempool, dump only when necessary 2016-12-23 14:19:38 +01:00
MarcoFalke 0f921e6a04
Merge #9406: Re-enable a blank v1 Tx JSON test
b371732 Re-enable a blank v1 Tx JSON test (Douglas Roark)
2016-12-23 12:07:16 +01:00
Pieter Wuille ba3cecf5c4 Share unused mempool memory with coincache
If the mempool is not completely full, treat the difference between
the maximum size and the actual usage as available for the coin cache.

This also changes the early flush trigger from (usage > 0.9 * space)
to (usage > 0.9 * space && usage > space - 100MB). This means we're not
permanently leaving 10% of the space unused when the space is large.
2016-12-22 15:04:05 -08:00
accraze 3f67972654 updated listsinceblock rpc docs
fixes #8758
2016-12-22 09:28:03 -08:00
Anditto Heristyo afe5b3f553 Added missing colons in when running help command 2016-12-22 13:26:03 +09:00
Pieter Wuille 2ddfcfd2d6 Make CScript (and prevector) c++11 movable.
Such moves are used when reallocating vectors that contain them,
for example.
2016-12-21 18:28:33 -08:00
Pieter Wuille 91335ba389 Remove unused MakeTransactionRef overloads 2016-12-21 18:18:28 -08:00
Pieter Wuille 6713f0f142 Make FillBlock consume txn_available to avoid shared_ptr copies 2016-12-21 18:18:28 -08:00
Pieter Wuille 62607d796c Convert COrphanTx to keep a CTransactionRef 2016-12-21 18:18:28 -08:00
Pieter Wuille c44e4c467c Make AcceptToMemoryPool take CTransactionRef 2016-12-21 18:18:23 -08:00
Patrick Strateman d63ff6265b Make nWalletDBUpdated atomic to avoid a potential race. 2016-12-21 13:49:48 -08:00
Douglas Roark b3717326c1 Re-enable a blank v1 Tx JSON test 2016-12-21 13:41:47 -08:00
Gregory Sanders 0513c707aa Make rpcauth help message clearer, add example in example .conf 2016-12-21 09:39:45 -05:00
Wladimir J. van der Laan e8cfe1ee2d
Merge #8589: Inline CTxInWitness inside CTxIn
f6fb7ac Move CTxInWitness inside CTxIn (Pieter Wuille)
2016-12-21 14:04:06 +01:00
Wladimir J. van der Laan 0698639a38
Merge #9308: [test] Add CCoinsViewCache Access/Modify/Write tests
07df40b [test] Add CCoinsViewCache Access/Modify/Write tests (Russell Yanofsky)
2016-12-21 12:23:31 +01:00
Wladimir J. van der Laan 38e4887b46
Merge #8717: [WALLET] Addition of ImmatureCreditCached to MarkDirty()
a560378 [WALLET] Addition of ImmatureCreditCached to MarkDirty() (Spencer Lievens)
2016-12-21 11:30:03 +01:00
Wladimir J. van der Laan 03d85f6644
Merge #9393: build: Include cuckoocache header in Makefile
fa89581 build: Include cuckoocache header in Makefile (MarcoFalke)
2016-12-21 09:26:35 +01:00
Wladimir J. van der Laan 8dfe9fcb90
Merge #9376: Remove unused test files and references
9cb6624 Fix testfile reference (BtcDrak)
23208ac Remove unused test files and references (BtcDrak)
2016-12-21 09:26:11 +01:00
Karl-Johan Alm 280a5599eb Added some simple tests for the RAII-style events. 2016-12-21 16:49:21 +09:00
MarcoFalke fa89581860 build: Include cuckoocache header in Makefile 2016-12-21 01:34:54 +01:00
BtcDrak 9cb66248dc
Fix testfile reference 2016-12-20 19:49:02 +00:00
Wladimir J. van der Laan 5a70572049
Merge #9262: Prefer coins that have fewer ancestors, sanity check txn before ATMP
cee1612 reduce number of lookups in TransactionWithinChainLimit (Gregory Sanders)
af9bedb Test for fix of txn chaining in wallet (Gregory Sanders)
5882c09 CreateTransaction: Don't return success with too-many-ancestor txn (Gregory Sanders)
0b2294a SelectCoinsMinConf: Prefer coins with fewer ancestors (Gregory Sanders)
2016-12-20 13:27:08 +01:00
Karl-Johan Alm 7f7f102b8d Switched bitcoin-cli.cpp to use RAII unique pointers with deleters. 2016-12-20 20:48:55 +09:00
Karl-Johan Alm e5534d2f01 Added std::unique_ptr<> wrappers with deleters for libevent modules. 2016-12-20 20:45:08 +09:00
Wladimir J. van der Laan 3097ea40d7
Merge #9316: [wallet] Disable free transactions when relay is disabled
faf4ca8 [wallet] Disable free transactions when relay is disabled (MarcoFalke)
2016-12-20 11:29:59 +01:00
Gregory Sanders cee16123f5 reduce number of lookups in TransactionWithinChainLimit 2016-12-19 20:51:34 -05:00
Wladimir J. van der Laan 7f72568e6b
Merge #9236: Fix races for strMiscWarning and fLargeWork*Found, make QT runawayException use GetWarnings
749be01 Move GetWarnings() into its own file. (Gregory Maxwell)
e3ba0ef Eliminate data races for strMiscWarning and fLargeWork*Found. (Gregory Maxwell)
c63198f Make QT runawayException call GetWarnings instead of directly access strMiscWarning. (Gregory Maxwell)
2016-12-19 12:40:01 +01:00
Wladimir J. van der Laan a336d13a58
Merge #9311: Flush wallet after abandontransaction
0632939 Flush wallet after abandontransaction (Alex Morcos)
2016-12-19 09:43:54 +01:00
Wladimir J. van der Laan db45ad8516
Merge #9329: [Qt] Console: allow empty arguments
390bd14 [Qt] Console: don't allow empty arguments when using the comma-syntax (Jonas Schnelli)
6a32c0f Qt/Test: Check handling of empty arguments in RPC debug console (Luke Dashjr)
89c8d2c [Qt] Console: allow empty arguments (Jonas Schnelli)
2016-12-19 09:08:20 +01:00
Wladimir J. van der Laan a7f76512d9
Merge #9352: Attempt reconstruction from all compact block announcements
813ede9 [qa] Update compactblocks test for multi-peer reconstruction (Suhas Daftuar)
7017298 Allow compactblock reconstruction when block is in flight (Suhas Daftuar)
2016-12-19 08:52:42 +01:00
Wladimir J. van der Laan b416095371
Merge #9354: Make fuzzer actually test CTxOutCompressor
5dd626a Make fuzzer actually test CTxOutCompressor (Pieter Wuille)
2016-12-19 08:50:27 +01:00
BtcDrak 23208ac81b
Remove unused test files and references 2016-12-19 07:43:12 +00:00
Wladimir J. van der Laan 79da3979b7
Merge #9366: Fix: OSX QT compile: use built-in swap if available, or defer
815f414 Uses built-in byte swap if available (Apple) and if bswap_XX is undefined. (Karl-Johan Alm)
2016-12-19 08:29:52 +01:00
Karl-Johan Alm 815f4148b2 Uses built-in byte swap if available (Apple) and if bswap_XX is undefined.
Defers to pre-defined version if found (e.g. protobuf). For protobuf case, the definitions are identical and thus include order should not affect results.
2016-12-17 12:27:00 +09:00
Pieter Wuille b99a093afe
Merge #9346: Batch construct batches
ed58969 Batch construct batches (Pieter Wuille)
2016-12-16 12:32:33 -08:00
Wladimir J. van der Laan 8c7947e09f
Merge #9367: If we don't allow free txs, always send a fee filter (take 2)
fa16b8f If we don't allow free txs, always send a fee filter (take 2) (MarcoFalke)
2016-12-16 17:09:47 +01:00
MarcoFalke fa16b8fdba If we don't allow free txs, always send a fee filter (take 2) 2016-12-16 14:27:55 +01:00
Chris Stewart 988ce2ddef Adding 'amount' label to tx_valid/tx_invalid.json files 2016-12-15 19:04:56 -06:00
Russell Yanofsky 39c77b00e3 Add documentation for CWalletTx::fFromMe member. 2016-12-15 15:14:02 -05:00
Wladimir J. van der Laan c9e00591cd
Merge #9322: [qa] Don't set unknown rpcserialversion
fa615d3 [qa] Don't set unknown rpcserialversion (MarcoFalke)
80d073c Complain when unknown rpcserialversion is specified (Pieter Wuille)
2016-12-15 20:10:36 +01:00
Wladimir J. van der Laan 756374c522
Merge #9313: If we don't allow free txs, always send a fee filter
01fea7a If we don't allow free txs, always send a fee filter (Alex Morcos)
2016-12-15 19:45:54 +01:00
Pieter Wuille 5dd626a6d3 Make fuzzer actually test CTxOutCompressor 2016-12-15 09:18:31 -08:00
Suhas Daftuar 7017298eb2 Allow compactblock reconstruction when block is in flight 2016-12-15 11:47:04 -05:00
Wladimir J. van der Laan 5113474a91 wallet: Use CDataStream.data() 2016-12-15 17:34:59 +01:00
Wladimir J. van der Laan e2300ff65e bench: Use CDataStream.data() 2016-12-15 17:30:17 +01:00
Wladimir J. van der Laan adff950fae dbwrapper: Use new .data() method of CDataStream 2016-12-15 17:22:03 +01:00
Wladimir J. van der Laan a2141e415a streams: Remove special cases for ancient MSVC
Quite sure that we haven't supported MSVC 6.0 for ages (MSC_VER 1300 is
>= MSVC++ 7.0) but with the C++11 switch we can be sure.
2016-12-15 17:20:29 +01:00
Wladimir J. van der Laan af4c44ce59 streams: Add data() method to CDataStream
Analogous to c++11 vector data().
2016-12-15 17:15:34 +01:00
Wladimir J. van der Laan 1eef038b1b
Merge #7562: Bump transaction version default to 2
c5c92c4 Update python tests for default tx version=2 (BtcDrak)
dab207e Preserve tx version=1 for certain tests (BtcDrak)
c5d746a tiny test fix for mempool_tests (Alex Morcos)
1f0ca1a Bump default transaction version to 2 (BtcDrak)
2016-12-15 17:03:31 +01:00
Wladimir J. van der Laan 5bc209c73f
Merge #9172: Resurrect pstratem's "Simple fuzzing framework"
8b15434 doc: Add bare-bones documentation for fuzzing (Wladimir J. van der Laan)
a4153e2 Simple fuzzing framework (Patrick Strateman)
2016-12-15 16:57:06 +01:00
Patrick Strateman a4153e20ec Simple fuzzing framework 2016-12-15 13:29:03 +01:00
Pieter Wuille b83264d9c7
Merge #8895: Better SigCache Implementation
67dac4e Add unit tests for the CuckooCache (Jeremy Rubin)
c9e69fb Add CuckooCache implementation and replace the sigcache map_type with it (Jeremy Rubin)
2016-12-14 18:14:02 -08:00
Jeremy Rubin 67dac4e193 Add unit tests for the CuckooCache
SQUASHME: Update Tests for other SQUASHMEs
2016-12-14 16:02:22 -05:00
Jeremy Rubin c9e69fbf39 Add CuckooCache implementation and replace the sigcache map_type with it
SQUASHME: Change cuckoocache to only work for powers of two, to avoid mod operator
SQUASHME: Update Documentation and simplify logarithm logic
SQUASHME: OSX Build Errors
SQUASHME: minor Feedback from sipa + bluematt
SQUASHME: DOCONLY: Clarify a few comments.
2016-12-14 16:02:05 -05:00
Russell Yanofsky a1fe9446e9 Remove reference to nonexistent "version" wallet transaction mapvalue field
This change removes a mapValue.erase("version") statement which deletes a
mapValue entry that never existed. The statement was mistakenly added in commit
865c3a2383 in 2010 and is harmless but confusing.
2016-12-14 05:41:36 -05:00
Wladimir J. van der Laan b68685a16a
Merge #9273: Remove unused CDiskBlockPos* argument from ProcessNewBlock
a13fa4c Remove unused CDiskBlockPos* argument from ProcessNewBlock (Matt Corallo)
2016-12-14 10:56:28 +01:00
Pieter Wuille 57e337d40e
Merge #9290: Make RelayWalletTransaction attempt to AcceptToMemoryPool.
f692fce Make RelayWalletTransaction attempt to AcceptToMemoryPool. (Gregory Maxwell)
2016-12-14 01:28:09 -08:00
Wladimir J. van der Laan 47e6a19e6b
Merge #9330: [Qt] Console: add security warning
ed6b377 [Qt] Console: add security warning (Jonas Schnelli)
2016-12-14 09:34:31 +01:00
Pieter Wuille ed5896976a Batch construct batches
Reuse the serialization buffers used for constructing the LevelDB
write batch. This avoids 2 allocations per utxo write.
2016-12-14 00:31:28 -08:00
Jonas Schnelli 390bd14684
[Qt] Console: don't allow empty arguments when using the comma-syntax 2016-12-14 09:00:09 +01:00
Gregory Maxwell da9cdd2c9c Do not run functions with necessary side-effects in assert() 2016-12-14 01:50:00 +00:00
Chris Moore 453bda63dd Add 'subtractFeeFromOutputs' option to 'fundrawtransaction'. 2016-12-13 13:36:23 -08:00
Gregory Sanders 5882c099d9 CreateTransaction: Don't return success with too-many-ancestor txn 2016-12-13 09:41:07 -05:00
Gregory Sanders 0b2294a980 SelectCoinsMinConf: Prefer coins with fewer ancestors 2016-12-13 09:41:04 -05:00
Wladimir J. van der Laan 26fe5c98ab
Merge #9326: Update for OpenSSL 1.1 API.
b05b1af Fix qt/paymentrequestplus.cpp for OpenSSL 1.1 API. (Gregory Maxwell)
bae1eef Fix wallet/test/crypto_tests.cpp for OpenSSL 1.1 API. (Gregory Maxwell)
2016-12-13 12:22:30 +01:00
Wladimir J. van der Laan 5233aefa3f
Merge #9305: Refactor: Removed begin/end_ptr functions.
8c1dbc5 Refactor: Removed begin/end_ptr functions. (Karl-Johan Alm)
2016-12-13 12:21:18 +01:00
Wladimir J. van der Laan cfd5e6b1dc
Merge #9334: Update to latest libsecp256k1
7b49f22 Squashed 'src/secp256k1/' changes from 7a49cac..8225239 (Pieter Wuille)
2016-12-13 12:16:47 +01:00
Wladimir J. van der Laan b6abdc77d3
Merge #9302: Return txid even if ATMP fails for new transaction
b3a7410 Return txid even if ATMP fails for new transaction (Pieter Wuille)
2016-12-13 12:15:27 +01:00
Luke Dashjr 6a32c0f69d
Qt/Test: Check handling of empty arguments in RPC debug console 2016-12-13 09:18:13 +01:00
Jonas Schnelli 89c8d2c12c
[Qt] Console: allow empty arguments 2016-12-13 09:17:35 +01:00
Richard Kiss e49a252bae Fix spelling. 2016-12-12 16:06:59 -05:00
Gregory Maxwell b05b1af10b Fix qt/paymentrequestplus.cpp for OpenSSL 1.1 API.
This avoids a compile failure on newly installed debian stretch systems.
2016-12-12 19:24:34 +00:00
Pieter Wuille 7b49f22bdb Squashed 'src/secp256k1/' changes from 7a49cac..8225239
8225239 Merge #433: Make the libcrypto detection fail the newer API.
12de863 Make the libcrypto detection fail the newer API.
2928420 Merge #427: Remove Schnorr from travis as well
8eecc4a Remove Schnorr from travis as well
a8abae7 Merge #310: Add exhaustive test for group functions on a low-order subgroup
b4ceedf Add exhaustive test for verification
83836a9 Add exhaustive tests for group arithmetic, signing, and ecmult on a small group
20b8877 Add exhaustive test for group functions on a low-order subgroup
80773a6 Merge #425: Remove Schnorr experiment
e06e878 Remove Schnorr experiment
04c8ef3 Merge #407: Modify parameter order of internal functions to match API parameter order
6e06696 Merge #411: Remove guarantees about memcmp-ability
40c8d7e Merge #421: Update scalar_4x64_impl.h
a922365 Merge #422: Restructure nonce clearing
3769783 Restructure nonce clearing
0f9e69d Restructure nonce clearing
9d67afa Update scalar_4x64_impl.h
7d15cd7 Merge #413: fix auto-enabled static precompuatation
00c5d2e fix auto-enabled static precompuatation
91219a1 Remove guarantees about memcmp-ability
353c1bf Fix secp256k1_ge_set_table_gej_var parameter order
541b783 Fix secp256k1_ge_set_all_gej_var parameter order
7d893f4 Fix secp256k1_fe_inv_all_var parameter order

git-subtree-dir: src/secp256k1
git-subtree-split: 8225239f490f79842a5a3b82ad6cc8aa11d5208e
2016-12-12 11:08:47 -08:00
Pieter Wuille 547a53d135 Update libsecp256k1 to master 2016-12-12 11:08:47 -08:00
Russell Yanofsky 654e0443fb [trivial] Add comment documenting CWalletTx::mapValue 2016-12-12 11:40:00 -05:00
Jonas Schnelli ed6b377ae2
[Qt] Console: add security warning 2016-12-12 15:58:40 +01:00
Gregory Maxwell bae1eef752 Fix wallet/test/crypto_tests.cpp for OpenSSL 1.1 API.
This avoids a compile failure on newly installed debian stretch systems.
2016-12-12 08:10:27 +00:00
MarcoFalke faf4ca84e4 [wallet] Disable free transactions when relay is disabled 2016-12-10 17:45:23 +01:00
Pieter Wuille a1dcf2e108
Merge #9240: Remove txConflicted
a874ab5 remove internal tracking of mempool conflicts for reporting to wallet (Alex Morcos)
bf663f8 remove external usage of mempool conflict tracking (Alex Morcos)
2016-12-09 16:31:03 -08:00
Pieter Wuille d38b0d7a6b
Merge #9307: Remove undefined FetchCoins method declaration
fe41f58 Remove undefined FetchCoins method declaration (Russell Yanofsky)
2016-12-09 16:21:28 -08:00
Pieter Wuille 815640ec6a
Merge #9295: [Wallet] Bugfix: Fundrawtransaction: don't terminate when keypool is empty
1a6eacb [QA] add fundrawtransaction test on a locked wallet with empty keypool (Jonas Schnelli)
c24a4f5 [Wallet] Bugfix: FRT: don't terminate when keypool is empty (Jonas Schnelli)
2016-12-09 16:14:54 -08:00
Alex Morcos 01fea7a048 If we don't allow free txs, always send a fee filter 2016-12-09 15:25:46 -05:00
Alex Morcos 5f0e27f1a8 Increase mempool expiry time to 2 weeks 2016-12-09 14:39:04 -05:00
Alex Morcos 06329393c7 Flush wallet after abandontransaction 2016-12-09 13:36:42 -05:00
Karl-Johan Alm 8c1dbc5e9d Refactor: Removed begin/end_ptr functions. 2016-12-09 13:15:19 +09:00
Pieter Wuille 760765d5a9 Update ctaes 2016-12-08 17:09:07 -08:00
Alex Morcos f8d43b8081 Avoid rollingMinimumFeeRate never being able to decay below half 2016-12-08 15:40:14 -05:00
Alex Morcos eab8e1b172 fix a bug if the min fee is 0 for FeeFilterRounder 2016-12-08 15:40:14 -05:00
BtcDrak c5c92c46fb
Update python tests for default tx version=2 2016-12-08 20:12:00 +00:00
BtcDrak dab207e4e6
Preserve tx version=1 for certain tests
Without this change, the tests would be affected by default
tx version increases.
2016-12-08 20:11:51 +00:00
Alex Morcos c5d746ace7
tiny test fix for mempool_tests 2016-12-08 20:11:39 +00:00
BtcDrak 1f0ca1ae1c
Bump default transaction version to 2 2016-12-08 20:11:27 +00:00
Pieter Wuille b3a74100b8 Return txid even if ATMP fails for new transaction 2016-12-08 11:55:32 -08:00
jonnynewbs d29505db22 Fix transaction size comments. Size now refers to virtual size as defined in BIP141. 2016-12-08 17:03:57 +00:00
Wladimir J. van der Laan 86017842d6
Merge #9291: Remove mapOrphanTransactionsByPrev from DoS_tests
819ca3f Remove mapOrphanTransactionsByPrev from DoS_tests (Pieter Wuille)
2016-12-08 08:38:15 +01:00
Wladimir J. van der Laan 9851a8461d
Merge #9255: qt: layoutAboutToChange signal is called layoutAboutToBeChanged
f36349e qt: Remove on_toggleNetworkActiveButton_clicked from RPCConsole (Wladimir J. van der Laan)
297cc20 qt: layoutAboutToChange signal is called layoutAboutToBeChanged (Wladimir J. van der Laan)
2016-12-08 08:14:16 +01:00
Wladimir J. van der Laan 2044e37beb
Merge #9266: Bugfix: Qt/RPCConsole: Put column enum in the right places
df17fe0 Bugfix: Qt/RPCConsole: Put column enum in the right places (Luke Dashjr)
2016-12-08 08:13:15 +01:00
Russell Yanofsky fe41f58365 Remove undefined FetchCoins method declaration 2016-12-07 15:41:56 -05:00
Alex Morcos b919179cbb remove no longer needed check for premature v2 txs 2016-12-07 09:58:20 -05:00
Wladimir J. van der Laan f36349e898 qt: Remove on_toggleNetworkActiveButton_clicked from RPCConsole
There is no network toggle button (anymore?) in the RPC console.
Removes another warning (#9250).
2016-12-07 05:55:16 +01:00
Pieter Wuille 09c4fd157c
Merge #9268: Fix rounding privacy leak introduced in #9260
9b9324e Fix rounding privacy leak introduced in #9260 (Matt Corallo)
2016-12-06 13:33:01 -08:00
Alex Morcos 28f8ae8adf Fix missed change to WalletTx structure 2016-12-06 08:56:12 -05:00
Jonas Schnelli c24a4f5981
[Wallet] Bugfix: FRT: don't terminate when keypool is empty 2016-12-06 13:45:56 +01:00
Jonas Schnelli e15660c16f
Merge #9280: [Qt] Show ModalOverlay by pressing the progress bar, allow hiding
89a3723 [Qt] Show ModalOverlay by pressing the progress bar, disabled show() in sync mode (Jonas Schnelli)
2016-12-06 13:03:33 +01:00
Gregory Maxwell f692fce8a4 Make RelayWalletTransaction attempt to AcceptToMemoryPool.
This resolves an issue where a wallet transaction which failed to
 relay previously because it couldn't make it into the mempool
 will not try again until restart, even though mempool conditions
 may have changed.

Abandoned and known-conflicted transactions are skipped.

Some concern was expressed that there may be users with many
 unknown conflicts would waste a lot of CPU time trying to
 add them to their memory pools over and over again.  But I am
 doubtful these users exist in any number, if they do exist
 they have worse problems, and they can mitigate any performance
 issue this might have by abandoning the transactions in question.
2016-12-06 08:01:27 +00:00
Pieter Wuille 80d073c9bc Complain when unknown rpcserialversion is specified 2016-12-05 23:26:32 -08:00
Pieter Wuille 819ca3f18e Remove mapOrphanTransactionsByPrev from DoS_tests
This is another violation of the one definition rule, as the type
for mapOrphanTransactionsByPrev did not match the one in
net_processing.cpp anymore. As it now depends on a custom Iterator,
it seems too much hassle to correctly expose it to the tests.
Instead, this commit just removes the one test it was referenced in.
2016-12-05 23:04:50 -08:00
Russell Yanofsky 07df40babb [test] Add CCoinsViewCache Access/Modify/Write tests
Add more comprehensive unit tests for CCoinsViewCache. Right now it is hard to
refactor caching code or fix bugs in the caching logic because you have to try
to mentally enumerate all the different states the cache might be in to make
sure a change doesn't cause unintended consequences. The new tests explicitly
enumerate relevant cache states, documenting and verifying the behavior in each
state, so it will be safer and easier to make changes to the caching code in
the future.
2016-12-05 18:30:46 -05:00
Alex Morcos a874ab5ccf remove internal tracking of mempool conflicts for reporting to wallet 2016-12-05 13:41:25 -05:00
Alex Morcos bf663f8e93 remove external usage of mempool conflict tracking 2016-12-05 13:41:25 -05:00
Jonas Schnelli 89a3723bdc
[Qt] Show ModalOverlay by pressing the progress bar, disabled show() in sync mode 2016-12-05 13:58:00 +01:00
instagibbs 412bab22b2 Adapt ZMQ/rest serialization to take rpcserialversion arg 2016-12-05 07:43:22 -05:00
Gregory Sanders bc7ff8db99 Add option to return non-segwit serialization via rpc 2016-12-05 07:43:22 -05:00
Wladimir J. van der Laan 7d5d44969b
Merge #9282: CMutableTransaction is defined as struct
c4b6fa8 CMutableTransaction is defined as struct. (Pavel Janík)
2016-12-05 12:55:03 +01:00
Wladimir J. van der Laan c01f16aaa0
Merge #9165: SendMoney: use already-calculated balance
ea83d00 SendMoney: use already-calculated balance (instagibbs)
2016-12-05 12:47:31 +01:00
Pavel Janík 9de90bb749 Do not shadow variables (gcc set) 2016-12-05 11:41:46 +01:00
Pavel Janík c4b6fa8edf CMutableTransaction is defined as struct. 2016-12-05 11:13:17 +01:00
Wladimir J. van der Laan 43e8150ef6
Merge #9269: Align struct COrphan definition
2efc438 Align struct COrphan definition (Pieter Wuille)
2016-12-05 11:09:26 +01:00
Wladimir J. van der Laan 613bda418f
Merge #8613: LevelDB 1.19
634ad51 Squashed 'src/leveldb/' changes from 20ca81f..a31c8aa (Pieter Wuille)
2016-12-05 10:58:36 +01:00
Pieter Wuille 2efc43874c Align struct COrphan definition 2016-12-05 00:35:07 -08:00
Pieter Wuille f6fb7acda4 Move CTxInWitness inside CTxIn 2016-12-04 23:47:12 -08:00
Wladimir J. van der Laan d04aebaec7
Merge #9014: Fix block-connection performance regression
dd0df81 Document ConnectBlock connectTrace postconditions (Matt Corallo)
2d6e561 Switch pblock in ProcessNewBlock to a shared_ptr (Matt Corallo)
2736c44 Make the optional pblock in ActivateBestChain a shared_ptr (Matt Corallo)
ae4db44 Create a shared_ptr for the block we're connecting in ActivateBCS (Matt Corallo)
fd9d890 Keep blocks as shared_ptrs, instead of copying txn in ConnectTip (Matt Corallo)
6fdd43b Add struct to track block-connect-time-generated info for callbacks (Matt Corallo)
2016-12-05 08:07:45 +01:00
Wladimir J. van der Laan 46904ee5d2
Merge #8580: Make CTransaction actually immutable
81e3228 Make CTransaction actually immutable (Pieter Wuille)
42fd8de Make DecodeHexTx return a CMutableTransaction (Pieter Wuille)
c3f5673 Make CWalletTx store a CTransactionRef instead of inheriting (Pieter Wuille)
a188353 Switch GetTransaction to returning a CTransactionRef (Pieter Wuille)
2016-12-05 08:05:48 +01:00
Jonas Schnelli 4d955fc582
Merge #9218: qt: Show progress overlay when clicking spinner icon
042f9fa qt: Show progress overlay when clicking spinner icon (Wladimir J. van der Laan)
827d9a3 qt: Replace NetworkToggleStatusBarControl with generic ClickableLabel (Wladimir J. van der Laan)
2016-12-04 20:57:57 +01:00
Matt Corallo a13fa4c80f Remove unused CDiskBlockPos* argument from ProcessNewBlock 2016-12-04 00:23:17 -08:00
Matt Corallo dd0df81ebd Document ConnectBlock connectTrace postconditions 2016-12-04 00:18:44 -08:00
Matt Corallo 2d6e5619af Switch pblock in ProcessNewBlock to a shared_ptr
This (finally) fixes a performance regression in
b3b3c2a562
2016-12-04 00:17:30 -08:00
Matt Corallo 2736c44c8e Make the optional pblock in ActivateBestChain a shared_ptr 2016-12-04 00:13:09 -08:00
Matt Corallo ae4db44d03 Create a shared_ptr for the block we're connecting in ActivateBCS 2016-12-04 00:13:09 -08:00
Matt Corallo fd9d89070a Keep blocks as shared_ptrs, instead of copying txn in ConnectTip 2016-12-04 00:13:09 -08:00
Matt Corallo 6fdd43b968 Add struct to track block-connect-time-generated info for callbacks 2016-12-04 00:13:09 -08:00
Alex Morcos dfbe0d530f Add unstored orphans with rejected parents to recentRejects 2016-12-03 08:38:20 -05:00
Gregory Maxwell 749be013f5 Move GetWarnings() into its own file. 2016-12-03 07:17:34 +00:00
Gregory Maxwell e3ba0ef956 Eliminate data races for strMiscWarning and fLargeWork*Found.
This moves all access to these datastructures through accessor functions
 and protects them with a lock.
2016-12-03 07:17:34 +00:00
Gregory Maxwell c63198f1c7 Make QT runawayException call GetWarnings instead of directly access strMiscWarning.
This is a first step in avoiding racy accesses to strMiscWarning.

The change required moving GetWarnings and related globals to util.
2016-12-03 07:17:28 +00:00
Matt Corallo 9b9324ee49 Fix rounding privacy leak introduced in #9260 2016-12-02 21:30:36 -08:00
Pieter Wuille 81e3228fcb Make CTransaction actually immutable 2016-12-02 18:37:43 -08:00
Pieter Wuille 42fd8dee30 Make DecodeHexTx return a CMutableTransaction 2016-12-02 18:28:22 -08:00
Pieter Wuille c3f5673a63 Make CWalletTx store a CTransactionRef instead of inheriting 2016-12-02 18:28:22 -08:00
Pieter Wuille a1883536b4 Switch GetTransaction to returning a CTransactionRef 2016-12-02 18:28:22 -08:00
Pieter Wuille 2efcfa5acf
Merge #9260: Mrs Peacock in The Library with The Candlestick (killed main.{h,cpp})
76faa3c Rename the remaining main.{h,cpp} to validation.{h,cpp} (Matt Corallo)
e736772 Move network-msg-processing code out of main to its own file (Matt Corallo)
87c35f5 Remove orphan state wipe from UnloadBlockIndex. (Matt Corallo)
2016-12-02 18:25:40 -08:00
MarcoFalke c36229b0b2
Merge #9251: Improvement of documentation of command line parameter 'whitelist'
8a70a9d Improvement of documentation of command line parameter 'whitelist' (wodry)
2016-12-02 20:34:06 +01:00
Matt Corallo 76faa3cdfe Rename the remaining main.{h,cpp} to validation.{h,cpp} 2016-12-02 09:42:51 -08:00
Matt Corallo e736772c56 Move network-msg-processing code out of main to its own file 2016-12-02 09:42:51 -08:00
MarcoFalke 5412c08c3c
Merge #9223: unification of Bloom filter representation
b7aa290 unification of Bloom filter representation (S. Matthew English)
2016-12-02 15:58:57 +01:00
Luke Dashjr df17fe046f Bugfix: Qt/RPCConsole: Put column enum in the right places
QModelIndex::data argument is a role, not a column
2016-12-02 13:51:14 +00:00
Wladimir J. van der Laan fe37fbe606 bitcoin-cli: Make error message less confusing
Sorry for the churn on this, but the current message (introduced in #9073)
isn't acceptable:

    $ src/bitcoin-cli getinfo
    rpc: couldn't connect to server
    (make sure server is running and you are connecting to the correct RPC port: -1 unknown)

Putting the error code after the words "RPC port" made me wonder whether
there was a port configuration issue.

This changes it to:

    $ src/bitcoin-cli getinfo
    error: couldn't connect to server: unknown (code -1)
    (make sure server is running and you are connecting to the correct RPC port)
2016-12-02 08:55:18 +01:00
Wladimir J. van der Laan 3fbf079262
Merge #9239: Disable fee estimates for 1 block target
e878689 Make GUI incapable of setting tx confirm target of 1 (Alex Morcos)
d824ad0 Disable fee estimates for a confirm target of 1 block (Alex Morcos)
2016-12-02 08:21:06 +01:00
Wladimir J. van der Laan c4d22f6eb2
Merge #9229: Remove calls to getaddrinfo_a
10ae7a7 Revert "Use async name resolving to improve net thread responsiveness" (Matt Corallo)
2016-12-02 05:48:45 +01:00
Pieter Wuille 605d701471 Merge in LevelDB 1.19 changes 2016-12-01 16:14:45 -08:00
Matt Corallo 87c35f5843 Remove orphan state wipe from UnloadBlockIndex.
As orphan state is now "network state", like in
d6ea737be1,

UnloadBlockIndex is only used during init if we end up reindexing
to clear our block state so that we can start over. However, at
that time no connections have been brought up as CConnman hasn't
been started yet, so all of the network processing state logic is
empty when its called.
2016-12-01 16:08:34 -08:00
Pieter Wuille dc6dee41f7
Merge #9183: Final Preparation for main.cpp Split
2c8c57e Document cs_main status when calling into PNB or PNBH (Matt Corallo)
58a215c Use ProcessNewBlockHeaders in CMPCTBLOCK processing (Matt Corallo)
a8b936d Use exposed ProcessNewBlockHeaders from ProcessMessages (Matt Corallo)
63fd101 Split ::HEADERS processing into two separate cs_main locks (Matt Corallo)
4a6b1f3 Expose AcceptBlockHeader through main.h (Matt Corallo)
2016-12-01 16:07:25 -08:00
Matt Corallo 10ae7a7b23 Revert "Use async name resolving to improve net thread responsiveness"
This reverts commit caf6150e97.

getaddrinfo_a has a nasty tendency to segfault internally in its
background thread, on every version of glibc I tested, especially
under helgrind.

See https://sourceware.org/bugzilla/show_bug.cgi?id=20874
2016-12-01 14:32:44 -08:00
Pieter Wuille ad826b3df9
Merge #9188: Make orphan parent fetching ask for witnesses.
5b0150a Make orphan parent fetching ask for witnesses. (Gregory Maxwell)
2016-12-01 13:34:49 -08:00
Pieter Wuille c1a5227684
Merge #9253: Fix calculation of number of bound sockets to use
9e1f468 Fix calculation of number of bound sockets to use (Matt Corallo)
2016-12-01 13:07:08 -08:00
Matt Corallo 2c8c57e72f Document cs_main status when calling into PNB or PNBH 2016-12-01 11:03:32 -08:00
Matt Corallo 58a215ce8c Use ProcessNewBlockHeaders in CMPCTBLOCK processing 2016-12-01 11:03:31 -08:00
Matt Corallo a8b936df20 Use exposed ProcessNewBlockHeaders from ProcessMessages 2016-12-01 11:03:31 -08:00
Wladimir J. van der Laan c79e52ad30
Merge #9230: Fix some benign races in timestamp logging
8b22efb Make fStartedNewLine an std::atomic_bool (Matt Corallo)
507145d Fix race when accessing std::locale::classic() (Matt Corallo)
2016-12-01 11:47:47 +01:00
Wladimir J. van der Laan 297cc20e70 qt: layoutAboutToChange signal is called layoutAboutToBeChanged
This was misnamed, resulting in a warning message and missing
functionality. I'm not sure what the change in behavior will be here,
this needs testing.

Also remove connection to non-existing slot "test".
This was used for testing if the signal arrived. It is no
longer necessary.

Fixes:

    2016-12-01 10:04:06 GUI: QObject::connect: No such signal PeerTableModel::layoutAboutToChange() in qt/rpcconsole.cpp:518
    2016-12-01 10:04:06 GUI: QObject::connect:  (receiver name: 'RPCConsole')
    2016-12-01 10:04:06 GUI: QObject::connect: No such slot RPCConsole::test() in qt/rpcconsole.cpp:781
    2016-12-01 10:04:06 GUI: QObject::connect:  (receiver name: 'RPCConsole')
2016-12-01 11:45:07 +01:00
Matt Corallo 9e1f46821d Fix calculation of number of bound sockets to use 2016-11-30 18:56:08 -08:00
Pieter Wuille 3bf06e9bac
Merge #9226: Remove fNetworkNode and pnodeLocalHost.
bdb922b Remove pnodeLocalHost. (Gregory Maxwell)
083f203 Remove fNetworkNode. (Gregory Maxwell)
2016-11-30 17:15:58 -08:00
Pieter Wuille 72ae6f8cf0
Merge #9244: Trivial refactor: Remove extern keyword from function declarations
446a8f9 Trivial refactor: Remove extern keyword from function declarations, as they are extern by default. (Karl-Johan Alm)
2016-11-30 16:15:20 -08:00
Pieter Wuille a143b88dbd
Merge #9010: Split up AppInit2 into multiple phases, daemonize after datadir lock errors
deec83f init: Get rid of fServer flag (Wladimir J. van der Laan)
16ca0bf init: Try to aquire datadir lock before and after daemonization (Wladimir J. van der Laan)
0cc8b6b init: Split up AppInit2 into multiple phases (Wladimir J. van der Laan)
2016-11-30 16:11:14 -08:00
wodry 8a70a9da3d Improvement of documentation of command line parameter 'whitelist' 2016-11-30 21:40:21 +01:00
Wladimir J. van der Laan 56bee4986d
Merge #9234: torcontrol: Explicitly request RSA1024 private key
7d3b627 torcontrol: Explicitly request RSA1024 private key (Wladimir J. van der Laan)
2016-11-30 12:45:16 +01:00
Karl-Johan Alm 446a8f9c90 Trivial refactor: Remove extern keyword from function declarations, as they are extern by default. 2016-11-30 10:27:21 +09:00
Alex Morcos e878689e55 Make GUI incapable of setting tx confirm target of 1 2016-11-29 12:49:03 -05:00
Alex Morcos d824ad030e Disable fee estimates for a confirm target of 1 block 2016-11-29 12:18:44 -05:00
Wladimir J. van der Laan deec83fd2c init: Get rid of fServer flag
There is no need to store this flag globally, the variable is only used
inside the initialization process.

Thanks to Alex Morcos for the idea.
2016-11-29 12:47:13 +01:00
Wladimir J. van der Laan 16ca0bfd28 init: Try to aquire datadir lock before and after daemonization
Before daemonization, just probe the data directory lock and print an
early error message if possible.

After daemonization get the data directory lock again and hold on to it until exit
This creates a slight window for a race condition to happen, however this condition is harmless: it
will at most make us exit without printing a message to console.

    $ src/bitcoind -testnet -daemon
    Bitcoin server starting
    $ src/bitcoind -testnet -daemon
    Error: Cannot obtain a lock on data directory /home/orion/.bitcoin/testnet3. Bitcoin Core is probably already running.
2016-11-29 12:47:13 +01:00
Wladimir J. van der Laan 0cc8b6bc44 init: Split up AppInit2 into multiple phases
This allows doing some of the steps before e.g. daemonization and some
fater.
2016-11-29 12:47:13 +01:00
Wladimir J. van der Laan e56cf67e6b
Merge #9202: bench: Add support for measuring CPU cycles
3532818 bench: Add support for measuring CPU cycles (Wladimir J. van der Laan)
2016-11-29 12:41:33 +01:00
Wladimir J. van der Laan 5488514b90
Merge #9225: Fix some benign races
dfed983 Fix unlocked access to vNodes.size() (Matt Corallo)
3033522 Remove double brackets in addrman (Matt Corallo)
dbfaade Fix AddrMan locking (Matt Corallo)
047ea10 Make fImporting an std::atomic (Matt Corallo)
42071ca Make fDisconnect an std::atomic (Matt Corallo)
2016-11-29 12:39:33 +01:00
Wladimir J. van der Laan 0a0441358c
Merge #9224: Prevent FD_SETSIZE error building on OpenBSD
498a1d7 Include select.h when WIN32 is not defined (Ivo van der Sangen)
2016-11-29 12:37:39 +01:00
Ivo van der Sangen 498a1d75e7 Include select.h when WIN32 is not defined 2016-11-29 12:35:41 +01:00
Wladimir J. van der Laan 7d3b627395 torcontrol: Explicitly request RSA1024 private key
When generating a new service key, explicitly request a RSA1024 one.

The bitcoin P2P protocol has no support for the longer hidden service names
that will come with ed25519 keys, until it does, we depend on the old
hidden service type so make this explicit.

See #9214.
2016-11-28 17:18:46 +01:00
fsb4000 15fa95d7e5 Fix some typos 2016-11-28 16:16:37 +07:00
Matt Corallo 8b22efb6f7 Make fStartedNewLine an std::atomic_bool
While this doesnt really fix the race of adding timestamps
mid-logical-line, it avoids the undefined behavior of using a
bool in multiple threads.
2016-11-27 15:36:44 -08:00
Matt Corallo 507145d785 Fix race when accessing std::locale::classic()
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78552
2016-11-27 15:36:44 -08:00
Gregory Maxwell bdb922b34c Remove pnodeLocalHost.
Mostly a legacy of the long removed pub/sub system.
2016-11-27 04:19:37 +00:00
Gregory Maxwell 083f203698 Remove fNetworkNode.
Matt pointed out to me that this appeared to be doing nothing (except involving itself in data races).
2016-11-27 04:13:54 +00:00
Matt Corallo dfed983f19 Fix unlocked access to vNodes.size() 2016-11-26 15:42:55 -08:00
Matt Corallo 303352286f Remove double brackets in addrman 2016-11-26 15:42:55 -08:00
Matt Corallo dbfaade72a Fix AddrMan locking 2016-11-26 15:42:55 -08:00
Matt Corallo 047ea1052d Make fImporting an std::atomic 2016-11-26 15:42:48 -08:00
S. Matthew English b7aa2902fd unification of Bloom filter representation
Output instances of "BloomFilter" changed to "Bloom filter", in accordance with Wikipedia standard notation: 

https://en.wikipedia.org/wiki/Bloom_filter

also to sync with the majority of cases in the self-same file
2016-11-26 14:57:19 +01:00
Matt Corallo 42071ca264 Make fDisconnect an std::atomic 2016-11-25 18:03:12 -08:00
Pieter Wuille 76fec09d87
Merge #9128: net: Decouple CConnman and message serialization
c7be56d net: push only raw data into CConnman (Cory Fields)
2ec935d net: add CVectorWriter and CNetMsgMaker (Cory Fields)
b7695c2 net: No need to check individually for disconnection anymore (Cory Fields)
fedea8a net: don't send any messages before handshake or after requested disconnect (Cory Fields)
d74e352 net: Set feelers to disconnect at the end of the version message (Cory Fields)
2016-11-25 11:18:23 -08:00
Cory Fields c7be56dcef net: push only raw data into CConnman
This fixes one of the last major layer violations in the networking stack.

The network side is no longer in charge of message serialization, so it is now
decoupled from Bitcoin structures. Only the header is serialized and attached
to the payload.
2016-11-25 12:37:33 -05:00
Cory Fields 2ec935dcaa net: add CVectorWriter and CNetMsgMaker
CVectorWriter is useful for overwriting or appending an existing byte vector.

CNetMsgMaker is a shortcut for creating messages on-the-fly which are suitable
for pushing to CConnman.
2016-11-25 12:09:58 -05:00
Cory Fields b7695c2275 net: No need to check individually for disconnection anymore 2016-11-25 12:09:58 -05:00
MarcoFalke e22f409f18
Merge #9220: Refactor: Stop using namespace std (bitcoin-cli/-tx).
2f2625a Removed using namespace std from bitcoin-cli/-tx and added std:: in appropriate places. (Karl-Johan Alm)
2016-11-25 11:35:53 +01:00
MarcoFalke 97ec6e5c90
Merge #9100: tx_valid: re-order inputs to how they are encoded
5262a15 tx_valid: re-order inputs to how they are encoded (Daniel Cousens)
2016-11-25 10:38:19 +01:00
Karl-Johan Alm 2f2625a0bb Removed using namespace std from bitcoin-cli/-tx and added std:: in appropriate places. 2016-11-25 17:17:57 +09:00
Wladimir J. van der Laan d932159f34
Merge #9189: Always add default_witness_commitment with GBT client support
95f4a03 [qa] Test getblocktemplate default_witness_commitment (Suhas Daftuar)
ad04d1c Always add default_witness_commitment with GBT client support (Pieter Wuille)
2016-11-25 08:26:25 +01:00
Wladimir J. van der Laan 042f9fa071 qt: Show progress overlay when clicking spinner icon
Bring up the modal progress overlay when the user clicks the spinner
icon in the task bar.

I think this is the intuitive thing to do when that icon is clicked.
2016-11-24 14:37:36 +01:00
Wladimir J. van der Laan 827d9a3be8 qt: Replace NetworkToggleStatusBarControl with generic ClickableLabel
Generalize the clickable label functionality.

We will use this to add similar functionality to the sync icon.
2016-11-24 14:35:03 +01:00
MarcoFalke bc121b0eb1
Merge #9216: Doc: Fix copypasted comment
f26da35 Fix copypasted comment. (Pavel Janík)
2016-11-24 14:00:34 +01:00
fanquake e3c4f7e182
Correct help output for waitfor RPC commands 2016-11-24 19:50:07 +08:00
Wladimir J. van der Laan db5e22e053
Merge #9190: qt: Plug many memory leaks
ed998ea qt: Avoid OpenSSL certstore-related memory leak (Wladimir J. van der Laan)
5204598 qt: Avoid shutdownwindow-related memory leak (Wladimir J. van der Laan)
e4f126a qt: Avoid splash-screen related memory leak (Wladimir J. van der Laan)
693384e qt: Prevent thread/memory leak on exiting RPCConsole (Wladimir J. van der Laan)
47db075 qt: Plug many memory leaks (Wladimir J. van der Laan)
2016-11-24 12:17:39 +01:00
Pavel Janík f26da35142 Fix copypasted comment. 2016-11-24 12:12:57 +01:00
Cory Fields fedea8a14d net: don't send any messages before handshake or after requested disconnect
Also, send reject messages earlier in SendMessages(), so that disconnections are
processed earlier.

These changes combined should ensure that no message is ever sent after
fDisconnect is set.
2016-11-23 19:53:28 -05:00
Cory Fields d74e352e01 net: Set feelers to disconnect at the end of the version message
This way we're not relying on messages going out after fDisconnect has been
set.

This should not cause any real behavioral changes, though feelers should
arguably disconnect earlier in the process. That can be addressed in a later
functional change.
2016-11-23 19:53:28 -05:00
Matt Corallo 63fd101c52 Split ::HEADERS processing into two separate cs_main locks
This will allow NotifyHeaderTip to be called from an
AcceptBlockHeader wrapper function without holding cs_main.
2016-11-23 16:29:38 -08:00
Matt Corallo 4a6b1f36b7 Expose AcceptBlockHeader through main.h 2016-11-23 16:29:38 -08:00
Pieter Wuille 93566e0c37
Merge #8930: Move orphan processing to ActivateBestChain
d2b88f9 Move orphan-conflict removal from main logic into a callback (Matt Corallo)
97e2802 Erase orphans per-transaction instead of per-block (Matt Corallo)
ec4525c Move orphan processing to ActivateBestChain (Matt Corallo)
2016-11-23 16:27:16 -08:00
Pieter Wuille 407d9232ef
Merge #9199: Always drop the least preferred HB peer when adding a new one.
ca8549d Always drop the least preferred HB peer when adding a new one. (Gregory Maxwell)
2016-11-23 16:14:21 -08:00
Matt Corallo d2b88f97a1 Move orphan-conflict removal from main logic into a callback
This makes the orphan map a part of net-processing logic instead
of main logic.
2016-11-23 12:29:26 -08:00
Wladimir J. van der Laan ed998ea7a0 qt: Avoid OpenSSL certstore-related memory leak
- Correctly manage the X509 and X509_STORE objects lifetime.
2016-11-23 12:33:37 +01:00
Wladimir J. van der Laan 5204598f8d qt: Avoid shutdownwindow-related memory leak
Store a reference to the shutdown window on BitcoinApplication,
so that it will be deleted when exiting the main loop.
2016-11-23 12:33:36 +01:00
Wladimir J. van der Laan e4f126a7ba qt: Avoid splash-screen related memory leak
Make splash screen queue its own deletion when it receives the finished
command, instead of relying on WA_DeleteOnClose which doesn't work under
these circumstances.
2016-11-23 12:33:36 +01:00
Wladimir J. van der Laan 693384eedb qt: Prevent thread/memory leak on exiting RPCConsole
Make ownership of the QThread object clear, so that the RPCConsole
can wait for the executor thread to quit before shutdown is called. This
increases overall thread safety, and prevents some objects from leaking
on exit.
2016-11-23 12:33:36 +01:00
Wladimir J. van der Laan 47db075377 qt: Plug many memory leaks
None of these are very serious, and are leaks in objects that are
created at most one time.

In most cases this means properly using the QObject parent hierarchy,
except for BanTablePriv/PeerTablePriv which are not QObject,
so use a std::unique_ptr instead.
2016-11-23 12:33:35 +01:00
Wladimir J. van der Laan 74ced54b7e
Merge #9204: Clarify CreateTransaction error messages
918b126 fix CreateTransaction error messages (instagibbs)
2016-11-23 08:42:06 +01:00
Wladimir J. van der Laan 5e8631b6cb
Merge #9205: Minor change to comment for consistency.
f004e67 Minor change to comment above new NODE_WITNESS service flag to keep it consitent with existing comment structure. Helps with readability. (Greg Walker)
2016-11-23 08:41:12 +01:00
Wladimir J. van der Laan 7e2bfd6241
Merge #9196: Send tip change notification from invalidateblock
67c6326 Send tip change notification from invalidateblock (Russell Yanofsky)
2016-11-23 08:40:20 +01:00
Wladimir J. van der Laan 791b58d148
Merge #8690: Do not fully sort all nodes for addr relay
a33b169 Do not fully sort all nodes for addr relay (Pieter Wuille)
2016-11-23 08:19:57 +01:00
Wladimir J. van der Laan 5ea5e0401c
Merge #9141: Remove unnecessary calls to CheckFinalTx
4512550 Remove unnecessary calls to CheckFinalTx (Jonas Schnelli)
2016-11-23 07:24:43 +01:00
Wladimir J. van der Laan 40022fe5f2
Merge #9142: Move -salvagewallet, -zap(wtx) to where they belong
2e44893 Move -salvagewallet, -zap(wtx) to where they belong (Jonas Schnelli)
2016-11-23 07:18:24 +01:00
Wladimir J. van der Laan 4d8558a287
Merge #9025: getrawtransaction should take a bool for verbose
240189b add testcases for getrawtransaction (John Newbery)
ce2bb23 getrawtransaction should take a bool for verbose (jnewbery)
2016-11-23 07:13:46 +01:00
Greg Walker f004e67df3 Minor change to comment above new NODE_WITNESS service flag to keep it consitent with existing comment structure. Helps with readability. 2016-11-22 18:59:20 +00:00
instagibbs 918b126901 fix CreateTransaction error messages 2016-11-22 13:40:57 -05:00
jnewbery ce2bb23aa5 getrawtransaction should take a bool for verbose 2016-11-22 14:37:33 +00:00
Jonas Schnelli ac489b2445
Merge #9130: Mention the new network toggle functionality in the tooltip.
1260c11 Mention the new network toggle functionality in the tooltip. (Pavel Janík)
2016-11-22 15:32:45 +01:00
Wladimir J. van der Laan 3532818746 bench: Add support for measuring CPU cycles
This adds cycle min/max/avg to the statistics.

Supported on x86 and x86_64 (natively through rdtsc), as well as Linux
(perf syscall).
2016-11-22 12:20:57 +01:00
Wladimir J. van der Laan e0a9cb25b0 bench: Fix subtle counting issue when rescaling iteration count
Make sure that the count is a zero modulo the new mask before
scaling, otherwise the next time until a measure triggers
will take only 1/2 as long as accounted for. This caused
the 'min time' to be potentially off by as much as 100%.
2016-11-22 10:01:41 +01:00
Jonas Schnelli e4dbeb9499
Merge #9185: [Qt] fix coincontrol sort issue
4231032 [Qt] Clean up and fix coincontrol tree widget handling (Wladimir J. van der Laan)
76af4eb [Qt] fix coincontrol sort issue (Jonas Schnelli)
2016-11-22 08:30:58 +01:00
Gregory Maxwell ca8549d2bd Always drop the least preferred HB peer when adding a new one.
When a BIP152 HB-mode peer is in the least preferred position and
 disconnects, they will not be by ForNode on the next loop. They
 will continue to sit in that position and prevent deactivating
 HB mode for peers that are still connected.

There is no reason for them to stay in the list if already gone,
 so drop the first element unconditionally if there are too many.

Fixes issue #9163.
2016-11-22 02:54:32 +00:00
Pieter Wuille ad04d1cb35 Always add default_witness_commitment with GBT client support 2016-11-21 15:01:04 -08:00
Wladimir J. van der Laan 0c577f2638
Merge #8872: Remove block-request logic from INV message processing
037159c Remove block-request logic from INV message processing (Matt Corallo)
3451203 [qa] Respond to getheaders and do not assume a getdata on inv (Matt Corallo)
d768f15 [qa] Make comptool push blocks instead of relying on inv-fetch (mrbandrews)
2016-11-21 15:41:32 +01:00
Wladimir J. van der Laan 210891143b
Merge #8837: allow bitcoin-tx to parse partial transactions
7451cf5 Allow bitcoin-tx to parse partial transactions (jnewbery)
2016-11-21 15:33:19 +01:00
Wladimir J. van der Laan b9a87b459d
Merge #9179: Set DEFAULT_LIMITFREERELAY = 0 kB/minute
fa7cc5a Set DEFAULT_LIMITFREERELAY = 0 kB/minute (MarcoFalke)
2016-11-21 15:27:48 +01:00
Wladimir J. van der Laan c3906403c8
Merge #9117: net: don't send feefilter messages before the version handshake is complete
4662553 net: don't send feefilter messages before the version handshake is complete (Cory Fields)
2016-11-21 11:51:03 +01:00
Wladimir J. van der Laan 4231032bfc
[Qt] Clean up and fix coincontrol tree widget handling
- Do sorting for date, amount and confirmations column as longlong, not
  unsigned longlong.
- Use `UserRole` to store our own data. This makes it treated as
  ancillary data prevents it from being displayed.
- Get rid of `getMappedColumn` `strPad` - these are no longer necessary.
- Get rid of hidden `_INT64` columns.
- Start enumeration from 0 (otherwise values are undefined).
2016-11-20 20:18:24 +01:00
Pieter Wuille b4e4ba475a Introduce convenience type CTransactionRef 2016-11-19 17:53:23 -08:00
Pieter Wuille 1662b437b3 Make CBlock::vtx a vector of shared_ptr<CTransaction> 2016-11-19 17:51:09 -08:00
Pieter Wuille da60506fc8 Add deserializing constructors to CTransaction and CMutableTransaction 2016-11-19 17:50:40 -08:00
Pieter Wuille 0e85204a10 Add serialization for unique_ptr and shared_ptr 2016-11-19 17:50:35 -08:00
Wladimir J. van der Laan ce612f1750
Merge #9186: test: Fix use-after-free in scheduler tests
12519bf test: Fix use-after-free in scheduler tests (Wladimir J. van der Laan)
2016-11-19 16:18:38 +01:00
Gregory Maxwell 5b0150a060 Make orphan parent fetching ask for witnesses.
In 0.13 orphan transactions began being treated as implicit
 INVs for their parents.  But the resulting getdata were
 not getting the witness flag.

This fixes issue #9182 reported by chjj and roasbeef on IRC.
2016-11-18 19:11:08 +00:00
Wladimir J. van der Laan 12519bf62b test: Fix use-after-free in scheduler tests
Make a copy of the boost time-point to wait for, otherwise the head of
the queue may be deleted by another thread while this one is waiting,
while the boost function still has a reference to it.

Although this problem is in non-test code, this is not an actual problem
outside of the tests because we use the thread scheduler with only one
service thread, so there will never be threads fighting at the head of
the queue.

The old boost fallback escapes this problem because it passes a scalar
value to wait_until instead of a const object reference.

Found by running the tests in LLVM-4.0-master asan.
2016-11-18 13:10:52 +01:00
Jonas Schnelli 76af4eb876
[Qt] fix coincontrol sort issue 2016-11-18 11:09:29 +01:00
Matt Corallo 97e28029c9 Erase orphans per-transaction instead of per-block 2016-11-17 17:10:00 -08:00
Matt Corallo ec4525ccc1 Move orphan processing to ActivateBestChain
This further decouples "main" and "net" processing logic by moving
orphan processing out of the chain-connecting cs_main lock and
into its own cs_main lock, beside all of the other chain callbacks.

Once further decoupling of net and main processing logic occurs,
orphan handing should move to its own lock, out of cs_main.

Note that this will introduce a race if there are any cases where
we assume the orphan map to be consistent with the current chain
tip, however I am confident there is no such case (ATMP will fail
without DoS score in all such cases).
2016-11-17 17:10:00 -08:00
MarcoFalke fa7cc5a508 Set DEFAULT_LIMITFREERELAY = 0 kB/minute 2016-11-18 00:23:25 +01:00
Pieter Wuille 9346f84299
Merge #9075: Decouple peer-processing-logic from block-connection-logic (#3)
ae22357 Replace CValidationState param in ProcessNewBlock with BlockChecked (Matt Corallo)
7c98ce5 Remove pfrom parameter from ProcessNewBlock (Matt Corallo)
e2e069d Revert "RPC: Give more details when "generate" fails" (Matt Corallo)
2016-11-17 13:23:50 -08:00
Wladimir J. van der Laan f6db48ad1c
Merge #8838: Calculate size and weight of block correctly in CreateNewBlock()
5f274a1 log block size and weight correctly. (jnewbery)
2016-11-17 14:14:51 +01:00
MarcoFalke cb2ed300a8
Merge #9155: [trivial] update comments for tx weight
07ede5d update comments for tx weight (Brian Deery)
2016-11-16 11:05:40 +01:00
Wladimir J. van der Laan 434e683f7b
Merge #9133: Unset fImporting for loading mempool
79f755d Unset fImporting for loading mempool (Alex Morcos)
2016-11-16 10:11:41 +01:00
Wladimir J. van der Laan 62af164638
Merge #9131: fNetworkActive is not protected by a lock, use an atomic
079142b fNetworkActive is not protected by a lock, use an atomic (Jonas Schnelli)
2016-11-16 10:09:52 +01:00
Pieter Wuille 6eeac6e30d
Merge #9164: [trivial] credit values are CAmount
20c3215 credit values are CAmount (Gregory Sanders)
2016-11-15 09:44:07 -08:00
instagibbs ea83d0098a SendMoney: use already-calculated balance 2016-11-15 11:56:45 -05:00
Gregory Sanders 20c3215a90 credit values are CAmount 2016-11-15 09:19:23 -05:00
Wladimir J. van der Laan 018a4eb120
Merge #9140: Bugfix: Correctly replace generated headers and fail cleanly
b74ff5c Bugfix: Correctly replace generated headers and fail cleanly (Luke Dashjr)
2016-11-15 10:34:56 +01:00
Wladimir J. van der Laan f54e4605fc
Merge #9132: Make strWalletFile const
f734505 Make strWalletFile const (Jonas Schnelli)
2016-11-15 10:06:01 +01:00
Wladimir J. van der Laan 770364b8ea
Merge #9160: [trivial] Fix hungarian variable name
ec34648 [trivial] Fix hungarian variable name (Russell Yanofsky)
2016-11-15 09:52:14 +01:00
Russell Yanofsky ec34648766 [trivial] Fix hungarian variable name
Follow up to comment https://github.com/bitcoin/bitcoin/pull/9058#discussion_r87676593
2016-11-14 14:02:24 -05:00
Brian Deery 07ede5d711 update comments for tx weight 2016-11-14 00:38:07 -06:00
MarcoFalke fa42e4a082 [qt] Make network disabled icon 50% opaque 2016-11-13 22:06:35 +01:00
Jonas Schnelli 4512550fa0
Remove unnecessary calls to CheckFinalTx 2016-11-12 13:50:39 +01:00
Pavel Janík 1260c1103b Mention the new network toggle functionality in the tooltip. 2016-11-12 13:28:21 +01:00
Jonas Schnelli 2e44893081
Move -salvagewallet, -zap(wtx) to where they belong 2016-11-12 10:25:34 +01:00
Luke Dashjr b74ff5cf0c Bugfix: Correctly replace generated headers and fail cleanly
Also removes generation of headers for *.raw files in test_bitcoin (none exist anymore)
2016-11-12 07:16:28 +00:00
Alex Morcos 79f755db41 Unset fImporting for loading mempool 2016-11-11 09:33:16 -05:00
Jonas Schnelli f7345050e9
Make strWalletFile const 2016-11-11 14:32:38 +01:00
Jonas Schnelli 079142b757
fNetworkActive is not protected by a lock, use an atomic 2016-11-11 14:09:52 +01:00
Luke Dashjr 5394b3940d Wallet: Split main logic from InitLoadWallet into CreateWalletFromFile 2016-11-11 11:35:49 +00:00
Luke Dashjr fb0c934d1b Wallet: Let the interval-flushing thread figure out the filename 2016-11-11 11:35:49 +00:00
Wladimir J. van der Laan 87ab49e4fe
Merge #9124: Use better name for local variable to prevent -Wshadow compiler warning
bf49f10 Use better name for local variable to prevent -Wshadow compiler warning (Pavel Janík)
2016-11-11 11:46:49 +01:00
Jonas Schnelli ab914a6530
Merge #8996: Network activity toggle
19f46f1 Qt: New network_disabled icon (Luke Dashjr)
54cf997 RPC/Net: Use boolean consistently for networkactive, and remove from getinfo (Luke Dashjr)
b2b33d9 Overhaul network activity toggle (Jonas Schnelli)
32efa79 Qt: Add GUI feedback and control of network activity state. (Jon Lund Steffensen)
e38993b RPC: Add "togglenetwork" method to toggle network activity temporarily (Jon Lund Steffensen)
7c9a98a Allow network activity to be temporarily suspended. (Jon Lund Steffensen)
2016-11-11 11:16:40 +01:00
Wladimir J. van der Laan 7977a1157a
Merge #9058: Fixes for p2p-compactblocks.py test timeouts on travis (#8842)
dac53b5 Modify getblocktxn handler not to drop requests for old blocks (Russell Yanofsky)
55bfddc [qa] Fix stale data bug in test_compactblocks_not_at_tip (Russell Yanofsky)
47e9659 [qa] Fix bug in compactblocks v2 merge (Russell Yanofsky)
2016-11-11 11:02:44 +01:00
Wladimir J. van der Laan 46027e8668
Merge #9112: Avoid ugly exception in log on unknown inv type
e9f25dd Avoid ugly exception in log on unknown inv type (Wladimir J. van der Laan)
2016-11-11 10:58:58 +01:00
Pavel Janík bf49f107ef Use better name for local variable to prevent -Wshadow compiler warning 2016-11-10 21:38:07 +01:00
Wladimir J. van der Laan 71bc39eb74
Merge #9049: Remove duplicatable duplicate-input check from CheckTransaction
e2b3fb3 Optimize vInOutPoints insertion a bit (Matt Corallo)
eecffe5 Remove redundant duplicate-input check from CheckTransaction (Matt Corallo)
b2e178a Add deserialize + CheckBlock benchmarks, and a full block hex (Matt Corallo)
2016-11-10 16:02:55 +01:00
MarcoFalke 4a2b170c07
Merge #9122: fix getnettotals RPC description about timemillis.
a79f864 fix getnettotals RPC description about timemillis. (Masahiko Hyuga)
2016-11-10 11:05:59 +01:00
Wladimir J. van der Laan aab102cbae
Merge #9121: Initialize variable to prevent compiler warning
bdcba6d Initialize variable to prevent compiler warning (Pavel Janík)
2016-11-10 10:35:07 +01:00
Wladimir J. van der Laan 537e0cb252
Merge #9120: bug: Missed one "return false" in recent refactoring in #9067
45d372f Missed one "return false" in recent refactoring in #9067 (UdjinM6)
2016-11-10 10:30:54 +01:00
Masahiko Hyuga a79f864945 fix getnettotals RPC description about timemillis. 2016-11-10 18:18:52 +09:00
Pavel Janík bdcba6d933 Initialize variable to prevent compiler warning 2016-11-10 08:11:51 +01:00
UdjinM6 45d372f889 Missed one "return false" in recent refactoring in #9067 2016-11-10 00:53:55 +03:00
Wladimir J. van der Laan fb156100f9
Merge #9111: Remove unused variable UNLIKELY_PCT from fees.h
d8edf03 Remove unused var UNLIKELY_PCT from fees.h (fanquake)
2016-11-09 21:54:56 +01:00
Matt Corallo e2b3fb349e Optimize vInOutPoints insertion a bit 2016-11-09 11:28:41 -08:00
Matt Corallo eecffe50ef Remove redundant duplicate-input check from CheckTransaction 2016-11-09 11:28:00 -08:00
Matt Corallo b2e178a2d2 Add deserialize + CheckBlock benchmarks, and a full block hex 2016-11-09 11:27:59 -08:00
Matt Corallo ae22357607 Replace CValidationState param in ProcessNewBlock with BlockChecked 2016-11-09 11:21:55 -08:00
Matt Corallo 7c98ce584e Remove pfrom parameter from ProcessNewBlock
This further decouples ProcessNewBlock from networking/peer logic.
2016-11-09 11:21:45 -08:00
Cory Fields 46625538d6 net: don't send feefilter messages before the version handshake is complete 2016-11-09 12:45:13 -05:00
Wladimir J. van der Laan e81df49644
Merge #9039: Various serialization simplifcations and optimizations
d59a518 Use fixed preallocation instead of costly GetSerializeSize (Pieter Wuille)
25a211a Add optimized CSizeComputer serializers (Pieter Wuille)
a2929a2 Make CSerAction's ForRead() constexpr (Pieter Wuille)
a603925 Avoid -Wshadow errors (Pieter Wuille)
5284721 Get rid of nType and nVersion (Pieter Wuille)
657e05a Make GetSerializeSize a wrapper on top of CSizeComputer (Pieter Wuille)
fad9b66 Make nType and nVersion private and sometimes const (Pieter Wuille)
c2c5d42 Make streams' read and write return void (Pieter Wuille)
50e8a9c Remove unused ReadVersion and WriteVersion (Pieter Wuille)
2016-11-09 13:52:04 +01:00
Wladimir J. van der Laan e9f25ddd00 Avoid ugly exception in log on unknown inv type
It is unexpected behavior for `ToString` to raise an exception. It
is expected to do a best-effort attempt at formatting but never fail.

Catch the exception and simply print unknown inv types as hexadecimal.

Fixes #9110.
2016-11-09 11:16:39 +01:00
Wladimir J. van der Laan e9847303e7
Merge #8874: Multiple Selection for peer and ban tables
1077577 Fix auto-deselection of peers (Andrew Chow)
addfdeb Multiple Selection for peer and ban tables (Andrew Chow)
2016-11-09 11:05:15 +01:00
fanquake d8edf03db7
Remove unused var UNLIKELY_PCT from fees.h 2016-11-09 17:51:27 +08:00
Matt Corallo e2e069dabc Revert "RPC: Give more details when "generate" fails"
This only returned information in the case of CheckBlock failure,
but breaks future changes.
2016-11-08 17:39:44 -08:00
Andrew Chow 1077577546 Fix auto-deselection of peers 2016-11-08 15:11:25 -05:00
Jorge Timón 1adf82ac39
RPC: Give more details when "generate" fails 2016-11-08 15:08:56 +01:00
Andrew Chow addfdebe1a Multiple Selection for peer and ban tables
Allows multiple selection and action for the nodes in the peer and ban tables in the Debug Window.
2016-11-08 08:50:04 -05:00
Wladimir J. van der Laan 4e5782438c
Merge #9088: Reduce ambiguity of warning message
77cbbd9 Make warning message about wallet balance possibly being incorrect less ambiguous. (R E Broadley)
2016-11-08 11:05:08 +01:00
Wladimir J. van der Laan f53023dbb8
Merge #9067: Fix exit codes
4441018 Every main()/exit() should return/use one of EXIT_ codes instead of magic numbers (UdjinM6)
bd0de13 Fix exit codes: - `--help`, `--version` etc should exit with `0` i.e. no error ("not enough args" case should still trigger an error) - error reading config file should exit with `1` (UdjinM6)
2016-11-08 10:55:03 +01:00
Jonas Schnelli b8f43e3331
Merge #9095: test: Fix test_random includes
fa8278e test: Fix test_random includes (MarcoFalke)
2016-11-08 08:41:57 +01:00
Pieter Wuille dc6b9406bd
Merge #9026: Fix handling of invalid compact blocks
d4833ff Bump the protocol version to distinguish new banning behavior. (Suhas Daftuar)
88c3549 Fix compact block handling to not ban if block is invalid (Suhas Daftuar)
c93beac [qa] Test that invalid compactblocks don't result in ban (Suhas Daftuar)
2016-11-07 18:11:18 -08:00
Daniel Cousens 5262a151e1 tx_valid: re-order inputs to how they are encoded 2016-11-08 11:58:39 +11:00
Matt Corallo 037159cebf Remove block-request logic from INV message processing 2016-11-07 17:41:00 -05:00
Pieter Wuille 9f554e03eb
Merge #9045: Hash P2P messages as they are received instead of at process-time
fe1dc62 Hash P2P messages as they are received instead of at process-time (Matt Corallo)
2016-11-07 14:19:44 -08:00
Pieter Wuille d59a518466 Use fixed preallocation instead of costly GetSerializeSize
Dbwrapper used GetSerializeSize() to compute the size of the buffer
to preallocate. For some cases (specifically: CCoins) this requires
a costly compression call. Avoid this by just using fixed size
preallocations instead.
2016-11-07 13:56:27 -08:00
Pieter Wuille 25a211aa9e Add optimized CSizeComputer serializers
To get the advantages of faster GetSerializeSize() implementations
back that were removed in "Make GetSerializeSize a wrapper on top of
CSizeComputer", reintroduce them in the few places in the form of a
specialized Serialize() implementation. This actually gets us in a
better state than before, as these even get used when they're invoked
indirectly in the serialization of another object.
2016-11-07 13:56:27 -08:00