core: skip AddBalance for special-tx, close XFN-67 (#1629)

This commit is contained in:
Daniel Liu 2025-11-04 13:46:26 +08:00 committed by GitHub
parent d319102837
commit 851bdc45db
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -418,19 +418,22 @@ func (st *StateTransition) TransitionDb(owner common.Address) (*ExecutionResult,
st.refundGas(params.RefundQuotientEIP3529)
}
if st.evm.Context.BlockNumber.Cmp(common.TIPTRC21Fee) > 0 {
if (owner != common.Address{}) {
st.state.AddBalance(owner, new(big.Int).Mul(new(big.Int).SetUint64(st.gasUsed()), msg.GasPrice), tracing.BalanceIncreaseRewardTransactionFee)
}
} else {
effectiveTip := msg.GasPrice
if st.evm.ChainConfig().IsEIP1559(st.evm.Context.BlockNumber) {
effectiveTip = new(big.Int).Sub(msg.GasFeeCap, st.evm.Context.BaseFee)
if effectiveTip.Cmp(msg.GasTipCap) > 0 {
effectiveTip = msg.GasTipCap
// GasPrice of special tx is always 0, so we can skip AddBalance
if !types.IsSpecialTx(msg.To) {
if st.evm.Context.BlockNumber.Cmp(common.TIPTRC21Fee) > 0 {
if (owner != common.Address{}) {
st.state.AddBalance(owner, new(big.Int).Mul(new(big.Int).SetUint64(st.gasUsed()), msg.GasPrice), tracing.BalanceIncreaseRewardTransactionFee)
}
} else {
effectiveTip := msg.GasPrice
if rules.IsEIP1559 {
effectiveTip = new(big.Int).Sub(msg.GasFeeCap, st.evm.Context.BaseFee)
if effectiveTip.Cmp(msg.GasTipCap) > 0 {
effectiveTip = msg.GasTipCap
}
}
st.state.AddBalance(st.evm.Context.Coinbase, new(big.Int).Mul(new(big.Int).SetUint64(st.gasUsed()), effectiveTip), tracing.BalanceIncreaseRewardTransactionFee)
}
st.state.AddBalance(st.evm.Context.Coinbase, new(big.Int).Mul(new(big.Int).SetUint64(st.gasUsed()), effectiveTip), tracing.BalanceIncreaseRewardTransactionFee)
}
return &ExecutionResult{