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

[Application] Add min_stake application module param #845

Merged
merged 97 commits into from
Oct 4, 2024

Conversation

bryanchriswhite
Copy link
Contributor

@bryanchriswhite bryanchriswhite commented Sep 27, 2024

Summary

  • Adds the min_stake application module param.
  • Adds missing validation unit test coverage around existing application module param, max_delegated_gateways.
  • Pushes validation from the MsgUpdateParam handler down into MsgUpdateParam#ValidateBasic().
  • Ensures Params#Valid() is called prior to setting params in MsgUpdateParam handler.
  • Updates error returns in the same handler to ensure all error paths return appropriate gRPC status errors.

Dependencies

Dependents

Issue

Type of change

Select one or more from the following:

Testing

  • Documentation: make docusaurus_start; only needed if you make doc changes
  • Unit Tests: make go_develop_and_test
  • LocalNet E2E Tests: make test_e2e
  • DevNet E2E Tests: Add the devnet-test-e2e label to the PR.

Sanity Checklist

  • I have tested my changes using the available tooling
  • I have commented my code
  • I have performed a self-review of my own code; both comments & source code
  • I create and reference any new tickets, if applicable
  • I have left TODOs throughout the codebase, if applicable

bryanchriswhite added a commit that referenced this pull request Oct 4, 2024
## Summary

1. Adds minimum stake validation to the gateway stake message handler
(i.e. total stake must be >= minimum stake).
2. Updates error returns in the same handler to ensure all error paths
return appropriate gRPC status errors.
3. Replaces some warn and error level logs with info level, which I
believe is more appropriate (until we have a practical debug level, at
which point they should become debug logs).

## Dependencies

- #809 

## Dependents

- #844 
- #845 
- #847 
- #848 
- #849
- #850
- #857

## Issue

Gateway staking min stake validation.

- #612

## Type of change

Select one or more from the following:

- [x] New feature, functionality or library
- [x] Consensus breaking; add the `consensus-breaking` label if so. See
#791 for details
- [ ] Bug fix
- [ ] Code health or cleanup
- [ ] Documentation
- [ ] Other (specify)

## Testing

