Пропонуємо вашій увазі переклад статті засновника та екс-CEO месенджера Signal Моксі Марлінспайка, в якій він намагається розібратися в тому, що таке web3.

Хоч я і вважаю себе фахівцем у криптографії, та мене ніколи особливо не тягнуло до “крипти”. Я не бурчав старечо “Ви хто такі? Я вас не кликав”, але я радше клацну на мем у стилі Pepperidge Farm Remembers про те, як “крипто” колись означало “криптографія”, аніж на новину про черговий випуск NFT.

Крім того, викладу всі карти на стіл: я не поділяю захвату покоління щодо перетворення усіх аспектів життя на економічні інструменти.

Навіть на суто технологічному рівні я досі скептик. Тож, зважаючи на всю увагу, яка останнім часом приділяється тому, що називають web3, я вирішив детальніше розібратися у цьому питанні.

Як я бачу 1 і 2

web3 – нечітке поняття, тому складно точно оцінити його амбіції, але загальноприйнята точка зору, схоже, стверджує, що web1 був децентралізованим, web2 централізував все у платформи, а web3 знову все децентралізує. web3 має дати нам багаті можливості web2, але децентралізовані.

Певно, варто прояснити, чому взагалі виникли централізовані платформи, і, як на мене, пояснення цьому просте:

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

У нас усіх був би свій веб-сервер зі своїм вебсайтом, свій поштовий сервер для своєї електронної пошти, свій сервер Finger для своїх оновлень статусу, свій сервер CHARGEN для свого генерування потоку символів. Однак, наголошую ще раз, людям цього не треба. Вони не хочуть тримати власні сервери.

Навіть ґіки не хочуть зараз підтримувати власні сервери. Навіть організації, що розробляють програмне забезпечення, не хочуть зараз підтримувати власні сервери. Якщо нам хоч щось стало ясно про цей світ, так це те, що люди не хочуть мати власні сервери. З’явилися компанії, які роблять це за вас, вони успішні, а компанії, що завдяки цьому змогли запропонувати нові продукти, стали ще успішнішими.

2. Протокол міняється повільніше, ніж платформа. Минуло понад 30 років, а електронна пошта досі не шифрується, у той час, як WhatsApp за рік перейшов від відсутнього шифрування на наскрізне шифрування. Стандарт надійної передачі відео по IRC досі у розробці, і водночас Slack дає можливість створити власний emoji на основі вашого обличчя.

Питання не в грошах. Якщо щось дійсно децентралізоване, то його дуже складно змінити, і воно зазвичай застрягає в часі. Для технології це проблема, тому що решта екосистеми розвивається дуже швидко, і якщо ти не встигаєш – ти провалився. Є цілі галузі, зайняті визначенням і розвитком методик на зразок Agile, аби організувати великі групи людей на якомога швидшу роботу, бо це настільки критично.

Коли сама технологія схильна до стагнації, а не до розвитку – це проблема. Перевіреним рецептом успіху стало взяти протокол з 90-х, що застряг у часі, централізувати його і швидко розвивати надалі.

Але web3 очікується не таким, тому нумо дивитися. Аби зрозуміти, як це влаштовано і що чекає на нас у майбутньому, я вирішив зробити пару розподілених додатків (dApp) і створити NFT.

Робимо розподілені додатки

Щоб торкнутися світу web3, я зробив додаток під назвою Autonomous Art. Будь-хто може створити у ньому токен для NFT, додавши до нього якийсь візуальний елемент. Вартість такого елементу з часом зростає, а сплачені за внесок кошти розподіляються між попередніми авторами (діаграма цієї фінансової структури нагадує піраміду). Станом на момент написання цього тексту у цей колективний витвір мистецтва вже було вкладено понад 38 000 доларів США.

Я також зробив додаток First Derivative, який дає змогу створювати, знаходити та обмінювати похідні “цінні папери” на NFT, ціна на які залежить від самого NFT, на кшталт справжніх фінансових деривативів, які прив’язані до їх активу 😉.

Обидва дали мені уявлення про цю сферу. Про всяк випадок поясню, що нічого “розподіленого” у тих додатках немає: це просто написані на React вебсайти. Їхня “розподіленість” полягає у тому, де зберігається стан і логіка / права на оновлення стану: у блокчейні, а не у “централізованій” базі даних.

