Skip to content

Commit 97f6643

Browse files
authored
Merge pull request #7951 from onflow/mpeter/add-max-gas-consumed-in-evm-result
[Flow EVM] Add the `MaxGasConsumed` field in EVM `Result` type
2 parents 30b69c7 + a0e8211 commit 97f6643

File tree

4 files changed

+9
-6
lines changed

4 files changed

+9
-6
lines changed

fvm/evm/emulator/emulator.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -675,7 +675,7 @@ func (proc *procedure) run(
675675
// if pre-checks are passed, the exec result won't be nil
676676
if execResult != nil {
677677
res.GasConsumed = execResult.UsedGas
678-
res.GasRefund = proc.state.GetRefund()
678+
res.MaxGasConsumed = execResult.MaxUsedGas
679679
res.Index = uint16(txIndex)
680680
res.CumulativeGasUsed = execResult.UsedGas + proc.config.BlockTotalGasUsedSoFar
681681
res.PrecompiledCalls, err = proc.config.PCTracker.CapturedCalls()

fvm/evm/evm_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,8 @@ func TestEVMRun(t *testing.T) {
205205
require.Equal(t, types.ErrCodeNoError, res.ErrorCode)
206206
require.Empty(t, res.ErrorMessage)
207207
require.Nil(t, res.DeployedContractAddress)
208+
require.Equal(t, uint64(23_520), res.GasConsumed)
209+
require.Equal(t, uint64(23_520), res.MaxGasConsumed)
208210
require.Equal(t, num, new(big.Int).SetBytes(res.ReturnedData).Int64())
209211
})
210212
})

fvm/evm/impl/impl.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,6 +1178,7 @@ func ResultSummaryFromEVMResultValue(val cadence.Value) (*types.ResultSummary, e
11781178
ErrorCode: types.ErrorCode(errorCode),
11791179
ErrorMessage: string(errorMsg),
11801180
GasConsumed: uint64(gasUsed),
1181+
MaxGasConsumed: uint64(gasUsed),
11811182
ReturnedData: convertedData,
11821183
DeployedContractAddress: convertedDeployedAddress,
11831184
}, nil

fvm/evm/types/result.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ type ResultSummary struct {
4747
ErrorCode ErrorCode
4848
ErrorMessage string
4949
GasConsumed uint64
50-
GasRefund uint64
50+
MaxGasConsumed uint64
5151
DeployedContractAddress *Address
5252
ReturnedData Data
5353
}
@@ -78,12 +78,12 @@ type Result struct {
7878
// type of transaction defined by the evm package
7979
// see DirectCallTxType as extra type we added type for direct calls.
8080
TxType uint8
81-
// total gas consumed during execution
81+
// total gas consumed during execution, not including the refunded gas
8282
GasConsumed uint64
83+
// maximum gas consumed during execution, excluding gas refunds
84+
MaxGasConsumed uint64
8385
// total gas used by the block after this tx execution
8486
CumulativeGasUsed uint64
85-
// total gas refunds after transaction execution
86-
GasRefund uint64
8787
// the address where the contract is deployed (if any)
8888
DeployedContractAddress *Address
8989
// returned data from a function call
@@ -280,7 +280,7 @@ func (res *Result) LightReceipt() *LightReceipt {
280280
func (res *Result) ResultSummary() *ResultSummary {
281281
rs := &ResultSummary{
282282
GasConsumed: res.GasConsumed,
283-
GasRefund: res.GasRefund,
283+
MaxGasConsumed: res.MaxGasConsumed,
284284
DeployedContractAddress: res.DeployedContractAddress,
285285
ReturnedData: res.ReturnedData,
286286
Status: StatusSuccessful,

0 commit comments

Comments
 (0)