Verifiable randomness as a service -- Randomness Oracle

The Internet Computer offers unpredictable and tamper-proof secure randomness. But how do one prove that the randomness used in a computation actually comes from the system?

Introducing Randomness Oracle to address this problem!

ic.rocks link
canlista link
Most recent 100 randomness requests

Also, proud to be the first user of the blackhole canister. Thanks @PaulLiu !

9 Likes

Bravo! This looks like a great service!

4 Likes

Hey there!

I don’t actually understand, what this service exactly does, could you help me?

But how do one prove that the randomness used in a computation actually comes from the system?

Where else can the randomness come from in the IC? Since it is a deterministic system, it has only one source of randomness - its own consensus.

Consider the following scenarios:

  1. pseudo randomness may be used instead of the system randomness. Anyone who figures out the seed could guess what is next.
  2. use system secure randomness to seed a computation, but does some more tricks to bias the outcome of the computation. If the canister does not reveal its code, there is no way to know whether it is being honest about using the system randomness.

So the solution here is allow a canister to claim its source of randomness comes from the oracle. The public can easily verify this claim. The canister can also make its formula (on how the outcome is derived from this randomness) public without revealing all its source code. This is enough to convince the public that there was indeed no foul play.

There are still a couple minor issues such as when the randomness was requested (a canister can save up a couple seeds from the past and pick the favorable one), and whether the oracle is the only source of randomness being used (a canister can consult more than one oracles and pick a favorable one). But the overall thesis here is sound and defendable.

1 Like

Beautiful, this will be very useful!