В смысле - нет исходников? И google protobuf, и WavesJ (скорее всего, именно ее вы используете) поставляется в исходниках. Запасайтесь временем, терпением, и собирайте
Читать полностью…блин, а чего делать то. Есть в группе кто работал с BlockchainUpdates на джаве? это сгенерированные protobuf классы, потому вносить изменения не представляется возможным, нет даже исходников. Я заплачу, помогите пожалуйста 🙏
Читать полностью…@deemru Zaphod @alexeykiselev ребят, пожалуйста подскажите как разрешить проблему, может есть другие публичные ноды?
Читать полностью…мне до сих пор так и не удалось разрешить эту проблему, куда вставлять код из сообщения об ошибке не совсем понятно. Я подключаюсь к публичной ноде по адресу nodes.wavesnodes.com
. Нет ли других публичных нод, это проблемка прям остро встала, сроки до завтра, подскажите пожалуйста как разрешить ее 🙏
нужно в результате функции вернуть массив из n IntegerEntry, а каждое следующее value должно увеличиваться на 1
Читать полностью…Можно пример, пожалуйста
FOLD<1000>([], 0, f)
функция f будет выполняться 1000 раз или 0?
можно задать максимальное значение (1000 помоему) и урезать до нужного количества внутри фолда
Читать полностью…Привет. Можно ли сгенерировать список динамической длины(неизвестной во время компиляции) и заполнить его числами по возрастанию, начиная с 0?
Читать полностью…Мне другие ноды с доступным blockchain updates неизвестны.
Код ваш я не понимаю, плюс в примерах код не такой. Если вы его сами написали, должны разбираться.
да я понимаю это, только вот куда его вставлять, где править код. Вот мой код:
public void grpcStreaming() {Читать полностью…
try {
ManagedChannel channel = ManagedChannelBuilder.forAddress("nodes.wavesnodes.com", 6881)
.usePlaintext()
.build();
BlockchainUpdatesApiGrpc.BlockchainUpdatesApiStub stub = BlockchainUpdatesApiGrpc.newStub(channel);
Transaction lastTransaction = transactionRepository.findFirstByOrderByDateDesc().orElse(null);
BlockchainUpdates.SubscribeRequest request = BlockchainUpdates.SubscribeRequest.newBuilder()
.setFromHeight(lastTransaction != null && lastTransaction.getHeight() != 0 ? lastTransaction.getHeight() : 4200000)
.build();
stub.subscribe(request, new StreamObserver<>() {
@Override
public void onNext(BlockchainUpdates.SubscribeEvent update) {
try {
transactionService.burn(update.getUpdate().getAppend(), update.getUpdate().getHeight());
} catch (NodeException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public void onError(Throwable t) {
t.fillInStackTrace();
System.out.println("Retrying connection...");
grpcStreaming();
}
@Override
public void onCompleted() {
System.out.println("Connection closed");
}
});
Runtime.getRuntime().addShutdownHook(new Thread(channel::shutdown));
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
Ребят, привет! Подскажите пожалуйста в чем проблема. Ранее юзал wavesj и через grpc соединение просулшивал обновления блоков и всё работало. Теперь же получаю такие логи:
Jun 04 17:33:08 ds1846 java[1662040]: Caused by: io.grpc.StatusRuntimeException: INTERNAL: Invalid protobuf byte sequence
Jun 04 17:33:08 ds1846 java[1662040]: at io.grpc.Status.asRuntimeException(Status.java:525)
Jun 04 17:33:08 ds1846 java[1662040]: at io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller.parse(ProtoLiteUtils.java:240)
Jun 04 17:33:08 ds1846 java[1662040]: at io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller.parse(ProtoLiteUtils.java:134)
Jun 04 17:33:08 ds1846 java[1662040]: at io.grpc.MethodDescriptor.parseResponse(MethodDescriptor.java:284)
Jun 04 17:33:08 ds1846 java[1662040]: at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1MessagesAvailable.runInternal(ClientCallImpl.java:667)
Jun 04 17:33:08 ds1846 java[1662040]: at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1MessagesAvailable.runInContext(ClientCallImpl.java:654)
Jun 04 17:33:08 ds1846 java[1662040]: ... 5 more
Jun 04 17:33:08 ds1846 java[1662040]: Caused by: com.google.protobuf.InvalidProtocolBufferException: Protocol message had too many levels of nesting. May be malicious. Use CodedInputStream.setRecursionLimit() to increase the depth limit.
Jun 04 17:33:08 ds1846 java[1662040]: at com.google.protobuf.InvalidProtocolBufferException.recursionLimitExceeded(InvalidProtocolBufferException.java:133)
Jun 04 17:33:08 ds1846 java[1662040]: at com.google.protobuf.CodedInputStream.checkRecursionLimit(CodedInputStream.java:177)
Jun 04 17:33:08 ds1846 java[1662040]: at com.google.protobuf.CodedInputStream$ArrayDecoder.readMessage(CodedInputStream.java:841)
Jun 04 17:33:08 ds1846 java[1662040]: at com.wavesplatform.protobuf.transaction.InvokeScriptResultOuterClass$InvokeScriptResult$Call$Argument$Builder.mergeFrom(InvokeScriptResultOuterClass.java:7519)
Jun 04 17:33:08 ds1846 java[1662040]: at com.wavesplatform.protobuf.transaction.InvokeScriptResultOuterClass$InvokeScriptResult$Call$Argument$1.parsePartialFrom(InvokeScriptResultOuterClass.java:7994)
Jun 04 17:33:08 ds1846 java[1662040]: at com.wavesplatform.protobuf.transaction.InvokeScriptResultOuterClass$InvokeScriptResult$Call$Argument$1.parsePartialFrom(InvokeScriptResultOuterClass.java:7986)
Jun 04 17:33:08 ds1846 java[1662040]: at com.google.protobuf.CodedInputStream$ArrayDecoder.readMessage(CodedInputStream.java:860)
Пробовал через FOLD, но он требует для итерации уже готовый список, насколько я понял
Читать полностью…