У світі криптовалют мені завжди здавалося дивним, що інтерфейсу між клієнтом і сервером приділяють мало уваги. Коли говорять про блокчейн, то згадують про розподілену довіру, децентралізований консенсус і механіку роботи всього цього, але ігнорують той факт, що клієнти по суті не беруть участі у цій механіці. Всі схеми мереж зображують взаємодію серверів, довірча модель існує між серверами, коротше, все тут про сервери. Блокчейни задумувалися як мережі рівноправних учасників, але їх реалізація не дає можливості вашому смартфону чи браузеру бути одним з таких учасників.

Пріоритети змінилися на користь мобільних технологій, тож ми давно вже живемо у світі клієнтів та серверів, де перші не можуть виступати у ролі других, і ці питання мені здаються зараз важливими, як ніколи. Водночас в Ethereum власне сервери вже називаються клієнтами, тобто немає навіть окремого слова для позначення звичайного інтерфейсу між клієнтом і сервером, який же має десь існувати, і нема визнання того, що у разі успіху буде у мільярди (!) разів більше клієнтів, ніж серверів.

Приміром, незалежно від того, де запущено розподілений додаток типу Autonomous Art чи First Derivative – на мобільному чи у браузері – йому якось треба взаємодіяти з блокчейном, аби змінити чи відобразити його стан (сам колективний витвір мистецтва, історія його змін, деривативи на NFT і т.д.). З клієнта цього не зробиш, бо блокчейн не може існувати на вашому мобільному пристрої чи у вашому браузері на комп’ютері. Тому єдина альтернатива – взаємодіяти з блокчейном через ноду, яка запущена десь на віддаленому сервері.

Сервер! Але ж ми знаємо, що люди не хочуть тримати власні сервери. От і виходить, що з’явилися компанії, які продають доступ до API для роботи з їхньою нодою Ethereum, а заодно і надають аналітику, свої покращені API на основі базових API від Ethereum, а також доступ до історії транзакцій. Це звучить якось… знайомо. На сьогодні є фактично дві такі компанії. Абсолютна більшість розподілених додатків dApps користується послугами компаній Infura або Alchemy для взаємодії з блокчейном. Навіть коли ви підключаєте до розподіленого додатка гаманець типу MetaMask, і цей додаток взаємодіє з блокчейном через ваш гаманець, то насправді MetaMask просто шле запити на Infura!

Ці клієнтські API ніяк не перевіряють стан блокчейну чи автентичність відповідей. Відповіді навіть не підписані. Додаток типу Autonomous Art питає “агов, який буде результат роботи цієї функції, що зчитує стан смарт-контракту?”, Alchemy чи Infura шле у відповідь JSON: “буде ось такий результат”, і додаток відображає це.

Для мене це стало сюрпризом. Стільки зусиль, енергії та часу пішло на створення механізму розподіленого консенсусу, а все одно всі клієнти, які хочуть з ним працювати, просто мають довіряти даним, що їм видають ці дві компанії, без жодних додаткових перевірок. З точки зору приватності це теж виглядає ненадійно. Уявіть, якби при кожній вашій взаємодії з вебсайтом у Chrome ваш запит спочатку йшов у Google, і лиш потім – адресату. А з Ethereum зараз так воно і є. Весь трафік на запис, звісно, і так всім видно на блокчейні, але ці компанії також мають доступ до майже всього трафіку на вичитку даних від більшості користувачів більшості додатків dApp.

Прихильники блокчейна скажуть, що такі централізовані платформи – це не страшно, бо першоджерелом інформації є сам блокчейн, тому якщо ці платформи дозволять собі зайвого, то клієнти просто перейдуть на якусь іншу платформу. Боюсь, це сильно спрощений погляд на динаміку ситуації, яка робить ці платформи такими, якими вони є.

Наведу вам приклад.

Робимо NFT

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

Замість зберігання даних у блокчейні, NFT натомість містять URL, за яким знаходяться дані. Мене здивувало, що немає ніяких стандартних перевірок хешів даних за тим URL. Багато з NFT на популярних торговельних майданчиках продаються за десятки, сотні чи мільйони доларів, а той URL веде кудись на звичайну віртуальну машину з сервером Apache. Будь-хто з доступом до тієї машини, чи той, хто зможе купити це доменне ім’я в майбутньому або якийсь зловмисник, що зламав цю машину, зможе змінити зображення, назву, опис NFT і т. д. як захоче і коли захоче. І не має значення, чи та людина буде дійсно “власником” токена. У самому NFT нема нічого, що б вказувало на те, яким “має” бути зображення, чи навіть хоча б дало змогу підтвердити, чи це взагалі “правильне” зображення.

