Обмен Токенов BEP-20 Solidity Smart Contract

Лабар17 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
18.01.2022

Добрый день!В прикреплении контракт токена Титан BEP-20 (для примера)Необходимо написать смарт-контракт обмена токенов.Принцип работы контракта:1. В данных транзакции указывается адрес токена, который пользователь отдает, количество токенов, которые пользователь отдает, адрес для выплаты обмена, (опционально) адрес реферера2. Контракт, согласно указанного курса минтит токены Титан и отдает их на адрес для выплаты обмена.2.а. Если включена реферальна система:       Контракт проверяет адрес реферера, если адрес реферера хотя бы раз совершал обмен в этом контракте то:       1. Добавляет к количеству токенов Титан для выплаты указанное количество процентов (см. ниже)       2. Рассчитывает количество токенов Титан для выплаты рефереру (см. ниже)       3. Минтит и отдает токены Титан (с учетом добавленного процента)   на адрес для выплат       4. Минтит и отдает рассчитанное количество токенов Титан на адрес реферераесли нет, то действуем как в п.2Функции:1. Владелец может добавить/удалить токен BEP-20 для обмена на токен Титан, указав адрес контракта принимаемого токена и курс к токену Титан (принимаемых токенов может быть несколько)Например, [0x68..22, 1, 10]  - в контракт добавлен токен (0x68..22), за один 0x68..22  контракт выдаст 10 Титан токенов. В примере пренебрегаю decimals для наглядности, что бы не плодить нули.2. Владелец может поставить на паузу контракт обмена и запустить его.3. Владелец может указать дату после которой контракт автоматически станет на паузу и не будет производить обмены4. Владелец может сменить адрес кошелька для выплат5. Владелец может включить/отключить реферальную систему, изменить настройки реферальной системы, может передать два параметра: процент, который добавляется к токенам, которые должны быть получены по курсу обмена, процент выплаты рефереру. Например, [true,1000,500] - это означает , что реферальна система включена, при обмене будет добавлено 10% к токенам Титан и 5%  будет начислено рефереру.Например,Добавлен токен для обмена, назовем его ВасяТокен (0x85..00), курс такой за один ВасяТокен дается 100 Титан токенов.Отправляется транзакция в которой указано [0x85..00, 10, 0x99..87, 0xsd..44]Это означает:Если включена реферальная функция и указан адрес реферера 0xsd..44 и этот адрес уже хотя бы раз менял в этом контракте, то:1. Снимаем с пользователя 10 Вася токенов (0x85..00), расчитываем сколько нужно отдать Титан токенов:    выплата по обмену = 10 * курс(100) =  1000 Титан токенов + 10% (за то что указал реферера) = 1100 Титан Токенов    выплата рефереру = 5% от 1000 = 50 Титан токенов    Минтим из контракта  Титан токена 1100 Титан токенов на указанный адрес (0x99..87) - обмен    Минтим из контракта  Титан токена 50 Титан токенов на указанный адрес (0xsd..44) - выплата рефереру    Полученные Вася токены отправляет на адрес для выплатесли адрес рефыерера ни разу не менял еще в этом контракте или реферальная программа выключена, то:2. Снимаем с пользователя 10 Вася токенов (0x85..00), расчитываем сколько нужно отдать Титан токенов:    выплата по обмену = 10 * курс(100) =  1000 Титан токенов    Минтим из контракта  Титан токена 1000 Титан токенов на указанный адрес (0x99..87) - обмен    Полученные Вася токены отправляет на адрес для выплатв read должны быть функции: получение курс по определенному токену проверка адреса на то менял ли он в этом контракте или нет статус контракта (пауза/работа) дата остановки контрактаВо всех указанных примерах пренебрегаем decimals для наглядности, что бы не плодить тут нули. В контракте, конечно же учитываем.Не принципиально, что бы контракт минтил необходимые токены. Можно пойти по пути отправки в контракт определенного количества Титан токенов для обмена.Помимо описанного функционала, контракт должен содержать стандартные функции  для подобных контрактов (Approve, получение курсов и тп)Ждем ваших предложений по цене и срокам.