Мы в соц.сетях
Главная » Аналитика » Как провести распродажу NFT?
Как провести распродажу NFT?
Опубликовано 26.10.2021

Руководство по дизайну качественного дропа NFT

NFT — это еще один продукт, который отлично соответствует криптовалютному рынку, однако на данном этапе их развития они сталкиваются с определенными проблемами.

Жизнь каждого NFT начинается с выпуска новой коллекции (который часто называют “дропом”). На этом этапе происходит создание, распродажа и распределение токенов из новой коллекции среди покупателей, которые затем решают — хранить токены или продать их на вторичном рынке.

Блокчейн-технологии произвели революцию в области привлечения финансирования для разработки ПО с открытым исходным кодом. Однако по началу не все работает так, как нужно.

В ICO 2016-2018 годов использовались несовершенные механизмы, которые зачастую позволяли основателям проектов получить деньги, прежде чем они предоставят пользователям вменяемый продукт. С тех пор мы многому научились.

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

Как и в случае с любым другим товаром, поступающим в продажу впервые, новые коллекции NFT сталкиваются с проблемой ценообразования.

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

В результате разработчикам приходится создавать комплексные механизмы, которые зачастую имеют те или иные уязвимости.

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

Затем мы поэтапно разберем процесс распродажи новой коллекции NFT и исследуем возможные варианты организации каждого этапа.

Наконец, мы рассмотрим пример того, как по нашему мнению должна выглядеть эталонная реализация хорошо продуманного механизма запуска новой коллекции.

Биржа Binance в июне 2021 года открыла маркетплейс NFT, зарегистрируйтесь сейчас по уникальным условиям — кэшбэк от 10% до 20% (зависит от секции биржи) — воспользоваться можно будет позже:

Содержание

Негативный пользовательский опыт

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

Справедливое распределение и эксплойты

Во время дропа новой коллекции пользователи взаимодействуют со смарт-контрактом, чтобы выпустить NFT со случайным набором атрибутов. Некоторые атрибуты встречаются реже других, что делает определенные комбинации более редкими и ценными. Например, только 9 из 10 000 крипто-панков обладают ультра-редким атрибутом “Alien”. Самый дешевый из них сейчас стоит 35 000 ETH.

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

В этом смысле дропы NFT являются продолжением популярной механики gacha, которая существует в аналоговых (например, наборы-бустеры для карточных игр) и цифровых (например, лутбоксы в видеоиграх) экономиках уже довольно давно.

Важно отметить, что участники gatcha-игр, как правило предполагают, что при случайном распределении предметов у них есть реальный (хоть и небольшой) шанс получить очень редкий предмет.

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

Далее мы рассмотрим два реальных примера использования таких эксплойтов. В основе обоих эксплойтов лежит один и тот же двухэтапный процесс:

  1. Злоумышленник извлекает метаданные коллекции, что позволяет ему представить относительную частоту появления всех атрибутов в виде единого показателя редкости. Используя этот показатель, они могут затем вычислить наиболее ценные NFT в коллекции.
  2. Затем злоумышленник взламывает смарт-контракт таким образом, чтобы выпускать только самые ценные и редкие NFT.

Loot и эксплойт с метаданными на блокчейне.

Одним из наиболее ярких проектов последнего времени была коллекция NFT под названием Loot (англ. loot – добыча). На первый взгляд простая коллекция состояла из 8000 “мешков с лутом”, содержавших разнообразное “снаряжение” – оружие, броню и аксессуары различной степени редкости.

Все атрибуты для каждого предмета были прописаны непосредственно в контракте. Участники дропа получали псевдо-случайные “мешки лутом”, используя ID мешка в качестве хэша.

Хранение метаданных на блокчейне хоть и обеспечивало их перманентность (покуда существует сам Ethereum), но также позволило злоумышленникам воспользоваться “псевдо-рандомностью” Loot.

Недобросовестным участникам удалось быстро извлечь метаданные всех 8 000 предметов и локально смоделировать функции рандомизации, что позволило вычислить степень редкости каждого предмета коллекции.

Получив эту информацию, злоумышленникам оставалось лишь воспользоваться оставшейся уязвимостью контракта: использовать ID конкретных мешков, чтобы получить самые редкие NFT.

Однако, несмотря на простоту этого эксплойта, есть основания полагать, что никто не использовал его при первичной распродаже токенов Loot:

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

У этого есть два возможных объяснения:

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

