«Вы думаете, что владеете NFT, но это просто картинка, которая лежит на сервере» — нашумевший пост основателя Signal

Мокси Марлинспайк (криптограф и основатель защищенного мессенджера Signal) написал в своем блоге пост о том, что с популярным сегодня web3 и крипто миром все не так сладко.

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

Что я думаю про web1 и web2

Web3 — немного двусмысленный термин, но общий тезис таков: web1 был децентрализованным, потом web2 централизовал все в платформы, а теперь web3 снова все децентрализует. Web3 должен дать нам все богатство web2, только децентрализованное.

Но для начала давайте разберемся, почему вообще возникли централизованные платформы. На мой взгляд, объяснение довольно простое:

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

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

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

2. Протоколы развиваются гораздо медленнее, чем платформы. Спустя 30 с лишним лет электронная почта все еще остается незашифрованной; в то же время WhatsApp за год внедрил полное e2ee шифрование. Люди все еще пытаются стандартизировать надежную передачу видео через IRC; тем временем Slack позволяет вам создавать кастомные эмодзи на основе вашего лица.

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

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

Но в web3 предполагается, что все будет иначе. Так что давайте посмотрим.

Чтобы быстро почувствовать этот мир и лучше понять, что может ждать нас в будущем, я решил построить пару dApp и создать NFT.

Как я создавал dApps (распределенные приложения)

Чтобы прочувствовать мир web3, я создал dApp под названием Autonomous Art, который позволяет любому получить NFT-токен, делая визуальный вклад в изображение. Стоимость визуального вклада увеличивается со временем, а средства, которые вкладчик платит за токен, распределяются между всеми предыдущими художниками (визуализация этой финансовой структуры напоминает нечто похожее на пирамиду). На момент написания этой статьи на создание этого коллективного произведения искусства было потрачено более $38 000.

Я также создал dApp под названием First Derivative, который позволяет создавать, обнаруживать и обменивать производные NFT, отслеживающие базовый NFT, подобно финансовым деривативам, отслеживающим базовый актив 😉.

И то, и другое дало мне представление о том, как устроен этот мир. Для ясности, в самих приложениях нет ничего особенно «распределенного»: это обычные веб-сайты, написанные на react. «Распределенность» относится к тому, где хранится состояние и логика/разрешения для обновления состояния: на блокчейне, а не в «централизованной» базе данных.

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

С переходом на мобильные устройства мы теперь живем в мире клиентов и серверов — причем первые совершенно не могут действовать как вторые — и сейчас это особенно важно. Между тем, ethereum фактически называет серверы «клиентами», и нет даже слова, описывающего фактически ненадежный интерфейс клиент/сервер, который должен будет где-то существовать, и нет признания того, что в случае успеха в конечном итоге клиентов будет на миллиарды (!) больше, чем серверов.

Например, независимо от того, работает ли оно на мобильном или веб-приложении, dApp вроде Autonomous Art или First Derivative должно как-то взаимодействовать с блокчейном, чтобы изменять или отображать состояние (коллективно созданное произведение искусства, историю его редактирования, производные NFT и т.д.). Однако это невозможно сделать с клиента, поскольку блокчейн не может жить на вашем мобильном устройстве (или в браузере вашего компьютера). Поэтому единственная альтернатива — взаимодействовать с блокчейном через ноду, которая работает удаленно на каком-то сервере.

На сервере! Но, как мы знаем, люди не хотят управлять собственными серверами. Так получилось, что появились компании, которые продают API-доступ к ethereum-ноде как услугу, наряду с предоставлением аналитики, расширенными API, которые они создали поверх стандартных API ethereum, и доступом к историческим транзакциям. Звучит знакомо, не так ли?

На данный момент существует, по сути, две компании — Infura и Alchemy. Почти все dApp используют Infura или Alchemy для взаимодействия с блокчейном. На самом деле, даже когда вы подключаете к dApp такой кошелек, как MetaMask, и dApp взаимодействует с блокчейном через ваш кошелек, MetaMask просто выполняет вызовы Infura!

