Add signals pallet

Resolves #353

Implements code such that:

- 80% of validators (by stake) must be in favor of a signal for the network to
  be
- 80% of networks (by stake) must be in favor of a signal for it to be locked
  in
- After a signal has been locked in for two weeks, the network halts

The intention is to:

1) Not allow validators to unilaterally declare new consensus rules.

No method of declaring new consensus rules is provided by this pallet. Solely a
way to deprecate the current rules, with a signaled for successor. All nodes
must then individually decide whether or not to download and run a new node
which has new rules, and if so, which rules.

2) Not place blobs on chain.

Even if they'd be reproducible, it's just a lot of data to chuck on the
blockchain.
This commit is contained in:
Luke Parker
2023-10-21 20:06:53 -04:00
parent b66203ae3f
commit 1bff2a0447
10 changed files with 556 additions and 38 deletions

15
Cargo.lock generated
View File

@@ -8566,6 +8566,7 @@ dependencies = [
"serai-coins-pallet",
"serai-in-instructions-pallet",
"serai-primitives",
"serai-signals-pallet",
"serai-staking-pallet",
"serai-validator-sets-pallet",
"sp-api",
@@ -8584,6 +8585,20 @@ dependencies = [
"substrate-wasm-builder",
]
[[package]]
name = "serai-signals-pallet"
version = "0.1.0"
dependencies = [
"frame-support",
"frame-system",
"parity-scale-codec",
"scale-info",
"serai-primitives",
"serai-validator-sets-pallet",
"sp-core",
"sp-io",
]
[[package]]
name = "serai-staking-pallet"
version = "0.1.0"