@Override
 public void scanTransactionsForAddresses(Set<Address> addresses, TransactionListener listener)
     throws BCSAPIException {
   List<Script> al = new ArrayList<>(addresses.size());
   for (Address a : addresses) {
     try {
       al.add(a.getAddressScript());
     } catch (HyperLedgerException e) {
     }
   }
   scanRequest(al, listener, "matchRequest");
 }
  @Override
  public APIHeader mine(Address address) throws BCSAPIException {
    try (ConnectorSession session = connection.createSession()) {
      log.trace("mine to " + address);

      ConnectorProducer producer = session.createProducer(session.createTopic("mine"));

      ConnectorMessage m = session.createMessage();
      BCSAPIMessage.Script.Builder builder =
          BCSAPIMessage.Script.newBuilder()
              .setScript(ByteString.copyFrom(address.getAddressScript().toByteArray()));
      m.setPayload(builder.build().toByteArray());
      byte[] reply = synchronousRequest(session, producer, m);
      if (reply != null) {
        return APIHeader.fromProtobuf(BCSAPIMessage.BLK.parseFrom(reply));
      }
    } catch (ConnectorException | InvalidProtocolBufferException | HyperLedgerException e) {
      throw new BCSAPIException(e);
    }
    return null;
  }