Тому заради експерименту я зробив NFT, який відображається по-різному залежно від того, хто на нього дивиться. Веб-сервери вміють слати у відповідь різні зображення для різних IP-адрес або ідентифікаторів програм, звідки робиться запит. Приміром, на сайті OpenSea це виглядало так, на Rarible – інакше, а якщо ви купили б цей NFT і відкрили його у своєму криптогаманці, то вам би завжди показувався великий емоджі 💩. Не бачили очі, що купували. У цьому NFT немає нічого незвичайного, так побудовані вони всі. Більшість найдорожчих NFT можуть перетворитися на 💩 у будь-який момент, я лише зробив це наочним.

Моксі Марлінспайк: Мої перші враження про web3

За кілька днів без жодного попередження чи пояснення мій NFT прибрали з OpenSea (майданчика для торгівлі NFT):

Моксі Марлінспайк: Мої перші враження про web3

Ця ситуація могла б означати, що я порушив якісь умови користування сервісом, але я перечитав ті умови та не знайшов нічого, що б забороняло NFT, який змінюється залежно від того, де його переглядають, і я не приховував цього в описі.

А найцікавішим стало те, що після того, як OpenSea прибрав мій NFT, він також пропав з усіх криптогаманців на моєму пристрої. Це ж web3, як таке взагалі можливо?

Криптогаманці типу MetaMask чи Rainbow побудовані з розподілом відповідальності (ключі зберігаються на стороні клієнта), але й у них є та ж проблема, як у моїх згаданих додатків dApps: гаманець має працювати на мобільному пристрої чи у вашому браузері. Водночас Ethereum та інші блокчейни задумувалися як мережа рівноправних учасників, але їх реалізація не дає можливості вашому мобільному пристрою чи браузеру бути одним з таких учасників.

Гаманець на зразок MetaMask повинен вміти базові речі, як-от показувати баланс вашого рахунку, останні транзакції, ваші NFT, а також складніші речі, типу побудови транзакцій, взаємодії зі смарт-контрактами тощо. Коротше, MetaMask повинен взаємодіяти з блокчейном, але блокчейн не вміє взаємодіяти з клієнтами типу MetaMask. Тому, як і мої додатки, 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

Знов-таки, як і з моїми додатками, ці відповіді ніяк не автентифікуються. Вони навіть не підписані, тому ви навіть потім не доведете, що вам брехали. Програма повторно використовує ті самі з’єднання, сесії TLS і т.д. для всіх рахунків у вашому гаманці, тож якщо ви завели там кілька рахунків, аби вашу особу було складніше вирахувати, ці компанії однаково знатимуть, що рахунки пов’язані.

MetaMask особливо нічого такого не робить; це просто відображення даних, наданих цими централізованими API. Це не питома проблема MetaMask – у них немає інших варіантів. Rainbow та інші зроблені точно так само. Що цікаво, Rainbow додатково збирає свої дані для соціальних функцій, які вони додали до свого гаманця – соціальний граф, вітрини для NFT тощо – і це все побудовано на звичайній платформі Firebase, а не на блокчейні.

Усе це значить, що якщо ваш NFT видалили з OpenSea, він зникне і з вашого гаманця. І не важливо, що ваш NFT десь навіки вписаний у блокчейн, бо гаманець, і все більше інших учасників екосистеми просто використовують API від OpenSea для відображення NFT, яке раптом почало відповідати 304 No Content на запит про NFT, котрий належить моїй адресі!

Створюючи цей світ заново

Зважаючи на історію того, чому web1 став web2, мені дивно бачити, що web3 і технології на кшталт Ethereum побудовані, наступивши на ті самі граблі, що й web1. Аби зробити ці технології зручнішими, їх консолідують навколо… платформ. Знову. Люди, які підтримуватимуть сервери за вас, і розвиватимуть нові функції. Infura, OpenSea, Coinbase, Etherscan.

