A method for a group of computers communicating over a network, the method comprising: generating, via a setup function, public parameters associated with a random updatable function, wherein the public parameters are generated based on a security parameter and a desired level of security; generating, by the group of computers, via an initialization function and based at least in part on the public parameters generated by the setup function, an initial randomness output that includes a first random element of a first domain and a first state of a state domain, wherein the initial randomness output is used by the group of computers in zero-knowledge proofs on a blockchain; and generating, by one computer of the group of computers without communication to other computers in the group of computers, via an update function and based at least in part on the public parameters generated by the setup function and in response to a change in a makeup of the group of computers configured to maintain the blockchain, a new randomness output that includes a third random element of the first domain and a second state of the state domain, and communicating, by the one computer of the group of computers, the new randomness output to the other computers in the group via one communication, wherein: inputs of the update function include the first state generated by the initialization function and a second random element of a second domain the third random element is distributed statistically close to uniform in the first domain when the second state is an arbitrary but valid state in the state domain and the second random element is sampled uniformly at random in the second domain, and the new randomness output is used by the group of computers in the zero-knowledge proofs on the blockchain. generating, via a setup function, public parameters associated with a random updatable function, wherein the public parameters are generated based on a security parameter and a desired level of security; generating, by the group of computers, via an initialization function and based at least in part on the public parameters generated by the setup function, an initial randomness output that includes a first random element of a first domain and a first state of a state domain, wherein the initial randomness output is used by the group of computers in zero-knowledge proofs on a blockchain; and generating, by one computer of the group of computers without communication to other computers in the group of computers, via an update function and based at least in part on the public parameters generated by the setup function and in response to a change in a makeup of the group of computers configured to maintain the blockchain, a new randomness output that includes a third random element of the first domain and a second state of the state domain, and communicating, by the one computer of the group of computers, the new randomness output to the other computers in the group via one communication, wherein: inputs of the update function include the first state generated by the initialization function and a second random element of a second domain the third random element is distributed statistically close to uniform in the first domain when the second state is an arbitrary but valid state in the state domain and the second random element is sampled uniformly at random in the second domain, and the new randomness output is used by the group of computers in the zero-knowledge proofs on the blockchain.