Однако по мере того, как цена на токены Loot продолжала расти, начали появляться разнообразные производные этой коллекции, такие как More Loot и Extension Loot.

Большинство из них были форками оригинального контракта Loot с незначительными изменениями. Новые коллекции унаследовали уязвимости Loot, однако в этот раз как рыночная стоимость, так и внимание публики к дропам были выше. Это серьезно повлияло на справедливость распределения токенов.

More Loot

Если сравнить распределение редких предметов во время дропов Loot и More Loot, становится очевидным, что в последнем применялись эксплойты.  Всего через два блока после начала дропа все редкие NFT уже были выпущены. В результате обычные пользователи, которые в большинстве своем не подозревали об эксплойте, вынуждены были довольствоваться менее редкими экземплярами.

Красной линией на рисунке ниже отмечен момент, когда Аниш опубликовал данные о редкости предметов в Твиттере, после чего началась “гонка” за оставшимися редкими NFT.

Кроме того, поскольку предложение More Loot неограниченно, можно ожидать, что в будущем эксплойтеры заранее смогут вычислить редкие мешки и выпустить их раньше других.

Extension Loot

Как и в случае с More Loot, во время дропа Extension Loot мы могли наблюдать, что пять из десяти самых редких мешков были выпущены с одного адреса (отмечено красным цветом). Примечательно то, что это было скрыто у всех на виду – злоумышленник равномерно распределил выпуск редких мешков на протяжении всего дропа.

Meebits и эксплойт с метаданными вне цепочки

Meebits – это коллекция из 20 000 уникальных 3D-персонажей от LarvaLabs, создателей CryptoPunks.

Создавая коллекцию, Larva Labs знали о том, что опытные пользователи могут использовать метаданные для выявления редких NFT. Чтобы препятствовать этому, веб-сайт был разработан таким образом, чтобы позволить покупателям просматривать полный набор метаданных каждого NFT, но только после того, как токен был выпущен.

Однако, несмотря на то, что метаданные невыпущенных NFT были целенаправленно скрыты, кто-то изучил исходный код и выяснил, что метаданные хранились на IPFS. Благодаря этой информации злоумышленникам удалось извлечь метаданные невыпущенных Meebits из IPFS и вычислить наиболее редкие токены.

Однако им пришлось столкнуться с дополнительной сложностью: в отличии от Loot, пользователи не имели возможности выпускать токены с конкретным ID. Вместо этого во время выпуска использовался случайный он-чейн хэш (в теории, этим могли воспользоваться майнеры), из-за чего недобросовестным пользователям было сложнее получить именно редкий NFT.

Злоумышленникам, однако, удалось найти выход и из этой ситуации.

Они написали контракт, который покупал токены, проверял их ID и затем “возвращал” их. Это был контракт ERC721 с функцией “mint()”, которая возвращала случайный ID Meebit.

Контракт злоумышленника вызывал эту функцию, сверял полученный ID со списком редких предметов и если предмет не соответствовал определенному уровню, отменял транзакцию (пример кода).

Благодаря этому, злоумышленнику было нужно заплатить всего около 0,03 ETH за проверку каждого ID вместо того чтобы платить ~2,5 ETH за покупку одного Meebit.

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

Сегодня тот же самый злоумышленник мог бы отправлять свои транзакции через пакеты Flashbots и платить майнеру только в том случае, если он получил нужный ему ID, благодаря чему отмена транзакций была бы абсолютно бесплатной.

Meebit NFT

Злоумышленнику удалось выпустить и продать токен Meebit Meebit #16647 с ультра редким атрибутом “visitor”.

Аукционы “газа”

Статистика за сентябрь показывает, что в течение семи уникальных периодов базовая комиссия за газ в Ethereum превысила 1250 gwei. Примечательно то, что все семь случаев были связаны с крупными дропами NFT в сети Ethereum.

NFT и газ

Слева направо: G’EVOLS, The Sevens, Sipher, Galaxy Eggs, Omnimorphs + ArtBlocks Democracity, Galactic Apes, King Frogs

В большинстве этих дропов был использован механизм FCFS (англ. first-come-first-served — “первым пришёл — первым обслужен”) с фиксированной ценой. Ввиду низких цен и чрезмерно высокого спроса, конкуренция за NFT во время распродажи быстро перерастала в аукцион “газа” в мемпуле.

Одним из таких примеров был дроп NFT The Sevens – коллекции из 7 000 коллекционных “аватарок” с изображениями дистопичных персонажей.

