+

Как мы заработали 100 тысяч долларов на торговле CryptoKitties

10.05.2018

Кот-основатель №4, главный герой этой истории.

Наверное, каждый уже слышал про милую игру CryptoKitties, внезапная популярность которой привела к перегрузке всей сети Ethereum. Мы расскажем свою инсайдерскую историю о том, как мы заработали 107 тысяч долларов, вложив средства в этих цифровых котят, и совершили рекордно крупную сделку по их продаже (на момент подготовки статьи она считается второй по величине в истории проекта). Игры в спекуляцию на волне всеобщего ажиотажа были увлекательными, но разработка арбитражного бота, который впоследствии принес нам еще 8 тысяч, оказалась достаточно непростой с технической точки зрения задачей, и рассказ о нем может быть интересен тем, кто увлекается блокчейн-разработкой в целом.

Как-то раз субботним вечером (а именно 2 декабря прошлого года), играясь со своими смарт-контрактами в Ethereum, я заметил некоторые неполадки: транзакции зависли, а их подтверждение занимало непривычно много времени. Я быстро выяснил, что количество операций в режиме ожидания оказалось в 10-20 раз больше обычного, и многие переводы были сделаны на один и тот же загадочный адрес, 0x06012..66d. Вот так я впервые узнал о нашумевшей игре CryptoKitties.

Инвестиционные возможности

На следующее утро я позвонил своему близкому приятелю Олегу Остроумову, главе российского криптовалютного хедж-фонда, чтобы обсудить это необычное явление. У меня игра просто вызвала любопытство, однако Олег сразу увидел в ней хорошую возможность для инвестиций. Во-первых, мы явно были одними из первопроходцев; во-вторых, у CryptoKitties были все шансы стать вторым Pokemon Go, а в-третьих, проект явно находился в самом начале периода резкого роста.

Вопрос заключался в том, каких именно котят следовало купить. Рассортировать их можно было по четырем критериям: по возрастанию или убыванию цены, а также по более поздней или более ранней дате создания (структура сайта с тех пор изменилась). Первые три варианта явно были временными: более дешевого, дорогого или нового котенка всегда можно выставить на продажу, но самые первые, точно как бриллианты, останутся таковыми навсегда. Мы решили купить котиков из первой десятки, хотя цены на них уже тогда были весьма внушительными: на тот момент кто-то только-только скупил их за 25 ETH и выставил на продажу уже за 50 ETH. Кот-основатель №1 стоил еще дороже: за него просили 150 ETH.

Олег купил котов-основателей под номерами 4, 6 и 8. Каждый из них обошелся ему в 50 ETH (25 000 долларов), а я выкупил у него двадцатипроцентную долю кота-основателя №4 за 5 000 долларов. Мы были преисполнены оптимизма и выставили котят на продажу за 250 ETH, подняв цену в пять раз.

Отмечу, что мы потратили на это около часа, так как установили слишком низкую цену на газ (Gas Price) и были вынуждены переустановить плагин MetaMask, у которого на тот момент еще не было функции повторного совершения перевода с повышенной Gas Price. Урок мы усвоили: совершая сделку на 25 тысяч долларов, не стоит пытаться сэкономить двадцатку на комиссии.

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

Тонкое искусство своевременного выхода из игры

В последующие дни, со 2 по 5 декабря, игра вошла в фазу взрывного роста. Сосредоточиться на чем-то еще было очень сложно. Такое сумасшествие явно не могло продлиться долго: механика игры была намного проще, чем у того же Pokemon Go, и подразумевала всего две функции – покупки или разведения котят. Мы предположили, что вся эта история продлится не дольше пары недель, поэтому нам нужно было заранее задуматься о разумной стратегии выхода и придерживаться ее.

Статистика популярности запроса «cryptokitties» в Google Trends. Разбивка по странам тоже выглядит очень интересно.

Для этого мы воспользовались тремя показателями. Первый из них, статистка Google Trends по запросу «cryptokitties», помог определить уровень популярности игры исходя из того, как часто люди ищут информацию о ней. Вторым инструментом стали данные сервиса GasGuzzlers, показавшие, какие смарт-контракты потребляют больше всего газа и в каких именно объемах. Когда мы вошли в игру, для CryptoKitties эта цифра составляла 4%, а на пике популярности игры она достигала 20%. Третьим способом отслеживать рыночные условия и суммы последних сделок было очень удобное приложение https://kittysales.herokuapp.com/.

