Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tracking issue: Staking/Distribution QA and testing #3845

Open
2 tasks
erwanor opened this issue Feb 19, 2024 · 0 comments
Open
2 tasks

Tracking issue: Staking/Distribution QA and testing #3845

erwanor opened this issue Feb 19, 2024 · 0 comments
Labels
A-staking Area: Design and implementation of staking and delegation A-testing Area: Relates to testing of Penumbra

Comments

@erwanor
Copy link
Member

erwanor commented Feb 19, 2024

Staking/Distribution QA and testing

Main tracking issue: #3452

In the course of building the staking and distribution components, we frequently uncovered/created bugs in the implementation, either in the form of straight up dysfunctions (e.g. missing state transitions) or in harder to detect invariant violations (e.g. reward overspending).

In both cases, these mistakes could have been caught by leveraging our App test harness.

This issue is a first pass at inventorizing bugs that have occured in the process of [re]developing these components. For now, its purpose is to serve as a basis to guide future assurance work. Later, it will serve as a regular tracking issue that describes roadmap and completion of a project.

Historical bug inventory:

Validator state-machine

Staking end-epoch handling

Rate calculations

Stake bonding mechanisms

Validation

Testing tracker:

Tombstoning

Enshrining action invariants

Rate calculations

  • staking(tests): add rate calculation scenarios

Validator state-machine

  • staking(tests): cover validator state machine transitions
@erwanor erwanor added A-staking Area: Design and implementation of staking and delegation A-testing Area: Relates to testing of Penumbra labels Feb 19, 2024
cratelyn added a commit that referenced this issue Mar 18, 2024
fixes #3966. fixes #3908. fixes _part of_ #3995.

this branch introduces the first steps towards mock consensus (#3588)
testing of the staking component (#3845).

this defines a validator after genesis, and then shows that it does
_not_ enter the consensus set. #3966 is addressed in this branch so that
the existing genesis validator correctly enters the consensus set, and
so that we can successfully progress to the second epoch.

subsequent changes will exercise delegating to this validator in the
`mock_consensus_can_define_and_delegate_to_a_validator`.

#### ✨ changes

* alters `with_penumbra_auto_app_state` so that it adds an allocation of
delegation tokens to the shielded pool component's genesis content.

* extends `generate_penumbra_validator` so that it generates a real
spend key, and returns an `Allocation` for the generated validator.
_(see #3966)_

* adds a new `mock_consensus_can_define_and_delegate_to_a_validator`
test that defines a post-genesis validator. _(see #3908)_

* defines a new `ConsensusIndexRead::get_consensus_set()` method, which
collects all of the identity keys returned by `consensus_set_stream`.

* lowers the events in
`penumbra_mock_consensus::block::Builder::execute()` to trace-level
events.

* `penumbra_mock_consensus::builder::Builder` will now log a warning if
values may be errantly rewritten by the builder methods.

* `TestNode::fast_forward` sets its `i` span field to `1..n`, rather
than `0..n-1`.

---

#### :link: related

* #4009
* #4010
* #4011
* #4017
* #4027
* #4028
* #4029
* #3966
* #3908
* #3588

---------

Co-authored-by: Henry de Valence <hdevalence@penumbralabs.xyz>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-staking Area: Design and implementation of staking and delegation A-testing Area: Relates to testing of Penumbra
Projects
Status: Backlog
Development

No branches or pull requests

1 participant