Спрос на токены был довольно высок, так как первоначальная цена за NFT составляла 0.07 ETH. Через 6 минут после начала дропа цены на газ достигли максимума в 12 246 gwei. Таким образом средняя комиссия составила ~1.49 ETH за выпуск одного NFT. 5% от общего числа пользователей заплатили более 2.44 ETH только за газ, чтобы выпустить свои токены.

The Sevens NFT

Резкий рост базовой комиссии за газ во время выпуска токенов The Sevens

Недостаток такого формата не только в том, что он создает дополнительные сложности для участников, но и в том, что такая нагрузка на публичный мемпул негативно сказывается на всех пользователях Ethereum.

Кроме того, этот эффект аукциона вынуждает пользователей платить разные суммы за один и тот же NFT. Отсюда – тысячи неудачных транзакций из-за недостаточно высоких ставок.

Продвинутые учатстники

Как мы уже убедились, Ethereum – это темный лес, где мы всегда можем столкнуться с технически продвинутыми злоумышленниками.

Распродажи NFT (в особенности редких), участники которых ожидают получить прибыль с продажи на вторичных рынках, привлекают к себе технически подкованных игроков, с которыми не под силу тягаться среднестатистическому пользователю.

Эти злоумышленники используют ботов и автоматизированные стратегии, чтобы непосредственного взаимодействовать со смарт-контрактами, часто минуя пользовательский интерфейс и, в некоторых случаях, даже мемпул.

Ярким примером этого стал дроп NFT TIMEPieces. Перед началом дропа продвинутые операторы ботов изучили исходный код внешнего интерфейса сайта nft.time.com.

Благодаря этому они смогли обнаружить контракты для выпуска NFT и создали ботов за несколько часов до старта. В результате они получили значительное преимущество во время распродажи.

Все токены были распроданы менее, чем за три минуты. К тому моменту, когда среднестатистические пользователи подключили свои кошельки и отправили транзакции, было уже слишком поздно.

Более того, некоторые участники использовали Flashbots, чтобы обойти мемпул и отправлять транзакции напрямую майнерам.

Контракт TIMEPieces не позволял участникам выпускать более 10 токенов на один адрес. Однако, оператор бота 0x35…ce5 разделил средства между пятью кошельками и получил 50 NFT в одном пакете Flashbots.

Редкие NFT

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

Даже при том, что оператору бота пришлось выплатить 20 ETH в качестве чаевых майнерам (таким образом средняя стоимость выпуска одного NFT составила 0.5 ETH), чистая прибыль составила 120 ETH на момент начала продаж на вторичном рынке.

Кроме того, поскольку этот участник использовал Flashbots (что позволяет отменять транзакции с нулевыми издержками), ему удалось полностью избежать потерь, связанных с неудачным транзакциями. Чего нельзя сказать о почти десяти тысячах среднестатистических пользователей, которые выплатили в общей сложности 252.62 ETH (почти 800 000$) комиссионных за неудачные транзакции. Количество отмененных транзакций в 100 блоках составило 12 743.

Рентабельность

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

Распространенная ошибка большинства дропов, в которых используются альтернативы модели FCFS, заключается в том, что они усложняют процесс распродажи, увеличивая количество блокчейн-транзакций, которые должен совершать пользователь.

Возьмем к примеру аукцион $DONA проекта Jay Pegs Auto Mart на платформе Miso.

В данном проекте распределение токенов впервые проводилось в формате “группового аукциона”. Такой формат стал примером справедливой генерации метаданных, однако был несколько неэффективен с точки зрения количества транзакций и комиссий за газ.

Чтобы принять участие в распродаже пользователям было необходимо в течение восьми дней совершить как минимум четыре транзакции на блокчейне:

  1. Сперва пользователи вносили ETH в аукцион Miso, не зная, сколько токенов $DONA они получат в итоге (это зависело от итоговой клиринговой цены).
  2. По окончании аукциона, пользователи получали возможность забрать свои токены $DONA.
  3. На данном этапе пользователей можно разделить на три группы: тех, у кого было недостаточно токенов для выпуска NFT; тех у кого ровно было столько токенов, сколько нужно; и тех у кого было избыточное количество токенов. По нашим данным, из 1 363 участников, в первой группе оказалось 273 человек, в третьей – 1090 человек, а во вторую категорию не попал ни один участник.
    1. Пользователям, которым не хватило токенов, пришлось совершать дополнительные транзакции через Sushiswap, чтобы получить недостающую сумму.
    2. Пользователи, у которых было больше токенов чем нужно, могли продать излишки на Sushiswap, опять же совершая дополнительные транзакции.
  4. Пользователи, у которых было достаточно токенов могли потратить их на выпуск NFT.
  5. Наконец, метаданные назначались пакетами, и у отдельных участников не было возможности в одностороннем порядке раскрыть метаданные своего NFT.

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

