Создание блокчейн-приложения с помощью Plutus

Самые главные криптоновости в Телеграм-канале CryptoMoon, присоединяйтесь!👇

Cryptomoon Telegram


Создание блокчейн-приложения с помощью Plutus

Введение 

Поздравляем! Вы только что отправились в захватывающее путешествие в мир разработки блокчейнов вместе с Plutus. Как человек, который там был, позвольте мне сказать вам, что это больше, чем просто написание кода – это создание основ для децентрализованных систем, которые могут изменить отрасли.

Блокчейны оказывают значительное влияние во многих секторах, предоставляя децентрализованные и прозрачные решения. Эволюция технологий разработки существенно изменила ситуацию как для разработчиков, так и для сообществ. Помимо простой децентрализации, блокчейн предлагает такие преимущества, как сокращение времени транзакций и устранение необходимости проверки третьей стороной, тем самым уменьшая мошенничество и киберугрозы. Для разработчиков освоение разработки приложений блокчейна является ценным навыком, особенно при работе с надежными инструментами, такими как Plutus. Plutus — это платформа смарт-контрактов на блокчейне Cardano, которая обеспечивает прочную основу для создания безопасных и эффективных децентрализованных приложений (DApps).

Что такое Кардано?

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

Плутус

Проще говоря, Plutus — это язык создания контрактов на платформе Cardano. Он построен на Haskell, функциональном языке программирования, что означает, что вы не пишете Plutus Core напрямую — вместо этого сценарии автоматически генерируются плагином в компиляторе Haskell. Эта функция позволяет проводить формальную проверку, которая использует математические доказательства для обеспечения правильности контракта и повышения безопасности, уменьшая количество потенциальных ошибок в смарт-контракте.

В блокчейне Cardano Plutus работает бесперебойно, позволяя разработчикам напрямую взаимодействовать с базой данных и инфраструктурой Cardano. Это облегчает разработку и внедрение смарт-контрактов, которые могут напрямую взаимодействовать с сетью Cardano. Plutus предлагает инструменты для моделирования смарт-контрактов без необходимости использования полного узла Cardano, что позволяет экспериментировать перед запуском в основной сети. Plutus — идеальный выбор для разработчиков, стремящихся создавать надежные и эффективные децентрализованные приложения.

Аудитория

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

Настройка среды разработки

Крайне важно начать с идеальной подготовки к вашему приключению в области разработки. Поэтому создание благоприятной среды для Плутуса составляет основу этого этапа.

1. Установка Плутуса

Загрузите Plutus из официального репозитория: 

клон git https://github.com/input-output-hk/plutus-apps.git
cd plutus-apps
nix-оболочка

Проверьте установку, используя: plutus -v

2. Выбор IDE

При разработке приложений с помощью Plutus крайне важно иметь правильную IDE. Plutus основан на Haskell, поэтому рекомендуется иметь IDE, поддерживающую Haskell. Двумя популярными вариантами разработки Plutus являются Visual Studio Code (VS Code) и Plutus Playground. Вот расширенное руководство по настройке и использованию этих IDE для разработки Plutus.

Вариант редактора кода: VSCode или Visual Studio Code — популярный и адаптируемый текстовый редактор, который работает практически с любым языком программирования и предлагает полезные расширения. Это делает его очень предпочтительным для разработчиков для решения задач кодирования. VSCode с открытым исходным кодом предлагает обширный набор инструментов и функций для оптимизации процесса кодирования.

Шаги по настройке VSCode:

  • Скачайте VSCode с официального сайта (в зависимости от вашей операционной системы)
  • Установить программное обеспечение
  • Plutus построен на Haskell, поэтому вам необходимо установить платформу Haskell, которая включает в себя компилятор Glasgow Haskell (GHC) и cabal (инструмент сборки для Haskell).
  • Загрузить Haskell
  • Установите расширения Haskell в VS Code (Haskero, подсветка синтаксиса Haskell и т. д.)
  • Настройка расширений и установка дополнительных расширений
  • Поскольку вы уже установили Plutus, все готово!

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

Вы можете посетить веб-сайт Plutus Playground и начать!

В обоих сценариях вы можете эффективно работать над разработкой Plutus. Вы можете найти продуктивный подход, используя Visual Studio Code для комплексных проектов и одновременно используя Plutus Playground для быстрого тестирования и концептуализации, тем самым наслаждаясь преимуществами каждой среды.

3. Установка необходимых библиотек

Используйте Cabal для установки необходимых библиотек для разработки Plutus.

Понимание концепций блокчейна с помощью Plutus  

Проще говоря, блокчейн — это сложная сетевая система для хранения данных транзакций. Вместо традиционных баз данных, где информация хранится в одном месте, эта система распределяет данные по нескольким компьютерам. Каждый фрагмент хранимых данных (или «блок») связан с другими блоками с использованием сложных математических принципов, и после записи эти блоки трудно изменить, не вызывая проблем с последующими блоками. Такая конструкция гарантирует, что записи цифровых валют остаются неизмененными и безопасными.

