February 23, 2022

Мои первые впечатления о web3

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

И вот его опыт использования web3 на примере НФТишек.

(Ссылка на оригинальный пост)

Несмотря на то, что я считаю себя криптографом, меня не особенно привлекает «крипта». Я гораздо более склонен лайкать на мемы «Ферма Пепперидж помнит» о том, что «крипто» раньше означало «криптографию», чем НФТ дропы.

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

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

Как я вижу web 1 и web 2

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

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

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


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

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

2. Протоколы движутся намного медленнее, чем платформаы.

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

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

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

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

Создавая Dapp-ы

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

Я также создал приложение под названием First Derivative, которое позволяет создавать, находить и обменивать производные NFT, которые следуют базовому NFT, аналогично производным финансовым инструментам, которые отслеживают базовый актив (примечание автора: это как Вангард ETF следует за S&P500).

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

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

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

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

Всё опять упирается в сервер! Но, как мы знаем, люди не хотят запускать свои собственные серверы. По мере того, как это происходит, появляются компании, которые продают доступ через API к узлу Эфириума, который они запускают как услугу, наряду с предоставлением аналитики, расширенными API, которые они создали поверх API Эфириума по умолчанию, и доступом к историческим транзакциям. В принципе звучит… знакомо. На данный момент, есть в основном две компании. Почти все децентрализованные приложения используют Infura или Alchemy для взаимодействия с блокчейном. На самом деле, даже когда вы подключаете кошелек, такой как MetaMask, к dApp, и dApp взаимодействует с блокчейном через ваш кошелек, MetaMask просто звонит в Infura!

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

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

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

Рассмотрим пример создания NFT

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

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

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

вот какими видели пользователи эти НФТ

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

сообщение от ОС о том что НФТшки убрали

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

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

Криптовалютный кошелеки, такие как MetaMask, Rainbow и т. д., «не связаны с хранением» (ключи хранятся на стороне клиента), но у него та же проблема, что и у моих приложений выше: кошелек должен работать на мобильном устройстве или в вашем браузере. Между тем, Эфириум и другие блокчейны были разработаны с идеей, что это сеть пиров, но не разработана таким образом, чтобы ваше мобильное устройство или ваш браузер действительно могли быть одним из этих пиров.

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

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

API-вызовы к etherscan

А вот так отображает баланс вашего счета, выполнив вызов API к Infura:

API к Infura

И вот так отображает ваши NFT, выполнив вызов API к OpenSea:

API к OpenSea

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

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

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

Воссоздание мира

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

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

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

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

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

Всё ещё в начале пути

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

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

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

Если подумать, OpenSea на самом деле был бы намного «лучше» в прямом смысле, если бы все части web3 исчезли. Он был бы быстрее, дешевле для всех и проще в использовании. Например, чтобы принять ставку на мой NFT, мне пришлось бы заплатить более 80–150 долларов США только за комиссию за транзакции в эфириуме. Это создает искусственный порог для всех ставок, поскольку в противном случае вы потеряете деньги, приняв ставку ниже, чем плата за газ. Комиссии за оплату кредитной картой, которые обычно кажутся грабительскими, по сравнению с этим выглядят дешево. 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 таким неуклюжим. Я надеюсь, что творчество и исследования, которые мы наблюдаем, принесут положительные результаты, но я не уверен, что этого достаточно, чтобы предотвратить повторение той же динамики интернета.

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

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

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

  • Мы должны попытаться уменьшить бремя создания программного обеспечения.

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