Verifiable Delay Function (VDF) Implementation in Go
The problem VDF Implementation in Go solves
Combining the Nakamoto consensus with verifiable delay function (VDF) and verifiable random function (VRF)
The idea is to use VDF to simulate the PoW puzzle solving, and VRF to create puzzle difficulty variations for different validator nodes. Combining the VDF puzzle with the Nakamoto longest chain rule, validator nodes are effectively chosen at random as the block proposer for each block height. Compared to BFT based consensus which usually poses an upper limit on the number of validator nodes, this approach can achieve a high level of decentralization like Bitcoin, and yet does not burn nearly as much electricity for potentially the same level of security
Chainlink already has an implementation of VRF, this project implements a VDF library
Challenges I ran into
The current VDF implementation is available only in Rust(https://github.com/poanetwork/vdf), this project creates a wrapper in Go. One of the challanges was using CGo to interact with the underlying Rust library