BTC $ 5526.13748888 (-10.03 %)
XRP $ 0.4551503236 (-4.08 %)
ETH $ 176.150126083 (-8.66 %)
BCH $ 417.112905985 (-10.58 %)
XLM $ 0.2250216622 (-6.75 %)
EOS $ 4.4211784037 (-9.42 %)
LTC $ 42.250852813 (-9.93 %)
USDT $ 0.982825587 (-0.61 %)
ADA $ 0.0605938397 (-11.67 %)
XMR $ 84.0101266293 (-13.92 %)

Solidity — основной инструмент для создания смарт-контрактов на Эфириуме

08:00 01/11/2018

Введение

 

Шаг за шагом мы раскрыли некоторые базовые концепции и решения в глобальной криптосреде — в частности те, которые относятся к смарт-контрактам. Программные компоненты блокчейн-решений значительно развились. Начиналось всё с простого скрипт-кода. Последующая разработка расширила функциональность смарт-контрактов и добавила в их реализацию особенности высокоуровневых языков программирования. Поскольку Эфириум первым привлек внимание к такому подходу, мы рассмотрим его основной инструмент для создания смарт-контрактов — язык программирования под названием Solidity. Все данные, предоставленные в статье, актуальны на 22 октября 2018.

 

Описание Solidity 


Как можно понять из официального описания, Solidity — это сложный язык программирования, разработанный исключительно для написания и размещения смарт-котрактов на блокчейне Эфириум. Он предназначен для взаимодействия с Виртуальной машиной Эфириума (Ethereum Virtual Machine, EVM). На его архитектуру повлияли некоторые популярные языки типа C++ и Python. Другие основные свойства включают статическую типизацию, иерархичность, наборы функций, разнообразных пользователей и другие.

 

Solidity можно использовать в рамках нескольких интеграций, включая компиляторы Remix, Visual Studio, плагины Atom и другие решения. Он поддерживает консольный интерфейс, но контракты можно писать и размещать и в режиме оффлайн. Разнообразные сервисы, относящиеся к Solidity, включают проверку и отладку смарт-контрактов, конструкторский инструментарий, управление и поддержку в среде размещения, проверку уязвимостей, анализ битовых кодов, создание документации и разнообразные анализаторы.


Смарт-контракты на Solidity 


Прежде чем продолжить, вспомним важную информацию о смарт-контрактах на блокчейне Эфириума. Существует два вида учетных записей. Первый вид — «Аккаунт, управляемый извне» (Externally owned account, EOA), предназначенный для управления участниками. У такого аккаунта есть адрес, баланс эфира, и он управляется пользователями при помощи секретных ключей. Второй тип учетной записи называется «Контрактный аккаунт» (Contract account). Согласно официальной документации, это сплав кода и информации, размещенный в определенном месте на блокчейне Эфириума. У него есть адрес, баланс, а также два хеш-указателя на выполняемый код и место постоянного хранения. На втором типе аккаунта мы и остановимся.

 

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


Во-первых, за выполнение контракта требуется заплатить цену в газе. Газ можно рассматривать как топливо в EVM. У него есть своя цена, измеряемая в эфире, и в конечном счете, именно эфир будет тратиться в ходе выполнения смарт-контракта. Во-вторых, вызов контрактов ограничен глубиной. Максимальная глубина, которую можно достичь в последовательности вызовов смарт-контрактов, составляет 1024. Дальнейшие вызовы вернут исключение и прервут выполнение.

 

Подробности и применение


Большая часть свойств и техник, присутствующих в Solidity, широко используется в языках программирования высокого уровня, например Vyper. Также существуют некоторые уникальные решения. С точки зрения синтаксиса и семантики Solidity включает команды импорта с разнообразным определением путей, различные комментарии, переменные состояний, функции-коды внутри контракта, функциональные модификаторы для уточнения поведения функций, интерфейсы в виде событий, определяемые пользователем структурные типы, переменные логические типы, целочисленные типы, адресные типы с отдельными полями, типы контрактов, массивы, константы и т.д.

 

К основным свойствам, которые гарантируют языковое разнообразие, также относятся функции многих типов с вариантами их исполнения, хешированная привязка, преобразование типов, команды управления эфиром, вопросы времени, разнообразные переменные и функции, адресные свойства транзакций и блоков, функции по работе с бинарными данными, управление ошибками, динамическое создание контрактов, библиотеки, встроенный ассемблер. Более привычны структуры и выражения для управления: if, else, while, do, for, break, continue, return и другие.

 

Послесловие


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

Нашли ошибку? Выделите её и нажмите Ctrl + Enter чтобы сообщить администратору.

Самые актуальные новости о криптовалютах и блокчейне. Прочтите первым!

Зачем мне это?

Загрузка...