---
# System prepended metadata

title: Untitled

---

### Design Goals 

1. **Scalable**: There should be no boundary on the number of validators and nominators.
2. **Simple**: There won't be so many different ways to stake. Nominators, and Validators. Nominators chose between:
```rust
enum Nomination {
	/// Managed pool. AccountId can be a smart contract.
	Mirror(AccountId),
	/// Robot pool.
	Fixed(BoundedVec<AccountId, 16>),
}
```
4. **Fast Ubonding**: System tracks the total stake being unbonded, the unbonding time is a function of this amount. 
5. **Lazy Rewards and Slashes**: We leverage things like `#[pallet::task]` to process rewards. Otherwise it should always be like pools. Anyone claims their own reward. Slashes need to be applied by someone. 
6. **Extensible Exposures**: Validators can be declared as exposed to more things. Allows re-staking. 
7. **Liquid-ish**: You get an asset representative for your staked DOTs in the form of `pallet_assets`. Not transferrable by default, but ready to be tweaked by governance. 
8. **Configurable**. You should be able to configure it to do phragmen, offchain, or simple approval voting, or fixed PoA set. 

### Known Issues
1. Switching nominations won't be as readily possible anymore.