0
Обложка: Революция в мире NFT: как АММ меняет подход к маркетплейсам

Революция в мире NFT: как АММ меняет подход к маркетплейсам

Большинство торговых площадок NFT работают по методу книги ордеров — то есть по принципу аукциона.

Владелец NFT выставляет лот на аукционе и устанавливает для него первоначальную цену. Когда пользователи делают ставки, цена NFT растёт. Продавец также может снизить или повысить цену лота вручную исходя из его востребованности и популярности. Постоянное изменение цены создаёт проблему: чтобы выполнить свои обязательства перед пользователями и оставаться платежеспособной, платформа должна каким-то способом поддерживать необходимый объём активов и обеспечивать высокую ликвидность.

Существует несколько решений проблемы обеспечения ликвидности. В этой статье я сосредоточусь на одном из них, а именно — на построении протоколов по обмену и продаже NFT, основанных на принципах автоматического маркет-мейкера (АММ).

Одним из первых создателей такого протокола стал Sudoswap — лидирующий по количеству пользователей и уровню ликвидности NFT-маркетплейс, запущенный в конце июля 2022 года. На его примере мы рассмотрим, как АММ-протокол обеспечивает NFT высокую ликвидность. Меня зовут Роман Ярлыков, я разработчик смарт-контрактов компании MetaLamp, ко мне — на «ты» . Поехали!

  • О протоколе Sudoswap
  • Как формируются цены?
  • Мультисвопы
  • Sweep Mode
  • А что с комиссиями?
  • Параметры создания пула
  • Обычный обмен
  • Надежный обмен
  • Их сравнение на практике
  • Свопы NFT<>NFT
  • Подведем итоги

О протоколе Sudoswap

Основатель Sudoswap — анонимный разработчик, широко известный в криптосообществе благодаря своей коллекции NFT, сгенерированной ИИ, под названием 0Xmons.

При мысли об известных в DeFi-вселенной AMM-протоколах типа Uniswap или Balancer в голове возникают сложные механизмы, обилие математических формул и различных графиков в white paper.

Sudoswap ломает привычное представление о подробном мануале криптопроекта. Свой white paper создатель платформы называет litepaper, и в этом документе всего три страницы текста, написанного понятным обывателю языком, поэтому разобраться в нём несложно.

Технология АММ-протокола Sudoswap также проста и понятна. Как и на других DEX, она представляет собой смарт-контракты, которые автоматически поддерживают ликвидность в пулах с помощью специального алгоритма.

Главное отличие платформы от других NFT-маркетплейсов в том, что пулы ликвидности, которые она использует, индивидуальные, а не общие. Это значит, что у каждого пула есть только один конкретный владелец (поэтому не нужны LP-токены, т.е токены доли владения в пуле) и один конкретный смарт-контракт. Юзер, он же трейдер, может создавать сколько угодно пулов, это могут быть как односторонние пулы, так и знакомые нам по Uniswap пулы с двумя активами.

Пулы делятся на три категории:

  1. Token. Даёт возможность купить NFT (за ETH или ERC20). Если у вас есть несколько NFT из определённой коллекции, вы создаете пул, где можно купить эти NFT за эфир;
  2. NFT. Продажа NFT (за ETH или ERC20). Этот тип пула даёт возможность только продать свой NFT;
  3. Trade. Отвечает за обмен NFT на токен (покупка и продажа). В такой пул заливаются и NFT, и токены, за которые они продаются; соответственно можно как купить NFT, так и продать. Easy as pie.

 

 

Источник: 0xmons Blog

Источник: 0xmons Blog

Главное преимущество модели с индивидуальными пулами ликвидности — возможность мгновенного трейдинга плюс интересные механизмы ценообразования.

Как формируются цены?

Перейдём к применению АММ в кривых ценообразования — формулах, определяющих соотношение цен между активами. Протокол предлагает несколько кривых связывания цен на выбор: Linear curve, Exponential curve и Concentrated XYK curve. При создании пула трейдер указывает его параметры, в их числе — выбранную кривую плюс так называемую дельта (delta).

Поясню на примере c линейной кривой, как это работает. Рассмотрим пример ценообразования без учета комиссии:

Создаем пул NFT/ETH с ценой 1NFT за 1ETH и закидываем туда 5 NFT. Устанавливаем дельту 0.1 ETH, — это увеличит цену всех NFT из пула в случае покупки одного из них. Цена изменится на величину дельты — 0.1 ETH, то есть 4 оставшиеся NFT теперь стоят 1.1 ETH. При следующей покупке три оставшиеся будут стоить уже 1.2 ETH и т.д. В случае продажи NFT в пул цена каждый раз будет снижаться на величину дельты. То есть, после продажи одного NFT в пул, где осталось три NFT по цене 1.2 ETH, их станет 4 штуки по цене 1.1 ETH. Супер изи.

Экспоненциальная кривая работает по такому же принципу, только в этом случае дельта служит процентом, на который увеличивается и уменьшается цена.

Например, поставщик ликвидности может создать пул NFT/ETH со стартовой ценой 2 ETH и delta = 50%. Цена NFT увеличится до 2 + 50% = 3 ETH после покупки одного NFT из пула. После покупки второго NFT цена увеличится до 3 + 50% = 4.5 ETH и так далее. В любой момент продажи NFT пулу цена будет разделена на 1.5.

Резюмируем. Линейная кривая отвечает за прибавление и убавление цены на величину дельты. Экспоненциальная — за прибавление на величину дельты в процентах от предыдущей цены.

 

 

Источник: 0xmons Blog&nbsp;

Источник: 0xmons Blog

Недавно в твиттере Sudoswap объявили о внедрении нового семейства кривых связывания — Concentrated XYK curve. Эти кривые позволят настроить параметр «Концентрация» для контроля глубины пула и величины проскальзывания.

Concentrated XYK curve по-своему воспроизводят концентрированную ликвидность Uniswap v3. Например, стартовая цена задаётся при создании пула; при этом концентрированную ликвидность сложно представить в индивидуальном пуле, поэтому кривая предлагает заполнить его виртуальными токенами.

Ничего не поняли? Я пока что тоже. Информацию о том, зачем нужно новое семейство кривых на момент написания статьи можно почерпнуть лишь в паре твитов. Нет даже формул, так что единственный способ понять, как они работают — это разбирать код контрактов. Ах да, ещё есть два графика, которые напоминают игру «найди пять отличий»:

 

 

Источник: sudoswap twitter account

Источник: sudoswap twitter account

Мультисвопы

Функционал «мультисвоп» дает пользователю возможность покупать или продавать несколько NFT за одну своп-транзакцию. При мультисвопе значение spotPrice (цена в данный момент времени) будет обновлять delta для каждого купленного или проданного NFT.

Предположим, у нас есть сделка NFT — ETH со значением spotPrice 1 ETH, и линейная кривая со значением delta 0.1 ETH (в примере не будем учитывать комиссию).

Если пользователь продаст 5 NFT этой паре, он получит:

  • 1 ETH за первый NFT
  • 0.9 ETH за второй NFT
  • 0.8 ETH за третий NFT
  • 0.7 ETH за четвертый NFT
  • 0.6 ETH за пятый NFT

По окончании мультисвопа новый spotPrice будет установлен на 0.5 ETH.

Sweep Mode

Sweep Mode — это фича, которая помогает совершить более выгодную сделку при покупке нескольких NFT из коллекции. Данный режим используется для поиска лучшей комбинации при покупке NFT.

Например, мы хотим купить 10 NFT из определённой коллекции со значением spotPrice 1ETH. Мы помним о кривой ценообразования: цена NFT будет увеличиваться после каждой сделки, — таким образом, кажется, выполнить условие покупки не удастся. В этом случае и пригодится Sweep Mode. В этом режиме протокол позволяет искать NFT с нужным значением в других пулах, и приобрести все 10 NFT из нужной коллекции в разных пулах по желаемой цене 1ETH.

Протокол применит тот же принцип при продаже NFT и постарается сбыть их в разные пулы по наиболее высоким ценам.

А что с комиссиями?

На централизованных маркетплейсах покупатели обычно платят комиссию платформы в размере 2.5% + % роялти (как правило 5 или 10%), таким образом общая комиссия достигает 12.5%. В Sudoswap действует комиссия в размере 0.5% — и никаких роялти. Отсутствие роялти стало предметом пламенных дебатов в твиттере; пользователи разделились на два лагеря и дискутировали о том, должны ли создатели получать гонорары за свои работы.

