This syncs jgarzik/univalue@5839ac3
- fixes gitignore issue #6770 (comment)
- fixes #6778
Reviewers should call ./contrib/devtools/git-subtree-check.sh src/univalue
This syncs jgarzik/univalue@5839ac3
Reviewers should call ./contrib/devtools/git-subtree-check.sh src/univalue
bd30c3d rpc-tests: re-enable rpc-tests for Windows (Cory Fields)
a193387 net: Set SO_REUSEADDR for Windows too (Cory Fields)
c33c11e Improve addrman Select() performance when buckets are nearly empty (Pieter Wuille)
1) Multiplatorm support for devnull
2) Fixed a bug in the handling of cache files
3) Deleted run-bitcoin-cli as no longer needed
Currently left out of Matt's PPA. Debian's package for unstable already has it.
9bebf60 Make sure LogPrint strings are line-terminated (J Ross Nicoll)
9f3e48e add support for miniupnpc api version 14 (Pavel Vasin)
060058e Enable python tests for Native Windows (ptschip)
If a user hasn't ready run autogen.sh, configure doesn't yet exist. Do the instructions seem to presume you have already built bitcoin? I don't think they do.
Would stifle beginners.
Update build-unix.md
bfadae3 travis: for travis generating an extra build (Cory Fields)
10e469a travis: bump wine to 1.7 (Cory Fields)
This option was a temporary workaround, and is no longer necessary
with the new web server.
Dropping all use of boost::asio.
Now that boost no longer automatically initializes openssl, we have to
do it ourselves.
Sending a request body with GET request is not valid in HTTP spec, and
not compatible with evhttpd.
Signed-off-by: fanquake <fanquake@gmail.com>
- *Replace usage of boost::asio with [libevent2](http://libevent.org/)*.
boost::asio is not part of C++11, so unlike other boost there is no
forwards-compatibility reason to stick with it. Together with #4738 (convert
json_spirit to UniValue), this rids Bitcoin Core of the worst offenders with
regard to compile-time slowness.
- *Replace spit-and-duct-tape http server with evhttp*. Front-end http handling
is handled by libevent, a work queue (with configurable depth and parallelism)
is used to handle application requests.
- *Wrap HTTP request in C++ class*; this makes the application code mostly
HTTP-server-neutral
- *Refactor RPC to move all http-specific code to a separate file*.
Theoreticaly this can allow building without HTTP server but with another RPC
backend, e.g. Qt's debug console (currently not implemented) or future RPC
mechanisms people may want to use.
- *HTTP dispatch mechanism*; services (e.g., RPC, REST) register which URL
paths they want to handle.
By using a proven, high-performance asynchronous networking library (also used
by Tor) and HTTP server, problems such as #5674, #5655, #344 should be avoided.
What works? bitcoind, bitcoin-cli, bitcoin-qt. Unit tests and RPC/REST tests
pass. The aim for now is everything but SSL support.
Configuration options:
- `-rpcthreads`: repurposed as "number of work handler threads". Still
defaults to 4.
- `-rpcworkqueue`: maximum depth of work queue. When this is reached, new
requests will return a 500 Internal Error.
- `-rpctimeout`: inactivity time, in seconds, after which to disconnect a
client.
- `-debug=http`: low-level http activity logging
Implement RPCTimerHandler for Qt RPC console, so that `walletpassphrase`
works with GUI and `-server=0`.
Also simplify HTTPEvent-related code by using boost::function directly.
Split StartHTTPServer into InitHTTPServer and StartHTTPServer to give
clients a window to register their handlers without race conditions.
Thanks @ajweiss for figuring this out.
Make it possible to reuse sockets.
This is necessary to make the RPC tests work in WINE.
88f856a [doc] Clarify authors in assets-attribution.md (MarcoFalke)
5b85126 Update build-unix.md (Altoidnerd)
027de94 Use network group instead of CNetAddr in final pass to select node to disconnect (Patrick Strateman)
000c18a Fix comment (Patrick Strateman)
fed3094 Acquire cs_vNodes before changing refrence counts (Patrick Strateman)
69ee1aa CNodeRef copy constructor and assignment operator (Patrick Strateman)
dc81dd0 Return false early if vEvictionCandidates is empty (Patrick Strateman)
17f3533 Better support for nodes with non-standard nMaxConnections (Patrick Strateman)
1317cd1 RAII wrapper for CNode* (Patrick Strateman)
df23937 Add comments to AttemptToEvictConnection (Patrick Strateman)
a8f6e45 Remove redundant whiteconnections option (Patrick Strateman)
b105ba3 Prefer to disconnect peers in favor of whitelisted peers (Patrick Strateman)
2c70153 AttemptToEvictConnection (Patrick Strateman)
4bac601 Record nMinPingUsecTime (Patrick Strateman)
ae037b7 Refactor: Move failure conditions to the top of AcceptConnection (Patrick Strateman)
1ef4817 Refactor: Bail early in AcceptConnection (Patrick Strateman)
541a1dd Refactor: AcceptConnection (Patrick Strateman)
The main effect is to exit processing for recently-rejected hashes,
in case they are pushed to us without prior advertisement. This
behavior was seen in the wild.
An additional effect is to do early checks for mempool or mapOrphan
existence. No logging or nDoS tracking is needed for failures of
these checks.
The `generate` RPC has no default `numblocks` and a numeric value is required.
86270c8 Replace boost::reverse_lock with our own. (Casey Rodarmor)
e83df07 Update RPC generate help for numblocks to include required (Ian T)
Add libevent, change usage of libssl from "secure communication" to
"crypto" that's more accurate after RPC SSL support removed.
This reverts commit bd30c3dced21fca869a14c75081f15195762afe1.
Disable windows RPC tests for now. These should be re-enabled once a
suitable Wine version is used on Travis.
d528025 Revert "rpc-tests: re-enable rpc-tests for Windows" (Wladimir J. van der Laan)
1e700c9 doc: update deps in build-unix.md after libevent (Wladimir J. van der Laan)
26c9b83 Move windows socket init to utility function (Wladimir J. van der Laan)
4be0b08 libevent: Windows reuseaddr workaround in depends (Cory Fields)
3a174cd Fix race condition between starting HTTP server thread and setting EventBase() (Wladimir J. van der Laan)
6d2bc22 Document options for new HTTP/RPC server in --help (Wladimir J. van der Laan)
be33f3f Implement RPCTimerHandler for Qt RPC console (Wladimir J. van der Laan)
57d85d9 doc: mention SSL support dropped for RPC in release notes (Wladimir J. van der Laan)
40b556d evhttpd implementation (Wladimir J. van der Laan)
ee2a42b tests: GET requests cannot have request body, use POST in rest.py (Wladimir J. van der Laan)
6e996d3 tests: fix qt payment test (Cory Fields)
3140ef9 build: build-system changes for libevent (Wladimir J. van der Laan)
a9af234 libevent: add depends (Cory Fields)
6a21dd5 Remove rpc_boostasiotocnetaddr test (Wladimir J. van der Laan)
8f9301c qa: Remove -rpckeepalive tests from httpbasics (Wladimir J. van der Laan)
51fcfc0 doc: remove documentation for rpcssl (Wladimir J. van der Laan)
a6eb4ba Report minimum ping time in getpeerinfo (Matt Corallo)
`nMinPingUsecTime` was left uninitialized in CNode.
The correct initialization for a minimum-until-now is int64_t's max value, so initialize it to that.
Thanks @MarcoFalke for noticing.
f4b9132 Update gitian build guide for Debian 8.1 (fanquake)
93ff1b9 net: correctly initialize nMinPingUsecTime (Wladimir J. van der Laan)
... but not yet in trivial tree
Lets nodes advertise that they offer bloom filter support explicitly.
The protocol version bump allows SPV nodes to assume that NODE_BLOOM is
set if NODE_NETWORK is set for pre-70011 nodes.
Also adds an option to turn bloom filter support off for nodes which
advertise a version number >= 70011. Nodes attempting to use bloom
filters on such protocol versions are banned, and a later upgade
should drop nodes of an older version which attempt to use bloom
filters.
Much code stolen from Peter Todd.
Implements BIP 111
c.f. #6585
Complete rescan is incompatible with pruning, but rescan is optional on
our wallet key import RPCs. Import on use is very useful in some common
situations in conjunction with pruning, e.g. merchant payment tracking.
This reenables importprivkey/importaddress/importpubkey when rescan
is not used.
In the future we should consider changing the rescan argument to allow depth
or date to allow limited rescanning when compatible with the retained
block depth.
This patch changes the way the suffix (giving the requested data format) is
parsed for REST requests. Before, the string was split at '.'
characters and it was assumed that the second part was the suffix.
Now, we look for the last dot and use that to determine the suffix.
This allows for strings that contain dots (not used now, though), and
seems, in general, to be clearer and more intuitive.
The wallet hasn't been disabled since 3201035f22fe451c808b0bb157d33a58f0d99c07.
9cdc335 Simplify logic of REST request suffix parsing. (Daniel Kraft)
238851b [doc] [tor] Clarify when to use bind (MarcoFalke)
7a7e68d Prune the -prune help to reflect that the wallet is no longer disabled. (Gregory Maxwell)
eb3002b [TRIVIAL] Fix typo: exactmath -> exactmatch (paveljanik)
5ffaaba Disallow duplicate windows. (Casey Rodarmor)
afb0cca Add NODE_BLOOM service bit and bump protocol version (Matt Corallo)
a1df1e8 [docs] add libevent dependency to build-osx.md (Jonas Schnelli)
d6a92dd [release notes] mention apache reverse proxy to re-enable SSL (Jonas Schnelli)
We log the cleanSubVer as part of connect. It is not uniquely more informative
than any of the other data we have about a peer, often less. It's also often
long now as well. There is no need to output it as part of mempoolrej,
AcceptToMemoryPool, or pong entries. Leaving it out makes our log entries
more uniform and consistent.
* Merge make_spinner.py into makespinner.sh
* Also delete now unused imgs
* Actually use all 36 frames for the spinner animation
Continues Johnathan Corgan's work.
Publishing multipart messages
Bugfix: Add missing zmq header includes
Bugfix: Adjust build system to link ZeroMQ code for Qt binaries
* SanitizeString() can be requested to be more strict
* Throw error when SanitizeString() changes uacomments
* Fix tests
Also, autotools reformatted the AC_ARG_ENABLE erroneously as well.
add ban option for peer context menu (1h, 24h, 7d, 1y).
- some code cleanups
- fix date formatting
- reduce header includes
Only use CIDR notation if the netmask can be represented as such.
- remove banListChanged signal from client model
- directly call clientModel->getBanTableModel()->refresh() without the way
over clientModel->updateBanlist()
- also fix clearing peer detail window, when selecting (clicking)
peers in the ban list
- add missing NULL pointer checks
- add better comments and reorder some code in rpcconsole.cpp
- remove unneeded leftovers in bantable.cpp
- update bantable column sizes to prevent cutting of banned until
- 1 (h)our
- 1 (d)ay
- 1 (w)eek
- 1 (y)ear
- this matches RPC call behaviour
- removes mapBlockIndex find operation
- theoretically allows removing the cs_main lock during zqm notification while introducing a new file position lock
Reverts the change putting it in the bitcoind deb.
Five boost libs plus libcrypto are needed; I don't think that quite passes for minimal.
prefix instead of postfix
Fixes #6682
`${testScripts[@]}` now does split up `testscript --agument` in two elements pushed to the array (`testscript` and `--agument`).done automatically.
At some point along the line, fully offline builds were no longer happening
when strictly following the release-process.md instructions.
We should ensure that users who might want to torify or build offline need
to take extra steps to remain offline.
Also, corrections to build process: including gverify examples for new builders.
GetTransaction needs to lock cs_main until ReadBlockFromDisk completes, the data inside CBlockIndex's can change since pruning. This lock was held by all calls to GetTransaction except rest_tx.
c73a8ea Clarifying offline build process using gbuild --url and noting it is not done automatically. (Midnight Magic)
If a problem happens with gpg, exit prematurely so that it doesn't push
the branch upstream.
The thin space QT html hack results in cut-off chars/nums after a line break.
Avoid word wrap line breaks by using a smaller font and a line break before each alternative value)
Ignore SIGPIPE on all non-win32 OSes, otherwise an unexpectedly disconnecting
RPC client will terminate the application. This problem was introduced
with the libhttp-based RPC server.
Fixes #6660.
3802ae7 devtools: don't push if signing fails in github-merge (Wladimir J. van der Laan)
Even though the SVG source files are never used in the QT client,
their authors are mentioned in contrib/debian/copyright due to
simplicity.
Indexes on:
- Tx Hash
- Fee Rate (fee-per-kb)
Associate with each CTxMemPoolEntry all the size/fees of descendant
mempool transactions. Sort mempool by max(feerate of entry, feerate
of descendants). Update statistics on-the-fly as transactions enter
or leave the mempool.
Also add ancestor and descendant limiting, so that transactions can
be rejected if the number or size of unconfirmed ancestors exceeds
a target, or if adding a transaction would cause some other mempool
entry to have too many (or too large) a set of unconfirmed in-
mempool descendants.
Add a option "-debug=libevent" to enable libevent debugging for troubleshooting.
Libevent logging is redirected to our own log.
5add7a7 Track transaction packages in CTxMemPoolEntry (Suhas Daftuar)
34628a1 TxMemPool: Change mapTx to a boost::multi_index_container (Ashley Holman)
The two timeouts for the server and client, are essentially different:
- In the case of the server it should be a lower value to avoid clients
clogging up connection slots
- In the case of the client it should be a high value to accomedate slow
responses from the server, for example for slow queries or when the
lock is contended
Split the options into `-rpcservertimeout` and `-rpcclienttimeout` with
respective defaults of 30 and 900.
Python's httplib does not graciously handle disconnections from the http server, resulting in BadStatusLine errors.
See https://bugs.python.org/issue3566 "httplib persistent connections violate MUST in RFC2616 sec 8.1.4."
This was fixed in Python 3.5.
Work around it for now.
ddf98d1 Make RPC tests cope with server-side timeout between requests (Wladimir J. van der Laan)
2190ea6 rpc: Split option -rpctimeout into -rpcservertimeout and -rpcclienttimeout (Wladimir J. van der Laan)
8b2d6ed http: Disable libevent debug logging, if not explicitly enabled (Wladimir J. van der Laan)
5ce43da init: Ignore SIGPIPE (Wladimir J. van der Laan)
0186228 Update trusted-git-root to the most recent unsigned commit (Matt Corallo)
9b1cdd7 [trivial] Remove obsolete pixmaps (MarcoFalke)
d1acf93 [qt] [trivial] share/qt/make_spinner.py => src/qt/res/movies/makespinner.sh (MarcoFalke)
2eb3183 [doc] Merge doc/assets-attribution.md into contrib/debian/copyright (MarcoFalke)
9be08b7 Update contrib/debian/copyright (MarcoFalke)
99ee4a6 Fix spelling of Qt (Diego Viola)
24cb7c7 [QT] fix thin space word wrap line brake issue (Jonas Schnelli)
1c1b1b3 [uacomment] Sanitize per BIP-0014 (MarcoFalke)
a09db7c [trivial] Minor format fixes (MarcoFalke)
0574ede doc: update release-notes and bips.md for BIP111 (Wladimir J. van der Laan)
7aac6db [QT] dump banlist to disk in case of ban/unban over QT (Jonas Schnelli)
7f90ea7 [QA] adabt QT_NO_KEYWORDS for QT ban implementation (Jonas Schnelli)
07f70b2 [QA] fix netbase tests because of new CSubNet::ToString() output (Jonas Schnelli)
4ed0510 [Qt] call DumpBanlist() when baning unbaning nodes (Philip Kaufmann)
be89292 [Qt] reenabling hotkeys for ban context menu, use different words (Jonas Schnelli)
b1189cf [Qt] adapt QT ban option to banlist.dat changes (Jonas Schnelli)
65abe91 [Qt] add sorting for bantable (Philip Kaufmann)
51654de [Qt] bantable polish (Philip Kaufmann)
cdd72cd [Qt] simplify ban list signal handling (Philip Kaufmann)
43c1f5b [Qt] remove unused timer-code from banlistmodel.cpp (Jonas Schnelli)
e2b8028 net: Fix CIDR notation in ToString() (Wladimir J. van der Laan)
9e521c1 [Qt] polish ban table (Philip Kaufmann)
607809f net: use CIDR notation in CSubNet::ToString() (Jonas Schnelli)
53caec6 [Qt] bantable overhaul (Jonas Schnelli)
f0bcbc4 [Qt] bantable fix timestamp 64bit issue (Jonas Schnelli)
6135309 [Qt] banlist, UI optimizing and better signal handling (Jonas Schnelli)
770ca79 [Qt] add context menu with unban option to ban table (Jonas Schnelli)
5f42132 [Qt] add ui signal for banlist changes (Jonas Schnelli)
ad204df [Qt] add banlist table below peers table (Jonas Schnelli)
50f0908 [Qt] add ban functions to peers window (Jonas Schnelli)
Assume that when a wallet transaction has a valid block hash and transaction position
in it, the transaction is actually there. We're already trusting wallet data in a
much more fundamental way anyway.
To prevent backward compatibility issues, a new record is used for storing the
block locator in the wallet. Old wallets will see a wallet file synchronized up
to the genesis block, and rescan automatically.
* Raise the debug window when hidden behind other windows
* Switch to the debug window when on another virtual desktop
* Show the debug window when minimized
This change is a conceptual copy of 5ffaaba and 382e9e2
6ecaec3 [Trivial] [logging] Rm extraneous cleansubver in serveral debug messages. (Gregory Maxwell)
ae6f957 Enable block relay when pruning (Suhas Daftuar)
0da6ae2 Do not inv old or missing blocks when pruning (Suhas Daftuar)
131c23d Fix locking in GetTransaction. (Alex Morcos)
77c6072 Enable wallet key imports without rescan in pruned mode. (Gregory Maxwell)
4dee609 Rename rpcconsole.ui => debugwindow.ui (MarcoFalke)
0d0a2d6 [Qt] Raise debug window when requested (MarcoFalke)
3b33ec8 Avoid duplicate CheckBlock checks (Pieter Wuille)
391dff1 Do not store Merkle branches in the wallet. (Pieter Wuille)
CalculateMemPoolAncestors was always looping over a transaction's inputs
to find in-mempool parents. When adding a new transaction, this is the
correct behavior, but when removing a transaction, we want to use the
ancestor set that would be calculated by walking mapLinks (which should
in general be the same set, except during a reorg when the mempool is
in an inconsistent state, and the mapLinks-based calculation would be the
correct one).
60de0d5 Fix mempool package tracking edge case (Suhas Daftuar)
598b25d Add test showing bug in mempool packages (Suhas Daftuar)
b0beae8 Drop "with minimal dependencies" from description (Zak Wilcox)
5e5e00b Split bitcoin-tx into its own package (Zak Wilcox)
05179f7 Include bitcoin-tx binary on Debian/Ubuntu (Zak Wilcox)
51ff777 [trivial] Fix rpc message "help generate" (MarcoFalke)
4c3cab1 [trivial] init cleanup (MarcoFalke)
java-libbitcoinconsensus is a wrapper around libbitcoinconsensus, which
uses JNA to demonstrate a potential integration in Java.
Adds several unittests for addrman to verify it works as expected.
Makes small modifications to addrman to allow deterministic and targeted tests.
da47fe0 Add java-libbitcoinconsensus as example to documentation (dexX7)
42cf089 depends: bump ccache to 3.2.3 (fanquake)
888c595 depends: bump miniupnpc to 1.9.20150730 (fanquake)
af3208b Resolve issue 3166. These changes decode valid SIGHASH types on signatures in assembly (asm) representations of scriptSig scripts. This squashed commit incorporates substantial helpful feedback from jtimon, laanwj, and sipa. (mruddy)
06d92d7 Add CONTRIBUTING.md (BtcDrak)
023919b Fix debian/copyright list to be non-comma-separated. (Matt Corallo)
71afc68 Update debian/copyright format version to 1.0 (Matt Corallo)
d4ca868 Use standard license names in contrib/debian/copyright (Matt Corallo)
The "please check your computer's data and time" message when the clock
deviates from the network currently generates an overkill of messages:
orion@lethe:~/bitcoin$ src/bitcoind
Warning: Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly.
In the log:
2015-09-27 16:24:13 *** Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly.
2015-09-27 16:24:13 Warning: Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly.
Remove one level of 'Warning:' and reduce to one log message.
bitcoin-cli (in contrast to bitcoin-tx, which does signing ops)
shouldn't need secp256k1, and indeed it doesn't.
Add a specific build guide for OpenBSD. This is slightly different than
building for Linux due to different dependencies, and a compiler issue.
Shutting down the HTTP server currently breaks off all current requests.
This can create a race condition with RPC `stop` command, where the calling
process never receives confirmation.
This change removes the listening sockets on shutdown so that no new
requests can come in, but no longer breaks off requests in progress.
Meant to fix #6717.
Add a WaitExit() call to http's WorkQueue to make it delete the work
queue only when all worker threads stopped.
This fixes a problem that was reproducable by pressing Ctrl-C during
AppInit2:
```
/usr/include/boost/thread/pthread/condition_variable_fwd.hpp:81: boost::condition_variable::~condition_variable(): Assertion `!ret' failed.
/usr/include/boost/thread/pthread/mutex.hpp:108: boost::mutex::~mutex(): Assertion `!posix::pthread_mutex_destroy(&m)' failed.
```
I was assuming that `threadGroup->join_all();` would always have been
called when entering the Shutdown(). However this is not the case in
bitcoind's AppInit2-non-zero-exit case "was left out intentionally
here".
This makes sure that the event loop eventually terminates, even if an
event (like an open timeout, or a hanging connection) happens to be
holding it up.
ec908d5 http: Force-exit event loop after predefined time (Wladimir J. van der Laan)
de9de2d http: Wait for worker threads to exit (Wladimir J. van der Laan)
5e0c221 Make HTTP server shutdown more graceful (Wladimir J. van der Laan)
9fea833 timedata: Prevent warning overkill (Wladimir J. van der Laan)
a5b78c2 build: Remove dependency of bitcoin-cli on secp256k1 (Wladimir J. van der Laan)
- Link to Debian 8.1 netinstall ISO is dead, changed to valid 8.2
- Changed checksum to 8.2 netinstall ISO checksum (http://cdimage.debian.org/debian-cd/8.2.0/amd64/iso-cd/SHA256SUMS)
- Verified CD checksum, checksum file's signing key
551d7ed doc: Fix dead link in gitian-building (unsystemizer)
Signed-off-by: Johnathan Corgan <johnathan@corganlabs.com>
Signed-off-by: Johnathan Corgan <johnathan@corganlabs.com>
43edd51 SanitizeString: Allow hypen char (MarcoFalke)
ab0b8be zmq: update and cleanup build-unix, release-notes, and zmq docs (Johnathan Corgan)
6cebd5d zmq: require version 4.x or newer of libzmq (Johnathan Corgan)
05b5831 Add PR title prefix for trivial changes [skip ci] (paveljanik)
d76a8ac use CBlockIndex* insted of uint256 for UpdatedBlockTip signal (Jonas Schnelli)
Benchmarking framework, loosely based on google's micro-benchmarking
library (https://github.com/google/benchmark)
Wny not use the Google Benchmark framework? Because adding Even More Dependencies
isn't worth it. If we get a dozen or three benchmarks and need nanosecond-accurate
timings of threaded code then switching to the full-blown Google Benchmark library
should be considered.
The benchmark framework is hard-coded to run each benchmark for one wall-clock second,
and then spits out .csv-format timing information to stdout. It is left as an
exercise for later (or maybe never) to add command-line arguments to specify which
benchmark(s) to run, how long to run them for, how to format results, etc etc etc.
Again, see the Google Benchmark framework for where that might end up.
See src/bench/MilliSleep.cpp for a sanity-test benchmark that just benchmarks
'sleep 100 milliseconds.'
To compile and run benchmarks:
cd src; make bench
Sample output:
Benchmark,count,min,max,average
Sleep100ms,10,0.101854,0.105059,0.103881
Avoid calling gettimeofday every time through the benchmarking loop, by keeping
track of how long each loop takes and doubling the number of iterations done
between time checks when they take less than 1/16'th of the total elapsed time.
Split off Bitcoin Core project development discussion from the general
Bitcoin development channel.
5424d41 doc: Change #bitcoin-dev IRC channel to #bitcoin-core-dev (Wladimir J. van der Laan)
similar to secp256k1 include and compile univalue over a subtree
835c122 Clean up change computation in CreateTransaction. (Daniel Kraft)
e761d7a Bugfix: Allow mining on top of old tip blocks for testnet (fixes testnet-in-a-box use case) (Luke Dashjr)
Now that BIP66 passed, OpenSSL is no longer directly part of the
consensus. What matters is that DER signatures are correctly parsed, and
secp256k1 crypto is implemented correctly (as well as the other
functions we use from OpenSSL, such as random number generation)
This means that effectively, using LibreSSL is not a larger risk than
using another version of OpenSSL.
Remove the specific check for LibreSSL.
Includes the still-relevant part of #6729: make sure CHECK_HEADER is
called using the right CXXFLAGS, not CFLAGS (as AC_LANG is c++).
745f909 travis: install a recent libzmq and pyzmq for tests (Cory Fields)
a9c27cd [travis] add zmq python module (Jonas Schnelli)
110a1fd enable zmq-test in rpc-tests.sh (Jonas Schnelli)
95acf3c remove $(@F) and subdirs from univalue make (Jonas Schnelli)
9623e93 [Univalue] add univalue over subtree (Jonas Schnelli)
2f9f082 Squashed 'src/univalue/' content from commit 87d9045 (Jonas Schnelli)
0917306 remove univalue, prepare for subtree (Jonas Schnelli)
a3874c7 doc: no longer require use of openssl in OpenBSD build guide (Wladimir J. van der Laan)
5978388 build: remove libressl check (Wladimir J. van der Laan)
Previously unlike other transaction types the TX_SCRIPTHASH would not
clear vSolutionsRet, which means that unlike other transaction types if
it was called twice in a row you would get the result of the previous
invocation as well.
Allows IsPushOnly() to be applied to just part of the script for
OP_RETURN outputs.
Previously only one PUSHDATA was allowed, needlessly limiting
applications such as matching OP_RETURN contents with bloom filters that
operate on a per-PUSHDATA level. Now any combination that passes
IsPushOnly() is allowed, so long as the total size of the scriptPubKey
is less than 42 bytes. (unchanged modulo non-minimal PUSHDATA encodings)
Also, this fixes the odd bug where previously the PUSHDATA could be
replaced by any single opcode, even sigops consuming opcodes such as
CHECKMULTISIG. (20 sigops!)
Prevent these warnings in clang 3.6:
./serialize.h:96:9: warning: explicitly assigning value of variable of type 'uint64_t' (aka 'unsigned long') to itself [-Wself-assign]
obj = (obj);
~~~ ^ ~~~
1) created rpc-tests.py
2) deleted rpc-tests.sh
3) travis.yml points to rpc-tests.py
4) Modified Makefile.am
5) Updated README.md
6) Added tests_config.py and deleted tests-config.sh
7) Modified configure.ac with script to set correct path in tests_config.py
da894ab Accept any sequence of PUSHDATAs in OP_RETURN outputs (Peter Todd)
5d8709c Add IsPushOnly(const_iterator pc) (Peter Todd)
6a07eb6 Make TX_SCRIPTHASH clear vSolutionsRet first (Peter Todd)
96106f0 [Trivial] start the help texts with lowercase (paveljanik)
5467820 Migrated rpc-tests.sh to all python rpc-tests.py (ptschip)
* Fixes #6679
* Tested with --disable-zmq
* Tested with and without pkgconfig
* Tested with and without zmq installed
Signed-off-by: Johnathan Corgan <johnathan@corganlabs.com>
Fix file mode to be executable.
Include dummy whitespace change to force git to change mode.
Don't chmod a repository-included file in the configure script, and
`tests_config.py` is a module that doesn't need to be executable.
ea70997 build: Remove unnecessary chmods after #6616 (Wladimir J. van der Laan)
Github-Pull: #6752
9ee5ac8 Rewrite help texts for features enabled by default. (Pavel Janík)
bb24835 build: disable -Wself-assign (Wladimir J. van der Laan)
Consistency with other *.in input files.
Mention now allowed sequence of pushdatas in OP_RETURN outputs in
release notes.
Signed-off-by: Johnathan Corgan <johnathan@corganlabs.com>
This adds SCRIPT_VERIFY_LOW_S to STANDARD_SCRIPT_VERIFY_FLAGS which
will make the node require the canonical 'low-s' encoding for
ECDSA signatures when relaying or mining.
Consensus behavior is unchanged.
The rational is explained in a81cd96805ce6b65cca3a40ebbd3b2eb428abb7b:
Absent this kind of test ECDSA is not a strong signature as given
a valid signature {r, s} both that value and {r, -s mod n} are valid.
These two encodings have different hashes allowing third parties a
vector to change users txids. These attacks are avoided by picking
a particular form as canonical and rejecting the other form(s); in
the of the LOW_S rule, the smaller of the two possible S values is
used.
If widely deployed this change would eliminate the last remaining
known vector for nuisance malleability on boring SIGHASH_ALL
p2pkh transactions. On the down-side it will block most
transactions made by sufficiently out of date software.
Unlike the other avenues to change txids on boring transactions this
one was randomly violated by all deployed bitcoin software prior to
its discovery. So, while other malleability vectors where made
non-standard as soon as they were discovered, this one has remained
permitted. Even BIP62 did not propose applying this rule to
old version transactions, but conforming implementations have become
much more common since BIP62 was initially written.
Bitcoin Core has produced compatible signatures since a28fb70e in
September 2013, but this didn't make it into a release until 0.9
in March 2014; Bitcoinj has done so for a similar span of time.
Bitcoinjs and electrum have been more recently updated.
This does not replace the need for BIP62 or similar, as miners can
still cooperate to break transactions. Nor does it replace the
need for wallet software to handle malleability sanely[1]. This
only eliminates the cheap and irritating DOS attack.
[1] On the Malleability of Bitcoin Transactions
Marcin Andrychowicz, Stefan Dziembowski, Daniel Malinowski, Łukasz Mazurek
http://fc15.ifca.ai/preproceedings/bitcoin/paper_9.pdf
58981d4 Changed logging to make -logtimestamps to work also for -printtoconsole (Arne Brutschy)
9f5c641 zmq: update docs to reflect feature is compiled in automatically if possible (Johnathan Corgan)
9204930 Document pull-req #6424 in release-notes (Peter Todd)
202f612 The Bitcoin Core project is releasing Bitcoin Core, not Bitcoin. (Pavel Janík)
efb37d4 Changed run-bitcoind-for-test.sh.in to non-executable mode. Consistency with other *.in input files. (randy-waterhouse)
dd28089 autotools: move checking for zmq library to common area in configure.ac (Johnathan Corgan)
a19504b tests-config.sh is superseded by tests_config.py (Pavel Janík)
7072c54 Support very-fast-running benchmarks (Gavin Andresen)
535ed92 Simple benchmarking framework (Gavin Andresen)
Adds an `obfuscate` parameter to `CLevelDBWrapper` and makes use of it
for all new chainstate stores built via `CCoinsViewDB`. Also adds an
`Xor` method to `CDataStream`.
Thanks to @sipa @laanwj @pstratem @dexX7 @KyrosKrane @gmaxwell.
42cb388 Add chainstate obfuscation to avoid spurious antivirus detection (James O'Beirne)
b196b68 Test LowS in standardness, removes nuisance malleability vector. (Gregory Maxwell)
1534d9a Creates unittests for addrman, makes addrman testable. Adds several unittests for addrman to verify it works as expected. Makes small modifications to addrman to allow deterministic and targeted tests. (EthanHeilman)
depends/README.md [skip ci]
b2af29b Ignore bench_bitcoin binary. (Pavel Janík)
34754ce [Trivial] Fixed typo when referring to a previous section in depends/README.md [skip ci] (Chris Kleeschulte)
b22692c build: Make use of ZMQ_CFLAGS (Cory Fields)
utACK
utACK
On Friday, October 9, 2015, Cory Fields notifications@github.com wrote:
utACK
— Reply to this email directly or view it on GitHub #6788 (comment).
ACK
Tested ACK