Go to file
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
.github move template to subdirectory, fix typo, include prompt under describing issue section, include uploading file directly to github ticket as option for sharing logs 2017-01-12 16:42:19 -05:00
build-aux/m4 Remove QT gunk from Makefiles. 2017-03-07 19:15:08 +00:00
contrib doc: remove documentation for rpcssl 2017-03-24 09:03:59 +13:00
depends libevent: add depends 2017-03-24 09:03:59 +13:00
doc doc: remove documentation for rpcssl 2017-03-24 09:03:59 +13:00
qa tests: GET requests cannot have request body, use POST in rest.py 2017-03-24 09:03:59 +13:00
share Remove some more QT-related stragglers. 2017-03-07 19:15:08 +00:00
src evhttpd implementation 2017-03-24 09:03:59 +13:00
zcutil Allow Rust-language related assets to be disabled with `--disable-rust`. 2017-03-18 07:47:40 -06:00
.gitattributes Separate protocol versioning from clientversion 2014-10-29 00:24:40 -04:00
.gitignore .gitignore cache/ and venv-mnf/ 2017-03-07 19:15:08 +00:00
.travis.yml Remove redundant gui options from build scripts 2017-03-10 10:35:23 -08:00
COPYING Updated the Bitcoin Core copyright statement 2017-03-16 13:40:42 +00:00
INSTALL Refer to Zcash wiki in INSTALL 2016-10-07 16:17:08 -07:00
Makefile.am Remove QT gunk from Makefiles. 2017-03-07 19:15:08 +00:00
README.md Update version to 1.0.7-1 2017-03-08 12:50:33 -08:00
autogen.sh Bugfix: Replace bashisms with standard sh to fix build on non-BASH systems 2014-10-03 23:45:26 +00:00
code_of_conduct.md Update my email address in the Code of Conduct. 2016-09-29 01:33:11 +01:00
configure.ac build: build-system changes for libevent 2017-03-24 09:03:59 +13:00
libzcashconsensus.pc.in Rename libbitcoinconsensus to libzcashconsensus 2016-10-18 16:45:37 -05:00

README.md

Zcash 1.0.7-1

What is Zcash?

Zcash is an implementation of the "Zerocash" protocol. Based on Bitcoin's code, it intends to offer a far higher standard of privacy through a sophisticated zero-knowledge proving scheme that preserves confidentiality of transaction metadata. Technical details are available in our Protocol Specification.

This software is the Zcash client. It downloads and stores the entire history of Zcash transactions; depending on the speed of your computer and network connection, the synchronization process could take a day or more once the blockchain has reached a significant size.

Security Warnings

See important security warnings in doc/security-warnings.md.

Zcash is unfinished and highly experimental. Use at your own risk.

Where do I begin?

We have a guide for joining the main Zcash network: https://github.com/zcash/zcash/wiki/1.0-User-Guide

Need Help?

  • See the documentation at the Zcash Wiki for help and more information.
  • Ask for help on the Zcash forum.

Participation in the Zcash project is subject to a Code of Conduct.

Building

Build Zcash along with most dependencies from source by running ./zcutil/build.sh. Currently only Linux is officially supported.

License

For license information see the file COPYING.