26 июля 2022

Как вообще работают блокчейн, смарт-контракты и приложения?

Участники Tezos DeFi Hackathon 2022 спрашивали, как работают смарт-контракты, кто их вызывает, что за входящие параметры и откуда берется Storage. Разработчик Baking Bad Михаил Заикин очень подробно это объяснил. Мы решили, что такими знаниями нужно поделиться с сообществом. За основу взяли пост Михаила, расширили его примерами и добавили иллюстраций.

Что такое блокчейн

Блокчейн — это база данных, которая состоит из блоков. Каждый блок содержит информацию о транзакциях и операциях за небольшой отрезок времени. 

Блоки складываются в цепочку; отсюда и название blockchain, то есть цепочка блоков. Каждый следующий блок содержит хеш-сумму предыдущего — результат преобразования всех данных в блоке. Он служит средством проверки того, что информация в старых блоках не изменялась с момента их создания. Если заменить одну операцию в блоке, то его хеш-сумма изменится, и узлы заметят факт подмены. Поэтому блокчейн нельзя отредактировать и откатить старые операции.

Блокчейн хранят узлы или ноды — компьютеры, объединенные в P2P-сеть. P2P означает, что все узлы равны, выполняют одинаковые функцию и напрямую обмениваются друг с другом информацией об операциях и блоках. 

Таким образом у каждого узла есть собственная копия истории всех выполненных транзакций, а также состояние (State) — итоговый результата операций: баланс адресов, список и код смарт-контрактов и их данные — хранилище или Storage.

Как блокчейн выполняет операции

Операция — это преобразование состояния блокчейна. Узел применяет к старому состоянию входящие параметры и точки входа (Entrypoints), и возвращает новое состояние. Операции могут быть разных типов: деплой (публикация) смарт-контракта, транзакция tez, вызов смарт-контракта и другие. 

Например, при вызове смарт-контракта пользователь указывает его адрес и аргументы, которые нужно передать контракту. Узлы распространяют этот запрос по всей сети, добавляют его в текущий блок, а затем применяют его каждый к своему состоянию.

Для обработки запроса узел по адресу смарт-контракта находит в блокчейне его код и данные (Storage или хранилище). Затем он запускает интерпретатор контрактов, загружает в него код, входящие аргументы и текущие данные контракта. На выходе он получает новые данные, и перезаписывает их в состоянии. 

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

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

Как работают смарт-контракты 

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

При деплое контракта в блокчейн разработчик задает его изначальное состояние — данные, которые затем будут преобразовывать узлы при выполнении операций. Например, при создании смарт-контракта токена разработчик указывает количество токенов и адреса пользователей, которые имеют право ими распоряжаться. 

Так как узлы записывают код контракта в блок, в будущем разработчик не сможет его изменить. Команды проверяют код в тестовых сетях и проводят аудиты безопасности, чтобы не опубликовать в мейннете нерабочий или уязвимый продукт — его не получится исправить.

Как приложения работают со смарт-контрактами

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

Когда пользователь нажимает на кнопку, например для обмена токенов на DEX, приложение формирует запрос на выполнение операции с указанными пользователем аргументами и передает ее узлам. 

Подписывайтесь на социальные сети Tezos Ukraine, чтобы ничего не пропустить:

  1. Telegram-канал
  2. Facebook.
  3. Twitter на русском и украинском языках
  4. Twitter на английском языке
  5. YouTube-канал
  6. Instagram
  7. LinkedIn
  8. hub на ForkLog

Изначально мы опубликовали этот материал в блоге Tezos Ukraine.

Обсудить в Discord!