From 59beaf58f7d050a5b425802ce391995b322002c6 Mon Sep 17 00:00:00 2001 From: Austin Chandra Date: Wed, 30 Nov 2022 11:37:42 -0800 Subject: [PATCH] Add random opcode using consensus hash --- x/evm/keeper/state_transition.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index 3103a45cad..20f9645747 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -79,6 +79,10 @@ func (k *Keeper) NewEVM( tracer vm.EVMLogger, stateDB vm.StateDB, ) evm.EVM { + header := ctx.BlockHeader() + // Use EvidenceHash (parallel to MixDigest on Ethereum block) + random := common.BytesToHash(header.EvidenceHash) + blockCtx := vm.BlockContext{ CanTransfer: core.CanTransfer, Transfer: core.Transfer, @@ -86,9 +90,10 @@ func (k *Keeper) NewEVM( Coinbase: cfg.CoinBase, GasLimit: ethermint.BlockGasLimit(ctx), BlockNumber: big.NewInt(ctx.BlockHeight()), - Time: big.NewInt(ctx.BlockHeader().Time.Unix()), + Time: big.NewInt(header.Time.Unix()), Difficulty: big.NewInt(0), // unused. Only required in PoW context BaseFee: cfg.BaseFee, + Random: &random, } txCtx := core.NewEVMTxContext(msg)