Skip to content

Commit

Permalink
core: fix london-check to avoid duplication (ethereum#23333)
Browse files Browse the repository at this point in the history
Co-authored-by: lxex <liuxmzc1@163.com>
  • Loading branch information
2 people authored and Martin committed Aug 28, 2021
1 parent 2d395b6 commit bfc9d43
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions core/state_transition.go
Expand Up @@ -287,6 +287,7 @@ func (st *StateTransition) TransitionDb() (*ExecutionResult, error) {
sender := vm.AccountRef(msg.From())
homestead := st.evm.ChainConfig().IsHomestead(st.evm.Context.BlockNumber)
istanbul := st.evm.ChainConfig().IsIstanbul(st.evm.Context.BlockNumber)
london := st.evm.ChainConfig().IsLondon(st.evm.Context.BlockNumber)
contractCreation := msg.To() == nil

// Check clauses 4-5, subtract intrinsic gas if everything is correct
Expand Down Expand Up @@ -319,15 +320,16 @@ func (st *StateTransition) TransitionDb() (*ExecutionResult, error) {
st.state.SetNonce(msg.From(), st.state.GetNonce(sender.Address())+1)
ret, st.gas, vmerr = st.evm.Call(sender, st.to(), st.data, st.gas, st.value)
}
if !st.evm.ChainConfig().IsLondon(st.evm.Context.BlockNumber) {

if !london {
// Before EIP-3529: refunds were capped to gasUsed / 2
st.refundGas(params.RefundQuotient)
} else {
// After EIP-3529: refunds are capped to gasUsed / 5
st.refundGas(params.RefundQuotientEIP3529)
}
effectiveTip := st.gasPrice
if st.evm.ChainConfig().IsLondon(st.evm.Context.BlockNumber) {
if london {
effectiveTip = cmath.BigMin(st.gasTipCap, new(big.Int).Sub(st.gasFeeCap, st.evm.Context.BaseFee))
}
st.state.AddBalance(st.evm.Context.Coinbase, new(big.Int).Mul(new(big.Int).SetUint64(st.gasUsed()), effectiveTip))
Expand Down

0 comments on commit bfc9d43

Please sign in to comment.