docs: public BlockInfo queryBlockByHash(Collection<Peer> peers, byte[] blockHash, User userContext) throws InvalidArgumentException, ProposalException {
  
          checkChannelState();
          checkPeers(peers);
          userContextCheck(userContext);
  
          if (blockHash == null) {
              throw new InvalidArgumentException("blockHash parameter is null.");
          }
  
          try {
  
              logger.trace("queryBlockByHash with hash : " + Hex.encodeHexString(blockHash) + " on channel " + name);
              QuerySCCRequest querySCCRequest = new QuerySCCRequest(userContext);
              querySCCRequest.setFcn(QuerySCCRequest.GETBLOCKBYHASH);
              querySCCRequest.setArgs(name);
              querySCCRequest.setArgBytes(new byte[][] {blockHash});
  
              ProposalResponse proposalResponse = sendProposalSerially(querySCCRequest, peers);
  
              return new BlockInfo(Block.parseFrom(proposalResponse.getProposalResponse().getResponse().getPayload()));
          } catch (InvalidProtocolBufferException e) {
              ProposalException proposalException = new ProposalException(e);
              logger.error(proposalException);
              throw proposalException;
          }
      }