Игра Криптокотики (Cryptokitties), стартовавшая на блокчейне Эфириума 30 ноября, превратилась в настоящую эпидемию: на утро 4 декабря коты пожирают 12% всех газ-комиссий Эфириума, оставив позади таких старожилов, как биржи EtherDelta и Shapeshift. Более того, коты больно укусили кошельки тех пользователей Эфириума, которые не только не собирались в них играть, но и ничего не слышали об этой игре. Минимальная гарантированная цена газа выросла на порядок, с 0.1 до 4 Gwei, а заполняемость блоков приблизилась к 100%, что привело к значительном увеличению времени прохождения транзакций. Кульминацией безумия стала продажа кота нулевого поколения номер 1 за 246 ETH, а Reddit взорвался однотипными мемами:
Вот так и начинался интернет, не стоит недооценивать силу картинок с котиками.
Криптокотики стали очередной демонстрацией основной слабости нынешнего блокчейна Эфириума – отсутствия масштабируемости и низкой пропускной способности сети. Конечно, сайдчейны Raiden и Plasma легко решат эту проблему, но до их полноценного запуска остается не менее полугода. К тому же, очень скоро вслед за котиками последуют и гораздо более ресурсоемкие приложения.
Криптокотики «вытащили из-под дивана» еще одну критическую проблему Эфириума: централизованные DApps. Почему-то многие по умолчанию считают, что приложения Эфириума являются такими же децентрализованными как и блокчейн, а это совсем не так. Изучение контрактов игры позволяет сделать некоторые выводы.
Криптокотики не вечны, а не все DApps децентрализованы
То, что приложение на основе смарт-контрактов выполняется на децентрализованном блокчейне, не делает его децентрализованным – логика смарт-контракта вполне может сделать его полностью зависимым от владельца.
Всего одна команда может заморозить мир криптокотиков
Права собственнсти на всех котиков содержатся в единственном контракте, размещенном на блокчейне: KittyOwnership. К счастью, в этом контракте отсутствует недоброй памяти функция selfdestruct, так что владелец не может его уничтожить, однако заморозка контракта вполне в его силах:
function pause() external onlyCLevel whenNotPaused {
paused = true;
}
Владелец контракта может включить паузу ни у кого не спрашивая разрешения, и тогда все существующие криптокотики погрузятся в сон, возможно вечный.
Dapp – это не блокчейн. Нельзя уничтожить или повредить Эфириум одной командой, и даже если какой-либо узел задумает сделать что-нибудь самоубийственное, другие узлы продолжат работу. Однако это не значит, что контракт CryptoKitties обладает этим же свойством. Есть только одна версия контракта KittyOwnership, и права собственности на него принадлежат единственному адресу Эфириума.
Уникальность криптокотика сомнительна
Одна из базовых концепций криптокотиков заключается в том, что их можно размножать, в надежде получить редкого и дорогого кота. Однако контракт GeneScience, контролирующий результат кошачьей любви, не только не имеет открытого исходного кода (верифицируемого на Etherscan), но компания-производитель может модифицировать его в любой момент.
function setGeneScienceAddress(address _address) external onlyCEO {
GeneScienceInterface candidateContract = GeneScienceInterface(_address);
Это значит, что директор CryptoKitties может заменить алгоритм размножения, например, увеличив количество котов нулевого поколения, или дать преимущество определенным экземплярам перед другими. Владелец 100% уникального кота может внезапно обнаружить себя в компании 1000 других владельцев точно таких же котов.
Конечно, скорее всего, владельцы контракта криптокотиков никогда не сделают ничего подобного, однако это не меняет того факта, что кто-нибудь может сделать это в будущем.
Другими словами, уникальность котиков обеспечивается лишь социальным соглашением.
У вашего криптокотика может появиться второй хвост
Держать и передавать данные на блокчейне Эфириума стоит дорого, поэтому Dapps содержат лишь необходимый минимум логики и данных. Уникальность криптокотика задается единственным неподписанным целым числом: uint256 genes, а код, превращающий его в изображение и задающий внешность, цвет и прочие свойства, содержится на централизованном сервере, под контролем компании, которая в любой момент может в одностороннем порядке изменить интерпретацию генов: добавить второй хвост, изменить цвет, и даже превратить котика в пса (Doge!)
Блокчейн гарантирует лишь право собственности на токен стандарта ERC-721 (невзаимозаменяемый токен), содержащий гены, но это не значит, что владельцу токена полностью принадлежат данные, генерирующие котика.
Так быть не должно
У авторов CryptoKitties не было никакого злого умысла. Они создали отличное приложение, исходя из существующей сегодня крайне ограниченной инфраструктуры сети. Их приложение привлекло большое количество новых пользователей Эфириума, да и вряд ли они рассчитывали на такой успех.
Конечно, идеальное приложение должно полностью располагаться на блокчейне, а данные – храниться в распределенной файловой сети и передаваться через верифицированные оракулы. Более того, данные должны быть не только децентрализованы, но и полностью принадлежать своим владельцам. Однако, в сегодняшней сети это невозможно, ведь если первая, облегченная версия криптокотиков так перегрузила сеть, то потребности в ресурсах такого идеального приложения вообще находятся за рамками пропускной способности нынешнего Эфириума. Так что проблема масштабирования сети снова выходит на первый план: скорейший переход на полноценный PoS (гибридный PoS не увеличит пропускную способность) и шардинг. Правда, существенную помощь в самое ближайшее время котикам смогут оказать компромиссные технологии Raiden и Plasma, ну а пока остается лишь рассчитывать на социальное соглашение с авторами Cryptokitties.