(address string)
| 317 | } |
| 318 | |
| 319 | func (r *RPCRequest) GetAddressNonceRange(address string) (minNonce, maxNonce uint64, err error) { |
| 320 | // Get minimum nonce by asking the eth node for the current transaction count |
| 321 | _req := types.NewJSONRPCRequest(1, "eth_getTransactionCount", []interface{}{r.txFrom, "latest"}) |
| 322 | jsonData, err := json.Marshal(_req) |
| 323 | if err != nil { |
| 324 | r.logger.Error("[GetAddressNonceRange] eth_getTransactionCount marshal failed", zap.Error(err)) |
| 325 | return 0, 0, err |
| 326 | } |
| 327 | httpRes, err := r.client.ProxyRequest(jsonData) |
| 328 | if err != nil { |
| 329 | r.logger.Error("[GetAddressNonceRange] eth_getTransactionCount proxy request failed", zap.Error(err)) |
| 330 | return 0, 0, err |
| 331 | } |
| 332 | |
| 333 | resBytes, err := io.ReadAll(httpRes.Body) |
| 334 | httpRes.Body.Close() |
| 335 | if err != nil { |
| 336 | r.logger.Error("[GetAddressNonceRange] eth_getTransactionCount read response failed", zap.Error(err)) |
| 337 | return 0, 0, err |
| 338 | } |
| 339 | _res, err := respBytesToJSONRPCResponse(resBytes) |
| 340 | if err != nil { |
| 341 | r.logger.Error("[GetAddressNonceRange] eth_getTransactionCount parsing response failed", zap.Error(err)) |
| 342 | return 0, 0, err |
| 343 | } |
| 344 | _userNonceStr := "" |
| 345 | err = json.Unmarshal(_res.Result, &_userNonceStr) |
| 346 | if err != nil { |
| 347 | r.logger.Error("[GetAddressNonceRange] eth_getTransactionCount unmarshall failed", zap.Error(err)) |
| 348 | r.writeRPCError("internal server error", types.JSONRPCInternalError) |
| 349 | return |
| 350 | } |
| 351 | _userNonceStr = strings.Replace(_userNonceStr, "0x", "", 1) |
| 352 | _userNonceBigInt := new(big.Int) |
| 353 | _userNonceBigInt.SetString(_userNonceStr, 16) |
| 354 | minNonce = _userNonceBigInt.Uint64() |
| 355 | |
| 356 | // Get maximum nonce by looking at redis, which has current pending transactions |
| 357 | _redisMaxNonce, _, _ := RState.GetSenderMaxNonce(r.txFrom) |
| 358 | maxNonce = Max(minNonce, _redisMaxNonce) |
| 359 | return minNonce, maxNonce, nil |
| 360 | } |
| 361 | |
| 362 | func (r *RPCRequest) WhitehatBalanceCheckerRewrite() { |
| 363 | var err error |
no test coverage detected