Маркетплейс Getgems
Getgems — крупнейший NFT-маркетплейс в экосистеме TON, и понимание его протокола продажи необходимо для интеграции ваших NFT-коллекций. Протокол Getgems определяет, как происходят листинг, покупка и роялти на уровне смарт-контрактов. Знание этого протокола позволяет создавать NFT-коллекции, совместимые с маркетплейсом, и понимать, как защищены сделки между покупателем и продавцом.
В предыдущих уроках мы разобрали NFT-коллекции (TEP-62) и SBT (TEP-85). Теперь посмотрим, как NFT торгуются на практике. Getgems — крупнейший NFT-маркетплейс в экосистеме TON, и его архитектура наглядно демонстрирует принцип “маркетплейс как протокол контрактов”.
Архитектура: маркетплейс как протокол
На Ethereum маркетплейсы (OpenSea, Blur) обычно работают через один центральный контракт с order book. На TON подход принципиально другой:
Каждое объявление о продаже — это отдельный Sale-контракт. Нет центрального order book. Маркетплейс — это набор стандартных контрактов для различных типов продаж.
Маркетплейс как контрактный протокол
На Ethereum OpenSea — это платформа с центральным контрактом. На TON Getgems — это протокол: набор стандартных Sale/Auction контрактов, которые может использовать любой. Нет центральной точки контроля. Если Getgems-сайт перестанет работать, контракты продолжат функционировать.
Листинг: продажа по фиксированной цене
Поток создания листинга
-
Владелец деплоит Sale-контракт с параметрами:
nft_address— адрес NFT Item для продажиfull_price— цена в TONmarketplace_address— адрес для комиссии маркетплейсаmarketplace_fee— процент комиссии (обычно 2.5%)royalty_destination— адрес для royaltyroyalty_amount— процент royalty
-
Владелец переводит NFT в Sale-контракт:
- NFT Item меняет owner на адрес Sale-контракта
- NFT теперь “заблокирован” в Sale (эскроу)
-
Sale-контракт готов к покупке
Владелец NFT Item #42 NftSale контракт
| | |
|-- deploy Sale ----| |
| | [создан Sale]
|-- transfer NFT -->| |
| |-- owner = Sale --->|
| | |
| NFT заблокирован в Sale (эскроу) |
Поток покупки
- Покупатель отправляет TON в Sale-контракт (>= full_price)
- Sale-контракт распределяет средства:
- Продавец получает:
full_price - marketplace_fee - royalty - Маркетплейс получает:
marketplace_fee - Создатель коллекции получает:
royalty_amount
- Продавец получает:
- Sale-контракт переводит NFT покупателю (меняет owner)
- Sale-контракт самоуничтожается (больше не нужен)
Покупатель NftSale Продавец Маркетплейс Автор
| | | | |
|-- TON -------->| | | |
| |-- TON (цена) ----->| | |
| |-- TON (комиссия) --|----------->| |
| |-- TON (royalty) ---|------------|---------->|
| | | | |
|<-- NFT --------| | | |
| | | | |
| [Sale уничтожен] | | |
Аукцион (English Auction)
Getgems поддерживает аукционы с возрастающими ставками:
Параметры аукциона
| Параметр | Описание |
|---|---|
min_bid | Минимальная первая ставка |
max_bid | Максимальная ставка (instant buy) |
min_step | Минимальный шаг ставки (в TON или процентах) |
end_time | Время окончания аукциона |
step_time | Продление при ставке в последние N секунд |
Поток аукциона
- Владелец деплоит Auction-контракт и переводит NFT
- Участники делают ставки, отправляя TON в Auction-контракт
- При новой ставке, предыдущий лидер получает возврат
- Если ставка в последние
step_timeсекунд — таймер продлевается - По истечении
end_time— последний ставивший получает NFT - Если ставка >=
max_bid— instant buy (аукцион завершается сразу)
Участник A NftAuction Участник B
| | |
|-- bid 10 TON ---->| |
| [лидер: A, 10 TON] |
| |<-- bid 15 TON ----|
|<-- возврат 10 TON-| |
| [лидер: B, 15 TON] |
| | |
| ... end_time ... | |
| |-- NFT ----------->|
| |-- TON -> продавец |
| [Auction уничтожен] |
Royalty: отчисления создателю
Royalty — это процент от каждой перепродажи, который автоматически отправляется создателю коллекции. На TON royalty реализован на уровне Collection-контракта:
Sale/Auction-контракты запрашивают royalty_params у Collection перед распределением средств. Это гарантирует, что создатель получает свою долю при каждой продаже на любом маркетплейсе, использующем стандартные контракты.
Распределение средств при продаже за 100 TON
Royalty в TON — это соглашение, а не принуждение. Маркетплейс может игнорировать royalty_params и не отчислять создателю. Однако крупные маркетплейсы (Getgems, TON Diamonds) соблюдают royalty, потому что это стандарт экосистемы. Создатели коллекций проверяют маркетплейсы перед листингом.
Безопасность Sale-контрактов
Sale как эскроу
Sale-контракт работает как эскроу: NFT заблокирован в контракте до покупки или отмены. Это обеспечивает атомарность сделки — покупатель платит TON и гарантированно получает NFT.
Отмена листинга
Только продавец (original owner) может отменить Sale:
- Продавец отправляет
cancelв Sale-контракт - Sale переводит NFT обратно продавцу
- Sale самоуничтожается
Риски и проверки
Используйте только проверенные Sale-контракты! Вредоносный Sale-контракт может:
- Не передать NFT после оплаты
- Не вернуть NFT при отмене
- Отправить средства не тому получателю
Всегда проверяйте, что Sale-контракт развёрнут из аудированного кода (Getgems публикует исходный код своих контрактов). Кошельки (Tonkeeper, MyTonWallet) предупреждают о подозрительных Sale-контрактах.
Архитектурные принципы
1. Децентрализация через контракты
Нет единого контракта маркетплейса — каждый Sale независим. Это означает:
- Нет single point of failure
- Нет цензуры (никто не может “заблокировать” отдельный Sale)
- Маркетплейс-фронтенд может упасть, но контракты работают
2. Composability
Sale-контракты могут взаимодействовать с другими протоколами:
- DEX-контракт может участвовать в аукционе
- DAO может автоматически покупать NFT через governance proposal
- Lending-протокол может принять NFT как залог
3. Параллелизм
Тысячи Sale-контрактов работают параллельно в разных шардах. Нет bottleneck от единого order book. Каждая покупка — независимая транзакция в шарде Sale-контракта.
Экосистема NFT-маркетплейсов TON
| Маркетплейс | Тип | Особенность |
|---|---|---|
| Getgems | Универсальный | Крупнейший, фиксированная цена + аукционы |
| TON Diamonds | Премиум | Фокус на высокоценных коллекциях |
| Fragment | Доменный | TON DNS и Telegram usernames |
| Tonnel | Специализированный | NFT + GameFi интеграция |
Итоги модуля M05
За 6 уроков мы разобрали шардированную архитектуру токенов TON:
| Урок | Тема | Ключевой стандарт |
|---|---|---|
| 01 | Архитектура Jetton 2.0 | TEP-74 |
| 02 | Поток перевода Jetton | TEP-74 (opcodes) |
| 03 | Деплой Jetton в Tact | TEP-74 + TEP-64 |
| 04 | NFT-коллекции | TEP-62 |
| 05 | SBT и удостоверения | TEP-85 |
| 06 | Маркетплейс Getgems | TEP-62 + marketplace |
Главный инсайт: каждый баланс, каждый NFT, каждый SBT — это отдельный контракт. Это фундаментальное отличие TON от Ethereum и ключ к пониманию всей экосистемы.
В следующем модуле (M06) мы разберём, как эта архитектура применяется в DeFi: DEX, lending, staking.
Частые ошибки
- Не реализуют стандартный интерфейс sale-контракта Getgems, без которого NFT не смогут продаваться на маркетплейсе.
- Забывают о комиссиях маркетплейса и royalty при расчёте конечной цены: пользователь платит сверх указанной цены, и это должно быть отражено в UI.
- Не верифицируют подлинность sale-контракта при покупке, что позволяет злоумышленнику создать поддельный контракт продажи для фишинга.
- Игнорируют механизм отмены продажи (cancel sale): продавец должен иметь возможность снять NFT с продажи в любой момент.
Проверка знанийПочему на TON каждое объявление о продаже NFT -- это отдельный Sale-контракт, а не запись в едином order book?
Проверьте понимание
Закончили урок?
Отметьте его как пройденный, чтобы отслеживать свой прогресс
Войдите чтобы оценить урок