Эксклюзивный выпуск токенов

Один из показателей, по которым коллекционеры и энтузиасты NFT могут спрогнозировать будущую ценность коллекции, – это сила сообщества. Чаще всего для этого оценивается концентрация токенов среди держателей. Чем больше токенов находится в руках отдельных держателей, тем выше может быть потенциальная стоимость коллекции.

В последнее время появилась новая тенденция – создатели дропов позволяют выпускать NFT “партиями”, то есть один пользователь может в рамках одной транзакции выпустить несколько токенов. Таким образом, благодаря снижению издержек в виде комиссий за газ, они стимулируют “крупных игроков” выпускать большое количество токенов.

Примером такой практики был дроп Stoner Cats – коллекции NFT, созданной в поддержку производства анимированных короткометражек от Милы Кунис.

Механика дропа позволяла пользователю выпустить до 20 NFT в одной партии. В итоге 89% NFT были выпущенны партиями. При этом 31% всех токенов были выпущены максимальными партиями по 20 штук.

Stoner Cats NFT

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

Доверенные операторы

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

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

Какими качествами должен обладать хороший дроп NFT?

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

Наш список не претендует на завершенность, но это хорошее начало.

Как организовать продажу NFT: 6 признаков “эталонного” токенсейла

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

Отсутствие условий “гонки”: каждый раз, когда NFT (или, в сущности, любой другой товар) продается по цене ниже справедливой рыночной, распродажа превращается в то, что Виталик Бутерин назвал “аукцион за счет иных средств” (auction-by-other-means).

На практике, покупатели стремятся к тому, чтобы их транзакция была подтверждена, как можно скорее, и часто платят за это майнерам. Во время такого аукциона преимущество получают те люди, которые хорошо разбираются в блокчейне и имеют доступ к таким инструментам как боты, Flashbots, Eden или могут напрямую взаимодействовать с майнерами.

Отсутствие привязки к часовому поясу: чаще всего, анонсы FCFS распродаж происходят на определенной высоте блока. Затем, в течение короткого периода времени, распродаются все токены.

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

Низкие издержки: транзакции на блокчейне (особенно в сети Ethereum) могут стоить довольно дорого, поэтому стоит минимизировать количество транзакций, которые пользователю необходимо совершить в процесс дропа.

Инклюзивность и устойчивость sybil-атакам: создателям дропа часто выгодно сделать его доступным для разных категорий пользователей, даже если из-за этого первоначальная цена будет ниже. Это важно, потому что активность сообщества в конечном итоге определяет ценность коллекции на вторичном рынке.

Отсутствие доверия: разумеется, с учетом вышесказанного, механизм дропа должен сохранять свойства базового блокчейна. Это значит, что он должен обладать вышеупомянутыми качествами, не требуя слишком высокой степени доверия к оператору.

Безопасность через неясность

Большинство дропов в теории имеют один или несколько из вышеописанных недостатков, однако часто спрос на токены слишком низок, чтобы эти недостатки проявились на практике. Это пример того, что называется “безопасностью за счет неясности”.

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

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

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

Этапы выпуска новой коллекции

Теперь мы знаем, что нам нужно для создания хорошего дропа, но как это реализовать? Давайте поочередно разберем все этапы и возможные варианты их реализации.

Каждый дроп NFT состоит из четырех базовых этапов:

  1. Торги: Распродажа проходит в режиме реального времени, и пользователи отправляют свои ставки оператору (это может быть смарт-контракт).
  2. Клиринг: Оператор сопоставляет собранные ставки с оставшимся предложением, определяет клиринговую цену и выбирает выигрышные ставки.
  3. Распределение: Победители могут забрать свои NFT (или получить их от оператора).
  4. Раскрытие метаданных: Оператор раскрывает свойства NFT.

