mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 18:41:05 +00:00
aac07af03c
The `TotalLockedValue` storage value in nomination pools pallet may get out of sync if the staking pallet does implicit withdrawal of unlocking chunks belonging to a bonded pool stash. This fix is based on a new method in the `OnStakingUpdate` traits, `on_withdraw`, which allows the nomination pools pallet to adjust the `TotalLockedValue` every time there is an implicit or explicit withdrawal from a bonded pool's stash. This PR also adds a migration that checks and updates the on-chain TVL if it got out of sync due to the bug this PR fixes. **Changes to `trait OnStakingUpdate`** In order for staking to notify the nomination pools pallet that chunks where withdrew, we add a new method, `on_withdraw` to the `OnStakingUpdate` trait. The nomination pools pallet filters the withdraws that are related to bonded pool accounts and updates the `TotalValueLocked` accordingly. **Others** - Adds try-state checks to the EPM/staking e2e tests - Adds tests for auto withdrawing in the context of nomination pools **To-do** - [x] check if we need a migration to fix the current `TotalValueLocked` (run try-runtime) - [x] migrations to fix the current on-chain TVL value ✅ **Kusama**: ``` TotalValueLocked: 99.4559 kKSM TotalValueLocked (calculated) 99.4559 kKSM ``` ⚠️ **Westend**: ``` TotalValueLocked: 18.4060 kWND TotalValueLocked (calculated) 18.4050 kWND ``` **Polkadot**: TVL not released yet. Closes https://github.com/paritytech/polkadot-sdk/issues/3055 --------- Co-authored-by: command-bot <> Co-authored-by: Ross Bulat <ross@parity.io> Co-authored-by: Dónal Murray <donal.murray@parity.io>
58 lines
2.0 KiB
TOML
58 lines
2.0 KiB
TOML
[package]
|
|
name = "pallet-election-provider-e2e-test"
|
|
version = "1.0.0"
|
|
authors.workspace = true
|
|
edition.workspace = true
|
|
license = "Apache-2.0"
|
|
homepage = "https://substrate.io"
|
|
repository.workspace = true
|
|
description = "FRAME election provider multi phase pallet tests with staking pallet, bags-list and session pallets"
|
|
publish = false
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[package.metadata.docs.rs]
|
|
targets = ["x86_64-unknown-linux-gnu"]
|
|
|
|
[dev-dependencies]
|
|
parking_lot = "0.12.1"
|
|
codec = { package = "parity-scale-codec", version = "3.6.1", features = ["derive"] }
|
|
scale-info = { version = "2.10.0", features = ["derive"] }
|
|
log = { version = "0.4.17", default-features = false }
|
|
|
|
sp-runtime = { path = "../../../primitives/runtime" }
|
|
sp-io = { path = "../../../primitives/io" }
|
|
sp-std = { path = "../../../primitives/std" }
|
|
sp-staking = { path = "../../../primitives/staking" }
|
|
sp-core = { path = "../../../primitives/core" }
|
|
sp-npos-elections = { path = "../../../primitives/npos-elections", default-features = false }
|
|
sp-tracing = { path = "../../../primitives/tracing" }
|
|
|
|
frame-system = { path = "../../system" }
|
|
frame-support = { path = "../../support" }
|
|
frame-election-provider-support = { path = "../../election-provider-support" }
|
|
|
|
pallet-election-provider-multi-phase = { path = ".." }
|
|
pallet-staking = { path = "../../staking" }
|
|
pallet-nomination-pools = { path = "../../nomination-pools" }
|
|
pallet-bags-list = { path = "../../bags-list" }
|
|
pallet-balances = { path = "../../balances" }
|
|
pallet-timestamp = { path = "../../timestamp" }
|
|
pallet-session = { path = "../../session" }
|
|
|
|
[features]
|
|
try-runtime = [
|
|
"frame-election-provider-support/try-runtime",
|
|
"frame-support/try-runtime",
|
|
"frame-system/try-runtime",
|
|
"pallet-bags-list/try-runtime",
|
|
"pallet-balances/try-runtime",
|
|
"pallet-election-provider-multi-phase/try-runtime",
|
|
"pallet-nomination-pools/try-runtime",
|
|
"pallet-session/try-runtime",
|
|
"pallet-staking/try-runtime",
|
|
"pallet-timestamp/try-runtime",
|
|
"sp-runtime/try-runtime",
|
|
]
|