Эти клиентские API не используют ничего для проверки состояния блокчейна или подлинности ответов. Результаты даже не подписаны. Такое приложение, как Autonomous Art, говорит: "Эй, что выводит эта функция на этом смарт-контракте?", а Alchemy или Infura отправляют JSON-ответ, который и отображает приложение.

Для меня это было удивительно. Столько труда, энергии и времени было потрачено на создание механизма распределенного консенсуса без доверия, но практически все клиенты, желающие получить к нему доступ, делают это, просто доверяя ответам этих двух компаний без какой-либо дополнительной проверки. Это также создает проблемы и с конфиденциальностью. Представьте, что каждый раз, когда вы взаимодействуете с веб-сайтом в Chrome, ваш запрос сначала отправляется в Google, а затем направляется к месту назначения и обратно. Такова ситуация с ethereum сегодня. Понятно, что все записи публично доступны на блокчейне, но эти компании также видят почти все запросы на чтение от почти всех пользователей почти всех dApp.

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

Приведу пример.

Как я создавал NFT

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

Вместо этого, NFT содержат URL-адрес, указывающий на данные. Что меня удивило, так это отсутствие хэш-шифрования для данных, расположенных по URL. Если посмотреть на многие NFT на популярных маркетплейсах, которые продаются за сотни тысяч и даже миллионы долларов, этот URL часто просто указывает на какой-то VPS [виртуальный сервер], на котором работает обычный Apache. Любой человек, имеющий доступ к этому серверу, или кто купит этот домен в будущем, или кто взломает этот сервер, может в любой момент изменить изображение, заголовок, описание и т.д. для NFT на то, что он захочет (независимо от того, «владеет» он токеном или нет). В спецификации NFT нет ничего, что говорило бы о том, каким «должно быть» изображение, или даже позволяло бы вам подтвердить, является ли что-то «правильным» изображением.

Поэтому в качестве эксперимента я сделал NFT, который меняется в зависимости от того, кто на него смотрит, поскольку веб-сервер, обслуживающий изображение, может выбирать разные изображения в зависимости от IP или User Agent запрашивающего. Например, на OpenSea она выглядит по-одному, на Rarible — по-другому, но когда вы покупаете ее и просматриваете из своего крипто-кошелька, она всегда будет отображаться как большой 💩 эмодзи. То, что вы покупаете, не является тем, что вы получаете. В этом NFT нет ничего необычного, там используется обычная спецификация NFT. Многие из самых дорогих NFT могут превратиться в 💩 эмодзи в любое время; я просто сделал это явным.

Через несколько дней, без предупреждения или объяснения, NFT, который я сделал, был удален из OpenSea:

«Вы думаете, что владеете NFT, но это просто картинка, которая лежит на сервере» — нашумевший пост основателя Signal

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

Но наиболее интересно, что после того, как OpenSea удалил мой NFT, он также пропал из всех крипто-кошельков на моих устройствах. Это же web3, как такое возможно?

Крипто-кошелек, такой как MetaMask, Rainbow и т.д., является "non-custodial" (ключи хранятся на стороне клиента), но у него есть та же проблема, что и у моих dApps выше: кошелек должен работать на мобильном устройстве или в браузере. Между тем, ethereum и другие блокчейны были разработаны с идеей, что это сеть равных, но не разработаны таким образом, чтобы было действительно возможно, чтобы ваше мобильное устройство или ваш браузер были одним из этих равных.

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

Например, вот так MetaMask отображает ваши последние транзакции, совершая API-вызов к etherscan:

GET https://api.etherscan.io/api?module=account&address=0x0208376c899fdaEbA530570c008C4323803AA9E8&offset=40&order=desc&action=txlist&tag=latest&page=1 HTTP/2.0

Вот так он отображает баланс вашего счета, совершая API-вызов к Infura:

POST https://mainnet.infura.io/v3/d039103314584a379e33c21fbe89b6cb HTTP/2.0 { "id": 2628746552039525, "jsonrpc": "2.0", "method": "eth_getBalance", "params": [ "0x0208376c899fdaEbA530570c008C4323803AA9E8", "latest" ] }