Возьмем, к примеру, Loot. Дроп, в формате FCFS-распродажи, начался в блоке 13 108 877. Создатель коллекции dom установил в смарт-контракте нулевую цену продажи токена, но пользователям все равно приходилось делать ставки с помощью газа. В каждом блоке майнеры проверяли новые ставки и определяли победителей. Если ставка оказывалась успешной, пользователь получал NFT в рамках той же транзакции.

Большинство пользователей узнавали атрибуты своего предмета уже после того, как они его получили. Однако на практике опытный пользователь мог узнать атрибуты своего NFT в смарт-контракте перед выпуском, что позволяло выявить самые редкие предметы коллекции.

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

Далее мы рассмотрим разные варианты реализации каждого из четырех перечисленных этапов. Мы опишем то, как выбор того или иного варианта влияет на описанные выше качества, а также преимущества и недостатки каждого из вариантов.

Этап 1: Торги

На этом этапе оператор собирает ставки пользователей (т. е. запросы на покупку) .

Непрерывный и последовательный клиринг.

Прежде всего нужно решить, будет ли клиринг осуществляться непрерывно в процессе торгов или после их окончания.

Примером непрерывного клиринга является любая распродажа FCFS с фиксированной ценой за токен (такой механизм был использован в большинстве прошлых дропов NFT). В каждом блоке майнеры просматривают ставки и сопоставляют их с оставшимся предложением.

Этот механизм имеет ряд недостатков: в случае, если оператор переоценит клиринговую цену, предметы будут стоить слишком дорого и могут не продаться. Если же оператор недооценит итоговую стоимость, предметы будут стоить слишком дешево.

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

При необходимости, последнего можно избежать, перенаправив все транзакции на RPC-сервер Flashbots, и провести аукцион в среде, где неудачные транзакции несут нулевые издержки.

Во втором варианте торги и клиринг проходят в два этапа, которые не пересекаются. На практике оператор сначала собирает ставки, а затем сопоставляет их с имеющимся предложением, осуществляя расчеты по справедливой цене. Этот подход включает такие механизмы, как групповой аукцион или лотереи.

Одним из примеров такого подхода был дроп Jay Pegs Auto Mart, где у пользователей была неделя, чтобы сделать ставки, прежде чем будут подведены итоги распродажи.

Последовательный подход имеет несколько преимуществ, которые соответствуют нашим целям:

  1. У пользователей есть достаточно времени, чтобы сделать ставки, а результат зависит не от их скорости или технических знаний, а от того, какую сумму они готовы заплатить.
  2. Такой подход также создает благоприятные условия для людей, проживающих в разных часовых поясах.

К тому же, так как в этом случае не возникает аукционов газа, отсутствуют негативные последствия для всех остальных пользователей сети.

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

Торги на блокчейне и вне блокчейна

Далее нам предстоит решить, будут ли пользователи делать свои ставки в цепочке или вне цепочки.

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

Однако также возможно принимать ставки вне цепочки.

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

Затем оператор может либо провести расчеты вне цепочки, либо сгруппировать выигрышные ставки и отправить их в смарт-контракт для исполнения в цепочке. В обоих случаях необходимо в той или иной степени полагаться на то, что оператор корректно производит расчеты по выигрышным ставкам.

Во втором подходе ставки принимаются вне цепочки, а победитель определяется в цепочке, что обеспечивает надежность, гибкость и низкие издержки.

Что касается доверия, единственное, на что пользователям приходится полагаться в данном случае, это то, что оператор не пропустит какие-то из выигрышных ставок при их отправке в цепочку.

Кто может участвовать в торгах?

Следующим шагом будет определить: кто может участвовать в торгах и какой будет допустимая величина ставки?

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

Когда торги проходят вне цепочки, такие правила KYC легко реализуемы — необходимо лишь, чтобы пользователь подтвердил определенную информацию, прежде чем отправить свою подпись на сервер. Реализовать KYC в цепочке уже сложнее, однако на данный момент разрабатываются соответствующие решения (например, метод Proof of Personhood)

Даже если проект не планирует использовать KYC, разработчики все еще могут принять определенные меры для того, чтобы создать равные условия для всех пользователей.

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

Для того чтобы избежать этого можно установить лимит на выпуск токенов на определенный адрес или в рамках одной транзакции.

Оплата

Далее, оператор должен решить, когда пользователи будут платить за токены — одновременно со ставкой или после клиринга?

В последнем случае пользователь просто резервирует токен на этапе торгов. Затем, после подведения итогов, он может завершить покупку в течение определенного периода времени.

