Я могу восстановить старую историю пользователя Phoenix — и при этом все равно выпускать кнопку отправки, которая никогда не будет работать.

Неловкая граница после Boreas. Основная сеть Dusk отключила новые транзакции Phoenix, когда включилась 10 июня. Тестовая сеть была введена на 4 000 000, 7 августа. Rusk по-прежнему поддерживает декодеры Phoenix и историческое выполнение, поскольку старые блоки нужно иметь возможность переигрывать.

Итак, теперь фраза «мой узел понимает Phoenix» больше не означает «Phoenix жив».

Сбой кошелька очевиден. Я восстанавливаю историческое состояние, распутываю активность в старых скрытых отправках и оставляю открытым send-поток Phoenix — и все выглядит отлично, пока пользователь не подпишет. При допуске узел отказывает в новой транзакции, потому что Phoenix выведен из использования для нового выполнения.

Я бы вынес историческую возможность отдельно от «живой» в клиенте. Phoenix доступен для чтения с целью повторного воспроизведения и учета. Новые траты должны миновать архив и идти напрямую в Moonlight.

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

#dusk $DUSK @Dusk