А вот так — отображает ваши NFT, делая вызов API к OpenSea:

GET https://api.opensea.io/api/v1/assets?owner=0x0208376c899fdaEbA530570c008C4323803AA9E8&offset=0&limit=50 HTTP/2.0

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

MetaMask на самом деле не делает ничего особенного, это просто просмотр данных, предоставляемых этими централизованными API. Это не проблема конкретно MetaMask — Rainbow и другие устроены точно так же. (Интересно, что Rainbow имеет свои собственные данные для социальных функций, которые они встроили в свой кошелек — социальный граф, витрины и т.д. — и они решили построить все это на Firebase, а не на блокчейне).

Все это означает, что если ваш NFT будет удален из OpenSea, он также исчезнет из вашего кошелька. Функционально не имеет значения, что мой NFT находится где-то на блокчейне, потому что кошелек (и все больше и больше всего остального в экосистеме) просто использует API OpenSea для отображения NFT, который начал возвращать 304 No Content для запроса NFT, принадлежащих моему адресу!

Воссоздание этого мира

Учитывая историю превращения web1 в web2, мне кажется странным, что такие технологии, как ethereum, были построены со многими теми же скрытыми проблемами, что и web1. Чтобы сделать эти технологии пригодными для использования, пространство консолидируется вокруг платформ. Опять. Платформы, которые будут запускать для вас серверы и предоставлять сервисы на их базе. Infura, OpenSea, Coinbase, Etherscan.

Аналогично, протоколы web3 развиваются медленно. При создании First Derivative было бы здорово установить цену майнинга деривативов как процент от стоимости базового актива. Этих данных нет в блокчейне, но они есть в API, который OpenSea предоставит вам. Люди в восторге от роялти NFT, поскольку это поможет зарабатывать креаторам, но роялти не указаны в ERC-721, и менять это уже поздно, поэтому у OpenSea есть свой способ настройки роялти, который существует в web2-пространстве. Быстрые итерационные улучшения на централизованных платформах уже опережают распределенные протоколы, и это консолидирует контроль на платформах.

Учитывая эту динамику, не стоит удивляться тому, что мы уже находимся там, где представление вашего крипто-кошелька о ваших NFT — это представление OpenSea о ваших NFT. Не стоит удивляться тому, что OpenSea не является чистым «представлением», которое можно заменить, поскольку он был занят улучшением платформы за пределами того, что возможно с трудноизменяемыми стандартами.

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

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

«Это ранние дни» (это только начало)

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

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

Но золотую лихорадку не остановить

Если подумать, OpenSea был бы намного «лучше» в непосредственном смысле, если бы все части web3 исчезли. Он был бы быстрее, дешевле для всех и проще в использовании. Например, чтобы принять ставку на мой NFT, мне пришлось бы заплатить более $80-150+ только за газ (транзакционные сборы ethereum). Это устанавливает искусственный порог для всех предложений, поскольку в противном случае вы потеряете деньги, приняв предложение за меньшую сумму, чем плата за газ. Комиссии за платежи кредитными картами, которые обычно кажутся грабительскими, выглядит дешево по сравнению с этим. OpenSea мог бы даже публиковать простой журнал прозрачности, если бы люди хотели иметь публичную запись транзакций, предложений, заявок и т.д. для проверки своей отчетности.

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

Людей в конце очереди, которые обменивают NFT, в принципе не волнуют модели распределенного доверия или механика платежей. Их волнует, где находятся деньги. Поэтому деньги привлекают людей в OpenSea, они улучшают пользовательский опыт, создавая платформу, которая использует базовые протоколы web3 в пространстве web2, в конечном итоге они предлагают возможность «создавать» NFT через сам OpenSea, а не через ваш собственный смарт-контракт, и в конечном итоге все это открывает дверь для Coinbase, который предлагает доступ к проверенному рынку NFT с помощью своей собственной платформы через вашу дебетовую карту. Это открывает возможность для Coinbase управлять самими токенами через дарк-пулы, которыми владеет Coinbase, что позволяет отказаться от комиссий за транзакции и вообще не взаимодействовать со смарт-контрактами. В конце концов, все части web3 исчезают, и у вас есть веб-сайт для покупки и продажи JPEG с помощью вашей дебетовой карты. Проект не может начаться как платформа web2 из-за динамики рынка, но сама динамика рынка и фундаментальные силы централизации, вероятно, приведут его к этому.

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