Такой метод был использован, в частности, проектом Parallel. Хотя в более спокойных рыночных условиях это работало довольно хорошо, при высоком спросе торги могут превратиться в гонку, в которой пользователи будут стремиться зарезервировать как можно больше токенов, покуда это не требует никаких затрат.

Чтобы избежать этого, плата за токен должна быть связана с самой ставкой.

Лучшим решением здесь будет разрешить пользователям делать ставки только после блокировки средств в смарт-контракте с того же адреса. Затем оператор может либо вернуть средства пользователям, чьи ставки не сыграли – сродни лимитному ордеру на бирже, либо не возвращать средства, как в случае с проигрышным лотерейным билетом.

Детализация процесса торгов

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

Здесь есть три возможных варианта:

“Простой” групповой аукцион: пользователи вносят определенное количество ETH без каких-либо дальнейших инструкций.

На этапе клиринга количество предметов делится на общее количество внесенных пользователями ETH и каждый участник получает фракционные токены стандарта ERC-20, которые затем можно обменять на NFT ERC-721.

Такой подход использовался, например, Jay Pegs Auto Mart. Его преимущество в том, что здесь не может быть проигрышных ставок. Однако его недостаток в том, что пользователям приходится совершать три дополнительных транзакции в цепочке — две чтобы купить или продать токены для достижения нужной суммы (то есть суммы, достаточной для покупки одного “полного” ERC-20) и одну чтобы получить свой NFT.

Самое главное, что при использовании такой модели у пользователей нет возможности указать цену, по которой они хотели бы получить определенное количество токенов.

“Умный” групповой аукцион: аналогичный, но, возможно, более эффективный подход был использован SpankChain для их ICO несколькими годами ранее.

В отличие от дропа Jay Peg, участники распродажи SpankChain могли указать количество токенов, которые они хотели бы приобрести, и цену за токен. По завершении этапа торгов они рассчитали цену исполнения вне цепочки и отправили ее вместе с выигрышными ставками в смарт-контракт. Затем победители получали свои токены SPANK, а проигравшие – внесенные ими ETH.

Однако у этого подхода также есть свои недостатки. Вычислительная сложность сопоставления всех ставок настолько велика, что это можно сделать только вне цепочки, а это требует некоторого доверия к оператору.

Розыгрыш: наконец, можно провести розыгрыш или лотерею, в которой пользователи делают ставки, покупая или бронируя билеты. Затем победители случайным образом выбираются из общего пула.

Таким образом, пользователи получают либо полный токен, либо не получают ничего – не нагружая при этом сеть дополнительными транзакциями как в случае с $DONA. Это также даст пользователям, которым в ином случае могло бы не хватить средств на целый NFT, возможность принять участие в торгах.

Однако это вносит в торги элемент случайности, который может не понравиться ряду пользователей.

Этап 2: Клиринг

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

Клиринг в цепочке или вне цепочки.

Последний важный вопрос состоит в том — кто будет выбирать победителей из общего пула ставок. В модели FCFS эта задача ложится на майнеров. У такого варианта, как мы уже говорили, есть ряд недостатков.

В модели Jay Peg вычислительная сложность является достаточно низкой, чтобы делать это в цепочке, без необходимости доверять третьей стороне.

Модель SpankChain подразумевает определение победителей вне цепочки.

Однако, несмотря на то что цена исполнения не может быть выше максимальной цены, указанной пользователем (это гарантирует смарт-контракт), участникам все еще необходимо полагаться на то, что оператор не будет пытаться исполнить заявки по максимально возможной цене (похожим образом работают “сэндвич-атаки” на децентрализованные биржи).

Наиболее простым с точки зрения клиринга является формат розыгрыша, поскольку все что вам нужно — это одно случайное число (например из VRF Chainlink).

Однако это также требует определенной степени доверия к источнику “случайности”: сторона, ответственная за рандомизацию, может использовать ее в корыстных целях. Для сравнения, это невозможно в случае, если выигрышной считается самая высокая ставка.

Этап 3: Распределение

По завершении расчетов, оператор должен выпустить токены, передать их пользователям и вернуть средства по проигрышным ставкам (если выбранная модель подразумевает возврат средств).

Основные задачи на данном этапе — минимизировать издержки и не допустить гонки среди участников.

Мгновенное или поэтапное распределение

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

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

Однако желание пользователей как можно быстрее узнать метаданные своих токенов или их стремление быть первыми, кто продаст их на вторичном рынке, могут все равно привести к гонке во время распродажи. Поэтапная модель распределения токенов также увеличивает время ожидания для пользователей.

