Closed
Description
Motivation
We want to generate checkpoints from the cached states in Zebra's CI, so that developers can do releases easily.
Complex Code or Requirements
- We currently call
zcash-cli
in the checkpoint binary, we'll need to switch to making RPC requests directly. - Set up a test harness that launches
zebrad
with RPCs, and connectszebra-checkpoints
to it. This should be simple, we have existing test code that launcheszebrad
with RPCs.- The mainnet version needs to use the cached state for efficiency, this slightly reduces our security, because we also test the checkpoints against the same cached state.
- The testnet version can also use a new testnet cached state, failures should be ignored because testnet can be unstable.
Originally I said that testnet can do a full sync from an empty state, but it turns out that's complicated to configure in our test harness.
Testing
- Compare manually generated checkpoints from
zcashd
and the checkpoints in CI. - Add a unit test that verifies that the generated checkpoints obey maximum checkpoint height gap, and that the minimum gap is at least 17 (the maximum checkpoint bytes divided by the maximum block size). This helps detect copy-paste mistakes.
DevOps
- After PR fix(ci): Delete mainnet and testnet disks separately #6582 merges, re-enable https://github.com/ZcashFoundation/zebra/actions/workflows/delete-gcp-resources.yml
- Admin: Require the new mainnet checkpoints job in the
main
branch protection rules
Testnet failures are expected occasionally, so we don't want to require that job.
Metadata
Assignees
Labels
Type
Projects
Status
Done