4 и 5 декабря менее престижные котята под номерами 35, 78 и 87 продавались почти за 200 ETH, поэтому мы были уверены в правильности своей цены. Несмотря на это, 5 и 6 декабря каждый из вышеперечисленных показателей достиг максимальной отметки, и к вечеру 6 декабря уровень популярности устремился вниз. Заметив эту динамику, мы срочно созвонились и попытались решить, что делать с котятами: ни один из них пока не продался. Я предлагал снизить цену до 100 ETH, но Олег настаивал на первоначально установленной цифре в 250 ETH. С учетом наших разногласий очевидным выходом стал арбитраж: я продал Олегу свои 20% исходя из оценочной стоимости в 100 ETH, и тем самым удвоил свои вложения. Я еще не знал, что восторг от удачной сделки развеется уже через каких-то 20 минут.

Коты-основатели №18 и №4 лидируют в рейтинге kittysales.herokuapp.com

Из любопытства я продолжал следить за рынком. Через 20 минут после того, как Олег выкупил мою долю, я увидел, как нашего кота-основателя №4 продали за 250 ETH. Я был уверен, что это дело рук Олега, поэтому даже не потрудился задать ему этот вопрос. Когда же я наконец получил на него ответ, то в полной мере оценил силу стратегии удерживания активов: сделка оказалась настоящей. Мы не знали, кто был покупателем, но он только что поставил мировой рекорд по стоимости покупки предмета коллекционирования на блокчейне.

Статистика самых популярных Ethereum-контрактов в GasGuzzlers. Нынешняя доля в 0,92% – всего лишь отголосок былых 25%.

Автоматический арбитраж

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

• определение группы котят, имеющих примерно одну и ту же цену. Мы ориентировались на такие параметры, как Rarity, Cooldown и Generation (только котята нулевого и первого поколений стоили достаточно, чтобы игра вообще стоила свеч). Котята с одинаковыми значениями вышеназванных параметров считались эквивалентными. Привлекательный внешний вид питомца и различные «кототеристики» (Cattributes) при этом не учитывались;
• покупку недооцененных лотов в каждой из групп. Мы выкупали самых дешевых котят, отвечающих каждому из заданных параметров;
• перепродажу купленных лотов по более высокой цене. Мы хотели избежать соперничества с другими потенциальными перекупщиками в гонке за самой низкой ценой, поэтому выставляли каждого котенка по цене чуть ниже, чем у следующего по стоимости, действуя по принципу аукциона второй цены от Google.

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

• попытаться выкупить котенка в том же блоке при обнаружении транзакции, требующей подтверждения. В этом случае можно запустить транзакцию для покупки с меньшим вознаграждением (например, 24,999 GWEI против предусмотренных 25) или же оставить его неизменным. В первом случае есть риск не попасть в текущий блок, и тогда транзакция может зависнуть на несколько часов, а во втором майнеры могут поместить ваш ордер на покупку перед ордером на продажу котенка, и тогда транзакция сорвется;
• подождать подтверждения лота и незамедлительно выкупить его, установив очень высокое вознаграждение, гарантируя тем самым подтверждение транзакции в следующем блоке.

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

Краткий псевдокод для арбитражного бота

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

Итоги

Прошло уже больше месяца и хайп вокруг криптокотят улегся, как вдруг мы получили неожиданный приятный сюрприз: кто-то приобрел нашего кота №6. Его стоимость в 29 ETH была ниже изначальной цены, по которой мы его купили, но все-таки это были хорошие деньги, к тому же Ethereum тогда подорожал в два раза.

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

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

Что же до 5 тысяч долларов, вырученных благодаря этой авантюре, то я передал их летнему лагерю Московского Центра Непрерывного Математического Образования, который сам посещал в старших классах, и «Фонду свободы прессы». Благодаря щедрости Google и их программе > Match Program, я и здесь смог удвоить свои вложения.