Golden is a neat DKG scheme, making use of an Elliptic-Curve based VRF:
(some details omitted, but that's the core of it)
This needs to be represented in a ZK circuit, with that circuit's field being whatever you're doing a DKG for. So, if you're doing a DKG for BLS, the circuit will be using the BLS scalar field, and you'll need an Elliptic Curve over this field.
The Bandersnatch curve is exactly what you need here, but comes with the annoying downside of having a cofactor. You need to consider this when doing the Diffie-Hellman exchange, and even more so when signing, which complicates the protocol design a bit.
You can avoid these concerns using the Decaf construction, creating a prime order group out of this curve, called Banderwagon. This works in two steps:
The latter check means that we consider to be the same point as . Whenever we compare points for equality, we can check which neatly takes this into account.
Unfortunately, this poses a problem for our neat VRF, where we need to use the x coordinate of a point. When serializing a point, we can get a "canonical" x coordinate by considering the sign of y, but computing the sign inside of the circuit is very expensive, because witnessing the bits of a field element is not cheap.
Thankfully, we can get around this by simply using instead of inside. is a true function of our quotient group, and everything works out.