From d62e7c1745337723a006f30b525b59cea7c95e7a Mon Sep 17 00:00:00 2001 From: Zhang Guyu Date: Mon, 30 Jan 2023 14:33:58 +0800 Subject: [PATCH] fix sanbox bugs: set mgval to zero (#52) * set mgval to zero * readd value check * fix eip1559's gasprice --- core/state_transition.go | 9 ++++++--- eth/api_pre_exec.go | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/core/state_transition.go b/core/state_transition.go index 5a826491e8..beb87d5979 100644 --- a/core/state_transition.go +++ b/core/state_transition.go @@ -195,15 +195,18 @@ func (st *StateTransition) to() common.Address { func (st *StateTransition) buyGas() error { mgval := new(big.Int).SetUint64(st.msg.Gas()) mgval = mgval.Mul(mgval, st.gasPrice) + if st.evm.Config.PreExec { + mgval = big.NewInt(0) + } balanceCheck := mgval if st.gasFeeCap != nil { balanceCheck = new(big.Int).SetUint64(st.msg.Gas()) balanceCheck = balanceCheck.Mul(balanceCheck, st.gasFeeCap) + if st.evm.Config.PreExec { + balanceCheck = big.NewInt(0) + } balanceCheck.Add(balanceCheck, st.value) } - if st.evm.Config.PreExec { - balanceCheck = big.NewInt(0) - } if have, want := st.state.GetBalance(st.msg.From()), balanceCheck; have.Cmp(want) < 0 { return fmt.Errorf("%w: address %v have %v want %v", ErrInsufficientFunds, st.msg.From().Hex(), have, want) } diff --git a/eth/api_pre_exec.go b/eth/api_pre_exec.go index dacb5c5360..af24549244 100644 --- a/eth/api_pre_exec.go +++ b/eth/api_pre_exec.go @@ -281,7 +281,7 @@ func (api *PreExecAPI) TraceMany(ctx context.Context, origins []PreArgs) ([]PreR Input: origin.Input, } // Get a new instance of the EVM. - msg, err := txArgs.ToMessage(0, nil) + msg, err := txArgs.ToMessage(api.e.APIBackend.RPCGasCap(), header.BaseFee) if err != nil { preResList = append(preResList, PreResult{ Error: PreError{