Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
thepower.blog
5 лет назад

Децентрализованные приложения 2.0

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

Смарт-контракты - самые первые ДП

Самый простой пример децентрализованного приложения (без интерфейсной части) - смарт-контракт: код, который выполняется внутри блокчейна. За счет того, что он проверяется всеми узлами, его никто не может подделать. Результат проверки должен быть одинаков.

В PoW консенсусе все узлы выполняют смарт-контракт одновременно, но выигрывает тот узел, который раньше остальных посчитал выигрывающую комбинацию задачи или хеша. В асинхронном BFT консенсусе смарт-контракт выполняется полностью только на одном узле, а все остальные узлы должны проверить результат его выполнения. Теоретически они могут просто “поставить галочку” проверено, не выполняя смарт-контракт. Но так как проверка остальными узлами происходит после выполнения главным узлом, это занимает большее время.

Напомним, что консенсус Resonance - синхронный BFT алгоритм, поэтому смарт-контракт не только проверяется, но и исполняется одновременно на всех узлах, что позволяет уменьшить время на его исполнение и проверку.

Для того, чтобы смарт-контракты могли использоваться массово, были введены стандарты, например, ERC-20. Токен ERC-20 - просто вызов смарт-контракта для передачи ему каких-то данных. Это дало возможность стандартизировать графические и программные интерфейсы для работы с полями и функциями. Графический - чтобы создать кошелек, который работает с ERC-20 токенами, и программный - чтобы была возможность создавать автоматизированные биржи.

Мы используем смарт-контракты на Wasm, т.к. Wasm исполняется почти на всех устройствах (где есть JavaScript) и оптимизирован по объему данных.

Но все же когда мы говорим “децентрализованные приложения”, чаще всего мы подразумеваем приложения с клиентской частью, о них речь пойдет ниже.

ДП (децентрализованные приложения)

Итак, ДП могут быть серверными и полностью работать внутри блокчейна, но сейчас серьезных ДП, не взаимодействуцющих с внешним миром, кроме ERC-20, практически нет. Остальные используют графический интерфейс.
Давайте разберем ДП с графическим интерфейсом на уже хрестоматийном примере - криптокотиках.
У данного приложения есть клиентская сторона (фронтенд) и серверная сторона (бэкенд). В web-приложениях есть фронтенд и есть графический интерфейс (или графический пользовательский интерфейс, GUI), функцию которого выполняют примитивы web-браузера. А в серверной стороне одна часть выполняет вычисления, а другая, web-сервер - отправляет и принимает запросы графического интерфейса.
Приложение Cryptokitties запускает свой сайт, который содержит картинки, некоторую логику, а остальное “подтягивает” из блокчейна Ethereum.
Для того, чтобы выполнять какие-то действия внутри этого ДП, необходимо использовать плагин Метамаск, в котором пользователь хранит ключи от своего аккаунта сети Ethereum и подписывает транзакции для управления криптокотиками. Через Метамаск пользователь сообщает смарт-контракту, какие изменения он хочет произвести. Получение информации из блокчейна Ethereum возможно только через собственную ноду.
Как мы видим такое приложение обладает довольно сложной архитектурой. Бэкенд состоит из 2-х частей: 1-я - блокчейн, в нем хранится информация и результаты работы (обработки данных), 2-я - web-сервер, который отправляет интерфейс приложения и интерпретирует данные из блокчейна в фронтенд.
Фронтенд также состоит из 2-х частей: web-браузер и кошелек (например, Метамаск).
Попробуем описать процесс взаимодействия пользователя с приложением и логику происходящих процессов.

ДействиеЛогика
1. Пользователь запускает веб браузер и вводит имя сайтаПроисходит запрос к веб серверу
2. Веб браузер загружает интерфейс пользователя - страницу сайтаПроисходит выдача интерфейса веб сервера
3. Пользователь производит обычное взаимодействие (например, нажимает кнопку)Интерфейс запрашивает и получает данные от веб сервера
4. Пользователь производит действия, которые необходимо записать в блокчейн, например, выставить на продажу крипто-котикаА. Интерфейс формирует транзакцию и запрашивает ее подпись у кошелька. Кошелек выводит свой интерфейс для подтверждения транзакции, после подтверждения отправляет подписанную транзакцию напрямую в блокчейн. B. После любых действий с блокчейном интерфейс должен получить обновленную информацию от блокчейна через веб сервер (посредством собственного доверенного узла).

Можем выделить здесь 3 типа сущности:

  • Которые может полность контролировать Пользователь: веб-браузер и кошелек (ключи)
  • Полностью децентрализованные объекты, внести изменения в которые практически невозможно: смарт-контракт и блокчейн
  • Объекты инфраструктуры разработчика ДП: свой узел блокчейна и веб-сервер - полностью зависящие от конкретных владельцев - централизованная часть, целевой вектор атаки на приложение.

Главный минус такой архитектуры - большое количество векторов атаки: веб-сервер может быть взломан (подмена DNS или физически), подменен адрес перевода денег, можно взломать ноду, написав специальный код, взломать дополнительные модули к вебсерверу, Java-скрипты
Другой минус - наличие централизованных частей - например, web-сервера и кошелька. Если подумать, для существующих ДП “децентрализованные” не совсем корректное название.

ДП 2.0

Мы добавили новую функцию в смарт-контракт - интерфейсную. Таким образом, мы создаем новый стандарт - интерфейс взаимодействия клиентской части (фронтенда) и серверной (бэкенда). Благодаря этому, на базе наших смарт-контрактов можно строить полноценные децентрализованные приложения, где фронтенд защищенно связан с серверной частью, в роли которого выступает смарт-контракт, внесенный в блокчейн.
В настоящее время мы не можем полностью раскрыть алгоритм взаимодействия смарт-контракта и клиентской части приложения. Однако укажем, что смарт-контракт проверяет оригинальность клиентской части и ее адрес расположения.
Теперь разработчики могут сосредоточиться на интерфейсной, клиентской части приложений (либо программной, если мы например говорим об Интернете Вещей) и запускать их на смарт-контрактах с помощью нашего стандарта ДП 2.0. Нет необходимости создавать связующее ПО (middleware) и бэкенд, просто написать приложение на Rust, C, или C++, оно будет выполняться Wasm и компилироваться в бинарный код, понятный браузеру, и будет иметь серверную часть. Конечно, часть, написанная сторонними разработчиками должна проходить определенную проверку, чтобы им можно было доверять.
После подписания пользователем транзакции она меняет состояние смарт-контракта в блокчейне, и Dapp client может сразу получить и отборазить это изменение без задействования дополнительных серверов. Поэтому такую систему можно назвать “бессерверной” - serverless.

Заключение

Через некоторое время мы представим вам первое ДП 2.0 и Power_Store (магазин децентрализованных приложений и других продуктов и сервисов на блокчейне).
Если вы - активный разработчик, стартап или проект, и вам интересна тема смарт-контрактов или децентрализованных приложений - мы будем рады сотрудничать, делиться опытом и предоставить возможность написать свое приложение на новом стандарте - ДП 2.0.
Отправьте нам запрос на почту info@thepower.io, в запросе напишите о себе и кратко опишите задачу или проект, который вы хотите реализовать.
Если вы знаете C, C++ или Rust и вам интересно попробовать свои силы в написании смарт-контракта - у вас есть такая возможность ;)
Присоединяйтесь к нашему телеграм чату для разработчиков: t.me/thepower_dev.

8
0.290 GOLOS
На Golos с December 2018
Комментарии (3)
Сортировать по:
Сначала старые