code: func (bs *BlockStore) Blocks(start, end int64, iter func(*Block) (stop bool)) (stopped bool, err error) {
  	if end > 0 && start >= end {
  		return false, fmt.Errorf("end height must be strictly greater than start height")
  	}
  	if start <= 0 {
  		// From first block
  		start = 1
  	}
  	if end < 0 {
  		// -1 means include the very last block so + 1 for offset
  		end = bs.Height() + end + 1
  	}
  
  	for height := start; height <= end; height++ {
  		block, err := bs.Block(height)
  		if err != nil {
  			return false, err
  		}
  		if iter(block) {
  			return true, nil
  		}
  	}
  
  	return false, nil
  }
docs: // Iterate over blocks between start (inclusive) and end (exclusive)