Смарт-контракт solidity с защитой от потери средств

6 500 руб. за проект
05 июня 2022, 20:00 • 1 отклик • 12 просмотров
Требуется написать смарт-контракт для выплат с защитой от потери средств

Условия:
3 месяца -- 2,5%
6 месяцев -- 5%
1 год -- 15%
2 года -- 20%

На смарт-контракт изначально переводится ограниченное количество токенов BEP20.
Далее человек выполняет функцию stake (uint256 amount, uint256 day) -- указывает кол-во токенов и период (90/180
360/720) в днях. По прошествии времени можно выполнить claim -- сбор своих средств плюс процент.
В смарт-контракте есть проблема -- нет защиты от следующих ситуаций:

1) Ситуация 1
Токены на смарт-контракте заканчиваются и в определенный момент последние пользователи смарт-контракта перестают иметь возможность вернуть средства. Пример: на контракте 100 токенов, а выплата для пользователя превышает сумму в любом случае, что с процентом, что без

2) Ситуация 2
Токенов на смарт-контракте хватает, но происходит следующая ситуация. Юзер А заходит с небольшой суммой на длительный срок, а Юзер Б с огромной суммой на короткий срок. В итоге Юзер Б получает свою выплату, а Юзер А остается ни с чем

Имеется в виду добавить защиту от данных ситуаций. Конкретного решения предложить не могу, кроме как для решения одной из ситуаций — просто запрещать пользоваться функцией stake в случае, если на балансе смарт-контракта при выплате будет меньше, чем нужно хотя бы для того, чтобы вернуть всё обратно без процентов (про проценты молчу). Но даже в этом случае надо ещё параллельно проверять наличие других юзеров и их суммы на выплаты
Отзывы
R50 da99531f3aac40874db4b562ff487410
Фрилансер
 
2 года назад