chore(execution): Clean up unreachable code; use new(big.Int) instead of big.NewInt(0) (#13715)

* refactor with builtin min/max

* use new(big.Int) for more efficiency
This commit is contained in:
Chanh Le 2024-03-10 20:31:55 -04:00 committed by GitHub
parent 9d3af41acb
commit 800f3b572f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 24 deletions

View File

@ -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)) return nil, errors.Wrap(errBlockTimeTooLate, fmt.Sprintf("(%d > %d)", time, latestBlkTime))
} }
// Initialize a pointer to eth1 chain's history to start our search from. // 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 cursorTime := latestBlkTime
var numOfBlocks uint64 var numOfBlocks uint64
@ -156,15 +156,15 @@ func (s *Service) BlockByTimestamp(ctx context.Context, time uint64) (*types.Hea
return s.retrieveHeaderInfo(ctx, cursorNum.Uint64()) return s.retrieveHeaderInfo(ctx, cursorNum.Uint64())
} }
if cursorTime > time { 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 // 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 // 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) { 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 { if ctx.Err() != nil {
return nil, ctx.Err() 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 // 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 // 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) { 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 { if ctx.Err() != nil {
return nil, ctx.Err() 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) { 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) exists, info, err := s.headerCache.HeaderInfoByHeight(bn)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -298,9 +298,7 @@ func (s *Service) processPastLogs(ctx context.Context) error {
// Start from the deployment block if our last requested block // Start from the deployment block if our last requested block
// is behind it. This is as the deposit logs can only start from the // is behind it. This is as the deposit logs can only start from the
// block of the deployment of the deposit contract. // block of the deployment of the deposit contract.
if deploymentBlock > currentBlockNum { currentBlockNum = max(currentBlockNum, deploymentBlock)
currentBlockNum = deploymentBlock
}
// To store all blocks. // To store all blocks.
headersMap := make(map[uint64]*types.HeaderInfo) headersMap := make(map[uint64]*types.HeaderInfo)
rawLogCount, err := s.depositContractCaller.GetDepositCount(&bind.CallOpts{}) rawLogCount, err := s.depositContractCaller.GetDepositCount(&bind.CallOpts{})
@ -384,15 +382,13 @@ func (s *Service) processBlockInBatch(ctx context.Context, currentBlockNum uint6
end := currentBlockNum + batchSize end := currentBlockNum + batchSize
// Appropriately bound the request, as we do not // Appropriately bound the request, as we do not
// want request blocks beyond the current follow distance. // want request blocks beyond the current follow distance.
if end > latestFollowHeight { end = min(end, latestFollowHeight)
end = latestFollowHeight
}
query := ethereum.FilterQuery{ query := ethereum.FilterQuery{
Addresses: []common.Address{ Addresses: []common.Address{
s.cfg.depositContractAddr, s.cfg.depositContractAddr,
}, },
FromBlock: big.NewInt(0).SetUint64(start), FromBlock: new(big.Int).SetUint64(start),
ToBlock: big.NewInt(0).SetUint64(end), ToBlock: new(big.Int).SetUint64(end),
} }
remainingLogs := logCount - uint64(s.lastReceivedMerkleIndex+1) remainingLogs := logCount - uint64(s.lastReceivedMerkleIndex+1)
// only change the end block if the remaining logs are below the required log limit. // 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 withinLimit := remainingLogs < depositLogRequestLimit
aboveFollowHeight := end >= latestFollowHeight aboveFollowHeight := end >= latestFollowHeight
if withinLimit && aboveFollowHeight { if withinLimit && aboveFollowHeight {
query.ToBlock = big.NewInt(0).SetUint64(latestFollowHeight) query.ToBlock = new(big.Int).SetUint64(latestFollowHeight)
end = latestFollowHeight end = latestFollowHeight
} }
logs, err := s.httpLogger.FilterLogs(ctx, query) 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++ { for i := s.latestEth1Data.LastRequestedBlock + 1; i <= requestedBlock; i++ {
// Cache eth1 block header here. // 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 { if err != nil {
return err return err
} }
err = s.ProcessETH1Block(ctx, big.NewInt(0).SetUint64(i)) err = s.ProcessETH1Block(ctx, new(big.Int).SetUint64(i))
if err != nil { if err != nil {
return err return err
} }

View File

@ -415,14 +415,11 @@ func (s *Service) batchRequestHeaders(startBlock, endBlock uint64) ([]*types.Hea
requestRange := (endBlock - startBlock) + 1 requestRange := (endBlock - startBlock) + 1
elems := make([]gethRPC.BatchElem, 0, requestRange) elems := make([]gethRPC.BatchElem, 0, requestRange)
headers := make([]*types.HeaderInfo, 0, requestRange) headers := make([]*types.HeaderInfo, 0, requestRange)
if requestRange == 0 {
return headers, nil
}
for i := startBlock; i <= endBlock; i++ { for i := startBlock; i <= endBlock; i++ {
header := &types.HeaderInfo{} header := &types.HeaderInfo{}
elems = append(elems, gethRPC.BatchElem{ elems = append(elems, gethRPC.BatchElem{
Method: "eth_getBlockByNumber", 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, Result: header,
Error: error(nil), Error: error(nil),
}) })
@ -675,9 +672,7 @@ func (s *Service) cacheBlockHeaders(start, end uint64) error {
// the allotted limit. // the allotted limit.
endReq -= 1 endReq -= 1
} }
if endReq > end { endReq = min(endReq, end)
endReq = end
}
// We call batchRequestHeaders for its header caching side-effect, so we don't need the return value. // We call batchRequestHeaders for its header caching side-effect, so we don't need the return value.
_, err := s.batchRequestHeaders(startReq, endReq) _, err := s.batchRequestHeaders(startReq, endReq)
if err != nil { if err != nil {