Why Cadence Only provide UnsafeRandom function instead of using random number generated by threshold signature?

We recently discussed this on forum[0] and on office hours. Basically they are few issues as far as I can see.

  • Try & Abort ( basically interact with the contract in a brute force way till you get the result you want, panic if you don’t like the result)
  • Your transaction is executed on multiple execution nodes and result is compared (if you had different random on those nodes, they would disagree) So I think syncing the random for transaction would be a bit problematic

I think second issue can be solved, also there are some ideas for the first one.

Sooner or later I believe we will have random on chain.

[0] http://forum.flow.com/t/randomness-for-nft-packs-on-flow/1830/5