Generating cryprographically secure random numbers

Hey all, I have been thinking about how one could do IEOs directly on Binance Chain, which is implemented using Cosmos SDK.

My question is - is there a cryptographically secure random number generator already within Cosmos?

In case there isn’t I have done some initial research into what might be feasible. RANDAO (+BLS) seems promising. I know that there is research looking into implementing a BLS signature mechanism for the Tendermint consensus layer.

I’m wondering if it might be feasible to implement an RNG using BLS for Binance Chain, whereby the consensus validators are the participatory signature holders.

Any thoughts on this would be appreciated!

1 Like

This came up as I was reading about these things… https://en.wikipedia.org/wiki/Distributed_key_generation

I’m quite interested in this subject also, and know pretty well already the basic principles involved as I have written Reed Solomon FEC erasure coding to use on top of RUDP (plan 9 reliable udp protocol - yes there is a Go implementation)

This is the main purpose, right? To enable authentication that requires n of m (ie, a threshold for the total validator set). In this way one has to compromise n nodes rather than simply breach one, and to create a signature via multiple parties over untrusted connections.

I am not sure how important this is, however, since as with multisig, there is protocol-level stuff you can do that blocks unilateral signing for specified types of actions on the database. However as far as I understand the subject, it is difficult to distribute such a secret, the pieces are generated once by a definite number of parties of which a subset must use their secret part in order to complete a threshold signature.

So, it has the disadvantage of not being dynamic, whereas a protocol level can add and remove signatories via the chain itself and based on a WoT scheme where new signatories must first have their keys signed before they can be allowed to participate.

The folks at Dgaming.com are planning to open source their work adding a distributed random number generation to the Tendermint/Cosmos stack in the coming week.

2 Likes

@zaki Would you be able to put me in touch with the people working on that? I couldn’t find their Github and/or dev forum.

@hiddentao hey! that would be us. Check out https://github.com/dgamingfoundation/tendermint/blob/dcr-random/docs/arcade/arcade.md

1 Like

Thanks a lot! will be sure to take a look.

Can we just use the BFT Time as a seed to generate the random numbers?
https://tendermint.com/docs/spec/consensus/bft-time.html

It would very easy for the proposer to manipulate based on what precommits to include

1 Like