Как победители будут получать токены?

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

Второй вариант является вариацией поэтапного распределения, но его преимущество в том, что пользователям не требуется совершать никаких действий самостоятельно.

Проекту Parallel удалось эффективно реализовать этот метод — оплачивая токены, пользователи должны были дополнительно внести “плату за доставку”.

Этап 4: Раскрытие метаданных

Наконец, когда все токены распределены, могут быть раскрыты метаданные.

Из всех четырех этапов дропа, это всегда должно происходить в последнюю очередь.

Нельзя также совмещать этот этап с каким-либо другим (как в случае с Meebits, где оплата, распределение и раскрытие происходили в рамках одной транзакции). В противном случае у пользователей появится возможность “поменять” предметы с неудачными атрибутами путем отмены транзакций.

Чтобы избежать этого, между оплатой токена и раскрытием метаданных должен быть промежуток, равный как минимум одному блоку (при необходимости, этот промежуток можно увеличить).

Когда следует раскрывать метаданные?

Мы выяснили, что выпуск NFT и раскрытие метаданных не могут осуществляться одновременно. Поэтому далее нам необходимо решить, когда следует раскрывать метаданные? Это важно не только с точки зрения справедливого распределения, но и с точки зрения снижения издержек и улучшения пользовательского опыта.

В целом, здесь есть три варианта:

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

Для данного подхода характерны низкие издержки, так как для перетасовки метаданных для ID каждого билета здесь используется только одно случайное число, а пользователям не нужно совершать никаких дополнительных действий.

Однако у него есть существенные недостатки.

В частности то, что пользователям необходимо будет ждать окончания дропа, прежде чем они смогут узнать метаданные своих токенов.

Если промежуток, в течение которого можно раскрыть метаданные, ограничен (например, 24 часа), некоторые пользователи могут не успеть сделать это вовремя. Это может привести к тому, что коллекция будет распродана не полностью.

Также оператор может позволить пользователям раскрывать метаданные каждого NFT по отдельности.

Такой подход способствует созданию более увлекательного пользовательского опыта, так как участники могут “открыть” свои предметы вскоре после покупки. Это также позволяет продавать “нераспакованные” предметы на вторичном рынке (торговля такими предметами весьма популярна в коллекционных карточных играх).

Однако этот метод требует того, чтобы пользователи совершали дополнительные транзакции в цепочке, например, вызывали Chainlink VRF и применяли случайное число к своему NFT. Это неизбежно даже для тех пользователей, которые не торопятся узнать характеристики своего NFT и не планируют продавать “запакованные” предметы.

В качестве компромиссного решения, мы предлагаем “пакетное” раскрытие метаданных.

В данной модели пользователи могут выпустить токены в течение неограниченного периода времени. У них также есть возможность “открыть” свой предмет в следующем блоке, если они захотят. Каждое новое запрошенное случайное число автоматически раскрывает метаданные всех токенов, которые уже были выпущены и ожидают назначения метаданных.

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

Способы рандомизации

Решив вопрос с раскрытием метаданных, нам необходимо понять, каким образом будет обеспечиваться рандомизация характеристик предметов. Здесь мы можем предложить два варианта: использовать Chainlink VRF VRF  или схему “фиксация-раскрытие” (“схема обязательства”).

В первом случае мы используем проверяемый источник случайных чисел в цепочке. Вы можете сгенерировать случайное число с помощью Chainlink и использовать его для расчета метаданных независимо от выбранной модели раскрытия. Благодаря этому каждый NFT будет иметь действительно случайный набор характеристик.

Во втором случае оператор может создать одно случайное число (для одновременного раскрытия метаданных) или несколько случайных чисел (для двух других моделей) перед началом распродажи и предварительно зафиксировать их хэш.

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

Чтобы свести к минимуму необходимость в доверии, мы рекомендуем все же применять некоторую независимую рандомизацию в порядке выпуска токенов.

Кроме того, в случае хранения метаданных вне цепочки, вместо того чтобы фиксировать случайное число, операторы могут зафиксировать хэш полных метаданных (ID и соответствующие атрибуты всех NFT) Это гарантирует предопределенность метаданных и то, что их нельзя будет изменить в процессе или после выпуска NFT.

Тем не менее, для того чтобы операторы не могли воспользоваться знаниями о порядке и атрибутах, все еще необходима независимая рандомизация порядка выпуска токенов.

