From 5048fd10280b4556bceb22a849057b925f968452 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Tue, 2 Jun 2020 14:05:16 +0200 Subject: [PATCH] internal/ethapi: unified handling of errors in DoEstimateGas --- internal/ethapi/api.go | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index 4a412650f4..1cb165adc6 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -999,19 +999,16 @@ func DoEstimateGas(ctx context.Context, b Backend, args CallArgs, blockNrOrHash } if failed { if result != nil && result.Err != vm.ErrOutOfGas { - var revert string if len(result.Revert()) > 0 { - ret, err := abi.UnpackRevert(result.Revert()) - if err != nil { - revert = hexutil.Encode(result.Revert()) - } else { - revert = ret + reason, err := abi.UnpackRevert(result.Revert()) + if err == nil { + return 0, &revertError{ + error: errors.New("execution reverted"), + errData: reason, + } } } - return 0, revertError{ - error: errors.New("always failing transaction"), - errData: revert, - } + return 0, result.Err } // Otherwise, the specified gas cap is too low return 0, fmt.Errorf("gas required exceeds allowance (%d)", cap)