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

Kvstore delegationplan #98

Merged
merged 13 commits into from
Jun 7, 2022
Merged

Kvstore delegationplan #98

merged 13 commits into from
Jun 7, 2022

Conversation

joe-bowman
Copy link
Contributor

@joe-bowman joe-bowman commented Jun 7, 2022

  • contains Participation rewards module #96

  • fixes non-determinism issue with move delegation management into the KV store, and out of the zone object #94

  • replaces DelegationPlanItems and SendPlans with Allocations (a tuple of an address and sdk.Coins) - non protobuf

  • store delegation plans in kv store, indexed on zone, txhash, delegator address, validator address to persist decision state between decision and callback

  • iterate these based on zone, txhash, delegator address on SendMsg acknowledgement, and delegate based on returned values

  • Draft because it is full of logging statements still, and need rebasing.

@joe-bowman joe-bowman requested a review from zanicar June 7, 2022 08:37
zanicar
zanicar previously approved these changes Jun 7, 2022
Copy link
Contributor

@zanicar zanicar left a comment

Choose a reason for hiding this comment

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

lgtm

@zanicar zanicar marked this pull request as ready for review June 7, 2022 08:52
zanicar and others added 13 commits June 7, 2022 13:38
- module integrated with app
- added beginblocker heartbeat log (for dev & debug)
- implemented epoch hooks;
- basic mosule keeper with params subspace & logger;
- params now sum to 1.0 (previously 0.99);
- temporarily added authtypes.Burner to participationrewards;
- set distr module to be initialized before mint module (dependency);
- set participationrewards module to initialize before epochs module;
- renamed participation_allocation to holdings_allocation;
- mint sends coins to participation rewards module;
- implemented missing participationrewards handler;
- updated abci hartbeat logger (devtest);
- AfterEpochEnd completed (with devtest output);
- implemented keeper_test (much faster than local testnet);
- added bankKeeper and feeCollectorName;
- implemented GetAllocation func;
- implemented allocateValidatorChoiceRewards stub;
- implemented allocateHoldingsRewards stub;
- implemented allocateLockupRewards (copied staking rewards);
- added expected_keepers.go (for future use on refactor);
- updated params;

TODO:
- implement allocateValidatorChoiceRewards;
- implement allocateHoldingsRewards (blocked on ICQ);
- contextualized devtest output
- test zone added for keeper test

Blocked on validator performance scoring;
- updated script with different validator sizes
- updated script to fund performance account
- added sanity check to ics MakeRequest for callback handler
- added InitPerformanceDelegations to zones
- ibc_handler now registers performance account
- refactored prm hooks with logic in distribution.go
- renamed validatorChoice to validatorSelection to be consistent
- added icq to participation rewards with callbacks
- added performance account rewards withdrawals
- cleaned up cli/query.go
Copy link
Contributor

@zanicar zanicar left a comment

Choose a reason for hiding this comment

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

lgtm

@zanicar zanicar merged commit 715bdc7 into main Jun 7, 2022
@joe-bowman joe-bowman deleted the kvstore-delegationplan branch August 3, 2022 14:10
joe-bowman pushed a commit that referenced this pull request Jan 10, 2023
…of naked ++

Instead of using a naked increment for an exported struct, this change
uses its .IncrementBalanceWaitgroup() which helps in logical checks.

Fixes #98
joe-bowman pushed a commit that referenced this pull request Jan 10, 2023
…of naked ++

Instead of using a naked increment for an exported struct, this change
uses its .IncrementBalanceWaitgroup() which helps in logical checks.

Fixes #98
ajansari95 pushed a commit that referenced this pull request Feb 6, 2023
…of naked ++

Instead of using a naked increment for an exported struct, this change
uses its .IncrementBalanceWaitgroup() which helps in logical checks.

Fixes #98
joe-bowman pushed a commit that referenced this pull request Feb 6, 2023
* x/interchainstaking/keeper: preallocate slice capacity in CalculateDeltas

Given that types.ValidatorIntents is already a slice, this change
just extracts its length and uses that as a slice capacity hint
to improve performance.

Fixes #97

* x/interchainstaking/keeper: use .IncrementBalanceWaitgroup() instead of naked ++

Instead of using a naked increment for an exported struct, this change
uses its .IncrementBalanceWaitgroup() which helps in logical checks.

Fixes #98

* x/interchainstaking/keeper: add fuzzers

Adds fuzzers that we've written to help find vulnerabilities.
While here, using go test -short to skip fuzzing being run in regular
tests per `make test`.

Updates #90

* bump proto-gen container to v0.9.0, to support go 1.19

* add channel close/reopen proposals

* lint/gofumpt

* regen proto files with additional comments

* error catching epochs added

* fixed test cases

* lint fix

* codecov secrets

* add no-op upgrade handler for v1.3.0

