Как ethereum обрабатывает дубликаты транзакций в разных состояниях мира, что означает, что один tx действителен, а другой нет?

Шаг 1: Я создаю транзакцию интеллектуального контрактного вызова TX и отправляю ее в ethereum.
Шаг 2: TX проверяется и транслируется на другие узлы.
шаг 3: Evm выполнить TX не удалось (возможно, из-за того, что функция солидности вернула ошибку и т. д.).
Шаг 4: Кто-то еще изменил состояние контракта, мой предыдущий TX действует сейчас.


У меня вопрос: если я сейчас отправлю TX, будет ли он выполнен или отброшен как дублирующая транзакция?

Если ethereum не выполняет повторную проверку, одна транзакция может циклически повторяться в сети p2p?

1 ответ

Каждая транзакция имеет одноразовый номер. Вы должны увеличивать одноразовый номер каждый раз, когда отправляете транзакцию.

Итак, в вашем сценарии, скажем, первая транзакция имела одноразовый номер 5. Эта транзакция не удалась. Следующая отправляемая транзакция должна иметь одноразовый номер 6. Таким образом, вы не можете просто ретранслировать ту же транзакцию - она ​​будет отклонена как имеющая недопустимый одноразовый номер - но вы можете сделать новую транзакцию, которая идентична, за исключением увеличенного одноразового номера. Тот будет иметь право быть добытым в блоке.

Другие вопросы по тегам