"Ви думаєте, що володієте 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, який змінюється залежно від того, звідки на нього дивляться.
Але найцікавіше, що після того, як OpenSea видалив мій NFT, він також зник з усіх крипто-гаманців на моїх пристроях. Це ж web3, як таке можливо?
Крипто-гаманець, такий як MetaMask, Rainbow тощо, є "non-custodial" (ключі зберігаються на стороні клієнта), але в нього є така сама проблема, як і в моїх dApps вище: гаманець має працювати на мобільному пристрої або в браузері. Тим часом, ethereum та інші блокчейни були розроблені з ідеєю, що це мережа рівних, але не розроблені таким чином, щоб було справді можливо, щоб ваш мобільний пристрій або ваш браузер були одним із цих рівних.
Такий гаманець, як MetaMask, має робити базові речі, як-от відображення вашого балансу, останніх транзакцій і NFT, а також складніші речі, як-от створення транзакцій, взаємодія зі смарт-контрактами тощо. Коротше кажучи, MetaMask повинен взаємодіяти з блокчейном, але блокчейн побудований так, що такі клієнти, як MetaMask, не можуть з ним взаємодіяти. Тому, як і мій dApp, MetaMask просто робить виклики API до трьох компаній, які консолідувалися в цьому просторі.
Наприклад, ось так MetaMask відображає ваші останні транзакції, здійснюючи API-виклик до etherscan:
Ось так він відображає баланс вашого рахунку, здійснюючи API-виклик до Infura:
А ось так - відображає ваші NFT, роблячи виклик API до OpenSea:
Знову ж таки, як і в моєму 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 осіб, які працюють над програмним проектом, не вважалися "маленькою командою". Допоки програмне забезпечення вимагає такої узгодженої енергії та такої великої кількості вузькоспеціалізованих людських зусиль, я думаю, воно слугуватиме інтересам людей, які сидять у цій кімнаті щодня, а не нашим ширшим цілям. Я думаю, що зміна нашого ставлення до технологій, ймовірно, потребуватиме спрощення створення програмного забезпечення, але за своє життя я бачив, як відбувається зворотне. На жаль, я думаю, що розподілені системи посилюватимуть цю тенденцію, роблячи речі складнішими і важчими, а не навпаки.
Коментарі
Дописати коментар