  Distributed Key Generation (DKG) is an extensively researched topic as it is
fundamental to threshold cryptosystems. Emerging technologies such as
blockchains benefit massively from applying threshold cryptography in consensus
protocols, randomness beacons, and threshold signatures. However, blockchains
and smart contracts also enable further improvements of DKG protocols by
providing a decentralized computation and communication platform.
  For that reason, we propose a DKG protocol that uses smart contracts to
ensure the correct execution of the protocol, allow dynamic participation, and
provide crypto-economic incentives to encourage honest behavior. The DKG
protocol uses a dispute and key derivation mechanism based on Zero-Knowledge
Succinct Non-interactive Arguments of Knowledge (zk-SNARKs) to reduce the costs
of applying smart contracts by moving the computations off-chain, where the
smart contract only verifies the correctness of the computation.
