Написано Jan Xie, главным архитектором и исследователем Nervos.
Вскоре после появления Биткойна в 2009 году, мы открыли эру так называемых «альткойнов», когда люди экспериментировали с различными идеями для расширения Биткойна. Были созданы тысячи криптовалют. Некоторые альткоины продолжали расцветать, а другие исчезли. Среди них наиболее успешным является Ethereum. Почему он? До Ethereum каждый раз, когда предлагалось новое приложение блокчейна, создавался новый «альткойн» для реализации этого конкретного приложения. Etherium положил конец такому масштабному пути эволюции и представил общую модель программирования, которая позволяет разработчикам создавать на ее основе любое децентрализованное приложение. Эфириум освободил разработчиков от бремени достижения консенсуса и сети p2p и позволил разработчикам больше сконцентрироваться на бизнес-логике.
Ethereum со временем стал самой ценной цепочкой блоков, потому что он систематически решал тысячи проблем, в то время как другие пытались решить только одну за раз. Etherium предлагает систематическое решение. Вместо того, чтобы думать о том, как создать следующее большое приложение, Etherium думает, как упростить создание следующих 10000 приложений? То есть нанести удар по уменьшению размерности 3 против «альткойнов», что приведет к рождению новой эры, эры Etherium. Стоимость разработки децентрализованных приложений значительно снизилась, DApps процветали. Сегодня почти все децентрализованные приложения строятся на Etherium, они делают Etherium сильнее любого другого «альткоина».
Часто задаваемый вопрос: является ли Etherium конечной формой блокчейна, или будет ли блокчейн X для Etherium, как Etherium для Биткойна? Как выглядит следующая эпоха?
Абстракция блокчейна
Ключевым прорывом Ethereum является общая модель программирования (или модель смарт-контрактов), состоящая из EVM и модели учетной записи, на которой разработчики могут реализовывать все виды логики приложения. Модель смарт-контракта — это промежуточный уровень, который изолирует разработчиков от ненужных деталей базовой цепочки блоков и обеспечивает разработчикам высокую гибкость программирования. То, что делает Etherium, является абстракцией, его определение в Википедии 1 гласит:
В программной инженерии и компьютерных науках, абстракция — это:
-процесс устранения физических, пространственных или временных деталей или атрибутов при изучении объектов или систем, чтобы сосредоточить внимание на более важных деталях; по своему характеру он аналогичен процессу обобщения;
-создание абстрактных понятий-объектов путем отражения общих признаков или признаков различных неабстрактных объектов или систем изучения — результат процесса абстрагирования.
С этой точки зрения Ethereum является абстракцией биткойнов и «альткойнов». Абстракция — вечная тема системной эволюции. На заре программирования мы писали ассемблированный код, затем создали языки высокого уровня и компиляторы, которые освободили нас от машинных тривиальностей и сосредоточили внимание на более важных вопросах. Сначала мы управляли аппаратными ресурсами напрямую в нашей собственной программе, затем построили операционные системы в качестве промежуточного слоя и делегировали им эти обременительные задачи, позже добавили аппаратную виртуализацию, и теперь приложения расположены в облаке. Ранее в Интернете было всего несколько уровней протоколов, таких как TCP/IP, затем идет уровень приложений, и мы получаем HTTP, FTP, SMTP и т. д. Как видите, примеры есть повсюду.
Вот почему я бы сказал, что новая абстракция является отличительной чертой эволюции и что блокчейн следующего поколения должен быть более абстрактным, чем его предшественник. Прыжок от Биткойна к Эфириуму был первой абстракцией блокчейна, и я верю, что он не будет последним. Что касается того, как может выглядеть эпоха после Эфириума, то сначала следует подумать о том, что можно абстрагироваться дальше от Эфириума.
Новые абстракции
Общая модель смарт-контрактов Ethereum — это шаг вперед. Одним из направлений дальнейшего абстрагирования является создание еще более абстрактного на основе того, что представляет Ethereum. По мере того, как мы глубже изучаем модель Ethereum, мы можем найти множество конкретных вариантов дизайна, встроенных в нее. Вот некоторые из наиболее известных:
1.Адрес аккаунта. EOA (внешняя учетная запись) требуется пользователю для инициирования транзакции. Адрес EOA — это хэш открытого ключа Keccak256.
2.Аутентификация отправителя. Ethereum аутентифицирует отправителя транзакции с помощью двух конкретных криптографических алгоритмов, Secp256k1 и Keccak256. Чтобы создать действительную транзакцию Ethereum, клиент (например, кошелек) должен реализовать Secp256k1 и Keccak256 для подписи транзакции. Это также означает, что клиенту нужен безопасный способ управления парами ключей Secp256k1.
3.Криптографические примитивы (алгоритмы, используемые в качестве основных строительных блоков в приложениях). Виртуальная машина Ethereum, EVM, для удобства разработчиков жестко запрограммировала несколько криптографических примитивов в виде прекомпиляции, таких как проверка подписи ECDSA и хэш-функция SHA256. Жестко закодированные прекомпиляции намного эффективнее, чем тот же алгоритм, реализованный в Solidity, и поэтому они практичны для реальных приложений.
4. Устройство глобального состояния. Глобальное состоние Etherium организовано в виде гигантского дерева Меркла-Патриции (MPT) с учетными записями в форме листьев. Каждая учетная запись также поддерживает собственное хранилище ключей и значений в виде MPT. MPT — одна из многих аутентифицируемых структур данных.
Эти технические решения довольно эзотеричны для нетехнических пользователей, но ничто не делает их менее важными, чем выбор алгоритма консенсуса или экономических параметров. Этот выбор влияет на Эфириум во всех аспектах, точно так же, как небольшое изменение Plank constant 2 может коренным образом изменить нашу вселенную 2. Создание новой децентрализованной экосистемы сродни созданию новой вселенной, и эти варианты дизайна подобны физическим правилам, заложенным в ту вселенную.
Выбор дизайна был сделан, чтобы помочь Ethereum достичь его первоначальных целей, но это был не лучший выбор. Например, выбранный алгоритм аутентификации отправителя secp256k1 удобен для разработчиков, но создает ненужные препятствия для использования Ethereum в средах без поддержки Secp256k1. Выбранные прекомпиляции представляют собой небольшой белый список, в котором в основном исключены наиболее широко используемые сегодня примитивы. Было доказано, что MPT, используемый в структуре состояния, очень неэффективен, усугубляет проблему увеличения состояния и вызывает трудности с ценообразованием кодов операций EVM, связанных с вводом-выводом, в то время как неправильное ценообразование может привести к проблемам безопасности, таким как DoS-атаки.
Сообщество Ethereum и другие новые проекты также заметили эти проблемы и попробовали различные решения. Например, Ethereum добавил полезные прекомпиляции и переоценил опкоды с помощью серии хард-форков, Tezos добавил поддержку secp256r1 для аутентификации отправителя и т. д. Проблема в том, что это похоже на то, как мы тут и там решали требования приложений в эпоху «альткоина». Кроме того, эти проектные решения могут быть более сложными, чем приложения, и обычно оптимального решения не существует, мы можем предпочесть разные варианты в разных случаях. Даже в тех редких случаях, когда лучший выбор существует сегодня, нет гарантии, что он будет лучшим и завтра. Таким образом, лучшее решение, опять же, состоит в том, чтобы думать на другом уровне — вместо того, чтобы добавлять новые функции с помощью хард-форков, координируемых основной командой, можем ли мы создать новые абстракции и позволить разработчикам смарт-контрактов делать все, что они хотят?
Nervos CKB ответил на вопрос и создал новый уровень абстракции 4. Например, транзакция CKB является абстрактной, где пользователи и разработчики не ограничены аутентификацией blake2b-secp256k1 по умолчанию, любой может заменить ее 1 на blake2b-secp256r1, keccak256-ed25519 или blake2b-sha3-schnorr. CKB-VM является абстрактным и не имеет в себе прекомпиляции, даже криптографические примитивы по умолчанию, такие как хэш-функция blake2b и проверка подписи secp256k1, являются просто смарт-контрактами, работающими на виртуальной машине. Они работают в той же среде, что и смарт-контракты, созданные разработчиками приложений, без особых привилегий. Модель ячейки является абстрактной, в ней ячейка представляет собой просто хранилище без какой-либо внутренней структуры, а ее компоновка полностью оставлена на усмотрение разработчиков, как мы видели в sUDT и xUDT. Поскольку CKB во многих отношениях абстрактен, разработчикам предоставляется больше свободы и новые возможности. CKB — это абстракция Эфириума, точно так же, как Эфириум — это абстракция Биткойна. Абстракция делает CKB более простой, но более мощной цепочкой блоков и переносит большую часть работы за пределы цепочки, часть которой будет выполняться на уровне 2. Абстракция биткойн-разработчиков разделяет разработчиков на разработчиков блокчейна, которые работают с базовым блокчейном, и разработчиков смарт-контрактов, которые создают Приложения. Абстракция Ethereum разделит разработчиков смарт-контрактов на разработчиков системных контрактов и разработчиков контрактов приложений, в то время как первые сосредоточатся на смарт-контрактах системного уровня.
Важность абстракции была признана сообществом Эфириума недавно. Я думаю, что если это будет реализовано, Эфириум станет более абстрактным, чем сейчас. Я сомневаюсь, что такие предложения, как абстракция учетной записи, могут достичь того же уровня абстракции, что и CKB, поскольку было бы крайне сложно внести радикальные изменения в работающую экосистему, точно так же, как невозможно настроить постоянный Plank, не разрушив систему вселенной. Например, абстракция учетной записи усложнит безопасность критически важных модулей, таких как пул транзакций, поскольку валидатор должен будет обрабатывать произвольные вычисления, а не фиксированную проверку подписи каждый раз, когда подписывается новая транзакция.
Другое направление абстракции касается масштабируемости. И решения для сегментирования, и решения уровня 2 имеют общую проблему — они определенным образом меняют разработку приложений. Например, обработка межсегментных вызовов или межуровневых транзакций может совершенно отличаться от вызовов контрактов на уровне 1. Разработчики приложений уровня 2 также могут столкнуться с разными моделями смарт-контрактов на разных уровнях (например, цепочка уровня 2 модели UTXO поверх уровень 1 модели учетной записи или наоборот). Как скрыть эти детали и сделать так, чтобы разработчики приложений работали так, как если бы они работали на уровне 1, по-прежнему остается открытым вопросом. Это одна из сложных проблем, над которыми мы активно работаем. Первая конструкция канала на CKB, Generic Payment Channel 3, является примером такого направления мысли. GPC стремится обеспечить «прозрачный» уровень масштабируемости для UDT на уровне 1, чтобы любой UDT можно было направлять с первого дня без каких-либо дополнительных усилий со стороны разработчиков. В GPC мы абстрагируем детали протокола платежного канала от разработчиков UDT. Альтернативную попытку можно найти в наших работах над Godwoken и Polyjuice, которые можно рассматривать как абстракцию вычислений и масштабируемости поверх CKB.
Совместимость 2.0
Каждая абстракция блокчейна приносит нам что-то новое, чего мы никогда не видели на предыдущих уровнях абстракции. Первая абстракция блокчейна предоставила нам общую программируемость и взаимосвязанные децентрализованные приложения, что принесет нам следующая абстракция блокчейна?
Интероперабельность 2.0 (концепция, впервые упомянутая здесь) — это определенно яблоко, которое вырастет на новых абстракциях. Мы предвидим будущее цифровой экономики с несколькими блокчейнами без разрешения, блокчейнами с разрешениями и централизованными системами. Совместимость позволяет перемещать цифровые активы и вызывать смарт-контракты в этих независимых системах. В последние годы были проведены многочисленные 1 исследования по интероперабельности 1, и считается, что проблема может быть решена с помощью массива базовых примитивов, таких несколько подписей, ретрансляция и хэш-блокировка.
Хотя функциональная совместимость блокчейна сегодня технически возможна, между технической осуществимостью и реализацией бесшовной интероперабельной цифровой экономики есть и другие недостающие элементы. Во-первых, наши инициативы по интероперабельности только создадут еще больше разделенных сетей. Такие проекты, как Polkadot и Cosmos, определили каждый свои собственные стандарты и попытались построить многоцепную сеть вокруг своего собственного «хаба». Также предпринимаются параллельные усилия по созданию мостов между Биткойном и Эфириумом напрямую. Кажется невозможным, чтобы когда-нибудь в будущем основные команды и сообщества этих отдельных сетей могли бы договориться об общем стандарте взаимодействия, которому должны следовать все. Во-вторых, но что более важно, даже если бы эти блокчейн-сети были идеально совместимы, плохой пользовательский опыт взаимодействия все равно не позволял бы пользователям их использовать. С точки зрения пользователя, если бы я был пользователем биткойнов, который хотел перевести свои биткойны в Ethereum для участия в приложениях DeFi, я должен сначала запустить свой биткойн-кошелек, а затем кроссчейн, а затем использовать отдельный кошелек Ethereum. Чтобы выполнить такую кросс-чейн операцию, мне пришлось установить два приложения-кошелька, сохранить два набора мнемоник и использовать два адреса. Этот процесс сам по себе очень сложный и применяется только к двум цепям. Поскольку пользователи хотят взаимодействовать с большим количеством блокчейнов, им нужно управлять большим количеством мнемоник/адресов/пар ключей. Эта проблема взаимодействия с пользователем не только препятствует внедрению DApps, но и саботирует децентрализацию, основную ценность блокчейна, поскольку пользователи будут вынуждены полагаться на централизованные службы хранения, чтобы избежать всех проблем.
Для решения этих двух проблем требуется новый тип взаимодействия, который мы называем Interoperability 2.0. Блокчейн с этой новой возможностью взаимодействия будет похож на «универсальный концентратор», который может взаимодействовать с любым другим блокчейном, не будучи замеченным другими блокчейнами. «Универсальный хаб» должен быть способен понимать и выполнять протоколы других блокчейнов, а не изобретать свои собственные и требовать, чтобы все остальные учились. Универсальный хаб был бы похож на многоязычного человека, который может говорить на языках других людей, чтобы хаб мог говорить со всеми, и каждый был бы готов к диалогу с хабом. В криптомире все протоколы (язык, используемый блокчейнами) состоят из криптографии, а это означает, что такой универсальный концентратор должен поддерживать широкий спектр криптографических примитивов, используемых в блокчейнах. Универсальный концентратор должен быть в состоянии понимать транзакции, подписанные всеми видами кошельков блокчейна, позволяя пользователям придерживаться одного кошелька, а также иметь возможность использовать любые приложения, работающие в универсальном хабе.
Такие требования Interoperability 2.0 — это именно то, что обеспечивают новые абстракции, криптографические примитивы и аутентификация отправителя. Вот почему пользователь Ethereum сегодня может использовать свой кошелек Metamask для управления активами или децентрализованными приложениями на Nervos CKB 2 без каких-либо ручных настроек, даже не уведомляя об использовании приложений Nervos. Не только пользователи Ethereum, пользователи EOS/Tron/… также могут управлять активами или децентрализованными приложениями на Nervos CKB. Не беспокойтесь, если вы обнаружите, что вашей любимой сети еще нет в списке, вы можете просто создать и развернуть для нее смарт-контракты (или подождать/заплатить разработчику смарт-контрактов, чтобы он сделал это за вас). Никаких обращений к основной команде и/или хард-форка не требуется, все можно сделать с помощью смарт-контрактов.
Для приложений, работающих на Nervos, совместимость 2.0 предоставляется бесплатно. Таким образом, к приложению Nervos могут получить широкий доступ пользователи из любого блокчейн-сообщества, такое приложение мы называем универсальным приложением. Как разработчик, вы можете охватить более широкую базу пользователей, чем где-либо еще, научившись создавать приложения на Nervos. Как пользователю, все, что вам нужно сделать, это использовать свой текущий кошелек и учетную запись для доступа к универсальным приложениям на Nervos, не нужно устанавливать или изучать что-либо новое. Вы можете подумать, что используете DApp Ethereum или EOS, в то время как базовый конвейер и инфраструктура были заменены Nervos. И я считаю, что так и должно быть. Как и тот факт, что пользователю, который посещает веб-сайт, все равно, написан ли веб-сайт на PHP или JAVA, с использованием MySQL или PostgreSQL. Пользователям просто все равно, и это правильно. Мы, как разработчики, несем ответственность за создание абстракций и скрытие деталей реализации от пользователей, поэтому мы можем заменить используемые реализации более совершенными, чтобы обеспечить превосходный и лучший пользовательский опыт. Interoperability 2.0 сделает криптомир похожим на современный Интернет, и это возможно благодаря новым абстракциям блокчейна.
Более того, универсальные приложения могут быть доступны гораздо большей аудитории, чем пользователи блокчейна. Криптомир — это относительно небольшой круг, и мы можем пойти гораздо дальше. Блокчейн-кошелек и учетная запись — это не что иное, как еще одна учетная запись/система идентификации. Тем не менее, в мире Интернета существует множество установленных стандартов для идентификации/учетной записи и аутентификации, таких как OpenID, распознавание лиц, распознавание отпечатков пальцев и т. д. Благодаря криптографическим примитивам и абстракции аутентификации отправителя Nervos CKB также может понимать широко используемые интернет-протоколы. Пользователи могут получить доступ к универсальным приложениям с помощью браузеров и мобильных телефонов, без необходимости устанавливать какие-либо кошельки с блокчейном, генерировать любые пары ключей и даже не запоминать мнемонические коды. Таким образом, мы обслуживаем существующую интернет-экосистему, а не создаем совершенно новую. Барьеров, мешающих интернет-пользователям войти в криптомир, здесь больше не существует.
Новый мегаполис
Многие современные мегаполисы возникли из узлов торговых путей или гаваней. Венеция, Нью-Йорк, Гонконг, Шанхай и Сингапур превратились в города с высокой коммерциализацией благодаря своим гаваням. GPS, грузовые суда и контейнеры — это технологии взаимодействия, которые мы используем для перемещения активов между городами в индустриальную эпоху, но теперь у нас есть криптоактивы, блокчейны и интероперабельность 2.0. Лучшее взаимодействие приносит больше иммигрантов, больше бизнеса и больше жизнеспособности в города.