Я думаю, что эти рыночные силы, скорее всего, сохранятся, и, на мой взгляд, вопрос о том, как долго это будет продолжаться — это вопрос скорее о том, является ли огромное количество накопленной криптовалюты в конечном итоге двигателем или дырявым ведром. Если деньги, приходящие в NFT, в конечном итоге возвращаются в криптовалютное пространство, то оно может продолжать ускоряться вечно (независимо от того, будет ли это просто web2x2). Если они будут оттекать, то все сдуется. Лично я думаю, что на данный момент было влито уже достаточно денег, чтобы все продолжалось, и это не окажется просто пузырем. Если это так, то стоит подумать о том, как избежать превращения web3 в web2x2 (web2, но с еще меньшей конфиденциальностью).

Креативности может быть недостаточно

Я только начал свое погружение в воды web3. Однако, глядя на него через призму этих небольших проектов, я могу легко понять, почему так много людей находят экосистему web3 такой изящной. Я не думаю, что все это избавит нас от централизованных платформ. Я не думаю, что это фундаментально изменит наше отношение к технологии. И я думаю, что история конфиденциальности уже ниже нормы для интернета (а это и так уже довольно низкая планка!). Но я также понимаю, почему айтишники вроде меня хотят создавать что-то в этом мире. Это, по крайней мере, что-то новое на уровне айтишников — и это создает пространство для творчества/исследований, которое в некоторой степени напоминает ранние дни Интернета. По иронии судьбы, часть этого творчества, вероятно, проистекает из ограничений, которые делают web3 таким неуклюжим. Я надеюсь, что творчество и исследования, которые мы наблюдаем, приведут к положительным результатам, но я не уверен, что этого будет достаточно, чтобы предотвратить повторение той же динамики Интернета.

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

1. Мы должны принять, что люди не будут управлять собственными серверами, и разрабатывать системы, которые могут распространять доверие без необходимости распространения инфраструктуры. Нужна архитектура, которая принимает, что отношения клиент/сервер неизбежно будут централизованными, но использует криптографию (а не инфраструктуру) для распределения доверия. Одной из удивительных вещей для меня в web3, несмотря на то, что он построен на «крипто», является то, как мало там задействовано криптографии!

2. Мы должны попытаться упростить создание программного обеспечения. На данный момент проекты по созданию программного обеспечения требуют огромных человеческих затрат. Даже относительно простые приложения требуют, чтобы группа людей сидела перед компьютером по восемь часов в день, каждый день, бесконечно. Так было не всегда, и было время, когда 50 человек, работающих над программным проектом, не считались «маленькой командой». Пока программное обеспечение требует такой согласованной энергии и такого большого количества узкоспециализированных человеческих усилий, я думаю, оно будет служить интересам людей, сидящих в этой комнате каждый день, а не нашим более широким целям. Я думаю, что изменение нашего отношения к технологиям, вероятно, потребует упрощения создания программного обеспечения, но за свою жизнь я видел, как происходит обратное. К сожалению, я думаю, что распределенные системы будут усугублять эту тенденцию, делая вещи более сложными и более трудными, а не наоборот.

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

212212
372 комментария

Ничего не понятно но очень интересно

23

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

50

А давайте теперь я: автор рассказал об ошибке восприятия ЦЕНТРАЛИЗОВАННОГО ресурса ДЕЦЕНТРАЛИЗОВАННЫМ и во всём обвинили в итоге Web 3.0, хотя на деле речь про URL от Web 2.0))). Но кто будет читать и разбираться? Можно же просто закатить глаза и сказать, что "ничего не понятно"))

Заголовок немного кликбейтный (все-таки речь больше о проблемах web3 в целом, чем про NFT), но за перевод огромное спасибо. Не встречал его личного блога до этого :)

28

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

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

6

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

6

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

20