Go to file
Jane Lusby 685bdaf2df don't require absense of cancel handles
Prior to this change, we required that services that are canceled do not
have a cancel handle in the `cancel_handles` list, based on the
assumption that the handle must have been removed in the process of
canceling this service.

This doesn't holding up though, because it is currently possible for us
to have the same peer connect to us multiple times, the second connect
removes the cancel handle of the original connect and inserts it's own
cancel handle in its place. In this scenario, when the first service is
polled for readiness it will see that it has been canceled and go to
clean itself up, but when it asserts that it doesn't have a cancel
handle it will see the cancel handle of the second connect event, which
uses the same key as the first connect, and fail its debug assertion.

This change removes that debug assert on the assumption that it is okay
for a peer to connect multiple times consecutively, and that the correct
behavior in that case is to just cancel the first connection and
continue as normal.
2020-06-16 13:42:31 -07:00
.github Create zbot.yml 2020-06-13 06:15:20 -04:00
design little more cleaning 2020-06-16 12:04:45 -07:00
zebra-chain Update ed25519-zebra to 0.3 2020-06-16 00:42:25 -04:00
zebra-client Add Zebra logo to all workspace crates. 2020-02-26 21:25:35 -08:00
zebra-consensus state: Make Response::Added return the block header hash 2020-06-12 09:46:18 -07:00
zebra-network don't require absense of cancel handles 2020-06-16 13:42:31 -07:00
zebra-rpc Add Zebra logo to all workspace crates. 2020-02-26 21:25:35 -08:00
zebra-script Correct block version parsing. 2020-03-18 21:34:02 -04:00
zebra-state implement initial persistent state backend based on `sled` (#473) 2020-06-15 14:41:26 -07:00
zebra-test-vectors Add initial version of zebra-state (#414) 2020-06-02 16:16:17 -07:00
zebrad be more explicit with pattern in drain_requests 2020-06-16 12:04:45 -07:00
.firebaserc Try building internal docs. 2020-02-10 18:12:43 -08:00
.gitignore Ignore emacs temp files 2020-06-12 09:46:18 -07:00
.rustfmt.toml Tracing endpoint (#3) 2019-09-09 13:05:42 -07:00
Cargo.lock Bump thiserror from 1.0.19 to 1.0.20 2020-06-16 09:51:05 -07:00
Cargo.toml fix tracing configuration issues (#432) 2020-06-04 19:34:06 -07:00
Dockerfile Try debian:buster-slim instead of alpine 2020-01-30 13:39:13 -05:00
LICENSE-APACHE Add copyright marks on each license 2019-11-14 11:50:49 -08:00
LICENSE-MIT Add copyright marks on each license 2019-11-14 11:50:49 -08:00
README.md Add link to CI workflows on main 2020-04-22 03:19:33 -04:00
clippy.toml Apply clippy fixes 2020-02-05 12:42:32 -08:00
cloudbuild.yaml 0.17.0 has an old version cached, rolling back to 0.15.0 2020-02-04 04:44:38 -05:00
codecov.yml Make per-patch coverage informational, not enforced 2020-06-03 02:34:28 -04:00
firebase.json Configure redirect for firebase hosting 2020-01-16 18:38:16 -05:00
prometheus.yaml Tell Prometheus to scrape more aggressively 2020-02-14 20:14:05 -05:00

README.md

Zebra logotype


codecov License

Hello! I am Zebra, an ongoing Rust implementation of a Zcash node.

Zebra is a work in progress. It is developed as a collection of zebra-* libraries implementing the different components of a Zcash node (networking, chain structures, consensus rules, etc), and a zebrad binary which uses them.

Most of our work so far has gone into zebra-network, building a new networking stack for Zcash, and zebra-chain, building foundational data structures.

Rendered docs from the main branch.

Join us on Discord.

License

Zebra is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT.

Metrics

Notes on local metrics collection:

# create a storage volume for grafana (once)
sudo docker volume create grafana-storage
# create a storage volume for prometheus (once)
sudo docker volume create prometheus-storage

# run prometheus with the included config
sudo docker run --network host -v prometheus-storage:/prometheus -v /path/to/zebra/prometheus.yaml:/etc/prometheus/prometheus.yml  prom/prometheus

# run grafana
sudo docker run -d --network host -e GF_SERVER_HTTP_PORT=3030 -v grafana-storage:/var/lib/grafana grafana/grafana

Now the grafana dashboard is available at http://localhost:3030 ; the default password is admin/admin.