Background
In PR evstack/go-execution-evm#30, we identified that the current implementation of derivePrevRandao in PureEngineClient simply returns the block height as a hash:
func (c *PureEngineClient) derivePrevRandao(blockHeight uint64) common.Hash {
return common.BigToHash(new(big.Int).SetUint64(blockHeight))
}
Issue
While this implementation is feasible for test networks, production consensus protocols typically require actual random values. Using block height as a deterministic input for RANDAO doesn't provide the randomness properties expected in a production environment.
Potential Solutions
- Implement a proper Verifiable Random Function (VRF)
- Integrate with a secure random source
- Implement a more sophisticated deterministic but unpredictable algorithm
References
Background
In PR evstack/go-execution-evm#30, we identified that the current implementation of
derivePrevRandaoinPureEngineClientsimply returns the block height as a hash:Issue
While this implementation is feasible for test networks, production consensus protocols typically require actual random values. Using block height as a deterministic input for RANDAO doesn't provide the randomness properties expected in a production environment.
Potential Solutions
References