Staking pallet (#373)

* initial staking pallet

* add staking pallet to runtime

* support session rotation for serai

* optimizations & cleaning

* fix deny

* add serai network to initial networks

* a few tweaks & comments

* fix some pr comments

* Rewrite validator-sets with logarithmic algorithms

Uses the fact the underlying DB is sorted to achieve sorting of potential
validators by stake.

Removes release of deallocated stake for now.

---------

Co-authored-by: Luke Parker <lukeparker5132@gmail.com>
This commit is contained in:
akildemir
2023-10-10 13:53:24 +03:00
committed by GitHub
parent 2f45bba2d4
commit 98190b7b83
25 changed files with 635 additions and 149 deletions

20
Cargo.lock generated
View File

@@ -8386,7 +8386,6 @@ dependencies = [
name = "serai-primitives"
version = "0.1.0"
dependencies = [
"lazy_static",
"parity-scale-codec",
"scale-info",
"serde",
@@ -8504,6 +8503,7 @@ dependencies = [
"scale-info",
"serai-in-instructions-pallet",
"serai-primitives",
"serai-staking-pallet",
"serai-tokens-pallet",
"serai-validator-sets-pallet",
"sp-api",
@@ -8522,6 +8522,22 @@ dependencies = [
"substrate-wasm-builder",
]
[[package]]
name = "serai-staking-pallet"
version = "0.1.0"
dependencies = [
"frame-support",
"frame-system",
"pallet-session",
"parity-scale-codec",
"scale-info",
"serai-primitives",
"serai-validator-sets-pallet",
"serai-validator-sets-primitives",
"sp-runtime",
"sp-std",
]
[[package]]
name = "serai-tokens-pallet"
version = "0.1.0"
@@ -8554,12 +8570,14 @@ dependencies = [
"frame-support",
"frame-system",
"hashbrown 0.14.0",
"pallet-session",
"parity-scale-codec",
"scale-info",
"serai-primitives",
"serai-validator-sets-primitives",
"sp-application-crypto",
"sp-core",
"sp-io",
"sp-runtime",
"sp-std",
]