Меню

Создание смарт-контракта: это проще, чем вы думаете

Смарт-контракт может создать каждый

Смарт-контракты помогут вам вести бизнес в новой децентрализованной экономике. Большинство смарт-контрактов основано на платформах DApp (децентрализованные приложения), таких как Ethereum, Lisk или Cardano.

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

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

Разработка смарт-контрактов может стать высоколиквидным навыком для разработчиков, которые знают, как их создавать.

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

Если вы хотите больше узнать о том, что такое блокчейн, читайте статью Что такое блокчейн?

У Javascript-разработчиков не должно с этим возникнуть никаких проблем. Если немного разобраться, блокчейн похож на большинство фреймворков, которые вы обычно внедряете в код.

Планирование смарт-контракта

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

В этом примере мы сосредоточимся на распространении билетов на мероприятия.

Сфера распространения билетов сталкивается с серьёзными проблемами, которые связаны со спекулянтами, скупающими билеты пачками и людьми, использующими фальшивые билеты.

Технология блокчейн превосходно подходит для многих задач: двумя из них являются облегчение проведения транзакций и отслеживание информации.

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

Используя смарт-контракты, вы также можете создавать уникальные токенизированные билеты, которые могут принадлежать только конкретному человеку и не могут быть подделаны.

Если вы любите посещать концерты, фестивали и спортивные мероприятия, вы поймёте, в чём выгода этого варианта.

Возможности платформ DApp

Далее вам нужно выбрать платформу DApp, на которой вы будете создавать контракт.

Ethereum – самая крупная и известная платформа.

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

Однако один недостаток имеется – для написания контрактов сеть использует собственный язык Solidity.

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

В этой сети также имеется собственный магазин DApp (как Google Play или iTunes), где вы можете опубликовать своё приложение, когда закончите работу над ним.

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

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

Пока что давайте выберем платформу Ethereum или Lisk.

Для Javascript-разработчика Lisk может показаться логичным решением, потому что вы уже знакомы с этим языком.

Однако не стоит скидывать со счёта Ethereum. Сообщество разработчиков настолько развито, что вы сможете компенсировать любое недопонимание языка Solidity за счёт избыточного количества информации.

В Ethereum также входит фреймворк Truffle, созданный компанией Consensys. Он позволит вам легко интегрировать и протестировать сценарии использования созданных смарт-контрактов.

Создание смарт-контракта

Название Solidity звучит устрашающе, но на самом деле ничего сложного нет. Первое, что вы заметите в этом языке, – это поразительное сходство контрактов с классами JavaScript.

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

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

В нашем примере мы будем использовать эти функции для создания уникальных билетов и сопоставления их с аккаунтами, владельцы которых покупают эти билеты.

При создании первого контракта в сети Ethereum мы рекомендуем использовать среду разработки, которая находится на remix.solidity.org.

Эта среда предоставит вам интерактивное окружение для развертывания вашего контракта и взаимодействия с ним с разных учётных записей Ethereum.

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

На что следует обратить внимание

Уникальная особенность Solidity – это использование адресации. Все учётные записи Ethereum имеют уникальные адреса, и эти адреса представляют стороны контракта.

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

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

Покупатель отправляет вызов, после чего средства изымаются с его аккаунта, идентифицируются по адресу и передаются продавцу.

В Solidity также реализован уникальный способ привязки средств к смарт-контракту. Каждый вызов функции сопровождается сообщением.

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

Также стоит отметить, что не все контракты в Solidity бесплатны.

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

Другие вызовы бесплатны. Они просто запрашивают информацию из контракта, например, стоимость билета или количество оставшихся билетов.

Причина в том, что информация в контракте не обновляется, и в этих действиях нет никакого риска.

Подключение к JavaScript

Самой сложной частью работы с Solidity является интеграция контракта в код Javascript. Это делается с использованием фреймворка Truffle.

Первым шагом в процессе интеграции контракта является его развертывание и перенос в тестовую сеть. У фреймворка Truffle есть собственная тестовая сеть RPC на базе Ethereum, которая называется Ganache.

В результате этого процесса вы получаете JSON-версию контракта, которую вы можете вызывать с помощью адресов вашей тестовой сети через ваше приложение Javascript.

Если хотите получить дополнительную информацию об этом процессе, на веб-сайте Truffle всё превосходно описано в документации и в виде примеров.

Еще одна сложность, с которой вы встретитесь при создании смарт-контракта, – это его концептуализация.

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

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

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

Создание API для контракта делает доступ к информации с клиентской стороны приложения таким же простым, как отправка запроса AJAX. На веб-сайте Truffle есть хороший пример этой настройки.

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

Пожалуй, это самая сложная часть разработки Ethereum.

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

Виртуальная машина Ethereum довольно придирчива к такого рода вызовам.

Это еще одна область, в которой очень помогает большое сообщество разработчиков Ethereum.

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

Заключение

Эта статья не предназначена для того, чтобы научить вас писать на языке Solidity. Она задумывалась как пошаговое руководство по созданию смарт-контракта и его внедрению в Javascript-приложение.

Работа с блокчейном не вызовет затруднений у любого человека, который знаком с веб-разработкой.

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

Не позволяйте таинственной ауре блокчейна помешать вам создать что-то грандиозное.

Оставить комментарий

ТОП 5 криптобирж