BLS

  • https://en.wikipedia.org/wiki/Boneh%E2%80%93Lynn%E2%80%93Shacham
  • https://crypto.stanford.edu/pbc/
  • https://github.com/dfinity/bn/blob/master/bls/src/bls_c.cpp
  • https://github.com/dfinity/go-dfinity-crypto/blob/master/bls/bls.go

Threshold Relay

which applies cryptography to create randomness on demand of sufficient network participants

  • https://dfinity.org/faq.html

  • The composition of each group is entirely random such that they can intersect and clients can be presented in multiple groups. In DFINITY, each group is comprised of 400 members. When a group is defined, the members attempt to set up a BLS threshold signature system using a distributed key generation protocol. If they are successful within some fixed number of blocks, they then register the public key ("identity") created for their group on the global blockchain using a special transaction, such that it will become part of the set of active groups in a following mining "epoch". The network begins at "genesis" with some number of predefined groups, one of which is nominated to create a signature on some default value. Such signatures are random values - if they were not then the group's signatures on messages would be predictable and the threshold signature system insecure - and each random value produced thus is used to select a random successor group. This next group then signs the previous random value to produce a new random value and select another group, relaying between groups ad infinitum and producing a sequence of random values.

  • How to Achieve Near-Instant Finality in Public Blockchains using a VRF

  • DFINITY Crypto Techniques