Наша эталонная реализация

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

Торги: в нашем варианте дропа используется модель розыгрыша — пользователи делают ставки, покупая билеты. Продолжительность розыгрыша определяется оператором (мы рекомендуем 24-48 часов).

Цена билета включает в себя стоимость газа и цену за токен, которую устанавливает оператор. Последняя действует как “страховой депозит” и возвращается по всем проигравшим билетам после клиринга.

Устойчивость к sybyl-атакм достигается тремя способами: комиссии за транзакцию, капитальные расходы на блокировку средств и ограничение максимального количества билетов на один адрес.

Клиринг: после завершения торгов из пула всех билетов должно быть выбрано количество победителей, равное количеству доступных NFT.

Сперва любой участник может вызвать функцию “сollectentropy()”, чтобы получить случайное число из VRF Chainlink.

Случайное число затем используется в функции “shuffleEntries()”, которая выполняет тасование Фишера-Йетса. Эту функцию может вызвать любой желающий, что гарантирует жизнеспособность системы и “социализирует” затраты на газ.

Распределение: после подведения итогов, у пользователей есть неопределенный срок, чтобы получить свои NFT в случае выигрыша и вернуть средства в случае проигрыша.

И то, и другое происходит в рамках одной транзакции. Теперь оператор может начать выводить средства, вырученные от выигрышных билетов.

Раскрытие метаданных: пользователи могут раскрыть метаданные своих NFT через один блок после клейма.

Любой желающий может запросить новое случайное число, которое автоматически отображает метаданные всех выпущенных предметов, которые ожидают назначения метаданных. Это позволяет пользователям за определенную плату раскрыть метаданные своего NFT как можно раньше.

Заключение

В этой статье мы рассмотрели реальные примеры того, как непродуманный дизайн NFT-дропа ведет к плачевным последствиям для пользователей. Однако, четко определив цели и тщательно разобрав все этапы дропа, мы получим большое количество возможных вариантов дизайна, практически каждый из которых превосходит популярные сегодня FCFS распродажи с фиксированной ценой.

Мы настоятельно рекомендуем обратить внимание как минимум на три следующих правила:

  • Главными качествами хорошего дропа NFT со случайными атрибутами являются справедливое распределение и отсутствие возможностей для применения эксплойтов. Используйте надежный источник рандомизации и раскрывайте метаданные токена только после того, как он был куплен и получен пользователем.
  • В случае возникновения гонки среди пользователей, страдают не только участники распродажи, но и другие пользователи сети. Чтобы избежать этого, торги и клиринг должны осуществляться последовательно (например, в формате розыгрыша или группового аукциона).
  • С самого начала думайте о снижении издержек. Если какой-либо из этапов дропа может быть осуществлен вне цепочки, то это стоит сделать, чтобы сэкономить деньги ваших пользователей. Помимо процесса торгов, вне цепочки также можно проводить расчеты, при условии, что пользователи могут в той или иной степени положиться на добросовестность оператора. Также стоит рассмотреть вариант “пакетного” раскрытия метаданных.

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

Наконец, мы хотим поблагодарить тех, кто делился своими знаниями с NFT-сообществом, помогая улучшить качество дропов:

  • Виталика — за разбор недостатков FCFS распродаж с фиксированной ценой;
  • FairDrop — за то, что поделились своим дизайном розыгрышей на основе proof-of-concept;
  • dotta — за рекомендации по созданию надежного интерфейса;
  • Jay Pegs Auto Mart и SpankChain — за демонстрацию инновационных моделей аукциона;
  • Parallel — за демонстрацию эффективных методов проведения off-chain розыгрышей;
  • 0xmons — за рекомендации и инструменты для проектирования качественных дропов.

С оригинальным материалом вы можете ознакомиться здесь.

Канал в Telegram: Рады подарить вам постоянную скидку 20% на спотовые комиссии на бирже Binance:

(по ссылке вы получите постоянную скидку 20% на спотовые комиссии и 10% в секции фьючерсов на бирже Binance, возможна покупка криптовалюты с карт Visa/Mastercard/МИР и платежных систем Qiwi и других)

А вы когда-нибудь принимали участие в дропах NFT? Расскажите о своем опыте в комментариях.

  • Наша методика расчета рейтинга учитывает следующие параметры: объем торгов за 24 часа, индекс доверия и соотношение числа положительных отзывов к общему числу отзывов.