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

dApp Staking v3 - Shibuya integration #1109

Merged
merged 35 commits into from
Dec 20, 2023

Conversation

Dinonard
Copy link
Member

@Dinonard Dinonard commented Dec 18, 2023

dApp Staking v3 & Tokenomics 2.0 - Shibuya Integration

This PR introduces dApp staking v3, Tokenomics 2.0 & necessary migration logic into Shibuya runtime.

Configuration

These values are used for Shibuya, and DO NOT reflect what will be used on either Shiden or Astar.

Cycles

Parameter Value
Era 1800 blocks (around 6 hours)
Voting Subperiod 8 eras length ( 2 days)
Build&Earn Subperiod 20 eras (5 days)
Cycle Length 2 periods (2 weeks)
  • at the end of a cycle, inflation is recalculated

Tokenomics 2.0

Parameter Value
Inflation Per Cycle 1%
Treasury 5%
Collators 3%
dApp Rewards 20%
Base Staker Rewards 25%
Adjustable Staker Rewards 35%
Bonus Rewards 12%
Ideal Staking Ration 20%

Changes

Major

  • dApp staking v3 & inflation OnRuntimeUpgrade hooks
  • Added FreezeReason into Balances, and set max number of freezes to 1
  • Genesis config for shibuya-dev
  • minor adjustment of the benchmarks
  • BlockRewards pallet storage cleanup
  • adjusted proxy to work with dApp staking v3
  • duplicated some integration tests to cover both new and old dApp staking (should be removed in the future)
  • optimized dApp staking v3 benchmarks to run faster

Minor

  • minor fix to the migration logic
  • removed pallets dependency from the collator
  • removed dApps staking v2 chain extension (TODO from previous PR)

Checklist

  • tokenomics params
  • dApp staking v3 params
  • additional migration implementation & integration
  • try-runtime testing
  • chopstick & migration script testing
  • re-run benchmarks after all modifications have been done
  • disable old dApps staking pallet
  • remove spec version bump

@Dinonard Dinonard changed the base branch from master to feat/dapp-staking-v3 December 18, 2023 10:53
@Dinonard Dinonard added shibuya related to shibuya runtime This PR/Issue is related to the topic “runtime”. labels Dec 18, 2023
@Dinonard
Copy link
Member Author

/bench shibuya-dev pallet_inflation,pallet_dapp_staking_v3,pallet_dapp_staking_migration

Copy link

Benchmarks job is scheduled at https://github.com/AstarNetwork/Astar/actions/runs/7260648546.
Please wait for a while.
Branch: feat/ds-v3-shibuya-integration
SHA: 69d2f4d

Copy link

Benchmarks have been finished.
You can download artifacts if exists https://github.com/AstarNetwork/Astar/actions/runs/7260648546.

@Dinonard
Copy link
Member Author

/bench shibuya-dev pallet_inflation,pallet_dapp_staking_v3,pallet_dapp_staking_migration

Copy link

Benchmarks job is scheduled at https://github.com/AstarNetwork/Astar/actions/runs/7262434395.
Please wait for a while.
Branch: feat/ds-v3-shibuya-integration
SHA: 157d20a

@Dinonard Dinonard mentioned this pull request Dec 19, 2023
10 tasks
Copy link

Benchmarks have been finished.
You can download artifacts if exists https://github.com/AstarNetwork/Astar/actions/runs/7262434395.

@Dinonard
Copy link
Member Author

/bench shibuya-dev pallet_inflation,pallet_dapp_staking_v3,pallet_dapp_staking_migration

@Dinonard
Copy link
Member Author

/bench shibuya-dev pallet_dapp_staking_v3

@Dinonard Dinonard marked this pull request as ready for review December 19, 2023 18:57
Copy link

Benchmarks job is scheduled at https://github.com/AstarNetwork/Astar/actions/runs/7266331434.
Please wait for a while.
Branch: feat/ds-v3-shibuya-integration
SHA: d380ff6

Copy link

Benchmarks have been finished.
You can download artifacts if exists https://github.com/AstarNetwork/Astar/actions/runs/7266331434.

Copy link

Code Coverage

