Смарт-контракты. Часть 2.

Смарт-контракты. Часть 2.

М

Продолжаем о смарт-контрактах.

История успеха: ICO

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

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

Теперь Олег — мастер по производству милых плюшевых акул. Вот таких:

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

Олег создаёт смарт-контракт, в котором описывает акула-коин, для этого уже есть даже готовый стандарт — ERC20. Смарт-контракт для токена абсолютно банален, в нём описаны функции «купить», «продать», «передать» и «баланс». Когда кто-то посылает на контракт транзакцию с деньгами (Эфирами), внутри смарт-контракта в простой словарь записывается «такой-то кошелек владеет столькими-то акула-коинами». Этот словарь хранится прям в блокчейне, в том самом «хранилище Ethereum», то есть виден всем желающим.

Олег загружает его в блокчейн через Ethereum Wallet и уже может идти писать на форумы «ребята, покупайте мои токены». На хайпе кто-нибудь даже купит себе парочку, как в истории с Useless ICO, где чувак решил собрать себе денег на новый компьютер, а собрал десятки тысяч долларов. Это похоже на выпуск акций, но еще не является полноценным ICO. Это скорее донаты за виртуальное вознаграждение.

ICO-профессионалы сейчас возмутятся, мол, где же Вайтпейпер, где модный Лендинг со списком Адвайзеров, договор с Биржей и тред с краденого аккаунта на БиткоинТолке. Да, всё это пригодится, но к технической стороне не имеет никакого отношения.

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

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

Такой контракт тоже нельзя изменить после загрузки в сеть, ведь этим гарантируется честность ICO. Зато теперь он работает только в установленные автором сроки и потом можно создать новый, устроив новый раунд или распродажу. При проведении ICO стандартной практикой является загрузка контракта в сеть заранее, чтобы пользователи успели с ним ознакомиться. Еще популярно делать pre-sale, создавая временный контракт со скидкой, который можно будет вызвать только в ограниченный срок перед продажей. Это подогревает активность участников.

После ICO акула-коины существуют по сути только как записи внутри контракта. Технически как банальный словарь {Иван: 20 коинов, Олег: 100 коинов}, который теперь навсегда записан в глобальном хранилище. У циферок в словаре нет никакой плавающей цены, потому что их нельзя покупать или продавать — можно только передать или подарить кому-то.

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

Вот так в двух словах устроено ICO. Году в 2016 его даже можно было провести по этому описанию. Сейчас же на этот рынок прибежали Важные Дядиtm и правила игры стали сильно сложнее. Но как пример полезных смарт-контрактов ICO офигенен.

История провала: The DAO

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

Шел 2016 год, ICO еще не было массовым явлением, но Ethereum-коммьюнити уже было вдохновлено идеей тотального краудфаундинга через смарт-контракты. Тогда родился проект Decentralized Autonomous Organization. The DAO был по сути большой смарт-контракт, в котором были заложены механизмы классического инвестиционного фонда: участники вносят свои деньги, получают свою долю, с помощью голосования выбирают в какие проекты вложить собранные средства, чтобы потом срубить профит.

Смарт-контракт был гарантией, что никто никого не обманет и вообще будет полная демократия. В нём учли даже вариант, что некоторые участники захотят выйти из DAO и организовать собственные фонды. Например, если они не согласны с выбором проектов или просто хотят сами поиграть в инвесторов. Децентрализация внутри децентрализации — криптоанархисты в восторге.

Запуска The DAO ждали почти все, так что сразу после запуска в «фонд» прислали около $165 млн (а по текущему курсу Эфира это более $4.3 млрд). Это было большим событием в коммьюнити, даже сам Виталик поручился за его успех.

Через неделю после запуска, в коде смарт-контракта на GitHub нашли ошибку, в том самом месте, где реализовывалась логика «выйти и забрать свою долю из фонда». Всем нам знакомый Race Condition — операция возврата средств выполнялась не атомарно, а в языке смарт-контрактов отсутствуют Mutex'ы. fixed: На самом деле суть дыры заключалась в том, что вместо адреса получателя доли можно было передать адрес другого смарт-контракта, который внутри себя мог попробовать еще раз запросить возврат средств до того, как главный контракт зафиксирует первый возврат у себя. И так рекурсивно вывести всё.

Так злоумышленники вывели на свои счета более $65 млн. Началась паника. Даже несмотря на то, что дыра была не в Ethereum, а в коде смарт-контракта, истерия обрушилась на самих создателей Ethereum. Толпа требовала «всё закрыть и откатить», а это просто невозможно в блокчейне. Безвыходная ситуация — ты вроде сделал хорошо, а всё равно виноват.

Это краткий пересказ истории с The DAO, за подробностями можно пройти в статью крах The DAO и разделение Ethereum.

Выхода было два: подарить злоумышленникам украденные деньги и смириться, либо «остановить» блокчейн, обновив все клиенты, откатиться до ранних блоков и запустить всё заново — по сути разделить блокчейн, сделать хард-форк. Был выбран второй вариант. Так появилось два блокчейна — Ethereum и Ethereum Classic.

Это был сильный удар по сообществу. Многие до сих пор не могут принять такое стороннее вмешательство в их независимый децентрализованный мир. «Если создатели в любой момент могут поступить так с нашими деньгами — как мы можем доверять такому блокчейну», кричали они на форумах и реддите, и были в чем-то правы. Представляю каково было простым пользователям, которые в это время купили ETH где-нибудь в обменнике.

Очень неприятная история. Зато теперь, когда вы захотите отделаться от приставшего на улице криптоанархиста, просто прокричите ему в лицо пару раз «The DAO» и «ХАРДФОРК». Он упадёт и заплачет.

А вот про «пузырь», «пирамиду» и «МММ» не кричите. Это давно никого не задевает вообще.

Есть популярная аналогия: «Bitcoins is Gold, Ethereum is Oil».


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

Ethereum — это нефть (хотя мне больше по вкусу аналогия с Электричеством). Нефть можно добывать не только ради продажи. Вы всегда сможете использовать её для отопления, получения энергии или бензина для работы техники и заводов. Даже если никто не захочет покупать вашу нефть, она решает реальные прикладные задачи — помогает людям существовать и выживать. Как и электричество.

Мне нравится эта аналогия. Она показывает, что между Биткоином и Эфиром нет конкуренции — никто ведь не скажет, что завтра нефть сможет заменить золото или наоборот. Это два независимых ресурса, которые могут двигать всех нас вперед. А могут и рухнуть завтра как Римская Империя. Кто знает.

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


Report Page