Go to file
Martin Ankerl 1245ce0d8c Use best-fit strategy in Arena, now O(log(n)) instead O(n)
This replaces the first-fit algorithm used in the Arena with a best-fit. According to "Dynamic Storage Allocation: A Survey and Critical Review", Wilson et. al. 1995, http://www.scs.stanford.edu/14wi-cs140/sched/readings/wilson.pdf, both startegies work well in practice.

The advantage of using best-fit is that we can switch the slow O(n) algorithm to O(log(n)) operations. Additionally, some previously O(log(n)) operations are now replaced with O(1) operations by using a hash map. The end effect is that the benchmark runs about 2.5 times faster on my machine:

old: BenchLockedPool, 5, 530, 5.25749, 0.00196938, 0.00199755, 0.00198172
new: BenchLockedPool, 5, 1300, 5.11313, 0.000781493, 0.000793314, 0.00078606

I've run all unit tests and benchmarks.

Zcash: Excludes change to benchmark.
2020-07-31 07:14:34 +01:00
.cargo Use ed25519-zebra from crates.io. 2020-07-08 13:11:27 -06:00
.github Update documentation info 2020-04-12 15:27:09 +03:00
build-aux/m4 Fix typos 2020-04-17 17:46:15 +03:00
contrib Auto merge of #4614 - str4d:ctaes, r=str4d 2020-07-31 00:14:40 +00:00
depends Use ed25519-zebra from crates.io. 2020-07-08 13:11:27 -06:00
doc Auto merge of #4584 - defuse:update-ignore, r=str4d 2020-07-29 10:45:44 +00:00
qa Auto merge of #4627 - LarryRuane:issue4596-flush-wallet-db, r=str4d 2020-07-29 13:12:04 +00:00
share [doc] Fix markdown 2019-12-17 12:18:50 -06:00
src Use best-fit strategy in Arena, now O(log(n)) instead O(n) 2020-07-31 07:14:34 +01:00
zcutil Enforce pre-release dependency update check in make-release.py 2020-06-24 18:14:47 -06:00
.gitattributes
.gitignore Move root of Rust crate into repo root 2020-03-06 16:49:03 +13:00
CONTRIBUTING.md
COPYING Squashed 'src/crypto/ctaes/' content from commit 003a4acfc 2020-07-17 18:46:51 +12:00
Cargo.lock Use ed25519-zebra from crates.io. 2020-07-08 13:11:27 -06:00
Cargo.toml Use ed25519-zebra from crates.io. 2020-07-08 13:11:27 -06:00
INSTALL Typo Fix 2019-08-21 11:17:21 -04:00
Makefile.am Add Rust resources to distribution tarball. 2020-04-20 13:44:06 -06:00
README.md make-release.py: Versioning changes for 3.1.0. 2020-07-28 06:54:02 +08:00
autogen.sh
code_of_conduct.md
configure.ac make-release.py: Versioning changes for 3.1.0. 2020-07-28 06:54:02 +08:00
libzcashconsensus.pc.in
responsible_disclosure.md
rust-toolchain depends: Use Rust 1.42.0 toolchain 2020-03-13 13:47:56 +13:00

README.md

Zcash 3.1.0

What is Zcash?

Zcash is an implementation of the "Zerocash" protocol. Based on Bitcoin's code, Zcash intends to offer a far higher standard of privacy through a sophisticated zero-knowledge proving scheme that preserves confidentiality of transaction metadata. More 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 on the Security Information page.

Zcash is experimental and a work in progress. Use it at your own risk.

📒 Deprecation Policy

This release is considered deprecated 16 weeks after the release day. There is an automatic deprecation shutdown feature which will halt the node some time after this 16-week period. The automatic feature is based on block height.

Getting Started

Please see our user guide for joining the main Zcash network.

Need Help?

  • 📘 See the documentation at the ReadTheDocs for help and more information.
  • 📨 Ask for help on the Zcash forum.
  • 💬 Chat with our support community on Discord

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

Building

Build Zcash along with most dependencies from source by running the following command:

./zcutil/build.sh -j$(nproc)

Currently, Zcash is only officially supported on Debian and Ubuntu.

License

For license information see the file COPYING.