Commit Graph

234 Commits

Author SHA1 Message Date
jl777
bcba24d157 Test 2017-03-30 04:37:22 +03:00
jl777
945f015d80 Initial merge 2017-03-30 04:35:16 +03:00
Wladimir J. van der Laan
eb5f63fe58 net: Automatically create hidden service, listen on Tor
Starting with Tor version 0.2.7.1 it is possible, through Tor's control socket
API, to create and destroy 'ephemeral' hidden services programmatically.
https://stem.torproject.org/api/control.html#stem.control.Controller.create_ephemeral_hidden_service

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

- When the node is started, connect to Tor through control socket
- Send `ADD_ONION` command
- First time:
    - Make it create a hidden service key
    - Save the key in the data directory for later usage
- Make it redirect port 8333 to the local port 8333 (or whatever port we're listening on).
- Keep control socket connection open for as long node is running. The hidden service will
  (by default) automatically go away when the connection is closed.
2017-03-25 20:22:09 +13:00
Karl-Johan Alm
17fb609097 Added std::unique_ptr<> wrappers with deleters for libevent modules. 2017-03-24 09:03:59 +13:00
Wladimir J. van der Laan
afd64f76ea evhttpd implementation
- *Replace usage of boost::asio with [libevent2](http://libevent.org/)*.
boost::asio is not part of C++11, so unlike other boost there is no
forwards-compatibility reason to stick with it. Together with #4738 (convert
json_spirit to UniValue), this rids Bitcoin Core of the worst offenders with
regard to compile-time slowness.

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

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

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

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

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

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

Configuration options:

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

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

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

- `-debug=http`: low-level http activity logging
2017-03-24 09:03:59 +13:00
Wladimir J. van der Laan
df377ca82c build: build-system changes for libevent 2017-03-24 09:03:59 +13:00
Pieter Wuille
6bd1d60c97 Separate core memory usage computation in core_memusage.h 2017-03-14 13:45:05 +13:00
Daira Hopwood
38ba3c666f Remove QT gunk from Makefiles.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2017-03-07 19:15:08 +00:00
Cory Fields
1dc626314d build: match upstream build change 2017-02-10 02:19:03 +00:00
Jonas Schnelli
fbc98d7720 remove $(@F) and subdirs from univalue make 2017-02-10 02:18:52 +00:00
Jonas Schnelli
a10a6e2a0e [Univalue] add univalue over subtree
similar to secp256k1 include and compile univalue over a subtree
2017-02-10 02:18:51 +00:00
Jonas Schnelli
d014114d67 Remove JSON Spirit wrapper, remove JSON Spirit leftovers
- implement find_value() function for UniValue
- replace all Array/Value/Object types with UniValues, remove JSON Spirit to UniValue wrapper
- remove JSON Spirit sources
2017-02-10 00:35:24 +00:00
Jonas Schnelli
851f58f94e remove JSON Spirit UniValue wrapper 2017-02-10 00:35:24 +00:00
Jonas Schnelli
9756b7bd29 extend conversion to UniValue 2017-02-10 00:35:24 +00:00
Jeff Garzik
ed21d5bd4b Convert tree to using univalue. Eliminate all json_spirit uses. 2017-02-10 00:35:24 +00:00
zkbot
253c610783 Auto merge of #2050 - str4d:2020-zmq, r=bitcartel
Add ZeroMQ notifications

Cherry-picked from the following upstream PRs:

- bitcoin/bitcoin#6103
- bitcoin/bitcoin#6684
- bitcoin/bitcoin#6686
- bitcoin/bitcoin#6736
- bitcoin/bitcoin#6739
- bitcoin/bitcoin#6743
- bitcoin/bitcoin#6768
- bitcoin/bitcoin#6779
- bitcoin/bitcoin#6810
- bitcoin/bitcoin#6927
- bitcoin/bitcoin#6980 (only upgrading zeromq)
- bitcoin/bitcoin#6680
- bitcoin/bitcoin#7058
- bitcoin/bitcoin#7621
- bitcoin/bitcoin#7335 (only parts affecting `zmq_test.py`)
- bitcoin/bitcoin#7853 (only parts affecting `zmq_test.py`)
- bitcoin/bitcoin#7762
- bitcoin/bitcoin#7993 (only upgrading zeromq)
- bitcoin/bitcoin#8238
- bitcoin/bitcoin#8701
- bitcoin/bitcoin#6685

Closes #2020.
2017-02-09 20:08:15 +00:00
Cory Fields
007148fafa build: Make use of ZMQ_CFLAGS 2017-02-08 22:10:42 +00:00
Jeff Garzik
f200002cf3 Add ZeroMQ support. Notify blocks and transactions via ZeroMQ
Continues Johnathan Corgan's work.
Publishing multipart messages

Bugfix: Add missing zmq header includes

Bugfix: Adjust build system to link ZeroMQ code for Qt binaries
2017-02-08 22:10:42 +00:00
Jack Grigg
2cc0a252ad Add compile flag to disable compilation of mining code 2017-01-30 21:14:46 +01:00
jl777
3ced93646d Merge remote-tracking branch 'zcash/master' into dev
# Conflicts:
#	.gitignore
#	README.md
#	src/Makefile.gtest.include
#	src/gtest/test_checkblock.cpp
#	src/init.cpp
#	src/main.cpp
#	src/main.h
#	src/rpcserver.cpp
#	src/test/checkblock_tests.cpp
#	src/util.cpp
2017-01-25 09:26:28 +02:00
Jack Grigg
9773b95f6e Coverage build system tweaks 2017-01-18 13:57:05 +01:00
Jack Grigg
8e0fc39097 Exclude test binaries from make install
Closes #1943.
2017-01-03 11:23:21 +01:00
jl777
8962d0405b test 2016-12-12 12:53:54 +02:00
jl777
bc17ac4928 Merge remote-tracking branch 'zcash/master' into rebase
# Conflicts:
#	README.md
#	src/Makefile.gtest.include
#	src/chainparams.cpp
#	src/init.cpp
#	src/miner.cpp
#	src/wallet/wallet.cpp
2016-12-12 12:19:13 +02:00
Jack Grigg
0bb3d40f90 Add benchmark for incrementing note witnesses 2016-11-17 22:26:46 +13:00
jl777
4d65d051ec test 2016-10-28 14:35:24 -03:00
jl777
30853e4ab9 Merge remote-tracking branch 'zcash/master' into dPoW 2016-10-28 13:50:21 -03:00
jl777
cc686fe52d test 2016-10-25 12:08:22 -03:00
Jack Grigg
a6df7ab567 Add a persistent screen showing basic node metrics
The screen is implemented using ANSI Escape sequences.

Closes #1331
2016-10-22 15:50:06 -05:00
zkbot
10ad093bbb Auto merge of #1567 - str4d:rename-binaries, r=daira
Rename binaries

This ensures that our installs don't clash with existing Bitcoin binaries and libraries.

Closes #1563 and #1565
2016-10-21 20:48:11 -04:00
Daira Hopwood
c7aaab7aa3 Integrate Tromp solver into miner code and remove its dependency on extra BLAKE2b implementation.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2016-10-20 06:03:16 +01:00
Jack Grigg
66a89c08df Rename bitcoin-tx to zcash-tx
Closes #1565
2016-10-18 16:45:43 -05:00
Jack Grigg
08d6b02d5e Rename libbitcoinconsensus to libzcashconsensus
Closes #1563
2016-10-18 16:45:37 -05:00
jl777
3a672e7b11 Merge remote-tracking branch 'zcash/master' into dPoW 2016-10-17 15:28:00 -03:00
Kevin Gallagher
2f3ecb4422 Adds zcbenchmarks.h to libbitcoin_wallet_a_SOURCES 2016-10-15 15:57:11 -05:00
Kevin Gallagher
58d09f27f5 Adds files in src/zcash/circuit to libzcash_a_SOURCES 2016-10-15 15:57:11 -05:00
Kevin Gallagher
7553b173b7 Add alertkeys.h to libbitcoin_server_a_SOURCES 2016-10-15 15:57:11 -05:00
Kevin Gallagher
9ffe371d09 Adds zcash/Proof.hpp to LIBZCASH_H 2016-10-15 15:57:11 -05:00
Kevin Gallagher
cc552e4db8 Adds zcash/Zcash.h to LIBZCASH sources 2016-10-15 15:57:11 -05:00
Kevin Gallagher
60157808cd Inlude crypto/equihash.tcc in list of sources for dist 2016-10-15 15:57:11 -05:00
Jack Grigg
c06664fb8f Fix Makefiles so "make dist" will run 2016-10-15 15:57:11 -05:00
Cory Fields
a5e918a07f release: add check-symbols and check-security make targets
These are not added to the default checks because some of them depend on
release-build configs.

[Zcash: See 56734f4b27 for check-security]
2016-10-15 14:02:29 -05:00
jl777
5166804f02 komodo strings 2016-09-13 13:03:02 -03:00
Simon
fc72c078be Add async RPC queue and operation classes.
Add z_getoperationstatus RPC command.
Add z_sendmany RPC command (dummy implementation, does not send actual
coins).
2016-09-08 21:46:13 -07:00
zkbot
27bd8e4129 Auto merge of #1270 - ThisIsNotOfficialCodeItsJustForks:t1168-fix-optimization-flags, r=daira
Fix inconsistent -O1/-O2, fix libzcash flags, add -fwrapv -fno-strict-aliasing

Closes #1168. In that ticket I decided the optimization flags for dependencies are out of scope, i.e. we go with whatever the upstream package maintainer chose.
2016-08-23 03:30:31 +00:00
Sean Bowe
decde3864d Enable MONTGOMERY_OUTPUT everywhere. 2016-08-22 15:48:43 -06:00
Sean Bowe
f0dab51cf3 Implement zkSNARK compression. 2016-08-22 00:36:12 -06:00
Taylor Hornby
f5d3d420f6 Add -fwrapv -fno-strict-aliasing; fix libzcash flags. 2016-08-17 11:57:51 -06:00
Simon
fbd90518e3 Use -O1 opimitization flag when building libzcash.
Continuation of #1064 and related to #1168.
2016-08-03 22:41:28 -07:00
Taylor Hornby
73537ebe97 Put hardened stuff in libzcash CPPFLAGS. 2016-07-21 20:45:11 -06:00