Это оплачиваемое тестовое задание / конкурс на разработку Solidity кода для обмена токенов через Uniswap v2 и его клонов (напр SushiSwap). Победитель получит оплату (25 тыс руб) плюс будет предложено дальнейшее сотрудничество на контрактной основе. Предыдущий опыт с Solidity необязателен, важно хорошее алгоритмическое мышление и желание изучать solidity и ethereum экосистему.
Задача:
Написать Solidity-контракт с методом который получает на вход массив ethereum-адресов вида [token1, router1, token2, router2, token3, router3, token4, и т.д.] и производит обмен токенов по порядку с использованием указанных роутеров. В данном примере сначала будет произведен обмен token1 на token2 с помощью router1, потом token2 на token3 с помощью router2 и т.д. Производится обмен всего баланса token1 в адресе, который вызывает контракт (msg.sender). В конечном итоге в адресе, вызывающем контракт, должен быть баланс token4.
Проект должен быть настроен с использованием Hardhat (https://hardhat.org/getting-started/)
Дополнительные преимущества:
1. Скорость. Предпочтение будет отдано исполнителям справившимся с задачей быстрее остальных.
2. Unit-тесты. Наличие тестов приветствуется и дает преимущество в конкурсе, но не является обязательным.
3. Flash-swap. Для усложнения задачи можно использовать flash-swap, таким образом у адреса, вызывающего контракт, не обязательно наличие токенов для обмена.
Полезные ресурсы:
https://docs.uniswap.org/protocol/V2/introduction
https://docs.uniswap.org/protocol/V2/reference/smart-contracts/router-02
https://docs.sushi.com/
https://docs.soliditylang.org/en/v0.8.9/
https://ethereum.org/en/developers/docs/standards/tokens/erc-20/
https://hardhat.org/getting-started/