Так само і протоколи web3 еволюціонують повільно. Коли я писав First Derivative, то мені здавалося, що було б круто оцінювати випуск деривативів як відсоток ціни активу, до якого він прив’язаний. Цієї інформації у блокчейні немає, але вона доступна по API OpenSea. Люди радіють виплатам роялті з NFT, бо це має піти на користь авторам, але роялті не описано у стандарті токенів ERC-721, і вже пізно його міняти, тож OpenSea формує ці роялті по-своєму, подібно до того, як це вже робиться у web2. Швидка розробка на централізованих платформах вже випереджає розподілені протоколи і дає платформам більше контролю.

З такими темпами вже можна не дивуватися тому, що ваш криптогаманець показує ваші NFT так, як насправді їх показує OpenSea. І не варто сподіватися, що варіант відображення від OpenSea є просто чистим відображенням, яке можна легко замінити на іншого постачальника. OpenSea весь цей час розвивав свою платформу далі, ніж було б можливо суто з незмінними чи важко змінюваними стандартами.

Гадаю, це дуже схоже на ситуацію з електронною поштою. Я можу запустити свій поштовий сервер, але з функціональної точки зору це не грає жодної ролі для приватності, опору цензурі чи контролю, тому що на іншому боці адресатом чи відправником кожного мого листа все одно буде GMail. Якщо розподілена екосистема централізується для зручності навколо платформи, вона вбирає найгірше з обох світів: централізований контроль, але все одно достатній розподіл, аби загрузти у часі. Я можу зробити свій майданчик для NFT, але це не дасть більше контролю, якщо гаманці інших людей і решта додатків у екосистемі все одно відображатимуть NFT через OpenSea.

Я не скаржуся на OpenSea і не звинувачую їх у тому, що вони зробили. Аж ніяк, вони намагаються побудувати щось робоче. Мені здається, варто очікувати такої консолідації навколо платформ, а якщо це неминуче – спроєктувати системи, які все одно працюватимуть, як нам треба, зважаючи на наявний стан справ. Водночас я підозрюю і боюся, що спільнота web3 чекає на якісь інші результати у порівнянні з тим, що ми вже бачимо зараз.

Ще рано

“Усе ще рано”, – найчастіше відповідають люди у спільноті web3, коли підіймаються ці питання. Певною мірою, криптовалюти досі не вийшли з відносно початкової стадії розробки, що дає підстави казати, що це тільки початок, хоча об’єктивно вже пройшло понад десять років.

Та навіть якщо це лише початок (цілком може бути і так!), нас це не має тішити. Навпаки, варто відзначити, що вже з самого початку ці технології пішли у бік централізації через платформи, аби їх можна було втілити, і що це не мало жодного негативного впливу на швидкість розвитку екосистеми, і що більшість учасників навіть не знають чи не переймаються цим. Це може наштовхнути на думку, що децентралізація як така не є настільки нагальною чи важливою для більшості звичайних користувачів, і що люди хочуть рівно стільки децентралізації, скільки треба, аби щось існувало, і що якщо не зважати на це, то ці сили з часом відштовхнуть нас від бажаного результату, а не сприятимуть йому.

Та золоту лихоманку вже не спинити

Якщо вже на те пішло, OpenSea було б легше зараз працювати, якби складових web3 взагалі не було. Сервіс працював би швидше, дешевше для всіх, і був би легшим у використанні. Приміром, аби прийняти цінову пропозицію на свій NFT, я мусив платити 80-150 доларів суто за транзакцію Ethereum. Це ставить нижній поріг на всі пропозиції, бо інакше ви просто втрачатимете гроші, приймаючи пропозиції, дешевші за поточну вартість транзакції. У порівнянні з цим платіжні комісії за кредитними картами, які зазвичай здаються здирницькими, виглядають мізером. OpenSea могли б навіть публікувати логи операцій, якби люди забажали відкритий доступ до журналу транзакцій, токенів, пропозицій тощо для підтвердження обліку.

Але якби вони побудували платформу для купівлі й продажу зображень не на основі блокчейна, думаю, вона б не мала успіху. Не тому що вона була б нерозподіленою, бо як показує практика, її більша частина вже і так не є розподіленою. Думаю, вона не мала б успіху, бо це золота лихоманка. Люди заробили на спекуляціях криптовалютами, і вони хочуть витратити свої валюти таким чином, аби підтримати свої інвестиції, а заодно заробити ще. Це і формує ринок для руху таких цінностей.