* added check for deposit addr (#281)

* Release/v1.3.2 (#285)

* UpdateWithdrawAddress callback patched

* added pagination fix

* keeper-tests added

* add deposit interval test

* add adjacent verification; add deposit callback tests;

* remove ibc/ prefix check from validateBasic

* gofumpt

* add rts functionality; enable/disable unbonding and deposits per zone; store decimals in zone struct; store first_seen and complete timestamps against receipts; add upgrade handler to migrate zones

* rebase fixes

* store added for self-consensus-state

* handle submission of PR claims against Quicksilver

* [WIP] verifying self claims

* added delete method

* claim from local chain

* lint fix

* update epoch hooks in cm

* update zone struct in tests

* support v0.47.x balances returned by kvstore lookup

* lint fix

* fix: harcoded prefix

* feature: [TG-420] add stats to zone(s) endpoints

* lint fixes

* use correct token in error message; fixes i#118

* gofumpt

* remove pedantic error checking in allocateLockupRewards

* defensive check against negative validator vp

* check for nil value in sdkAmount

* make errors deterministic

* improve error handling by propogating error

* be super defensive and check for negative values, not just zero equality

* reject nil value coins

* set the quick prefix in the correct place

* revert backwards incompatible changes to zones and related props

* fix lint

* tests and fixes for TG-416 slash withdrawal fix

* bump tenermint version

* bump tendermint to v0.34.25

* allow port to be reopened via tx

* pr fixes

* verbose logging

* skip zone allocations for zones with no price information

* lint

* extended upgrade handler to clear uni-5 records

* more verbose logging on unbonding satisfaction

* added logic to burn uqjunox

* other records removed and test case added

* lint fix

* check for innuendo specific upgrade-handler

* Deprecation warning fix and testchain included for upgradehandler

* imports tidy

* errors.Register deprecation fix

* deprecation fixes

* lint fix

---------

Co-authored-by: Emmanuel T Odeke <[email protected]>
Co-authored-by: Joe Bowman <[email protected]>
ajansari95 added a commit that referenced this pull request Feb 7, 2023
* x/interchainstaking/keeper: preallocate slice capacity in CalculateDeltas

Given that types.ValidatorIntents is already a slice, this change
just extracts its length and uses that as a slice capacity hint
to improve performance.

Fixes #97

* x/interchainstaking/keeper: use .IncrementBalanceWaitgroup() instead of naked ++

Instead of using a naked increment for an exported struct, this change
uses its .IncrementBalanceWaitgroup() which helps in logical checks.

Fixes #98

* x/interchainstaking/keeper: add fuzzers

Adds fuzzers that we've written to help find vulnerabilities.
While here, using go test -short to skip fuzzing being run in regular
tests per `make test`.

Updates #90

* bump proto-gen container to v0.9.0, to support go 1.19

* add channel close/reopen proposals

* lint/gofumpt

* regen proto files with additional comments

* error catching epochs added

* fixed test cases

* lint fix

* codecov secrets

* add no-op upgrade handler for v1.3.0

* added check for deposit addr (#281)

* Release/v1.3.2 (#285)

* UpdateWithdrawAddress callback patched

* added pagination fix

* keeper-tests added

* add deposit interval test

* add adjacent verification; add deposit callback tests;

* remove ibc/ prefix check from validateBasic

* gofumpt

* add rts functionality; enable/disable unbonding and deposits per zone; store decimals in zone struct; store first_seen and complete timestamps against receipts; add upgrade handler to migrate zones

* rebase fixes

* store added for self-consensus-state

* handle submission of PR claims against Quicksilver

* [WIP] verifying self claims

* added delete method

* claim from local chain

* lint fix

* update epoch hooks in cm

* update zone struct in tests

* support v0.47.x balances returned by kvstore lookup

* lint fix

* fix: harcoded prefix

* feature: [TG-420] add stats to zone(s) endpoints

* lint fixes

* use correct token in error message; fixes i#118

* gofumpt

* remove pedantic error checking in allocateLockupRewards

* defensive check against negative validator vp

* check for nil value in sdkAmount

* make errors deterministic

* improve error handling by propogating error

* be super defensive and check for negative values, not just zero equality

* reject nil value coins

* set the quick prefix in the correct place

* revert backwards incompatible changes to zones and related props

* fix lint

* tests and fixes for TG-416 slash withdrawal fix

* bump tenermint version

* bump tendermint to v0.34.25

* allow port to be reopened via tx

* pr fixes

* verbose logging

* skip zone allocations for zones with no price information

* lint

* extended upgrade handler to clear uni-5 records

* more verbose logging on unbonding satisfaction

* added logic to burn uqjunox

* other records removed and test case added

* lint fix

* check for innuendo specific upgrade-handler

* Deprecation warning fix and testchain included for upgradehandler

* imports tidy

* errors.Register deprecation fix

* deprecation fixes

* lint fix

* fix self consensus state store/delete fns

* ensure cm hooks are registered

* add pebble into default build

---------

Co-authored-by: Emmanuel T Odeke <[email protected]>
Co-authored-by: Ajaz Ahmed Ansari <[email protected]>
joe-bowman pushed a commit that referenced this pull request Feb 15, 2023
* x/interchainstaking/keeper: preallocate slice capacity in CalculateDeltas

Given that types.ValidatorIntents is already a slice, this change
just extracts its length and uses that as a slice capacity hint
to improve performance.

Fixes #97

* x/interchainstaking/keeper: use .IncrementBalanceWaitgroup() instead of naked ++

Instead of using a naked increment for an exported struct, this change
uses its .IncrementBalanceWaitgroup() which helps in logical checks.

Fixes #98

* make docker build process use makefile

* fix BeforeEpochStart bug

* refactor self consensus state update for testability

* make decimals mandatory in validateBasic; more verbose errors if key not supported

* handle failed redelegation messages

* handle failed unbondings

* bump cosmos-sdk v0.46.9; tendermint v0.34.26; gofumpt + lint; handle deprecated fields

* add distance_to_target (euclidean distance between N-dimensional representations of aggregated_intent and current_delegations) to stats output, as measure of redelegation performance

* add rc5 upgrade handler

* redemptions logic v2

* comment out unused helpers

* return early if there are no unbondings to attempt

* reduce noise; remove unneccessary re-sorting

* on dev/testnet reset RR that was affected by failed unbondings

* rebased

* rc6

---------

Co-authored-by: Emmanuel T Odeke <[email protected]>
Co-authored-by: Ajaz Ahmed Ansari <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants