Механизм: шлюз берёт цену закрытия из локальной истории на момент expire_time
ставки (priceHistory, node:sqlite, ретеншен 24ч), а не текущую. Момент клика
перестаёт влиять на исход — окно выбора времени закрыто.
Живая проверка (ставка №10, релиз updown-relayer:3):
цена на момент экспирации 9977000000
текущая цена в момент клика 9976000000
exitPrice в транзакции 9977000000 -> взята история, не 'сейчас'
статус payout_done
Также: tools/ — скрипты проверки (price-history-probe, exploit-decisive,
exploit-check, check-close-window.sh).
Остаток: в контракте верхней границы окна по-прежнему нет (второй слой, не критично);
серверное авто-закрытие — следующая итерация.