Как правильно получить команду внутри класса контракта - PullRequest
0 голосов
/ 23 апреля 2020
  1. Пожалуйста, объясните разницу между двумя приведенными ниже фрагментами кодирования, оба получают значение команды, но по-разному. Какой стандартный способ получения команды в классе контракта?

    final CommandData command = tx.getCommand(0).getValue();
    
    final CommandWithParties<Commands> command = requireSingleCommand(tx.getCommands(), Commands.class);
    final Commands commandData = command.getValue();
    
  2. В чем преимущество использования TypeOnlyCommandData ?

1 Ответ

0 голосов
/ 24 апреля 2020
  1. Типичный подход к определению команд можно увидеть в примере IOU :
public interface Commands extends CommandData {
    class Create implements Commands {}
}
Обратите внимание, что в примере IOU используется requireSingleCommand () , поскольку он ожидает, что транзакция будет иметь только одну команду; в противном случае он выдаст ошибку.
Так что, если вы создаете транзакцию с несколькими типами состояний, вы не можете использовать вышеуказанную функцию; поскольку транзакция будет иметь несколько команд (по одной на каждый тип состояния), вместо этого вы можете извлечь команды, связанные с вашим типом состояния (см. пример здесь ); затем сделайте проверку против них.
...