У меня много вопросов по рабочему процессу (последовательности) взаимодействия со смарт-контрактом из Java-приложения, поэтому я сначала объясню, что я сделал, а затем задам свои вопросы, и если что-то не так в моем понимании, пожалуйста, дайте мне знать.
1- Я написал смарт-контракт 2- Используйте трюфель, чтобы получить java-оболочку смарт-контракта (contract.java) 3- Используйте testrpc для тестирования контракта
У меня есть 2 класса, использующие учетные записи testrpc (учетные данные) для взаимодействия со смарт-контрактом и вызова его функций.
Каждый класс (node1.java, node2.java) вызывает функцию в смарт-контракте, называемую (send), для отправки своих данных в цепочку.
Я добавил событие, которое срабатывает, если 2 узла отправили туда данные.
Чего я не понимаю, так это того, как я могу позволить java-коду (скажем, MainProgram.class) всегда проверять это событие. Поскольку мне нужно проверить, отправляют ли оба узла свои данные, я вызову другую функцию для анализа этих данных.
Как я могу управлять, контролировать и проверять, какие транзакции были выполнены или нет, я имею в виду, как я могу использовать события в коде Java и позволить коду работать вечно и проверять, произойдет ли это событие, выполните действие.
Надеюсь, я могу ясно объяснить, что мне нужно
Заранее спасибо.
В вашей Java-оболочке для каждого типа события в вашем SmartContract будет функция, которая выглядит так:
public Observable<ApprovalEventResponse> approvalEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
...
return typedResponse;
}
});
}
Вы можете подписаться на этот наблюдаемый из своего кода Java следующим образом:
contract.approvalEventObservable(DefaultBlockParameter.valueOf("Earliest"),DefaultBlockParameter.valueOf("Latest")).asObservable().subscribe( event ->{
System.out.prtinln(event._approver);
});
Это будет воспроизводить все произошедшие события и печатать атрибуты предыдущих событий, а также печатать новые события, когда они происходят.
Шимар
Раджеш