From 7c6d72156450046aaee7026ed8a6e6b3ff6f54ef Mon Sep 17 00:00:00 2001 From: jsvisa Date: Wed, 20 Sep 2023 09:27:35 +0800 Subject: [PATCH] accounts/abi: return detail insufficient error in simulate tx Signed-off-by: jsvisa --- accounts/abi/bind/backends/simulated.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/accounts/abi/bind/backends/simulated.go b/accounts/abi/bind/backends/simulated.go index 0c4342c494..49a772ebef 100644 --- a/accounts/abi/bind/backends/simulated.go +++ b/accounts/abi/bind/backends/simulated.go @@ -531,11 +531,11 @@ func (b *SimulatedBackend) EstimateGas(ctx context.Context, call ethereum.CallMs if feeCap.BitLen() != 0 { balance := b.pendingState.GetBalance(call.From) // from can't be nil available := new(big.Int).Set(balance) - if call.Value != nil { - if call.Value.Cmp(available) >= 0 { - return 0, core.ErrInsufficientFundsForTransfer + if value := call.Value; value != nil { + if value.Cmp(available) >= 0 { + return 0, fmt.Errorf("%w: address: %s, have: %v, want: %v", core.ErrInsufficientFundsForTransfer, call.From, available, value) } - available.Sub(available, call.Value) + available.Sub(available, value) } allowance := new(big.Int).Div(available, feeCap) if allowance.IsUint64() && hi > allowance.Uint64() {