Блокчейн состоит из трех основных компонентов:

  • Блоки. Блоки содержат информацию о транзакциях, а также метаданные. Все блоки связаны друг с другом посредством хеширования, которое  образует цепочку блоков, следовательно, блокчейн. 
  • Транзакции.Транзакция — это передача данных от одного объекта к другому в рамках блокчейна. В Plutus транзакции пишутся на Haskell и включают входные и выходные UTXO (неизрасходованные выходные данные транзакций).
  • Цепочки: В Plutus цепочка поддерживает порядок транзакций и гарантирует их неизменность после подтверждения.

В следующем фрагменте кода мы можем увидеть структуру блока в Plutus:

Создание блокчейн-приложения с помощью Plutus

Каждый компонент блока упоминается вместе с его типом данных.

  • Индекс — это целое число, которое сообщает позицию блока.
  • Временная метка — время создания блока.
  • Транзакции — это строка или список всех транзакций, включенных в определенный блок.
  • Хэш — это уникальный шаблон и первичный ключ для идентификации блока.
  • Предыдущий хэш относится к непрерывности и является хешем последнего блока.

В этом фрагменте кода мы можем увидеть структуру транзакций в Plutus:

Создание блокчейн-приложения с помощью Plutus

Децентрализация, неизменность и механизмы консенсуса:

Сила блокчейна коренится в трех фундаментальных элементах: распределении, постоянстве и системе соглашений.

Децентрализация: Децентрализация относится к характеристике, при которой ни один объект не имеет власти над базой данных в блокчейне. Такая настройка делает крах системы и предвзятость крайне маловероятными, поскольку каждое участвующее устройство (или узел) хранит копию блокчейна. Это обеспечивает прозрачность и предотвращает централизованные сбои или несанкционированный доступ.

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

Протокол консенсуса блокчейна: совокупность правил, регулирующих различные аспекты сети блокчейн. Эти протоколы требуют, чтобы все участвующие узлы в сети согласовали используемые методы. Механизмы консенсуса служат для синхронизации этих узлов и обеспечения того, чтобы все они работали по одним и тем же принципам.

Создание простого блокчейна с помощью Plutus

Базовый строительный блок любого блокчейна называется «блоком». В этом конкретном фрагменте кода мы создали «блочную» структуру данных с ее составными частями.

Как исследователь, занимающийся разработкой блокчейнов, я осознаю важность поддержания целостности нашей системы блокчейнов. Для этого крайне важно, чтобы каждый блок в цепочке имел отдельный хэш. Для этой цели мы используем метод хеширования SHA256, который широко признан и пользуется доверием в этой области, для расчета этих хэшей с помощью Plutus.

Создание блокчейн-приложения с помощью Plutus

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

Если вам понадобится помощь, обратитесь к приведенному ниже коду!

Создание блокчейн-приложения с помощью Plutus

Реализация механизмов консенсуса в Plutus 

Первоначально Cardano использовал механизм Proof of Work, но позже перешел на систему Proof of Stake. Примечательно, что Plutus был разработан с учетом совместимости с протоколом Cardano Ouroboros PoS. Такая конструкция обеспечивает масштабируемость, энергоэффективность и безопасность децентрализованных приложений (DApps).

Вот обзор алгоритмов консенсуса, которые могут работать с Plutus.

  • Ouroboros: Ouroboros — это механизм Proof of Stake, с которым Plutus очень совместим, и это зависит от доли ADA, которую валидаторы готовы принять для проверки нового блока. Контракты Plutus органично взаимодействуют с протоколом Ouroboros, гарантируя, что выполнение смарт-контрактов остается безопасным и энергоэффективным.
  • Доказательство работы:PoW — самый древний механизм, широко использовавшийся во всех старых криптовалютах. В случае с Плутусом это все еще можно реализовать на бумаге. Это было бы более полезно при рассмотрении изолированных сценариев, таких как образовательные и экспериментальные цели.
  • Делегированное доказательство работы и византийская отказоустойчивость: Эти механизмы не особенно совместимы с Cardano, но теоретически могут быть реализованы на Plutus.

В этом разделе мы рассмотрим, как можно использовать Proof of Work в Plutus.

Создание блокчейн-приложения с помощью Plutus

В системе Proof of Work майнеры соревнуются друг с другом, чтобы первыми решить сложную математическую задачу, что дает им право подтвердить создание новой монеты. В этом фрагменте кода функция доказательства работы ищет определенное число, называемое «nonce», которое в сочетании с хешем предыдущего блока генерирует новый хеш, который начинается с заранее определенного количества нулей в начале. Это простой пример PoW, где уровень сложности регулируется так, чтобы найти действительный одноразовый номер либо проще, либо сложнее.

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

Вот пример фрагмента кода:

Создание блокчейн-приложения с помощью Plutus

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

Создание простого API блокчейна с помощью Plutus  

В этом разделе мы покажем вам, как создать базовый API для связи с приложением блокчейна, разработанным с помощью Plutus. Этот API служит двум целям: он позволяет пользователям добавлять новые блоки и предоставляет доступ для изучения блокчейна путем отправки HTTP-запросов.

