In the current proposal, the dRNG-committee consisting of the top high mana node is selected periodically (e.g. daily) and it is supposed to be “the” mana-dRNG-committee, see Committee selection for DRNG in IOTA. In case this committee breaks (fails to produce random numbers or turns out to be corrupted) we can either wait until the end of the period or select an “intermediate” committee, see also Committee Failure Detection Idea. However, to do this consensus has to be found about the “breaking” of the committee and on when to choose the next committee. Moreover, in a sharded world there might be several committees and consensus has to be established which dRND to use when and where.
For those reasons, we want to discuss a new “fluid” way to define/select dRNG committees.
-
every node can trigger a new committee selection at any time;
for instance, in case a node sees a need for a new committee it tries to open up a new committee. Such a need could be for instance: the old committee is no longer working correctly, messages of other committees arrive late, low trust in committee since mana is “far away”.
This trigger messages can be open in the tangle or P2P messages to trusted partners. -
In case the trigger messages or open other nodes can candidate for this new committee following rules defined in the trigger message. For instance, they could just use the same procedure as in the current committee selection. After a certain time, if the committee selection procedure is successful, random numbers are produced and put on the tangle.
-
As a result, there may be several committees at the same time. Every node or application is free to choose which dRNG to follow. For instance, in FPC honest nodes would follow the committee with the most (local) mana (at the current time).
In essence, it is: “The initiative to create a new committee may or may not be successful, and if it is it may be adopted or not.”
In the above everything is about freedom and this may also lead to chaos or times of re-organizations. For instance, there might be two running committees with almost the same members and the same total amount of mana. Now, some nodes decide not to be part of all committees and leave one of them; if several nodes do the same both committee may break at the same time. As a consequence, there might be no dRNG for some time (until a new committee is born.)
For this reason, we outline a possible reference implementation for honest nodes.
Let m be the size of the committee
-
Nodes that are among 2m top mana nodes and do not receive a random number, or perceive that the current top m mana holders have 50% more mana than the current committee do the following
a) check if another node already triggered a new committee selection
b) if yes, apply, (if several apply to all of them)
c) if no, trigger a new committee selection -
Nodes that still receive random numbers apply to ongoing selection if total mana of applicants is at least half of the mana of the current committee
-
In case of a committee failure, there will probably be more than 1 committee renewal procedure starting around the same time. Honest nodes might agree on the one with the minimal timestamp. Since “lowest timestamp” may not be decidable at this point they may perhaps have to apply to several. But in the end, the minimal timestamp is objective, due to timestamp rules of the message layer. Break ties using minHash.
-
A node may find itself in several committees, take the oldest timestamp of these committees, and measure cumulative manas of all committees with respect to this timestamp. Continue to be a member of the highest mana committee.