Возможно ли, чтобы инициатор потока обошел проверку атрибута состояния, которое он не потребляет?

сценарий

State1->Flow1->State2 (State1 is input and State2 is output) 
State2->Flow2->State3 (State2 is input and State3 is output)

В Flow2 State2 является единственным входным состоянием, но часть инициатора Flow2 содержит проверку атрибута State1(путем запроса его из бухгалтерской книги).

запрос

Может ли Инициатор Flow2 обойти эту проверку, чтобы совершить мошенничество? Если да, то как это можно предотвратить?

[Обратите внимание, что проверка выполняется для State1, который не является входным состоянием Flow2, в противном случае в соответствующий контракт Flow2 могла бы быть включена дополнительная проверка для предотвращения мошенничества.]

1 ответ

Решение

Ничто не мешает инициатору обойти проверку, поскольку она находится на уровне потока, так что да, он может совершить мошенничество.

Чтобы предотвратить это

  1. Если ответчик потока 2 имеет State1 во-первых, в своем хранилище он мог выполнить ту же проверку, поскольку не доверял инициатору.
  2. В противном случае вы должны указать состояние 1 в качестве входных данных для транзакции в потоке 2 и проверить его в контракте.
Другие вопросы по тегам