Правда состоит в том, что трейдерам выгодно отсутствие роялти, поэтому вряд ли они будут думать о морали. К тому же основатель платформы 0xmons писал в своем блоге, что рассчитывает на «китов», которые придут торговать большими объёмами, — а для них размер комиссии может стать решающим в выборе платформы.

Параметры создания пула

Контракт Sudoswap LSSVMPairFactory отвечает за создание новых пулов (называемых «парами»). Каждый пул представляет собой контракт с именем LSSVMPair, который принадлежит создателю пула и создаётся с настраиваемыми параметрами, — такими как тип пары (Token, NFT, Trade), тип кривой связи (линейная, экспоненциальная и концентрированная), спотовая цена, дельта и т.д. Затем эти пары можно отслеживать на предмет их активов и цен (полученных с помощью вызова «getBuyNFTQuote»).

Ниже — все параметры, передаваемые при создании пула:

   /**
      * `_nft` - The ERC721 token side of the pair
      * `_bondingCurve` - The bonding curve used to price the pair
      * `_assetRecipient` - If set to a non-zero address, assets sent to the pair during a swap will be forwarded to this address.
      *   NOTE: unavailable for Trade pairs.
      * `_poolType` - The pair's type (Token, NFT, Trade)
      * `_delta` - The bonding curve's parameter (more on this in the Bonding Curve section)
      * `_fee` - The spread between buy and sell quotes. 
      *   NOTE: only for Trade pairs.
      * `_spotPrice` - The initial sell quote the pair will return if an NFT is sold into it.
      * `_initialNFTIDs` - The list of IDs to transfer from the caller to the pair.
      */
        IERC721 _nft, 
        ICurve _bondingCurve, 
        address payable _assetRecipient, 
        LSSVMPair.PoolType _poolType,
        uint256 _delta, 
        uint256 _fee, 
        uint256 _spotPrice,
        uint256[] calldata _initialNFTIDs

После создания пула овнер сможет изменить spotPrice, delta и fee.

При обмене токенов на NFT пользователи могут указать, какие идентификаторы NFT они хотят получить от каждой пары или запросить любой идентификатор из пары. При переключении с NFT на токены или с токенов на NFT LSSVMRouter существует два типа свопов: обычный обмен и надёжный обмен.

Обычный обмен

Концептуально напоминает обмен токенов на других DEX. Пользователь отправляет роутеру максимальную сумму ввода или минимальную сумму вывода (т. е. разрешенное проскальзывание), а также маршрут обмена и крайний срок. Затем маршрутизатор переключается между различными указанными парами. В конце всех свопов маршрутизатор суммирует все токены, которые должны быть получены или отправлены, и возвращает значение, если общее количество превышает указанное пользователем проскальзывание.

Иными словами, если недостаточно средств для покупки нескольких NFT по определённому маршруту, произойдёт откат транзакции.

Надёжный обмен

Надёжный своп, напротив, выполняет проверку проскальзывания для каждой своп-пары, а не совокупную проверку в конце. Если цена для указанной своп-пары превышает допустимое проскальзывание, маршрутизатор молча пропустит этот маршрут и перейдет к следующему без возвратов или ошибок.

Такой обмен подходит для ситуаций, в которых цена быстро меняется между отправкой транзакции и её исполнением. Если цена лота выросла за время отправления транзакции, пользователь в любом случае купит несколько NFT — в том количестве, на которое хватает отправленной суммы. Если останется сдача, маршрутизатор вернёт её пользователю.

Сравнение типов обмена на практике

Рассмотрим разницу между этими типами свопов на следующем примере.

Допустим, есть две пары для NFT и ETH. Первая пара имеет спотовую цену 1 ETH и линейную кривую с дельтой 0.1 ETH. Вторая пара имеет спотовую цену 1 ETH и линейную кривую с дельтой 1 ETH.

Пользователь Боб желает приобрести NFT, по одному из каждого пула за 1 ETH каждый, с проскальзыванием 10%. Боб отправляет своп-транзакцию. Прежде чем транзакция будет выполнена, пользователь Алиса покупает 1 NFT из каждого пула за 1 ETH каждый. Новая спотовая цена для первой пары составляет 1.1 ETH, а для второй пары — 2 ETH.

