Как распознать устаревшее сообщение о весе валидатора Avalanche L1

Ретранслятор может доставить корректно подписанные изменения веса в другом порядке, чем они создавались. P-Chain хранит минимальный nonce для регистрации, чтобы старое сообщение не перезаписало новый вес.

Сопоставьте сообщение с минимумом регистрации

Используйте validation ID подписанного L1ValidatorWeightMessage и действующую запись P-Chain. Для ненулевого веса допустим nonce не ниже текущего минимума. Значения не обязаны идти строго подряд. Вес сообщения задаёт итоговую величину.

minimum_nonce = 8
accepted_nonce = 12
new_weight = 40
assert accepted_nonce >= minimum_nonce and new_weight > 0
next_minimum = accepted_nonce + 1
assert 11 < next_minimum

Обработайте доставку не по порядку

При минимуме 8 сообщение с nonce 12 и весом 40 поднимает минимум до 13. Более ранний nonce 11 уже не может установить вес 30 даже с действующими подписями. Отметьте попытку как заменённую и сверьте подтверждение менеджера с нужным изменением. Нулевой вес задаёт удаление и требует отдельной обработки.

Источники