diff --git a/core/state_transition.go b/core/state_transition.go index cc3e4b7dbb..c317c95155 100644 --- a/core/state_transition.go +++ b/core/state_transition.go @@ -425,7 +425,9 @@ func (st *StateTransition) TransitionDb() (*ExecutionResult, error) { // Execute the preparatory steps for state transition which includes: // - prepare accessList(post-berlin) // - reset transient storage(eip 1153) - st.state.Prepare(rules, msg.From, st.evm.Context.Coinbase, msg.To, vm.ActivePrecompiles(rules), msg.AccessList) + precompiles := st.evm.GetPrecompiles() + precompiles = append(precompiles, vm.ActivePrecompiles(rules)...) + st.state.Prepare(rules, msg.From, st.evm.Context.Coinbase, msg.To, precompiles, msg.AccessList) var ( ret []byte diff --git a/core/vm/evm.go b/core/vm/evm.go index 83d5b97239..30619c21e6 100644 --- a/core/vm/evm.go +++ b/core/vm/evm.go @@ -619,3 +619,10 @@ func (evm *EVM) GetVMContext() *tracing.VMContext { func (evm *EVM) GetDepth() int { return evm.depth } + +func (evm *EVM) GetPrecompiles() (res []common.Address) { + for addr := range evm.dynamicPrecompiles { + res = append(res, addr) + } + return +}