Bladeren bron

修复call失败时返回true的问题

skyfffire 2 jaren geleden
bovenliggende
commit
ada22d19f8
1 gewijzigde bestanden met toevoegingen van 14 en 4 verwijderingen
  1. 14 4
      internal/ethapi/public_block_chain_api.go

+ 14 - 4
internal/ethapi/public_block_chain_api.go

@@ -52,6 +52,11 @@ func (s *PublicBlockChainAPI) NewCall(ctx context.Context, args CallArgs, blockN
 	if err != nil {
 		return CallResult{Success: false, Msg: err.Error()}, nil
 	} else {
+		if len(result.Revert()) > 0 {
+			revertErr := newRevertError(result)
+			return CallResult{Success: false, Msg: revertErr.Error()}, nil
+		}
+
 		return CallResult{Success: true, Return: result.Return()}, nil
 	}
 }
@@ -125,11 +130,16 @@ func (s *PublicBlockChainAPI) BatchCall(ctx context.Context, config BatchCallCon
 		if call.BlockOverrides != nil {
 			call.BlockOverrides.Apply(&blockContext)
 		}
-		result, err := doCall(ctx, s.b, call.CallArgs, state, header, timeout, gp, &blockContext)
-		if err != nil {
-			results = append(results, CallResult{Success: false, Msg: err.Error()})
+		result, doCallErr := doCall(ctx, s.b, call.CallArgs, state, header, timeout, gp, &blockContext)
+		if doCallErr != nil {
+			results = append(results, CallResult{Success: false, Msg: doCallErr.Error()})
 		} else {
-			results = append(results, CallResult{Success: true, Return: result.Return()})
+			if len(result.Revert()) > 0 {
+				revertErr := newRevertError(result)
+				results = append(results, CallResult{Success: false, Msg: revertErr.Error()})
+			} else {
+				results = append(results, CallResult{Success: true, Return: result.Return()})
+			}
 		}
 	}
 	return results, nil