diff --git a/beacon-chain/execution/block_reader.go b/beacon-chain/execution/block_reader.go index 20a2d56b19a..6918a6e9e97 100644 --- a/beacon-chain/execution/block_reader.go +++ b/beacon-chain/execution/block_reader.go @@ -110,7 +110,7 @@ func (s *Service) BlockByTimestamp(ctx context.Context, time uint64) (*types.Hea return nil, errors.Wrap(errBlockTimeTooLate, fmt.Sprintf("(%d > %d)", time, latestBlkTime)) } // Initialize a pointer to eth1 chain's history to start our search from. - cursorNum := big.NewInt(0).SetUint64(latestBlkHeight) + cursorNum := new(big.Int).SetUint64(latestBlkHeight) cursorTime := latestBlkTime var numOfBlocks uint64 @@ -156,15 +156,15 @@ func (s *Service) BlockByTimestamp(ctx context.Context, time uint64) (*types.Hea return s.retrieveHeaderInfo(ctx, cursorNum.Uint64()) } if cursorTime > time { - return s.findMaxTargetEth1Block(ctx, big.NewInt(0).SetUint64(estimatedBlk), time) + return s.findMaxTargetEth1Block(ctx, new(big.Int).SetUint64(estimatedBlk), time) } - return s.findMinTargetEth1Block(ctx, big.NewInt(0).SetUint64(estimatedBlk), time) + return s.findMinTargetEth1Block(ctx, new(big.Int).SetUint64(estimatedBlk), time) } // Performs a search to find a target eth1 block which is earlier than or equal to the // target time. This method is used when head.time > targetTime func (s *Service) findMaxTargetEth1Block(ctx context.Context, upperBoundBlk *big.Int, targetTime uint64) (*types.HeaderInfo, error) { - for bn := upperBoundBlk; ; bn = big.NewInt(0).Sub(bn, big.NewInt(1)) { + for bn := upperBoundBlk; ; bn = new(big.Int).Sub(bn, big.NewInt(1)) { if ctx.Err() != nil { return nil, ctx.Err() } @@ -181,7 +181,7 @@ func (s *Service) findMaxTargetEth1Block(ctx context.Context, upperBoundBlk *big // Performs a search to find a target eth1 block which is just earlier than or equal to the // target time. This method is used when head.time < targetTime func (s *Service) findMinTargetEth1Block(ctx context.Context, lowerBoundBlk *big.Int, targetTime uint64) (*types.HeaderInfo, error) { - for bn := lowerBoundBlk; ; bn = big.NewInt(0).Add(bn, big.NewInt(1)) { + for bn := lowerBoundBlk; ; bn = new(big.Int).Add(bn, big.NewInt(1)) { if ctx.Err() != nil { return nil, ctx.Err() } @@ -201,7 +201,7 @@ func (s *Service) findMinTargetEth1Block(ctx context.Context, lowerBoundBlk *big } func (s *Service) retrieveHeaderInfo(ctx context.Context, bNum uint64) (*types.HeaderInfo, error) { - bn := big.NewInt(0).SetUint64(bNum) + bn := new(big.Int).SetUint64(bNum) exists, info, err := s.headerCache.HeaderInfoByHeight(bn) if err != nil { return nil, err diff --git a/beacon-chain/execution/log_processing.go b/beacon-chain/execution/log_processing.go index c059d955645..4eb9288fd16 100644 --- a/beacon-chain/execution/log_processing.go +++ b/beacon-chain/execution/log_processing.go @@ -298,9 +298,7 @@ func (s *Service) processPastLogs(ctx context.Context) error { // Start from the deployment block if our last requested block // is behind it. This is as the deposit logs can only start from the // block of the deployment of the deposit contract. - if deploymentBlock > currentBlockNum { - currentBlockNum = deploymentBlock - } + currentBlockNum = max(currentBlockNum, deploymentBlock) // To store all blocks. headersMap := make(map[uint64]*types.HeaderInfo) rawLogCount, err := s.depositContractCaller.GetDepositCount(&bind.CallOpts{}) @@ -384,15 +382,13 @@ func (s *Service) processBlockInBatch(ctx context.Context, currentBlockNum uint6 end := currentBlockNum + batchSize // Appropriately bound the request, as we do not // want request blocks beyond the current follow distance. - if end > latestFollowHeight { - end = latestFollowHeight - } + end = min(end, latestFollowHeight) query := ethereum.FilterQuery{ Addresses: []common.Address{ s.cfg.depositContractAddr, }, - FromBlock: big.NewInt(0).SetUint64(start), - ToBlock: big.NewInt(0).SetUint64(end), + FromBlock: new(big.Int).SetUint64(start), + ToBlock: new(big.Int).SetUint64(end), } remainingLogs := logCount - uint64(s.lastReceivedMerkleIndex+1) // only change the end block if the remaining logs are below the required log limit. @@ -400,7 +396,7 @@ func (s *Service) processBlockInBatch(ctx context.Context, currentBlockNum uint6 withinLimit := remainingLogs < depositLogRequestLimit aboveFollowHeight := end >= latestFollowHeight if withinLimit && aboveFollowHeight { - query.ToBlock = big.NewInt(0).SetUint64(latestFollowHeight) + query.ToBlock = new(big.Int).SetUint64(latestFollowHeight) end = latestFollowHeight } logs, err := s.httpLogger.FilterLogs(ctx, query) @@ -482,11 +478,11 @@ func (s *Service) requestBatchedHeadersAndLogs(ctx context.Context) error { } for i := s.latestEth1Data.LastRequestedBlock + 1; i <= requestedBlock; i++ { // Cache eth1 block header here. - _, err := s.BlockHashByHeight(ctx, big.NewInt(0).SetUint64(i)) + _, err := s.BlockHashByHeight(ctx, new(big.Int).SetUint64(i)) if err != nil { return err } - err = s.ProcessETH1Block(ctx, big.NewInt(0).SetUint64(i)) + err = s.ProcessETH1Block(ctx, new(big.Int).SetUint64(i)) if err != nil { return err } diff --git a/beacon-chain/execution/service.go b/beacon-chain/execution/service.go index 6e412852cea..13704c11970 100644 --- a/beacon-chain/execution/service.go +++ b/beacon-chain/execution/service.go @@ -415,14 +415,11 @@ func (s *Service) batchRequestHeaders(startBlock, endBlock uint64) ([]*types.Hea requestRange := (endBlock - startBlock) + 1 elems := make([]gethRPC.BatchElem, 0, requestRange) headers := make([]*types.HeaderInfo, 0, requestRange) - if requestRange == 0 { - return headers, nil - } for i := startBlock; i <= endBlock; i++ { header := &types.HeaderInfo{} elems = append(elems, gethRPC.BatchElem{ Method: "eth_getBlockByNumber", - Args: []interface{}{hexutil.EncodeBig(big.NewInt(0).SetUint64(i)), false}, + Args: []interface{}{hexutil.EncodeBig(new(big.Int).SetUint64(i)), false}, Result: header, Error: error(nil), }) @@ -675,9 +672,7 @@ func (s *Service) cacheBlockHeaders(start, end uint64) error { // the allotted limit. endReq -= 1 } - if endReq > end { - endReq = end - } + endReq = min(endReq, end) // We call batchRequestHeaders for its header caching side-effect, so we don't need the return value. _, err := s.batchRequestHeaders(startReq, endReq) if err != nil {