<!-- READ & DELETE:
- Documentation changes: only keep this if you're making documentation
changes
- Unit Testing: Remove this if you didn't make code changes
- E2E Testing: Remove this if you didn't make code changes
- See the quickstart guide for instructions:
https://dev.poktroll.com/developer_guide/quickstart
- DevNet E2E Testing: Remove this if you didn't make code changes
- THIS IS VERY EXPENSIVE: only do it after all the reviews are complete.
- Optionally run `make trigger_ci` if you want to re-trigger tests
without any code changes
- If tests fail, try re-running failed tests only using the GitHub UI as
shown
[here](https://github.com/pokt-network/poktroll/assets/1892194/607984e9-0615-4569-9452-4c730190c1d2)
-->

- [ ] **Documentation**: `make docusaurus_start`; only needed if you
make doc changes
- [x] **Unit Tests**: `make go_develop_and_test`
- [ ] **LocalNet E2E Tests**: `make test_e2e`
- [ ] **DevNet E2E Tests**: Add the `devnet-test-e2e` label to the PR.

## Sanity Checklist

- [x] I have tested my changes using the available tooling
- [x] I have commented my code
- [x] I have performed a self-review of my own code; both comments &
source code
- [ ] I create and reference any new tickets, if applicable
- [ ] I have left TODOs throughout the codebase, if applicable

---------

Co-authored-by: Redouane Lakrache <[email protected]>
Co-authored-by: Daniel Olshansky <[email protected]>
Co-authored-by: red-0ne <[email protected]>
bryanchriswhite added a commit that referenced this pull request Oct 4, 2024
## Summary

```bash
ignite scaffold message update-param --module gateway --signer authority name as_type --response params
```

Adds the `MsgUpdateParam` message so that the application module may
update individual parameters. The application module's min_stake param
will be added in a subsequent PR.

## Dependencies

- #809
- #843 

## Dependents

- #845 
- #847 
- #848 
- #849
- #850
- #857

## Issue

Add individual param updates support to the application module

- #612

## Type of change

Select one or more from the following:

- [x] New feature, functionality or library
- [x] Consensus breaking; add the `consensus-breaking` label if so. See
#791 for details
- [ ] Bug fix
- [ ] Code health or cleanup
- [ ] Documentation
- [ ] Other (specify)

## Testing

- [ ] **Documentation**: `make docusaurus_start`; only needed if you
make doc changes
- [ ] **Unit Tests**: `make go_develop_and_test`
- [ ] **LocalNet E2E Tests**: `make test_e2e`
- [ ] **DevNet E2E Tests**: Add the `devnet-test-e2e` label to the PR.

## Sanity Checklist

- [x] I have tested my changes using the available tooling
- [ ] I have commented my code
- [x] I have performed a self-review of my own code; both comments &
source code
- [ ] I create and reference any new tickets, if applicable
- [ ] I have left TODOs throughout the codebase, if applicable

---------

Co-authored-by: Redouane Lakrache <[email protected]>
Co-authored-by: Daniel Olshansky <[email protected]>
Co-authored-by: red-0ne <[email protected]>
@bryanchriswhite bryanchriswhite changed the base branch from issues/612/app/msg-update-param to main October 4, 2024 17:18
…min-stake-param

* pokt/main:
  [Application] chore: add `MsgUpdateParam` to application module  (#844)
@@ -81,6 +81,7 @@ var (
QueryParamsResponse: sharedtypes.QueryParamsResponse{},
},
ParamTypes: map[ParamType]any{
// TODO_IMPROVE: Add a Uint64 asType instead of using int64 for uint64 params.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we remove this?

params := k.GetParams(ctx)

switch msg.Name {
// TODO_IMPROVE: Add a Uint64 asType instead of using int64 for uint64 params.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would appreciate if you can tend to it in a short follow up PR?

You have the most context and it's cached in your mind.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will open an issue for it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bryanchriswhite bryanchriswhite merged commit 49290e3 into main Oct 4, 2024
10 checks passed
@bryanchriswhite bryanchriswhite deleted the issues/612/application/min-stake-param branch October 4, 2024 18:29
bryanchriswhite added a commit that referenced this pull request Oct 7, 2024
…tion/burning

* issues/612/application/staking:
  [Application] Add `min_stake` application module param (#845)
  chore: regenerate protobufs
  [Application] chore: add `MsgUpdateParam` to application module  (#844)
  fix: linter error
  [Gateway] Enforce minimum stake when staking (#843)
  Empty commit
  [Tokenomics] Use big.Rat to calculate new difficulty hash (#831)
  chore: review feedback improvements
  Empty commit
  fix: linter errors
  fix: typo
  chore: review feedback improvements
bryanchriswhite added a commit that referenced this pull request Oct 9, 2024
## Summary

- Adds minimum stake validation to the application stake message handler
(i.e. total stake must be >= minimum stake).
- Updates error returns in the same handler to ensure all error paths
return appropriate gRPC status errors.
- Replaces some warn and error level logs with info level, which I
believe is more appropriate (until we have a practical debug level, at
which point they should become debug logs).

## Dependencies

- #809
- #843 
- #844 
- #845

## Dependents
 
- #848 
- #849
- #850
- #857
- #852 
- #861 
- #851 
- #863 

## Issue

- #612

## Type of change

Select one or more from the following:

- [x] New feature, functionality or library
- [x] Consensus breaking; add the `consensus-breaking` label if so. See
#791 for details
- [ ] Bug fix
- [ ] Code health or cleanup
- [ ] Documentation
- [ ] Other (specify)

## Testing

- [ ] **Documentation**: `make docusaurus_start`; only needed if you
make doc changes
- [ ] **Unit Tests**: `make go_develop_and_test`
- [ ] **LocalNet E2E Tests**: `make test_e2e`
- [ ] **DevNet E2E Tests**: Add the `devnet-test-e2e` label to the PR.

## Sanity Checklist

- [x] I have tested my changes using the available tooling
- [x] I have commented my code
- [ ] I have performed a self-review of my own code; both comments &
source code
- [ ] I create and reference any new tickets, if applicable
- [x] I have left TODOs throughout the codebase, if applicable

---------

Co-authored-by: Redouane Lakrache <[email protected]>
Co-authored-by: Daniel Olshansky <[email protected]>
Co-authored-by: red-0ne <[email protected]>
bryanchriswhite added a commit that referenced this pull request Oct 11, 2024
## Summary

Updates `ProcessTokenLogicModules()` logic to unbond applications whose
stake is below the minimum **after** processing all TLMs.

## Dependencies

- #809
- #843 
- #844 
- #845
- #847

## Dependents
 
- #849
- #850
- #857
- #852 
- #861 
- #851 
- #863 

## Issue

- #612

## Type of change

Select one or more from the following:

- [x] New feature, functionality or library
- [ ] Consensus breaking; add the `consensus-breaking` label if so. See
#791 for details
- [ ] Bug fix
- [ ] Code health or cleanup
- [ ] Documentation
- [ ] Other (specify)

## Testing

- [ ] **Documentation**: `make docusaurus_start`; only needed if you
make doc changes
- [x] **Unit Tests**: `make go_develop_and_test`
- [ ] **LocalNet E2E Tests**: `make test_e2e`
- [ ] **DevNet E2E Tests**: Add the `devnet-test-e2e` label to the PR.

## Sanity Checklist

- [x] I have tested my changes using the available tooling
- [x] I have commented my code
- [x] I have performed a self-review of my own code; both comments &
source code
- [ ] I create and reference any new tickets, if applicable
- [x] I have left TODOs throughout the codebase, if applicable

---------

Co-authored-by: Redouane Lakrache <[email protected]>
Co-authored-by: Daniel Olshansky <[email protected]>
Co-authored-by: red-0ne <[email protected]>
bryanchriswhite added a commit that referenced this pull request Oct 14, 2024
* issues/612/shared/refresh: (46 commits)
  test: supplier up-staking from below min. stake
  fix: linter error
  fix: flaky test
  [Application] Enforce minimum stake when burning (#848)
  Empty commit
  chore: review feedback improvements
  chore: regenerate protobufs
  chore: review feedback improvements
  test: fix application min stake integration test
  chore: review feedback improvements
  Empty commit
  fix: linter error
  chore: quick fixes
  [DifficultyHash] Prepare for difficulty multiplier usage (#836)
  [Application] Enforce minimum stake when staking (#847)
  Empty commit
  [Tokenomics] Prevent GMR to produce zero values (#866)
  Empty commit
  [Application] Add `min_stake` application module param (#845)
  chore: regenerate protobufs
  ...
bryanchriswhite added a commit that referenced this pull request Oct 14, 2024
* issues/612/proof/refresh: (46 commits)
  test: supplier up-staking from below min. stake
  fix: linter error
  fix: flaky test
  [Application] Enforce minimum stake when burning (#848)
  Empty commit
  chore: review feedback improvements
  chore: regenerate protobufs
  chore: review feedback improvements
  test: fix application min stake integration test
  chore: review feedback improvements
  Empty commit
  fix: linter error
  chore: quick fixes
  [DifficultyHash] Prepare for difficulty multiplier usage (#836)
  [Application] Enforce minimum stake when staking (#847)
  Empty commit
  [Tokenomics] Prevent GMR to produce zero values (#866)
  Empty commit
  [Application] Add `min_stake` application module param (#845)
  chore: regenerate protobufs
  ...

# Conflicts:
#	x/service/types/errors.go
bryanchriswhite added a commit that referenced this pull request Oct 14, 2024
## Summary

```bash
ignite scaffold message update-param --module supplier --signer authority name as_type --response params
```

Adds the `MsgUpdateParam` message so that the supplier module may update
individual parameters following section 0 from the updated docs (see
#839).

## Dependencies

- #809
- #843 
- #844 
- #845
- #847
- #848

## Dependents
  
- #850
- #857
- #852 
- #861 
- #851 
- #863 

## Issue

- #612

## Type of change

Select one or more from the following:

- [x] New feature, functionality or library
- [ ] Consensus breaking; add the `consensus-breaking` label if so. See
#791 for details
- [ ] Bug fix
- [ ] Code health or cleanup
- [ ] Documentation
- [ ] Other (specify)

## Testing

- [ ] **Documentation**: `make docusaurus_start`; only needed if you
make doc changes
- [x] **Unit Tests**: `make go_develop_and_test`
- [ ] **LocalNet E2E Tests**: `make test_e2e`
- [ ] **DevNet E2E Tests**: Add the `devnet-test-e2e` label to the PR.

## Sanity Checklist

- [x] I have tested my changes using the available tooling
- [x] I have commented my code
- [x] I have performed a self-review of my own code; both comments &
source code
- [ ] I create and reference any new tickets, if applicable
- [x] I have left TODOs throughout the codebase, if applicable

---------

Co-authored-by: Redouane Lakrache <[email protected]>
Co-authored-by: Daniel Olshansky <[email protected]>
Co-authored-by: red-0ne <[email protected]>
bryanchriswhite added a commit that referenced this pull request Oct 14, 2024
…-uint64

* issues/612/service/refresh: (46 commits)
  test: supplier up-staking from below min. stake
  fix: linter error
  fix: flaky test
  [Application] Enforce minimum stake when burning (#848)
  Empty commit
  chore: review feedback improvements
  chore: regenerate protobufs
  chore: review feedback improvements
  test: fix application min stake integration test
  chore: review feedback improvements
  Empty commit
  fix: linter error
  chore: quick fixes
  [DifficultyHash] Prepare for difficulty multiplier usage (#836)
  [Application] Enforce minimum stake when staking (#847)
  Empty commit
  [Tokenomics] Prevent GMR to produce zero values (#866)
  Empty commit
  [Application] Add `min_stake` application module param (#845)
  chore: regenerate protobufs
  ...
bryanchriswhite added a commit that referenced this pull request Oct 14, 2024
## Summary

- Adds the `min_stake` param to the supplier module following section 0
from the updated docs (see
#839).
- Adds missing validation unit test coverage around existing application
module param, max_delegated_gateways.
- Pushes validation from the MsgUpdateParam handler down into
MsgUpdateParam#ValidateBasic().
- Ensures Params#Valid() is called prior to setting params in
MsgUpdateParam handler.
- Updates error returns in the same handler to ensure all error paths
return appropriate gRPC status errors.

## Dependencies

- #809
- #843 
- #844 
- #845
- #847
- #848
- #849

## Dependents
  
- #857
- #852 
- #861 
- #851 
- #863 

## Issue

- #612

## Type of change

Select one or more from the following:

- [x] New feature, functionality or library
- [ ] Consensus breaking; add the `consensus-breaking` label if so. See
#791 for details
- [ ] Bug fix
- [ ] Code health or cleanup
- [ ] Documentation
- [ ] Other (specify)

## Testing

- [ ] **Documentation**: `make docusaurus_start`; only needed if you
make doc changes
- [ ] **Unit Tests**: `make go_develop_and_test`
- [ ] **LocalNet E2E Tests**: `make test_e2e`
- [ ] **DevNet E2E Tests**: Add the `devnet-test-e2e` label to the PR.

## Sanity Checklist

- [x] I have tested my changes using the available tooling
- [x] I have commented my code
- [x] I have performed a self-review of my own code; both comments &
source code
- [ ] I create and reference any new tickets, if applicable
- [x] I have left TODOs throughout the codebase, if applicable

---------

Co-authored-by: Redouane Lakrache <[email protected]>
Co-authored-by: Daniel Olshansky <[email protected]>
Co-authored-by: red-0ne <[email protected]>
bryanchriswhite added a commit that referenced this pull request Oct 14, 2024
## Summary

1. Adds minimum stake validation to the supplier stake message handler
(i.e. total stake must be >= minimum stake).
2. Updates error returns in the same handler to ensure all error paths
return appropriate gRPC status errors.

## Dependencies

- #809
- #843 
- #844 
- #845
- #847
- #848
- #849
- #850

## Dependents
  
- #852 
- #861 
- #851 

## Issue

- #612

## Type of change

Select one or more from the following:

- [x] New feature, functionality or library
- [ ] Consensus breaking; add the `consensus-breaking` label if so. See
#791 for details
- [ ] Bug fix
- [ ] Code health or cleanup
- [ ] Documentation
- [ ] Other (specify)

## Testing

- [ ] **Documentation**: `make docusaurus_start`; only needed if you
make doc changes
- [ ] **Unit Tests**: `make go_develop_and_test`
- [ ] **LocalNet E2E Tests**: `make test_e2e`
- [ ] **DevNet E2E Tests**: Add the `devnet-test-e2e` label to the PR.

## Sanity Checklist

- [x] I have tested my changes using the available tooling
- [x] I have commented my code
- [x] I have performed a self-review of my own code; both comments &
source code
- [ ] I create and reference any new tickets, if applicable
- [ ] I have left TODOs throughout the codebase, if applicable

---------

Co-authored-by: Redouane Lakrache <[email protected]>
Co-authored-by: Daniel Olshansky <[email protected]>
Co-authored-by: red-0ne <[email protected]>
bryanchriswhite added a commit that referenced this pull request Oct 14, 2024
## Summary

The "adding_params.md" doc has (or will have) changed substantially (see
#839) since the shared module's param logic was last updated. This PR
aligns the shared module's param logic with the snippets in the updated
docs.

Specifically, this refresh includes:
- Moving validation logic from `msgServer#UpdateParam()` to
`MsgUpdateParam#ValidateBasic()`.
- Replacing magic strings of param names with their standard variable
counterparts (i.e. `sharedtypes.Param...`).
- Improving some local variable names.
- Replacing usages of `interface{}` with `any`.

## Dependencies

- #809
- #843 
- #844 
- #845
- #847
- #848
- #849
- #850
- #857

## Dependents

- #851 
- #861 

## Issue

- #612

## Type of change

Select one or more from the following:

- [ ] New feature, functionality or library
- [ ] Consensus breaking; add the `consensus-breaking` label if so. See
#791 for details
- [ ] Bug fix
- [x] Code health or cleanup
- [ ] Documentation
- [ ] Other (specify)

## Testing

- [ ] **Documentation**: `make docusaurus_start`; only needed if you
make doc changes
- [ ] **Unit Tests**: `make go_develop_and_test`
- [ ] **LocalNet E2E Tests**: `make test_e2e`
- [ ] **DevNet E2E Tests**: Add the `devnet-test-e2e` label to the PR.

## Sanity Checklist

- [x] I have tested my changes using the available tooling
- [ ] I have commented my code
- [x] I have performed a self-review of my own code; both comments &
source code
- [ ] I create and reference any new tickets, if applicable
- [ ] I have left TODOs throughout the codebase, if applicable

---------

Co-authored-by: Redouane Lakrache <[email protected]>
Co-authored-by: Daniel Olshansky <[email protected]>
Co-authored-by: red-0ne <[email protected]>
bryanchriswhite added a commit that referenced this pull request Oct 14, 2024
## Summary

The "adding_params.md" doc has (or will have) changed substantially (see
#839) since the proof module's param logic was last updated. This PR
aligns the proof module's param logic with the snippets in the updated
docs.

Specifically, this refresh includes:
- Moving validation logic from `msgServer#UpdateParam()` to
`MsgUpdateParam#ValidateBasic()`.
- Replacing magic strings of param names with their standard variable
counterparts (i.e. `prooftypes.Param...`).
- Improving some local variable names.
- Replacing usages of `interface{}` with `any`.
- Improving validation for all coin type params to be consistent with
application, gateway, and supplier coin type validation.

# Dependencies

- #809
- #843 
- #844 
- #845
- #847
- #848
- #849
- #850
- #857
- #852

## Dependents

- #861 

## Issue

- #612

## Type of change

Select one or more from the following:

- [ ] New feature, functionality or library
- [ ] Consensus breaking; add the `consensus-breaking` label if so. See
#791 for details
- [ ] Bug fix
- [x] Code health or cleanup
- [ ] Documentation
- [ ] Other (specify)

## Testing

- [ ] **Documentation**: `make docusaurus_start`; only needed if you
make doc changes
- [ ] **Unit Tests**: `make go_develop_and_test`
- [ ] **LocalNet E2E Tests**: `make test_e2e`
- [ ] **DevNet E2E Tests**: Add the `devnet-test-e2e` label to the PR.

## Sanity Checklist

- [x] I have tested my changes using the available tooling
- [ ] I have commented my code
- [x] I have performed a self-review of my own code; both comments &
source code
- [ ] I create and reference any new tickets, if applicable
- [ ] I have left TODOs throughout the codebase, if applicable

---------

Co-authored-by: Redouane Lakrache <[email protected]>
Co-authored-by: Daniel Olshansky <[email protected]>
Co-authored-by: red-0ne <[email protected]>
bryanchriswhite added a commit that referenced this pull request Oct 14, 2024
## Summary

The "adding_params.md" doc has (or will have) changed substantially (see
#839) since the shared module's param logic was last updated. This PR
aligns the service module's param logic with the snippets in the updated
docs.

Specifically, this refresh includes:
- Moving validation logic from `msgServer#UpdateParam()` to
`MsgUpdateParam#ValidateBasic()`.
- Replacing magic strings of param names with their standard variable
counterparts (i.e. `prooftypes.Param...`).
- Improving some local variable names.
- Replacing usages of `interface{}` with `any`.
- Improving validation for all coin type params to be consistent with
application, gateway, and supplier coin type validation.

## Dependencies

- #809
- #843 
- #844 
- #845
- #847
- #848
- #849
- #850
- #857
- #852 
- #851

## Issue

- #612

## Type of change

Select one or more from the following:

- [ ] New feature, functionality or library
- [ ] Consensus breaking; add the `consensus-breaking` label if so. See
#791 for details
- [ ] Bug fix
- [x] Code health or cleanup
- [ ] Documentation
- [ ] Other (specify)

## Testing

- [ ] **Documentation**: `make docusaurus_start`; only needed if you
make doc changes
- [ ] **Unit Tests**: `make go_develop_and_test`
- [ ] **LocalNet E2E Tests**: `make test_e2e`
- [ ] **DevNet E2E Tests**: Add the `devnet-test-e2e` label to the PR.

## Sanity Checklist

- [ ] I have tested my changes using the available tooling
- [ ] I have commented my code
- [ ] I have performed a self-review of my own code; both comments &
source code
- [ ] I create and reference any new tickets, if applicable
- [ ] I have left TODOs throughout the codebase, if applicable

---------

Co-authored-by: Redouane Lakrache <[email protected]>
Co-authored-by: Daniel Olshansky <[email protected]>
Co-authored-by: red-0ne <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
application Changes related to the Application actor consensus-breaking IMPORTANT! If the PR with this tag is merged, next release WILL HAVE TO BE an upgrade. devnet devnet-test-e2e governance Governance related changes on-chain On-chain business logic push-image CI related - pushes images to ghcr.io
Projects
Status: ✅ Done
Development

Successfully merging this pull request may close these issues.

[Utility] Minimum staking values for each actor
3 participants