Proof of Stake systems tend to generally divide the timeline into epochs and each epoch into smaller rounds. The timeline and terminology may differ between architectures but most of them use a similar approach.
Each round has a fixed time duration of 5 seconds (might suffer updates after several testnet confirmation stages). During each round, a new block can be produced within every shard by a randomly selected set of block validators (including one block proposer). From one round to another the set is changed using the eligible nodes list.
In Elrond, each epoch has a fixed duration, initially set to 24 hours (might suffer updates after several testnet confirmation stages). During this timeframe, the configuration of the shards remains unchanged. The system adapts to scalability demands between epochs by modifying the number of shards. To prevent collusion, after an epoch, the configuration of each shard needs to change. While reshuffling all nodes between shards would provide the highest security level, it would affect the system's liveness by introducing additional latency due to bootstrapping. For this reason, at the end of each epoch, less than ⅓ of the eligible validators belonging to a shard will be redistributed non-deterministically and uniformly to the other shards' waiting lists.
Only prior to the start of a new epoch, the validator distribution to shards can be determined, without additional communication as displayed in the figure below:
The node shuffling process runs in multiple steps:
The new nodes registered in the current epoch ei land in the unassigned node pool until the end of the current epoch;
Less than ⅓ of the nodes in every shard are randomly selected to be reshuffled and are added to the assigned node pool;
The new number of shards Nsh,i+1 is computed based on the number of nodes in the network ki and network usage;
Nodes previously in all shard's waiting lists, that are currently synchronized, are added to the eligible validator's lists;
The newly added nodes from the unassigned node pool are uniformly random distributed across all shards' waiting lists during epoch ei+1;
The reshuffled nodes from the assigned node pool are redistributed with higher ratios to shards' waiting lists that will need to split in the next epoch ei+2.
As described before, the reconfiguration of shards within epochs and the arbitrary selection of validators within rounds discourages the creation of unfair coalitions, diminishes the possibility of DDoS and bribery attacks while maintaining decentralization and a high transactions throughput.