You’ve heard of deterministic Arrangement IDs, but have you ever considered a fully deterministic TreasureMap (ie, both nodes and arrangements)?
- Alice and Bob conduct a static diffie-hellman to obtain a SelectionSeed.
- Before granting, Alice conducts the same weighted sample logic we currently use, but with the SelectionSeed as the seed for the random part. This gives her an ordered list of Ursulas. Later, if Bob can know the state of stakes at the moment Alice sampled (StakeStateSnapshot), he can obtain the same ordered list.
- To grant, Alice proceeds through the list in order, either picking each Ursula for inclusion or excluding them (for example, if they are down), until she has reached N Ursulas. She then commits to the blockchain a representation of the StakeStateSnapshot and a list of indices for those Ursulas which were excluded.
This allows Bob to reconstruct the selected Ursulas by traversing the shared list and skipping any excluded Ursulas.