Сервис цен

Небольшой отдельный HTTP-сервис, который изолирует единственную внешнюю зависимость dapp.

Почему он отдельный

Долларовая цена токенизированной акции не может браться из блокчейна — она приходит из API. Если поместить её в роут приложения, эта зависимость окажется вшита в продукт.

Благодаря выносу сервиса dapp продолжает читать всё состояние протокола напрямую из блокчейна и остаётся полезной, когда сервис цен недоступен. В этом случае она показывает «price unavailable», но никогда не ноль.

Правило свежести

Это правило дизайна проекта, а не деталь реализации:

Финансовое значение никогда не показывается без знания того, свежее ли оно, а недоступная цена показывается как недоступная — никогда как ноль, никогда как негласная оценка.

Поэтому каждая возвращаемая цена несёт своё происхождение, метку времени, когда она была зафиксирована у источника, и флаг устаревания. Полный ответ также содержит флаг «degraded», если хотя бы для одного символа не удалось получить цену.

Локально

Сервис работает в режиме фикстур: замороженные цены, никаких сетевых вызовов, что делает локальный сценарий воспроизводимым.