Package Line Rate Branch Rate Health
chain-extensions/types/unified-accounts/src 0% 0%
pallets/dapps-staking/src/pallet 85% 0%
pallets/xc-asset-config/src 53% 0%
pallets/dynamic-evm-base-fee/src 81% 0%
precompiles/substrate-ecdsa/src 74% 0%
primitives/src/xcm 66% 0%
pallets/block-rewards-hybrid/src 87% 0%
pallets/ethereum-checked/src 48% 0%
precompiles/sr25519/src 64% 0%
pallets/inflation/src 70% 0%
precompiles/assets-erc20/src 81% 0%
primitives/src 66% 0%
chain-extensions/types/assets/src 0% 0%
pallets/dapp-staking-v3/src/test 0% 0%
precompiles/dapp-staking-v3/src 90% 0%
precompiles/dapps-staking/src 94% 0%
precompiles/unified-accounts/src 100% 0%
pallets/dapps-staking/src 81% 0%
precompiles/xcm/src 72% 0%
chain-extensions/types/xvm/src 0% 0%
pallets/collator-selection/src 69% 0%
chain-extensions/pallet-assets/src 0% 0%
chain-extensions/xvm/src 0% 0%
pallets/dapp-staking-v3/src 79% 0%
pallets/unified-accounts/src 84% 0%
precompiles/xvm/src 74% 0%
pallets/xvm/src 40% 0%
precompiles/dapp-staking-v3/src/test 0% 0%
pallets/dapp-staking-migration/src 39% 0%
pallets/dapp-staking-v3/rpc/runtime-api/src 0% 0%
pallets/dapp-staking-v3/src/benchmarking 0% 0%
chain-extensions/unified-accounts/src 0% 0%
Summary 68% (3141 / 4632) 0% (0 / 0)

Minimum allowed line rate is 50%

Copy link
Member

@ashutoshvarma ashutoshvarma left a comment

Choose a reason for hiding this comment

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

looks good!

