dir : consensus/misc/eip1559.go
현재 block이 첫 EIP-1559 block이라면 InitialBaseFee를 반환
if !config.IsLondon(parent.Number) {
return new(big.Int).SetUint64(params.InitialBaseFee)
}
target gas fee를 공식에 기반해 지정
parentGasTarget := parent.GasLimit / config.ElasticityMultiplier()
// parent가 target과 동일한 양의 가스를 사용했다면 base fee를 바꾸지 않는다.
if parent.GasUsed == parentGasTarget {
return new(big.Int).Set(parent.BaseFee)
}
parent block의 가스 사용량에 따라 baseFee를 조정한다.
var (
num = new(big.Int)
denom = new(big.Int)
)
// parent의 가스 사용량이 더 많다면 basefee를 올린다.
if parent.GasUsed > parentGasTarget {
// 주어진 공식에 따라 basefee의 delta값 계산
baseFeeDelta := math.BigMax(num, common.Big1)
// 수정된 basefee 리턴
return num.Add(parent.BaseFee, baseFeeDelta)
} else {
parent block 가스 사용량이 target보다 낮다면 basefee를 내린다.
num.SetUint64(parentGasTarget - parent.gasUsed)
// ... base fee의 감소량을 계산
base := num.Sub(parent.baseFee, num)
return math.BigMax(baseFee, common.Big0)
}
txpool.TxPool.runReorg()