Привет, разработчик! Мы рады, что ты перешел на этап тестового задания, сейчас у тебя есть возможность продемонстрировать свои технические навыки и смекалку. Желаем удачи и удовольствия от его выполнения:)
Нужно реализовать клиент-серверное приложение, которое использует основные технологии, применяющиеся в наших проектах.
На заметку: * сначала стоит реализовать серверное приложение, затем — клиент * важнее функциональность кода, но не стоит забывать о читаемости * если не удалось завершить все, отправь, что готово * если появятся вопросы по тз до и во время выполнения, всегда можно задать их нашей команде
-
Реализовать GetAccount() метод:
- Request: { ethereum_address, crypto_signature }
- Response: { gastoken_balance, wallet-nonce }
- Нужно провалидировать подпись (crypto_signature) адреса клиента (ethereum_address) и вернуть ответ только в случае ее валидности, в противном случае, вернуть ошибку
-
Реализовать GetAccounts() bidirectional stream метод:
- Request stream: { [ ] ethereum_addresses, erc20_token_address }
- Response stream: { [ ] { ethereum_address, erc20_balance } }
- Для каждого адреса из списка адресов (ethereum_address) метод должен возвращать его баланс токенов (erc20_token_address).
-
Вызов GetAccount():
- Можно генерировать кошелек в приложении клиента или импортировать уже существующий, и подписывать сообщение при помощи него
- Для того, чтобы проверить, что метод сервера возвращает корректные данные, на балансе кошелька должны лежать токены. Вы можете использовать тестовые токены Ethereum
-
Запустить клиентский метод для GetAccounts() для 100 адресов и 3-5 токенов (подпись сообщения не требуется)
- Дополнительно измерить затраченное на обработку время
Ресурсы: