Go to file
Henry de Valence 2c0f48b587 Refactor connection logic and try a block request.
Attempting to implement requests for block data revealed a problem with
the previous connection logic.  Block data is requested by sending a
`getdata` message with hashes of the requested blocks; the peer responds
with a sequence of `block` messages with the blocks themselves.

However, this wasn't possible to handle with the previous connection
logic, which could only convert a single Bitcoin message into a
Response.  Instead, we factor out the message handling logic into a
Handler, which can statefully accumulate arbitrary data into a Response
and signal completion.  This is still pretty ugly but it does work.

As a side effect, the HeartbeatNonceMismatch error is removed; because
the Handler now tries to process messages until it comes to a Response,
it just ignores mismatched nonces (and will eventually time out).

The previous Mempool and Transaction requests were removed but could be
re-added in a different form later.  Also, the `Get` prefixes are
removed from `Request` to tidy the name.
2020-02-10 09:03:56 -08:00
.github/workflows Try clippy in CI 2020-02-05 12:42:32 -08:00
design Update zebra-network Monodraw diagram. 2019-10-24 15:06:02 -07:00
zebra-chain Make the BlockHeaderHash conversions work on borrows. 2020-02-10 09:03:56 -08:00
zebra-client Fix authorship, license information. (#55) 2019-10-08 09:25:59 -07:00
zebra-consensus Fix authorship, license information. (#55) 2019-10-08 09:25:59 -07:00
zebra-network Refactor connection logic and try a block request. 2020-02-10 09:03:56 -08:00
zebra-rpc Fix authorship, license information. (#55) 2019-10-08 09:25:59 -07:00
zebra-script Fix authorship, license information. (#55) 2019-10-08 09:25:59 -07:00
zebra-storage Fix authorship, license information. (#55) 2019-10-08 09:25:59 -07:00
zebrad Refactor connection logic and try a block request. 2020-02-10 09:03:56 -08:00
.firebaserc firebase init 2020-01-16 16:47:19 -05:00
.gitignore Update .gitignore 2020-02-04 18:04:53 -05:00
.rustfmt.toml Tracing endpoint (#3) 2019-09-09 13:05:42 -07:00
Cargo.lock Add BLOCK_MAINNET_415000_BYTES test vector and a test to deserialize it 2020-02-07 13:42:21 -08:00
Cargo.toml Upgrade tokio, futures, hyper to released versions. 2019-12-13 17:42:15 -05: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 docs link to README 2020-01-24 15:12:10 -08: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
firebase.json Configure redirect for firebase hosting 2020-01-16 18:38:16 -05:00

README.md

zebra 🦓

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.

Rendered docs from the main branch.

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.