Узнайте, как блокчейн и Web 3.0 могут повлиять на следующую итерацию разработки серверного программного обеспечения.
За последние пару лет я попытался использовать свой инженерный опыт со следующим утверждением:
«Узнайте, как работают вещи, в которые вы инвестируете, и инвестируйте в то, о чем вы знаете».
Это привело к некоторым хорошим, убедительным инвестициям в технологии, о которых я знал в основе. Точно так же я приложил усилия, чтобы узнать о технологиях, в которые поначалу инвестировал вслепую. В конце концов, я совершил одно из своих самых больших учебных путешествий, когда решил узнать, как криптовалюты работают в основе. Изучив технические документы уровня 1 (Ethereum, Bitcoin и т. д.), я понял, что самый быстрый способ принять участие — это освоить концепцию «смарт-контрактов» через изучение Solidity.
Мой опыт разработки программного обеспечения сделал изучение синтаксиса чрезвычайно простым, и с помощью этого замечательного курса и некоторых знаний в области финансов я нашел новую дисциплину, которая объединила больше интересов, чем когда-либо.
Начав писать смарт-контракты и взаимодействовать с экосистемой Web 3.0, я был поражен оптимизацией услуг и духом сотрудничества в этом дивном новом мире. Иногда я забывал, что валюта и финансы были основным вариантом использования, поскольку я видел, как фрагментарность API веб 2.0, ООП, хостинг и стандартизация объединены в универсальную технологию.
Мой главный вывод: блокчейн — это гораздо больше, чем просто валюта; это следующая итерация построения в Интернете. В этой статье я постараюсь предоставить новичкам некоторые термины и показать сходства в языке Web 2.0, чтобы помочь другим технологам увидеть потенциал этой технологии.
Кошельки, смарт-контракты, блокчейны и токены
Понимание того, как термины этого заголовка являются основополагающим шагом к пониманию блокчейна. Эти определения предназначены только для того, чтобы дополнить остальную часть этой статьи некоторыми простыми определениями, поэтому я рекомендую читателю углубиться в каждое из них по отдельности, если эти описания кажутся расплывчатыми. Если вы знакомы с этими терминами, я рекомендую вам сразу перейти к основным темам ниже этого раздела!
Блокчейны — сети серверов, на которых хранятся копии данных и функций, доступ к которым можно получить через транзакции после достижения консенсуса. в пределах значительного количества серверов, что транзакция действительна. У блокчейнов есть собственная валюта, предназначенная для оплаты этим операторам серверов их вычислительной мощности в виде «газа». Это реальная полезность любого токена уровня 1: доступ к вычислительной мощности.
Кошельки — адреса в цепочке блоков, которым может быть назначена/отправлена часть L1 сети. токен, может назначать/отправлять токен сети L1 и может подписывать транзакции для взаимодействия со смарт-контрактами с идентификатором адреса (мы увидим, как это позволяет использовать другие токены L2).
Смарт-контракт — адрес в блокчейне, который включает в себя все функции кошелька (отправка/получение L1). Они могут хранить данные через переменные состояния (например, базы данных), выполнять функции с помощью байт-кода (например, функции базы данных/API) и взаимодействовать с другими контрактами, такими как кошелек.
Токены уровня 2 — смарт-контракт, реализующий интерфейс (ERC20) с общей функциональностью для облегчения чеканки, передачи, сжигания и других функций валюты. Кошелек не «держит» токены L2 так же, как он хранит L1; он просто может взаимодействовать с контрактом L2 для передачи токенов, эффективно изменяя переменную состояния баланса для своего собственного адреса и адреса, на который он переводится.
API в эпоху Web 3.0
Поток типичного API Web 2.0 выглядит примерно так:
1. Оплатить ключ аутентификации на сайте
2. Напишите код обработки строк для создания полезной нагрузки и/или переменных в строке URL.
3. Используйте HTTP-библиотеку для конкретного языка для отправки запроса на получение/отправку.
4. Изучив выходную структуру JSON, используйте другую библиотеку для анализа типов данных языка.
Для опытного инженера-программиста это не пугающий процесс, и он всегда включает только эти шаги. Однако интеграция API может быть утомительной и занимать много времени из-за плохой документации, сложных типов выходных данных, работы с платными ключами и обновлениями или изменениями API. Разработчик никогда не знает, что он получит, если одни API понятны и хорошо документированы, а другие устарели и неуклюжи.
В Web 3.0 доступ к данным осуществляется по-другому, что решает многие из этих проблем:
1. Другой контракт, разработанный и развернутый некоторыми другими организациями или отдельными лицами, который предоставляет некоторые данные или услуги, публикует интерфейс (аналогичный библиотеке) их общедоступных функций.
2. В наш собственный код мы можем импортировать код их интерфейса. Затем, зная адрес их контракта, мы можем сказать Solidity, что реализация этого интерфейса доступна по адресу, подобному этому:
IsomeAPI api = IsomeAPI(address);
3. Теперь мы можем использовать наш новый объект для взаимодействия с другим контрактом. Поскольку контракт также является встроенной надежностью, и наш собственный код, и внешний контракт будут использовать собственные типы входных и выходных данных. Взаимодействие выглядит и ощущается так, как будто объект находится в нашем контракте:
uint temp = api.getTemp(latitude, longitude);
Это новое решение для доступа к данным позволяет быстро и эффективно интегрировать столько источников данных, сколько необходимо разработчикам. Учитывая природу с открытым исходным кодом, документация по-прежнему полезна, но больше не нужна, поскольку один разработчик Solidity может просто просмотреть код интерфейса, чтобы ответить на свои интерактивные вопросы. В то же время это позволяет появляться универсальным протоколам. IERC20 — это интерфейс/API для токенов L2. Предоставляя адрес любого токена, IERC20 (адрес), разработчики могут получить универсальный доступ к любому уникальному токену, а также создать свой собственный за считанные минуты.
Преимущества не ограничиваются масштабируемостью и воспроизводимостью. Благодаря платежным системам, встроенным в L1 и L2, разработчики контрактов/API могут легко встраивать системы для взимания платы с пользователей за использование функции или доступ к данным. Это означает, что разработчику, использующему API, не требуются кредитные карты, подписки или запутанные модели ценообразования. Нужно просто понять, сколько валюты хранить, и платежи на обоих концах всегда будут работать безупречно.
Наконец, некоторые могут оспорить это понятие из-за несовместимости твердости с API-интерфейсами Web 2.0, данные которых еще очень нужно. К счастью, появились алгоритмы оракула, управляемые событиями, такие как Chainlink. Эти оракулы получают доступ к сторонним API и передают эти данные в мир смарт-контрактов, по сути обертывая API Web 2.0. В мире Web 3.0 доступ к этим API теперь так же прост, как создание объекта и использование простых функций для извлечения данных.
Чтобы продемонстрировать эффективность API Web 3.0, давайте рассмотрим, как выглядит процесс внесения денег на брокерский счет с точки зрения Web 2.0, и посмотрим, как это выглядит в Web 3.0.< br />
Веб 2.0:
1. Бэкенд получает одобрение пользователя на вызов API данного банка (требуется интеграция и понимание этого API, учетных данных и т. д.)
2. Банковский API инициирует ACH/банковский перевод на брокерские счета (ETA: от часов до дней)
3. Как только брокер получает средства, серверная часть вызывает API брокера для совершения сделки (вероятно, очень разные API, квалификационная система и др.)
4. Торговля происходит, и результаты должны быть явно зарегистрированы для поиска
Вот пример кода Web 3.0:
Как видите, выполнение сложного денежного перевода с помощью двух разных сервисов создает головную боль для разработчиков Web 2.0 из-за интеграции API, учетных данных и времени ожидания. В приведенном выше смарт-контракте Web 3.0 это можно сделать с помощью двух разных сервисов (исходный токен/банк и Uniswap/брокер) в нескольких строках легко читаемого кода. Кроме того, эта сложная финтех-транзакция будет выполняться за секунды, а не дни, хотя это выходит за рамки данной статьи.
В целом, реализация преимуществ хостинга API в эпоху смарт-контрактов многочисленна. Мы отметили, что любые данные или услугу можно рассматривать как объект с нативными функциями языка, стандартные протоколы могут появляться благодаря воспроизводимому характеру интерфейсов с уникальным адресом, а платежи через API могут быть упрощены. Наконец, в качестве бонуса, эти API следующего поколения не требуют настройки сервера, обслуживания или облачных платежей. Как только они будут развернуты, тысячи операторов блокчейна займутся этим и будут получать оплату через комиссию за газ за каждую транзакцию!
ООП переходит в онлайн
В последнем разделе рассказывается о том, что я считаю большим прорывом для Web 3.0. Есть еще одна вещь, которую я хочу подчеркнуть, которая может показаться удивительно похожей, ну, это то же самое, но перспектива дает еще один интересный способ просмотра Web 3.0. ООП или объектно-ориентированное программирование относится к использованию объектов в коде, который содержит переменные и функции для создания динамического и масштабируемого кода.
Переменные и функции звучат очень похоже на основную тему этой статьи. Смарт-контракты, по сути, являются объектами в языке ООП, и структура их кода выглядит так же, как классы Java, Python или C# с переменными, функциями и конструктором. Итак, что это значит, когда мы сложим это вместе? Объекты ушли в онлайн.
Это означает, что мы можем развертывать объекты с контролем доступа, конечно, к которым несколько «сервисов» в форме контрактов могут напрямую обращаться и управлять ими, чтобы другие сервисы делали то же самое. Может быть, мы хотим создать систему для сложной истории автомобиля и присвоения титулов. Мы можем развертывать объекты/контракты для каждого транспортного средства и создавать бесконечные микросервисы в форме других смарт-контрактов, чтобы выполнять множество различных действий с одними и теми же объектами, в то же время обеспечивая некоторую видимость для всех пользователей. Или, может быть, нам просто нужен более чистый способ доступа к нашим собственным базам данных в других службах, который может выглядеть так же просто:
В этом примере наша база данных надежно размещена в блокчейне с интерфейсом, который мы можем включить в любой из наших сервисов. Это не сильно отличается от большинства сторонних библиотек баз данных на основе языков, но я по-прежнему считаю, что инициализация, способность понимать код и работа с типами данных намного надежнее.
Заключение
В этой статье я надеялся продемонстрировать потенциал блокчейна и смарт-контрактов за пределами криптовалюты. Хотя меня по-прежнему интересует криптографическая сторона этой технологии, я пытаюсь дистанцироваться от токенов, NFT и клише, связанных со словом «блокчейн».
Для любого технолога важно помнить, что крипто — это блокчейн, но блокчейн — это не крипто, чтобы обеспечить поток новых вариантов использования этого мощного глобального явления. Мои идеи в настоящее время сосредоточены вокруг процессов разработки программного обеспечения в Web 3.0, стандартизации доступа к данным и смарт-контрактов в качестве будущей внутренней структуры. Я рад видеть, куда приведут вас ваши идеи, когда вы начнете думать о блокчейне за пределами криптовалюты!
Want to Connect? Connect with me on LinkedIn to share ideas and opportunities!
Ресурсы
[1] https://www.udemy.com/course/ethereum-and-solidity-the-complete-developers-guide/
[2] https://docs.openzeppelin.com/contracts/2.x/api/token/erc20
[3] https://docs.uniswap.org/protocol/V2/reference/smart-contracts/router-02