Shard groups [ /ʃɑrd grups/ ] or Validator Sets on Radix are groups of validators responsible for storing and validating the ledger state on subsets of the Radix shardspace. Unlike the shardspace itself, which is fixed at 2^256 shards, shard groups are dynamic and can adjust their shard coverage according to demand.
Overview
Rather than fully replicating state and execution across all validators, shard groups handle validation and consensus for subsets of shards to facilitate scaling while retaining security.
Validators within these groups participate in the Cerberus consensus protocol to validate transactions on their shards. By reaching consensus amongst themselves, they can commit shard state while resisting various failure scenarios.
The composition of validators in these sets is determined algorithmically, aiming to balance factors like security, stake distribution, and maximizing decentralization. For example, no single validator should make up more than 33% of the total stake in a set, as this would allow them to potentially compromise consensus.
Organization
One of the key security mechanisms in Radix is the periodic shuffling of validators between different shard groups.
This shuffling involves removing validators from their current set that is responsible for a shard subset, and reassigning them to a different shard group handling another shard subset. It works to constantly vary the composition of validators across the different parts of the network.
Shuffling serves two main purposes:
- Preventing attacks - By shuffling validators, it makes it much more difficult for malicious actors to target specific shards over longer timescales. Even if a shard group was compromised at one point, shuffling ensures that group would get moved across shards over time. This raises the cost and complexity for attackers.
- Enhancing decentralization - Randomly reassigning validators also allows stake and participation to be distributed more evenly across all areas of the network. If validators remained static in sets, concentration of stake could occur making certain sets larger targets.
The shuffling process creates some overhead, mainly for the validators that get reassigned. These validators need to resynchronize state with the new shard group responsible for those shards. So there is some redundancy and bootstrapping work required. However, this is an acceptable tradeoff to gain the security benefits.
Additionally, the quantity of validators shuffled per epoch is limited to keep disruption minimal. For example, only 10-20% might rotate each epoch. This allows the majority of validators to remain in place, so resyncing overhead does not become excessive.
Finding an optimal shuffling frequency, quantity of validators to shuffle, and assignment algorithms are still active research questions. The goals are to balance security with performance.
Configuration
The algorithms and mechanisms for determining shard group composition and assignments represent one of the most complex facets of the Radix network. Managing 2^256 shards requires strategic placement of validators to maximize decentralization and security.
Some key areas of focus include:
- Quantity of validators per set
- Ideal stake distribution per set
- Minimum thresholds for preventing collusion
- Shuffling cadence between sets
- Automated assignment of validators to balance stake distribution
Ideally, shard group configurations guarantee sufficient collective stake within each set to make attacks infeasible. However, maximum decentralization is also crucial to avoid concentration of power.
Finding optimal formulations to address these sometimes competing priorities is an iterative, ongoing process as the network grows. Utilizing extensive simulations and tests, the Radix research team continues tuning configurations to balance performance needs with security guarantees.
Research
Ongoing research focuses on optimizing configurations for shard groups related to size, quantity, and shuffling cadence, with a view to find an ideal balance between security, performance, and decentralization as the network evolves.