Paper 2019/985

EthDKG: Distributed Key Generation with Ethereum Smart Contracts

Philipp Schindler, Aljosha Judmayer, Nicholas Stifter, and Edgar Weippl


Distributed key generation (DKG) is a fundamental building block for a variety of cryptographic schemes and protocols, such as threshold cryptography, multi-party coin tossing schemes, public randomness beacons and consensus protocols. More recently, the surge in interest for blockchain technologies, and in particular the quest for developing scalable protocol designs, has renewed and strengthened the need for efficient and practical DKG schemes. Surprisingly, given the broad range of applications and available body of research, fully functional and readily available DKG protocol implementations still remain limited. This paper hereby aims to close this gap by tailoring Gennaro et al.'s well known protocol design towards being efficiently implementable within public cryptocurrency ecosystems such as Ethereum. Our theoretical improvements are supported by an open source, fully functional, well documented DKG implementation that can employ any Ethereum Virtual Machine (EVM) compatible smart contract platform as a communication layer. We evaluate the efficiency of our protocol and demonstrate its practicability through the deployment and successful execution of our DKG contract in the Ethereum Ropsten testnet. Given the current Ethereum block gas limit, all steps required for the key generation process, even in demanding scenarios tested with up to 256 nodes, can be verified at the smart contract level.

Available format(s)
Cryptographic protocols
Publication info
Preprint. MINOR revision.
Distributed Key GenerationDKGSmart ContractsEthereum
Contact author(s)
pschindler @ sba-research org
2022-04-06: revised
2019-08-29: received
See all versions
Short URL
Creative Commons Attribution


      author = {Philipp Schindler and Aljosha Judmayer and Nicholas Stifter and Edgar Weippl},
      title = {EthDKG: Distributed Key Generation with Ethereum Smart Contracts},
      howpublished = {Cryptology ePrint Archive, Paper 2019/985},
      year = {2019},
      note = {\url{}},
      url = {}
Note: In order to protect the privacy of readers, does not use cookies or embedded third party content.