Let's say that I have a decentralized system and I have a list of nodes published on a public log like a blockchain. I want a node A to be able to connect to another node B. B should be chosen randomly from a subset S of the list of all nodes. Once B is chosen I want the other nodes in the system to verify whether B was actually chosen randomly. We can assume that every node is able to compute S so my question is: Can A use a verifiable random function to choose a node from S which we call B and have all the other nodes be able to verify that the node B I chose was the node that was supposed to be chosen?

  • 1
    $\begingroup$ Sure sounds like you can do this, if every node reliably knows every other node's public VRF verification key. $\endgroup$ Mar 3 '18 at 21:28
  • $\begingroup$ @SqueamishOssifrage Thank you. My idea was to use it as follows: Every element in S is assigned an index with some specific criteria so every node assigns the same indexes to the elements of S. Then the VRF is used to generate a random value a and the proof p. The element in S chosen is the one with index i = a % n where n is the max index. Other nodes then can use the proof to verify the correctness of the election. Is this the proper way of using VRF? $\endgroup$
    – David
    Mar 6 '18 at 15:32
  • $\begingroup$ I am highly interested in this problem as well, @David please let me know if you've made any progress on this =) Thanks! $\endgroup$
    – reedvoid
    Mar 14 '18 at 21:13
  • 1
    $\begingroup$ You may be interested to read about Algorand, which uses VRFs to pick which users get to propose a block in a particular round. $\endgroup$ Apr 11 '18 at 1:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.