В случае отправки обычного свопа, Боб отправляет 2.2 ETH (2 ETH + 0.2 ETH для покрытия дополнительного 10% проскальзывания), — и транзакция завершается неудачей, поскольку он отправляет достаточно ETH, чтобы покрыть первый своп на новую цену 1.1 ETH, но недостаточно, чтобы покрыть второй своп в 2 ETH.

Если же Боб сделает надёжный обмен, он также отправит 2.2 ETH, но с максимальной стоимостью обмена 1.1 ETH. У маршрутизатора будет достаточно средств, чтобы покрыть первый своп в 1.1 ETH. Затем, увидев, что второй обмен стоит 2 ETH, маршрутизатор полностью пропустит эту пару. Транзакция завершится успешно, пользователю будет возвращено 1.1 ETH, а также отправлен один NFT, который он купил за 1.1 ETH.

Надёжные свопы улучшают взаимодействие с пользователем при более высокой волатильности за счёт увеличения количества газа.

Свопы NFT<>NFT

Важная особенность протокола — это возможность напрямую обменивать NFT на NFT («Невзаимозаменяемый», — говорили они). Как и в случае других обменов на платформе, пользователи могут либо указать конкретные идентификаторы NFT из пары, либо запросить любой идентификатор NFT. Поддерживается обмен NFT на токены, а затем токены на другие NFT в одной транзакции с помощью роутера.

Ограничения и минусы

  • Пулы ликвидности в Sudoswap независимы друг от друга; это и преимущество, и недостаток одновременно. Несмотря на то, что роутинг даёт возможность взаимодействовать сразу с множеством таких пулов, это не позволяет достичь той концентрации ликвидности, которую мы можем видеть в классических DEX.
  • Пользователи всегда продают свои NFT мгновенно, если для этой коллекции есть пулы ликвидности. Если же NFT из разряда редких и уникальных, то его невыгодно продавать на такой площадке, ведь не существует пулов с редкими NFT по одной цене. Возможности проведения аукциона на Sudoswap тоже нет.
  • Площадка также невыгодна тем, кто зарабатывает на роялти. Децентрализованные маркетплейсы не платят их и не предлагают им альтернативы. Напомню, что роялти — это в первую очередь соглашение между сообществом и создателями контента, маркетплейсы не обязаны их выплачивать, в контрактах они не зашиты, при обычной продаже p2p роялти никогда не списывались (как и комиссия маркетплейса).

Подведём итоги

Важные факты о том, как устроен АММ применимо к NFT:

  • Есть односторонние и двойные пулы.
  • У пула только один владелец.
  • Владелец же устанавливает цены и определяет параметры изменения цены.
  • Цена в пуле одинакова для всех токенов NFT, но меняется с продажей каждого токена.
  • За изменение цены отвечает линейная, экспоненциальная и концентрированная кривая, которые корректируются дельтой. Чем больше актив из пула покупается тем он дороже и наоборот.
  • При создании пула с одним активом его можно либо купить, либо продать, и нельзя обменять.
  • Обмены могут выполнятся как токен на NFT, так и NFT на NFT. Можно строить маршруты обменов как в классических DEX, сами пулы агрегируются протоколом и позволяют осуществлять торговлю между пулами.
  • Протокол AMM позволяет мгновенно купить, продать или обменять NFT. Протокол вносит большой вклад в увеличение ликвидности NFT-рынка, а также привлекает низкими комиссиями.

Это лишь поверхностный обзор основных возможностей AMM-NFT на примере одного протокола. Я описал далеко не весь функционал платформы; она развивается и постоянно добавляется что-то новое. При этом в мире DeFi существуют и другие протоколы, которые уже сегодня предлагают более широкий функционал и возможности.

Я бы назвал технологию АММ как минимум большими переменами, и как максимум — революцией в мире NFT-маркетплейсов. АММ позволяет легче управлять большими коллекциями, увеличивает общую ликвидность, снижает волатильность на этом рынке, а также ставит под вопрос существование роялти и двигает рынок к созданию других подходов к торговле NFT.