diff --git a/core/state_transition.go b/core/state_transition.go index 18777d8d4..3b25155c6 100644 --- a/core/state_transition.go +++ b/core/state_transition.go @@ -219,6 +219,11 @@ func (st *StateTransition) preCheck() error { st.msg.From().Hex(), msgNonce, stNonce) } } + // Make sure the sender is an EOA + if codeHash := st.state.GetCodeHash(st.msg.From()); codeHash != emptyCodeHash { + return fmt.Errorf("%w: address %v, codehash: %s", ErrSenderNoEOA, + st.msg.From().Hex(), codeHash) + } // Make sure that transaction feeCap is greater than the baseFee (post london) if st.evm.ChainConfig().IsLondon(st.evm.Context.BlockNumber) { if l := st.feeCap.BitLen(); l > 256 {