Как учитывать одинаковые сообщения Starknet при доставке в Ethereum

Два сообщения из Starknet в Ethereum с одинаковыми отправителем, получателем и данными могут иметь один хеш. L1 core-контракт хранит количество ещё доступных к потреблению сообщений.

Считайте отдельные появления до сопоставления

Вычислите хеш по правилам протокола из отправителя Starknet, дополненного L1-адреса, длины и элементов payload. В индексе событий L2 сохраняйте позиции отдельных появлений вместе с хешем.

message hash H published twice → available count 2
one successful consumption     → available count 1

Если два сообщения дают H и уполномоченный получатель L1 потребил одно, остаётся ещё одно. Одна уникальная запись H с булевым признаком consumed не может представить это состояние.

Проверьте фактического потребителя

При потреблении L1 протокол привязывает адрес назначения к вызывающей стороне. Такое же содержимое в посторонней транзакции сообщение не потребляет. Различайте также событие на L2 и доступность после публикации нужного обновления состояния в Ethereum. docs.starknet.io Starknet documentation