Основное стремление было сделать всё максимально быстрым. Поэтому я заюзал вебсокеты для бирж и кеширование цен. Вебсокеты как биржевые, так и с етерс либы переподсоединяются естественно при разрыве. А, ну и провайдер заюзал для юнисвапа вебсокетный вместо обычного сначала с мыслью о минимальной задержке, ну а потом уже оставил чтоб он хоть подключен уже сразу был что возможно как-то убыстрит запрос потенциально.
Ну и в итоге по быстродействию получается слабое звено - юнисвап. Без него задержка не больше 8-10мс на ответ. С ним - до полу-секунды ( но обычно до 100мс ). Иии как-то это решить особо вариантов нет, даже если с него кешировать цены, то это всё равно не будет быстрее особо ( если вообще ), чем запрос в реальном времени...
Так же сделал валидацию запросов, но в принципе можно и убрать учитывая что я так понимаю всем интересно максимальное быстродействие ( хоть это и не было упомянуто в ТЗ ). Но для какой-то там эстетики оставлю. В принципе почти ничего не занимает по времени. Можно еще было бы помочь пользователю с синтаксисом токеном, чтобы сервис их сам конвертил ну upperCase, но решил что нЕчего усложнять всё из-за упора на быстродействие ( хоть это бы и не заняло бы ощутимого времени, но всё же )
из важного не добавил замену rpc если текущая падает, ну, наверное для тестового это необязательно прям уж...
можно еще было сделать переменные кешей цен более красиво в 1 переменной как-то например, но тоже как-то в итоге оставил как есть