Шаги по созданию API:

  • Настройте среду для API: установите Haskel (что уже сделано), затем установите Servant с помощью Cabal.
  • Скачайте все необходимые библиотеки:
    • Слуга: создать API
    • Aeson для кодирования и декодирования JSON: cabal install aeson plutus-core
    • Plutus для интеграции всего кода и логики 

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

Теперь вы можете пойти дальше и определить конечные точки:

{-# LANGUAGE DataKinds #-}{-# LANGUAGE TypeOperators #-}module BlockchainAPIwhereimport Servantimport Control.Monad.IO.Class (liftIO) — Определите тип блока (см. главу 3)data Block = Block  { index :: Int  , timestamp    :: String  , dataField    :: String  , previousHash :: String  , hash         :: String  } вывод (Show, Eq) — Блокчейн — это просто список типов блоков Blockchain = [Block] — Определите тип API BlockchainAPI = «addBlock» :> ReqBody ‘[JSON] Block :> Post ‘[JSON] Blockchain:<|> «chain» :> Get ‘[JSON] Blockchain — заполнитель для блокчейна, первоначально начинающийся только с исходного блокаgenesisBlock = Block 0 «2024-09-12 00:00:00» «Genesis Block» «0» «some_hash»initialBlockchain:: BlockchaininitialBlockchain = [genesisBlock] — Обработчики для конечных точек API addBlockHandler :: Blockchain -> Block -> Handler BlockchainaddBlockHandler блокчейн newBlock = dolet newBlockchain = блокчейн ++ [newBlock]    liftIO $ putStrLn «Блок добавлен!»    return newBlockchain — Обработчик для получения ChainviewChainHandler :: Blockchain -> Handler BlockchainviewChainHandler блокчейн = вернуть точку входа в блокчейн-Основную для запуска APIapp :: Applicationapp = служить (Прокси :: Прокси BlockchainAPI) (blockchainServer InitialBlockchain)

Объяснение приведенного выше кода:

  • Блок определяется аналогично предыдущим главам.
  • Библиотека Servant используется для определения структуры API. Существует два метода определения конечных точек API: GET и POST, что означает получение и добавление блокчейна соответственно.
  • Мы также определили обработчики (addBlockHandler) для обработки новых добавляемых блоков и viewChainHandler), просматривающие другой блок.
  • В конце есть основная функция, которая является сердцем кода, связывает все вместе и запускает сервер API.

Следуя определению API, существует два способа включить конечные точки и собрать сведения о конечных точках блокчейна.

Создание блокчейн-приложения с помощью Plutus

Ура! Вы эффективно интегрировали этот раздел, что позволяет запускать API с помощью Cabal. Уверенно переходите к следующему этапу, поскольку, кажется, все готово!

Запуск и тестирование приложения 

После создания API блокчейна давайте приступим к проведению некоторых тестов. Мы можем использовать такие инструменты, как Postman или Curl, для взаимодействия с API и обеспечения его правильного функционирования.

Шаги по запуску и тестированию приложения:

  • Скомпилируйте программу и запустите ее:  cabal build   cabal run
  • Запустите сервер: API должен быть доступен по адресу http://localhost:8080.
  • Протестируйте и добавьте конечные точки блока

 “индекс”: 1,  
“метка времени”: “2024-09-12 12:30:00”, 
 “dataField”: “Это мой новый блок”,  
“previousHash”: “some_hash”,  
“хеш”: “new_block_hash”

Посмотреть блокчейн

curl http://localhost:8080/chain

Как исследователь, я успешно создал базовое приложение блокчейна, которое теперь работает с API, созданным с использованием Plutus. Этот API позволяет другим приложениям или пользователям беспрепятственно взаимодействовать с моим блокчейном, предоставляя им возможность добавлять новые блоки и проверять текущее состояние блокчейна.

Реальный пример создания блокчейн-приложения с помощью Plutus

Создание блокчейн-приложения с помощью Plutus
Создание блокчейн-приложения с помощью Plutus
Создание блокчейн-приложения с помощью Plutus

Приведенный выше фрагмент кода представляет собой пошаговое выполнение:

  • Шаг 1. Создайте тип данных Block с необходимыми атрибутами, используя синтаксис Plutus.
  • Шаг 2. Реализуйте метод Calculation_hash.
  • Шаг 3. Определите тип данных Blockchain и инициализируйте его с помощью исходного блока.
  • Шаг 4. Реализуйте методы для добавления новых блоков и получения последнего блока с помощью Plutus.
  • Шаг 5. Добавьте функциональность «Доказательство работы» к типу данных «Блок» и обновите тип данных «Блокчейн».
  • Шаг 6. Настройте среду API для обработки запросов с помощью Plutus.
  • Шаг 7. Протестируйте приложение, добыв новый блок и проверив блокчейн с помощью Postman или Curl.

Поздравляем! Вы достигли конца модуля и изучили все основы Plutus.

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

Также ознакомьтесь: Как спроектировать, разработать и внедрить собственную криптовалюту: пошаговое руководство

Смотрите также

2024-09-14 10:24