Commit Graph

2244 Commits

Author SHA1 Message Date
Deirdre Connolly 47d78d4cf4 Try sentry::init() 2020-12-09 13:06:18 -05:00
Deirdre Connolly b3c8794760 Recommend using --locked with `cargo install` by default
cargo build != cargo install, we should just make it as easy as possible to install in one go
2020-12-09 12:38:39 -05:00
teor 85c7eea444
Add download, build and run instructions to the README (#1478)
Zebra first alpha release

The goals of this release are to:
- participate in the Zcash network,
- replicate the Zcash chain state,
- implement the Zcash proof of work consensus rules, and
- sync on Mainnet under excellent network conditions.

Currently, Zebra does not validate all the Zcash consensus rules.
It may be unreliable on Testnet, and under less-than-perfect
network conditions.

Co-authored-by: teor <teor@riseup.net>
Co-authored-by: Deirdre Connolly <deirdre@zfnd.org>
Co-authored-by: Jane Lusby <jlusby42@gmail.com>
2020-12-08 19:22:42 -05:00
Pili Guerra 444002d7a3
Fix small nits in README (#1481)
* Fix small nit

* Fix link to future-work
2020-12-08 17:32:48 +01:00
Jane Lusby 65e38b3c74
Begin working on rough draft for alpha section in README (#1462)
* Expand README
* add more alpha release sections
* split existing README into sections
* reorder the sections based on reader priority
* Be clearer about what Zebra doesn't do
* Update known issues

Co-authored-by: Deirdre Connolly <deirdre@zfnd.org>
Co-authored-by: teor <teor@riseup.net>
2020-12-08 15:41:49 +10:00
teor 621dc23082 Link to where the deployments docs will be 2020-12-07 21:11:24 -05:00
Pili Guerra 113c27196e Update alpha-release-criteria.md
Update after Team Sync on 2020.12.07
2020-12-07 21:11:24 -05:00
Henry de Valence 0842eb2dab
zebra: move to 1.x-based versioning. (#1476)
Previously we set the crate versions to 3.x, so that the major version was
aligned with the NU version.  But we want to be able to make API changes
independently of the NU schedule.
2020-12-08 08:53:07 +10:00
teor de613409c2
Support systems where bash isn't in /usr/bin (#1473)
Also remove the space between `#!` and `/`, because some OSes don't support
a space there.
2020-12-08 07:47:31 +10:00
teor 16ffb1dbbf
Disable issue URLs on all timeouts (#1470)
This change helps prevent spurious bug reports.
2020-12-08 07:47:01 +10:00
teor 81d19ca196
Move the system requirements to the README 2020-12-08 07:45:05 +10:00
teor d965a4cd24
Check crate versions before a release 2020-12-08 07:36:59 +10:00
teor 3d9a2f1da5
Stop panicking on side chain contextual validation (#1465)
Closes #1464.
2020-12-08 07:30:55 +10:00
teor c75a659d03
Update release criteria (#1469)
Add checkpoint list and known serious issues updates
Update statuses based on recent changes
2020-12-07 12:14:58 +01:00
teor 5b687f878a Remove unused dependencies found using cargo-udeps 2020-12-05 14:53:28 -05:00
teor 531a33f03b
Update the zebrad commit whenever any Zebra crate changes (#1455)
vergen's implementation of REBUILD_ON_HEAD_CHANGE assumes that the .git
directory is in the crate root, but Zebra uses a workspace.

Temporary fix for rustyhorde/vergen#21.
2020-12-05 07:23:05 +10:00
teor e2792fa656
Add crate dependencies to the release checklist (#1459)
* Add crate dependencies to the release checklist

* Update "Last updated" date

Co-authored-by: Pili Guerra <pili@piliguerra.com>
2020-12-04 11:47:17 +01:00
teor b4a50fd99f
Downgrade tokio to 0.3.4 to avoid a time wheel panic (#1453)
See tokio-rs/tokio#2789 for details. We were seeing this panic during
normal operation, not just at shutdown.
2020-12-04 13:52:37 +10:00
Deirdre Connolly 8f58c41a38
Pipe SHORT_SHA into container builds (#1451) 2020-12-03 22:51:42 -05:00
Jane Lusby ef7e91c3c7
disable color-eyre colors if not connected to a tty (#1443)
* disable color-eyre colors if not connected to a tty
* check if color is disabled
2020-12-04 11:05:25 +10:00
teor b72d095d6b Fix a comment typo
Co-authored-by: Deirdre Connolly <durumcrustulum@gmail.com>
2020-12-04 10:44:36 +10:00
teor 9bd3b8becd Clarify a difficulty debug impl comment 2020-12-04 10:44:36 +10:00
teor 0e1f330720 Use error message derives in zebra-state
Rather than displaydoc.
2020-12-04 10:44:36 +10:00
teor 2d3c41f0af Rename a constant for consistency 2020-12-04 10:44:36 +10:00
teor 7f823e7c5a Activate the max time rule on testnet at block 653606 2020-12-04 10:44:36 +10:00
teor 2014dffd27 Show expanded values in CompactDifficulty debug fmt 2020-12-04 10:44:36 +10:00
teor 207ded6889 Add error context for contextual validation 2020-12-04 10:44:36 +10:00
teor 23e07a94cf Implement the block header time consensus rules 2020-12-04 10:44:36 +10:00
teor 0bac2dafcc Split out a separate `median_time_past` function 2020-12-04 10:44:36 +10:00
teor ab486d336f Update the contextual difficulty module doc 2020-12-04 10:44:36 +10:00
Jane Lusby c64d8dc8aa
switch to source based coverage (#1293)
* switch to new llvm source based coverage

* upload artifact and simplified

* filter out irrelevant dependency coverage

* enable the correct filters on coverage

* correctly specify all binaries

* remove sparse flag from coverage

* update the coverage script organization

* fix typo in coverage script
2020-12-03 13:36:40 -08:00
dependabot[bot] c428cbb59f build(deps): bump serde_json from 1.0.59 to 1.0.60
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.59 to 1.0.60.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.59...v1.0.60)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-03 11:21:57 -05:00
dependabot[bot] 8c052cc39a build(deps): bump color-eyre from 0.5.9 to 0.5.10
Bumps [color-eyre](https://github.com/yaahc/color-eyre) from 0.5.9 to 0.5.10.
- [Release notes](https://github.com/yaahc/color-eyre/releases)
- [Changelog](https://github.com/yaahc/color-eyre/blob/v0.5.10/CHANGELOG.md)
- [Commits](https://github.com/yaahc/color-eyre/compare/v0.5.9...v0.5.10)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-03 10:55:16 -05:00
Pili Guerra 19d25fb7be
WIP: First draft of alpha release criteria for review (#1374)
* WIP: First draft of release criteria for review

* Update release-criteria.md

Fix formatting

* Added more details to release criteria

Co-authored-by: teor <teor@riseup.net>

* Add "Future Releases" section

* Remove Alpha Release criteria items

These should be included and expanded upon in future releases

Co-authored-by: teor <teor@riseup.net>

* Formatting fixes

* Remove support and troubleshooting criteria from first alpha release

* Switching functionality criteria between future and alpha release

* Remove redundant statement from "Network Readiness" section for "Future Releases"

* Go/No-Go checklist should be a living document

Let's make this a living document by making it clear that this reflects the latest status as of the "Last updated" date

* Update release-criteria.md

Update status after Go/No-Go meeting

* Make RAG status symbols more accessible

* Update release-criteria.md

- Remove "Future Releases" section
- Clean up formatting

* Update book/src/dev/release-criteria.md

change "`zebrad` can validate proof of work" from green to amber

Co-authored-by: teor <teor@riseup.net>

* Update book/src/dev/release-criteria.md

Change "Build completes within 30 minutes in Zebra's CI" from green to amber

Co-authored-by: teor <teor@riseup.net>

* Update book/src/dev/release-criteria.md

Change "known panics, errors and warnings have open tickets" and "`zebrad` executes normally" form amber to green

Co-authored-by: teor <teor@riseup.net>

* Rename release-criteria.md to alpha-release-criteria.md

We will have new release criteria for future releases

Co-authored-by: teor <teor@riseup.net>
2020-12-03 15:44:33 +01:00
Jane Lusby 90f944709b
fix git commit logic to work on gcloud (#1442) 2020-12-03 15:18:55 +10:00
teor c0bbac89b3 `cargo fmt --all` 2020-12-02 19:45:27 -05:00
teor e4525d8ee2 Improve metrics acceptance test failure messages 2020-12-02 19:45:27 -05:00
Henry de Valence c04cc39a03 state: dodge a bug in zcashd
Zcashd will blindly request more block headers as long as it got 160
block headers in response to a previous query, EVEN IF THOSE HEADERS ARE
ALREADY KNOWN.  To dodge this behavior, return slightly fewer than the
maximum, to get it to go away.

0ccc885371/src/main.cpp (L6274-L6280)

Without this change, communication between a partially-synced `zebrad`
and fully-synced `zcashd` looked like this:

1.  `zebrad` connects to `zcashd`, which sends an initial `getheaders`
    request;

2.  `zebrad` correctly computes the intersection of the provided block
    locator with the node's current chain and returns 160 following
    headers;

3.  `zcashd` does not check whether it already has those headers and
    assumes that any provided headers are new and re-validates them;

4.  `zcashd` assumes that because `zebrad` responded with 160 headers,
    the `zebrad` node is ahead of it, and requests the next 160 headers.

5.  Because block locators are sparse, the intersection between the
    `zcashd` and `zebrad` chains is likely well behind the `zebrad` tip,
    so this process continues for thousands of blocks.

To avoid this problem, we return slightly fewer than the protocol
maximum (158 rather than 160, to guard against off-by-one errors in
zcashd).  This does not interfere with use of the returned headers by
peers that check the headers, but does prevent `zcashd` from trying to
download thousands of block headers it already has.

This problem does not occur in the `zcashd<->zcashd` case only because
`zcashd` does not respond to `getheaders` messages while it is syncing.
However, implementing this behavior in Zebra would be more complicated,
because we don't have a distinct "initial block sync" state (we do
poll-based syncing continuously) and we don't have shared global
variables to modify to set that state.

Relevant links (thanks @str4d):

- The PR that introduced this behavior: https://github.com/bitcoin/bitcoin/pull/4468/files#r17026905
- https://github.com/bitcoin/bitcoin/issues/6861
- https://github.com/bitcoin/bitcoin/issues/6755
- https://github.com/bitcoin/bitcoin/pull/8306#issuecomment-614916454
2020-12-02 19:44:24 -05:00
Deirdre Connolly 9221dddb7b Revert "zebrad: remove git pin on metrics dependency"
It broke our metrics endpoint.

This reverts commit dc77163524.
2020-12-02 17:28:49 -05:00
Jane Lusby d7bef1c155
bump color-eyre version to avoid a panic when printing spantraces (#1438) 2020-12-02 14:16:18 -08:00
teor 0e42d8b6c1 Always enable color_eyre, even when color is disabled
We want to automatically disable colors upstream in color_eyre,
and add a config that allows users to always turn off color.
2020-12-02 10:25:44 -08:00
teor bed34168c1 Automatically disable abscissa colors and color_eyre when writing to a file 2020-12-02 10:25:44 -08:00
teor 97d1a81b7c Automatically disable colors when tracing to a file 2020-12-02 10:25:44 -08:00
dependabot[bot] 6a075ed4b2 build(deps): bump owo-colors from 1.1.3 to 1.2.0
Bumps [owo-colors](https://github.com/jam1garner/owo-colors) from 1.1.3 to 1.2.0.
- [Release notes](https://github.com/jam1garner/owo-colors/releases)
- [Commits](https://github.com/jam1garner/owo-colors/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-02 10:25:16 -08:00
Henry de Valence b449fe93b2 network: correct data modeling for headers messages
We modeled a Bitcoin `headers` message as being a list of block headers.
However, the actual data structure is slightly different: it's a list of (block
header, transaction count) pairs.  This caused zcashd to reject our headers
messages.

To fix this, introduce a new `CountedHeader` struct with a `block::Header` and
transaction count `usize`, then thread it through the inbound service and the
state.

I tested this locally by running Zebra with these changes and inspecting a
trace-level log of the span of a peer connection that requested a nontrivial
headers packet from us, and verified that it did not reject our message.
2020-12-02 10:24:31 -08:00
Henry de Valence dc77163524 zebrad: remove git pin on metrics dependency
Because the new version of the prometheus exporter launches its own
single-threaded runtime on a dedicated worker thread, there's no need
for the tokio and hyper versions it uses internally to align with the
versions used in other crates.  So we don't need to use our fork with
tokio 0.3, and can just use the published alpha.  Advancing to a later
alpha may fix the missing-metrics issues.
2020-12-02 10:23:59 -08:00
Henry de Valence bfbc737b6c network: don't cancel heartbeat requests
The cancellation implementation changes made to the connection state machine
mean that if a response oneshot is dropped, the connection will avoid
cancelling the request.  So the heartbeat task does have to wait on the response.
2020-12-02 02:18:13 -05:00
Henry de Valence 69ba5584f3 network: correct parsing of reject messages
Not all reject messages include a data field.  This change partially addresses
a problem that could lead to a depleted peer set:

1. We send a response to a `getheaders` message;
2. The remote peer `reject`s our `headers` message for some reason;
3. We fail to parse their `reject` message and close the connection;
4. Repeating this process, we have no more peers.

This commit fixes (3) but does not address (2).
2020-12-02 02:12:29 -05:00
teor 34518525a5 Improve peer set logging hints
Delete hints about configuring peers.
Delete hint for typical "no ready peers" behaviour.
2020-12-01 21:37:15 -08:00
teor cee0e86190 Increase the open file limit on unix platforms
If the limit is less than the ideal, try to increase it to the ideal.
If that doesn't work, try to increase the limit as high as possible.
If the limit is still less than the minimum, panic.
2020-12-02 15:32:36 +10:00