Skip to content

Latest commit

 

History

History
35 lines (29 loc) · 4.47 KB

File metadata and controls

35 lines (29 loc) · 4.47 KB

Контракт продажи за фиксированную цену в тонах или жетонах

Этот контракт для продажи нфт за фиксированную цену в тонах или жетонах. Продавец деплоит контракт продажи и передает нфт на этот контракт. Покупатель отправляет на контракт продажи тоны/жетоны + ~0.1/0.26 TON для оплаты газа. Контракт передает нфт покупателю, а тоны/жетоны продавцу, после этого покупка считается совершенной. Продавец может отменить продажу в любой момент до покупки.

Перед покупкой необходимо убедиться что нфт достаточно 0.1 тон для смены владельца, если этого недостаточно то надо прислать больше тонов. Если нет возможности рассчитать сумму заранее, то для совершения покупки рекомендуется прислать 1 тон для оплаты газа, неиспользованные тоны вернуться отправителю.

Все сообщения на этот контракт должны быть отправить с bounce флагом, контракт выбрасывает ошибки.

get_fix_price_data_v4

  1. int is_complete - -1 означает что продажа уже совершена или отменена
  2. int created_at timestamp время создания контракта, используется чтобы одинаковые контракты имели разные адреса
  3. slice(MsgAddress) marketplace_address адрес контракта маркетплейса, этот адрес может отменить продажу и может управлять контрактом после продажи
  4. slice(MsgAddress) nft_address адрес нфт
  5. slice(MsgAddress|null) nft_owner_address адрес владельца нфт, этот адрес может отменить продажу и получит тоны в случае покупки
  6. int full_price цена нфт в тонах, если значение ноль то нфт нельзя купить за тоны
  7. slice(MsgAddress) fee_address адрес для комиссии маркетплейса
  8. int fee_percent процент комиссии маркетплейса умноженный 100000, например значение 5000 означает что комиссия маркетплейса - 5% 5000/100000=0.05
  9. slice(MsgAddress) royalty_address адрес для роялти коллекции
  10. int royalty_percent процент роялти коллекции
  11. int sold_at timestamp дата продажи нфт если продажа состоялась
  12. int sold_query_id id запроса который привел к продаже нфт
  13. jetton_price_dict словарь с ценами в жетонах, ключ словаря это хеш адреса jetton wallet, значение это (Coins, MsgAddress) - MsgAddress это адрес jetton master

Рекомендуемые проверки перед использованием контракта

  • хеш кода контракта должен совпадать с эталонным, нельзя полагаться только на гет методы
  • get_fix_price_data_v4 должен вызываться нормально, без ошибок
  • поля nft_owner_address, nft_address, fee_address, royalty_address должны быть заполнены и содержать валидные адреса MsgAddress workchain 0
  • is_complete равен 0, если это не так, то нет смысла отправлять тоны на этот контракт
  • необходимо проверить что нфт, на которую ссылается контракт продажи (nft_address), действительно принадлежит ему, то-есть у нфт owner_address это адрес контракта продажи
  • fee_percent и royalty_percent в сумме должны быть меньше 100000, что означает что сумма комиссий меньше чеи 100%