/// Advance blocks until next era has been reached.
pub(super) fn advance_to_next_era<T: Config>() {
pub(super) fn _advance_to_next_era<T: Config>() {
Copy link
Member

Choose a reason for hiding this comment

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

Is it better to just remove it as it's dead code? and line 83,99 and all other

Copy link
Member Author

Choose a reason for hiding this comment

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

I'll remove it later, let me see first how the code will evolve in the next month 😅

@Dinonard
Copy link
Member Author

/bench shibuya-dev pallet_inflation,pallet_dapp_staking_v3,pallet_dapp_staking_migration

Copy link

Benchmarks job is scheduled at https://github.com/AstarNetwork/Astar/actions/runs/7276643040.
Please wait for a while.
Branch: feat/ds-v3-shibuya-integration
SHA: a45e52d

Copy link

Benchmarks have been finished.
You can download artifacts if exists https://github.com/AstarNetwork/Astar/actions/runs/7276643040.

@Dinonard Dinonard merged commit 9fbbbaa into feat/dapp-staking-v3 Dec 20, 2023
4 of 8 checks passed
@Dinonard Dinonard deleted the feat/ds-v3-shibuya-integration branch December 20, 2023 15:36
Dinonard added a commit that referenced this pull request Dec 20, 2023
* dApp Staking v3 Part1

* Feat/dapp staking v3 phase2 (#991)

* Phase2 progress

* Adapt for 0.9.43

* Abstract sparse vector type

* Further modifications

* claim unlocked functionality WIP

* claim unlocked tested

* Relock unlocking

* Check era when adding chunk

* Custom error for some types

* Additional type tests - WIP

* More type tests

* Review comments

* Additional changes

* dApp staking v3 - part 3 (#1036)

* dApp staking v3 - PR3

* SingularStakingInfo

* SingularStakingInfo tests

* Stake work

* Stake & lots of tests

* TODOs, renaming, improvements

* Refactoring & cleanup

* More fixes

* Rework series

* Series tests

* Minor adjustment

* stake test utils & first test

* Stake test

* stake extrinsic tests

* Era & Period change logic

* Update era/period transition in mock & tests

* on_init tests & refactoring

* Unstake & some minor improvements

* Lots of type tests for unstake

* More tests

* More types test

* Testing utils for unstake, some TODOs

* Unstake tests

* Minor adjustments

* Fixes

* Additional scenario

* Address review comments

* Correct unstake amount

* Tests

* dapp staking v3 - part 4 (#1053)

* EraRewardSpan

* Initial version of claim_staker_reward

* Tests

* Test utils for claim-staker

* Bug fixes, improvements

* Claim improvements & some tests

* Refactoring in progress

* Refactoring continued

* Refactoring progress

* Refactoring finished

* Bonus rewards

* Docs & some minor changes

* Comments, tests, improved coverage

* Tier params & config init solution

* Tier reward calculation WIP

* Tier assignemnt

* Minor cleanup

* Claim dapp rewards

* Claim dapp reward tests

* unstake from unregistered call

* Extra traits

* fixes

* Extra calls

* Refactoring

* More refactoring, improvements, TODO solving

* Local integration

* Genesis config

* Add forcing call

* try runtime build fix

* Minor changes

* Minor

* Formatting

* Benchmarks INIT

* Compiling benchmarks

* Fix

* dapp tier calculation benchmark

* Measured tier assignment

* Decending rewards in benchmarks

* Series refactoring & partial tests

* Comments, minor changes

* Tests, improvements

* More tests, some minor refactoring

* Formatting

* More benchmarks & experiments, refactoring

* Readme, docs

* Minor renaming, docs

* More docs

* More docs

* Minor addition

* Review comment fixes & changes

* Minor change

* Review comments

* Update frontier to make CI pass

* Fix for cleanup

* dapp staking v3 - part 5 (#1087)

* EraRewardSpan

* Initial version of claim_staker_reward

* Tests

* Test utils for claim-staker

* Bug fixes, improvements

* Claim improvements & some tests

* Refactoring in progress

* Refactoring continued

* Refactoring progress

* Refactoring finished

* Bonus rewards

* Docs & some minor changes

* Comments, tests, improved coverage

* Tier params & config init solution

* Tier reward calculation WIP

* Tier assignemnt

* Minor cleanup

* Claim dapp rewards

* Claim dapp reward tests

* unstake from unregistered call

* Extra traits

* fixes

* Extra calls

* Refactoring

* More refactoring, improvements, TODO solving

* Local integration

* Genesis config

* Add forcing call

* try runtime build fix

* Minor changes

* Minor

* Formatting

* Benchmarks INIT

* Compiling benchmarks

* Fix

* dapp tier calculation benchmark

* Measured tier assignment

* Decending rewards in benchmarks

* Series refactoring & partial tests

* Comments, minor changes

* Tests, improvements

* More tests, some minor refactoring

* Formatting

* More benchmarks & experiments, refactoring

* Readme, docs

* Minor renaming, docs

* More docs

* More docs

* Minor addition

* Review comment fixes & changes

* Minor change

* Review comments

* Update frontier to make CI pass

* dApp staking v3 - part 5

* Make check work

* Limit map size to improve benchmarks

* Fix for cleanup

* Minor fixes, more tests

* More fixes & test

* Minor changes

* More tests

* More tests, some clippy fixes

* Finished with type tests for now

* Log, remove some TODOs

* Changes

* Bug fix for unstake era, more tests

* Formatting, extra test

* Unregistered unstake, expired cleanup, test utils & tests

* Cleanup tests, minor fixes

* force tests

* Remove TODOs

* Tier assignment test WIP

* Finish dapp tier assignment test, fix reward calculation bug

* Some renaming, test utils for era change WIP

* Fix minor issues, propagaste renaming

* More checks

* Finish on_init tests

* Comments, docs, some benchmarks

* Benchmark progress

* More benchmarks

* Even more benchmarks

* All extrinsics benchmarked

* Expand tests

* Comment

* Missed error test

* Review comments

* Pallet inflation (#1091)

* Pallet inflation

* Hooks

* Functionality, mock & benchmarks

* Empty commit since it seems last push didn't work properly

* Tests, fixes

* More tests, minor fixes&changes

* Zero divison protection, frontier update

* More tests, minor changes

* Integration & renaming

* Genesis integration, more tests

* Final integration

* Cleanup deps

* Division with zero test

* Comments

* More minor changes

* Improve test coverage

* Integrate into pallet-timestamp

* Remove timestamp

* Fix

* review comments

* toml format

* dApp Staking v3 - part 6 (#1093)

* dApp staking v3 part 6

* Minor refactor of benchmarks

* Weights integration

* Fix

* remove orig file

* Minor refactoring, more benchmark code

* Extract on_init logic

* Some renaming

* More benchmarks

* Full benchmarks integration

* Testing primitives

* staking primitives

* dev fix

* Integration part1

* Integration part2

* Reward payout integration

* Replace lock functionality with freeze

* Cleanup TODOs

* More negative tests

* Frozen balance test

* Zero div

* Docs for inflation

* Rename is_active & add some more docs

* More docs

* pallet docs

* text

* scripts

* More tests

* Test, docs

* Review comment

* dApp staking v3 - part 7 (#1099)

* dApp staking v3 part 6

* Minor refactor of benchmarks

* Weights integration

* Fix

* remove orig file

* Minor refactoring, more benchmark code

* Extract on_init logic

* Some renaming

* More benchmarks

* Full benchmarks integration

* Testing primitives

* staking primitives

* dev fix

* Integration part1

* Integration part2

* Reward payout integration

* Replace lock functionality with freeze

* Cleanup TODOs

* More negative tests

* Frozen balance test

* Zero div

* Docs for inflation

* Rename is_active & add some more docs

* More docs

* pallet docs

* text

* scripts

* More tests

* Test, docs

* Review comment

* Runtime API

* Changes

* Change dep

* Comment

* Formatting

* Expired entry cleanup

* Cleanup logic test

* Remove tier labels

* fix

* Improve README

* Improved cleanup

* Review comments

* Docs

* Formatting

* Typo

* Fix - bonus reward update ledger (#1102)

* Bonus claim reduced contract_stake_count

* Extra test

* dApp Staking Migration (#1101)

* dApp Staking Migration

* Events, benchmark prep

* benchmarks

* Benchmarks & mock

* weights

* limit

* Use extrinsic call

* Solved todos, docs, improvements

* Maintenance mode, on_runtime_upgrade logic

* Tests, refactoring

* Finish

* More tests

* Type cleanup

* try-runtime checks

* deps

* Improve docs

* Fixes & try-runtime testing modifications

* Fix test

* repeated

* Minor improvements

* Improvements

* taplo

* Minor rename

* Feat/dapp staking v3 precompiles (#1096)

* Init commit

* All legacy calls covered

* v2 interface first definition

* Rename

* Resolve merge errors

* TODO

* v2 init implementation

* Prepared mock

* todo

* Migration to v2 utils

* More adjustments

* Finish adapting implementation to v2

* Mock & fixes

* Primitive smart contract

* Fix dsv3 test

* Prepare impl & mock

* Remove redundant code, adjust mock & prepare tests

* Tests & utils

* Test for legacy getters/view functions

* More legacy tests

* v1 interface covered with tests

* Minor refactor, organization, improvements

* v2 tests

* Cleanup TODOs

* More tests

* Updates

* docs

* Fixes

* Address review comments

* Adjustments

* Audit comments

* Fix mock

* FMT

* Review comments

* Fix for incorrect freeze amount (#1111)

* dApp Staking v3 - Shibuya integration (#1109)

* dApp staking v3 - Shibuya integration

* Init

* Fix build

* Fix find/replace doc mess

* Migration & disable

* More integration

* Progress

* Adjusted integration

* Finished integration

* Additional modifications & cleanup

* Move comment

* Fixes

* Shibuya integration tests fix & proxy

* Renaming

* Integration test fixes & legacy support

* Adjust for benchmarks

* Remove chain-extension, small updates

* fixes

* Partial weights

* Minor changes

* Benchmark fixes

* dApp staking weights

* Weights, deps

* Remove redundant storage item

* Inflation params, resolve TODOs

* Optimize lengthy benchmark

* Integration test

* Sort out more TODOs

* Benchmark optimization

* Fix seed

* Remove spec version bump

* Fix integration test

* Weights update
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
runtime This PR/Issue is related to the topic “runtime”. shibuya related to shibuya
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants