Этот контракт рекомендуется использовать когда есть много покупателей на одну нфт. Продавец выставляет нфт на аукцион, а покупатели предлагают свою цену, побеждает покупатель с самой высокой ценой. Каждая последующая должна быть больше предыдущей на указанный процент (min_step) но не меньше чем на 0.1 тон. Продавец может ограничить минимальную цену, также продавец может указать максимальную цену, за которую можно сразу выкупить нфт с аукциона. Аукцион ограничен по времени рекомендуемая длительность - 3 дня, максимум 19 дней. Продавец может отменить аукцион если в нем не было ставок, если есть хотя бы одна ставка то аукцион будет идти до конца, либо до достижения максимальной ставки. Аукцион имеет защиту от ставки в последний момент, если ставка делается за 5 минут (этот параметр настраивается, но не более 1 дня) до окончания аукциона, то время аукциона продлевается еще на 5 минут. Все сообщения на этот контракт должны быть отправлены с баунс флагом, контракт выбрасывает ошибки.
- int activated? -1 аукцион получил нфт и готов к работе
- int end? -1 - аукцион завершен 0 - не завершен
- int end_time timestamp времени окончания аукциона или время фактического завершения аукциона если нфт была продана
- slice(MsgAddress) mp_addr адрес контракта маркетплейса, этот адрес может отменить аукцион без ставок или завершить его после end_time
- slice(MsgAddress) nft_addr адрес нфт
- slice(MsgAddress) nft_owner адрес владельца нфт, этот получит тоны с продажи нфт, может отменить аукцион без ставок или завершить его после end_time
- int(coins) last_bid сумма последней ставки или 0 если ставки не было
- slice(MsgAddress) last_member адрес кошелька с которого была сделана последня ставка
- int min_step процент шага ставки 1 - 100
- int mp_fee_addr адрес кошелька для комиссии маркетплейса
- int mp_fee_factor процент комиссии маркетплейса выражен двумя цифрами, пример: mp_fee_factor = 10 mp_fee_base = 100, означает что комиссия маркетплейса 10% 10/100=0.1=10%
- int mp_fee_base
- slice(MsgAddress) royalty_fee_addr адрес кошелька для роялти коллекции
- int royalty_fee_factor процент роялти коллекции, смотри mp_fee_factor
- int royalty_fee_base
- int(coins) max_bid сумма максимальной ставки или 0, если ее нет
- int(coins) min_bid сумма минимальной ставки
- int created_at? timestamp времени создания аукциона, используется для генерации разных адресов контрактов
- int last_bid_at timestamp времени последней ставки или 0 если ставок не было
- int is_canceled -1 -- означает что аукцион был отменен
- int step_time кол-во секунд на сколько продлевается аукцион если ставка сделана в последний момент
- int last_query_id последний обработанный query_id, если он был в запросе
- хеш кода контракта должен совпадать с эталонным, нельзя полагаться только на гет методы
- get_auction_data должен вызываться нормально, без ошибок, activated? == -1 end? = 0
- процент комиссии маркетплейса и процент роялти коллекции в сумме должны быть меньше 100
- необходимо проверить что нфт, на которую ссылается контракт продажи (nft_address), действительно принадлежит ему, то-есть у нфт owner_address это адрес контракта продажи
- значение min_step в диапазоне от 1 до 100
- значение end_time не больше текущей даты +14 дней