Ті, хто прокручує NFT, глобально не переймаються моделями розподіленої довіри чи механікою платежів, але вони знають, де можна заробити. Гроші приваблюють людей до OpenSea, що будує для них зручну платформу у стилі web2 на основі наявних протоколів web3, і врешті пропонує можливість випустити NFT засобами самої OpenSea, а не через ваш власний смарт-контракт. Це все відчиняє двері для біржі Coinbase, яка може тепер пропонувати доступ до перевіреного ринку NFT зі своєї платформи з оплатою банківськими картами. Це відкриває двері для Coinbase, яка може сама керувати токенами через свої приватні торговельні пули (непублічні майданчики торгівлі криптою для великих операцій, аби не впливати об’ємом на ціну), що фактично прибере комісії за транзакції і дасть змогу взагалі уникнути взаємодії зі смарт-контрактами. Врешті не лишається жодної складової web3, є тільки вебсайт для купівлі-продажу JPEG з підтримкою платіжних карт. Проєкт не міг початися як платформа web2 через своєрідну ринкову динаміку, але ця сама динаміка і фундаментальні сили централізації врешті туди його приведуть.

З іншого боку, автори NFT радіють цим змінам, бо це означає більше спекуляцій та інвестицій у їхню творчість. Але якщо ідея web3 була у тому, щоб уникнути пасток web2, то пора задуматися, бо вже спостерігається протилежна тенденція.

Мені здається, ці ринкові сили діятимуть і надалі, і питання, скільки це ще триватиме, для мене є питанням, чи ці величезні накопичення криптовалют знаходяться у двигуні, або ж у дірявому відрі. Якщо гроші, що прокручуються через NFT, повертатимуться у криптовалютну економіку, то це може тривати вічно, навіть якщо воно і залишиться просто новою версією web2 (web2x2). Якщо обіг грошей знижуватиметься, то це закінчиться нічим. Особисто я гадаю, що у цій економіці вже є достатньо грошей і достатньо їх різних джерел, тому безславного кінця не буде. А раз так, то можна подумати, як запобігти тому, що web3 стане web2x2 (web2, але ще менше приватності).

Одної творчості буде недостатньо

Я лиш краєм ока зазирнув до світу web3. Дивлячись на це крізь призму моїх невеличких проєктів, я можу зрозуміти тих багатьох людей, яким подобається екосистема web3. Не думаю, що вона зараз на шляху, який відведе нас від централізованих платформ, і не думаю, що вона кардинально змінить наше ставлення до технологій, а ще думаю, що з приватністю в інтернеті й так все погано. Але я також розумію, чому ґікам типу мене подобається будувати щось у цій екосистемі. Це принаймні щось нове на їхньому рівні, і це дає простір для творчості й досліджень, чим нагадує ранню пору інтернету. Парадоксально, що почасти ця творчість походить з обмежень, які роблять web3 таким громіздким. Сподіваюсь, ця творчість і дослідження принесе позитивні результати, але не певний, що цього вистачить, аби запобігти черговому повторенню історії.

Якщо ми дійсно хочемо змінити своє ставлення до технологій, нам варто робити це свідомо. Мої думки з цього приводу наступні:

1. Мусимо визнати, що люди не займатимуться своїми серверами, і побудувати системи, які можуть розподіляти довіру, не розподіляючи інфраструктуру. Маю на увазі архітектуру, яка готова до неминучої централізації взаємодії клієнтів і серверів, але використовує криптографію, а не інфраструктуру, для розподілу довіри. Мене здивувало у web3, що хоч все і будують на “крипті”, але там майже немає власне криптографії!

2. Варто полегшити розробку програмного забезпечення. Проєкти по розробці зараз вимагають величезних зусиль. Навіть порівняно прості додатки потребують груп професіоналів, що сидять за комп’ютерами по вісім годин на добу, щодня, і назавжди. Так було не завжди, і були часи, за яких 50 людей на розробницькому проєкті не вважалося “невеликою командою”. Якщо програмне забезпечення вимагає такої організації зусиль і такої високої спеціалізації, то воно, як на мене, у першу чергу існує в інтересах його розробників, а не у якихось ширших інтересах. Тому мені здається, що зміна нашого ставлення до технології означає і спрощення розробки програм, хоча досі мій життєвий досвід говорить про протилежне. Шкода, але схоже, що розподілені системи поки лише поглиблюють цю проблему, ускладнюючи речі, а не спрощуючи їх.