Ds Mimo


Note

DS committee ejection has now been superseded by DS Reputation.

DS committee membership is maintained using a multiple-in multiple-out (MIMO) setup. This setup allows n nodes to join and leave the DS committee at every DS epoch. The steps are:

  1. Nodes submit PoWs (for difficulty and DS difficulty)
  2. DS leader composes DS Block
  3. DS leader determines how many nodes to elect into DS committee by using min(number of eligible pow submission, NUM_DS_ELECTION)
  4. Hence, number of incoming DS nodes ranges from 0 to NUM_DS_ELECTION
  5. DS leader adds incoming DS members' information to the map inside DS Block
  6. DS leader removes incoming DS members from sortedPoWSolns to ensure the incoming DS members do not get added into any of the shards
  7. After composing DS Block, ComputeDSBlockParameters() returns the number of incoming DS members (to be used a later step)
  8. Now, it is time to eject n number of (oldest) DS members from the DS committee and downgrade these to shard members
  9. DS leader adds the ejected members into m_allPoWConns and sortedPoWSolns
  10. As downgraded members do not perform PoWs, dummy PoW solutions are given to these
  11. Dummy PoW solution in this case is calculated using sha256(node’s pubkey)
  12. Now, it is time to compose the sharding structure. There is no major change to this portion
  13. DS Block consensus begins and is successfully completed
  14. DS leader and backups do the following
  15. DS leader and backups run UpdateDSCommitteeComposition() first before doing UpdateMyDSModeAndConsensusId(). This is to be consistent with what the incoming members will do. Also, having such changes enable much easier calculation of consensusMyID
  16. Add n number of incoming DS members inside the DS committee data structure in mediator
  17. Pop n number of DS members from the DS committee data structure in mediator
  18. The oldest n members are decided by (consensusID + n incoming DS members) >= size of DS committee. These nodes change their mode to IDLE
  19. Other DS members increment their consensusMyID by n and update the status to either DS leader or backup
  20. DS committee sends the DS Block and sharding structure to all PoW submitters
  21. Incoming DS members receive the DS Block, process it, and update their DS consensusMyID based on the ordering found in the map in the DS Block. From here onwards, these nodes are part of the DS committee
  22. Shard members process the DS Block and update their view of the DS committee