Условия договора описанные на языке программирования и исполняемые в блокчейне

Обновлено: 18.05.2024

На чем пишут Blockchain проекты?

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

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

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

Blockchain Programming Language - C++

C++ - это проверенный временем язык программирования, который пользуется огромной популярностью среди самых разных программистов. C++ - статически типизированный, обычно скомпилированный мультипарадигмальный универсальный язык программирования среднего уровня сложности. Проще говоря, C++ является не очень сложным, эффективным и универсальным языком программирования на основе C. Он был разработан Бьярном Страуструпом в 1979 году.

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

Язык поддерживает самые разные варианты программирования от традиционных методов до порождающих. С++ чаще всего выбирают как первый язык программирования из за четырёх причин:

  1. Компилируемый язык со статической типизацией.
  2. Сочетание высокоуровневых и низкоуровневых средств.
  3. Реализация ООП.
  4. STL. Компилятор - наверное наиболее идеальная часть С++.

Язык обладает большим количеством консольных команд и компиляторов. Не смотря на то, что первое “творение” необходимо создавать в обычном текстовом редакторе, а также использовать компилятор, C++ может отлично показать себя во всей красе. Статическая типизация - типы этого языка в большинстве своём аналогичны своему предшественнику С и не являются очень сложными. Вычислительная производительность - гордость С++, так как внешне языковой интерфейс прозрачно построен.

Библиотеки на С могут вызываться из C++ без дополнительных затрат. При некоторых ограничениях код на C++ может экспортироваться внешне неотличимо от кода на С. Код даёт возможность своему пользователю максимально удобно контролировать все аспекты структуры. Язык поддерживает взаимодействие с памятью на низком уровне. Библиотека стандартных шаблонов (STL) предоставляет огромные возможности для поиска вспомогательных функций, контейнеров и алгоритмов. Она считается одной из лучших среди всех языков программирования. Для каждого контейнера существует собственная итерационная группа(всего 5).

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

Simplicity

Blockchain Programming Language - Simplicity

Solidity, как большинство других языков из этой статьи, является объектно-ориентированным языком программирования. В то время как языку C++ более 30 лет, Simplicity вряд ли достигнет этой отметки в ближайшее время. Это, пожалуй, наиболее известный молодой язык программирования блокчейн. Он был создан Расселом О'Коннором и анонсирован в ноябре 2017 года. Simplicity - это язык программирования более высокого уровня, который чаще всего в мире блокчейна используется для написания более понятных смарт-контрактов. Для сравнения, криптовалюта Bitcoin имеет умный контрактный язык, называемый Bitcoin Script, однако он довольно низкоуровневый и требует глубокого понимания биткойна.

Изначально Simplicity был задуман как “идеальный вариант” по сравнению с существующими языками криптовалют, избегая их недостатков и открывая новые перспективы для умных контрактов на блокчейнах при построении на основе модели Bitcoin UTXO. Simplicity предлагает улучшенную концепцию безопасности. Это начинается с безопасности типов: Simplicity - это типизированный функциональный язык программирования, использующий комбинаторы.

Существует также безопасность, которая обеспечивается анализируемостью: хотя Simplicity окончательно завершена, позволяя программировать все конечные вычисления и предоставляя всю функциональность, необходимую для мощной системы интеллектуальных контрактов, она является неполной по Тьюрингу, запрещая неограниченные циклы и допуская статический анализ. Наконец, формальная семантика поддерживает рассуждения о языке в Coq Proof Assistant, обеспечивая безопасность формальной проверки. Язык Simplicity предлагает несколько существенных улучшений, первое из которых - завершение и расширение возможностей сценариев.

Simplicity улучшает концепции существующих языков криптовалют за счет интеграции Merklized Abstract Syntax Trees (MAST). Как родной язык программирования MAST, Simplicity упорядочивает свои программы в деревья, а затем раскрывает только те части, которые необходимы для выполнения. Неиспользуемые части программы удаляются, увеличивая конфиденциальность и уменьшая требования к пространству блоков.

Обобщая многие из низкоуровневых концепций от Биткойн-скрипта, Simplicity делает создание умных контрактов быстрее и проще, чем какой-либо другой язык программирования. Чаще всего при создании смарт-контрактов ядро Simplicity реализовывают в качестве модуля Haskell. Этот модуль экспортирует функции, которые позволяют писать и выполнять выражения Simplicity в виде кода на Haskell, практически без перевода.

JavaScript

Blockchain Programming Language - JavaScript

Согласно опросу 2018 года, JavaScript является наиболее популярным языком на веб-сайте разработки программного обеспечения и хостинга GitHub. JavaScript и его десятки библиотек, от jQuery и React до Angular и Node, являются движущей силой современной веб-разработки. Почему JavaScript так популярен? Во многом это потому, что язык очень хорошо справляется с асинхронными действиями. Эта особенность делает JavaScript идеально подходящим языком для операций блокчейна.

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

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

Браузер интерпретирует JavaScript как теги HTML. Он включает в себя все возможности процедурного языка. Разделение, зацикливание, проверка состояния - вот некоторые из тех возможностей, которые могут быть выполнены на веб-странице. Будучи основанным на событиях, различные сегменты кода выполняются всякий раз, когда в JavaScript происходит определенное событие. На простом языке сегмент кода выполняется, когда пользователь нажимает кнопку или наводит указатель мыши на объект. Использование JavaScript снижает барьеры для входа блокчейн разработчиков, которые заинтересованы в этом направлении.

Python

Как и JavaScript, Python легок в освоении и является общей точкой входа в мир программирования, особенно для ученых и аналитиков данных. Python пользуется большим активным сообществом, которое выпустило библиотеки, такие как SciPy, NumPy и Pandas, для различных технических приложений в математике, науке и технике. Python - это популярный высокоуровневый динамический язык программирования общего назначения, который присутствует на рынке почти 30 лет. Сегодня его легко найти практически везде: веб-приложения и приложения для настольных компьютеров, машинное обучение, сетевые серверы, блокчейны и многое другое.

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

В частности, Python превосходно обрабатывает числа - принимает большие наборы данных, очищает, обрабатывает, анализирует и визуализирует их. Эти навыки очень хорошо подходят для управляемых данными отраслей, таких как финансы и IoT. С появлением Raspberry Pi, микрокомпьютера размером с карточку, Python расширил свою досягаемость до беспрецедентных высот.

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

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

Solidity

Blockchain Programming Language - Solidity

Solidity - это язык программирования, который в первую очередь предназначен для написания умных контрактов для блокчейнов на основе Ethereum. Синтаксис Solidity основан на JavaScript, что облегчает выбор языка, а также заимствует концепции из C++ и Python. Несмотря на то, что он обладает многими аналогичными преимуществами, что и Simplicity, Solidity разработан специально для использования с сетью блокчейнов Ethereum.

Однако, с языками COP, есть дополнительные функциональные возможности, которые оптимизируют эти контракты до более высокого уровня. Одно преимущество, которое Solidity заимствует из других языков, - это поддержка свойств наследования в конструкциях. Посредством наследования разработчики могут создавать абстрактные классы с общими определениями. Благодаря наследованию поддерживается иерархическое отображение. Дополнительным преимуществом наследования является возможность использования переменных-членов в объектах и классах.

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

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

Rholang

Blockchain Programming Language - Rholang

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

Вместо использования переменных для хранения значений и изменения этих значений в ходе выполнения программы, функциональное программирование рассматривает программы как последовательность математических функций, которые должны оцениваться последовательно. Хотя Rholang предлагает многие из тех же возможностей, что и Simplicity и Solidity, Rholang работает в специфически функциональном контексте. Проект ориентирован на разработчиков блокчейнов, которые предпочитают работать в среде функционального программирования.

Blockchain Programming Language Example of the projects

Примеры блокчейн проектов

Вывод

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

Вы также можете работать с установленным блокчейном Ethereum, используя Solidity. С другой стороны, если вам нужен большой контроль над созданием собственного блокчейна, вы можете использовать такие языки, как C++, JavaScript, Rholang и Python, для построения системы и ее настройки по своему усмотрению.

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

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

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

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

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

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

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

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

Шестая причина - это экономия денег на заключении договоров. Нет необходимости прибегать к услугам адвокатов. Можно просто использовать технологию смарт-контрактов.

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

Инструментарий и приложения экосистемы эфириума

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

В экосистеме Ethereum широко используются такие инструменты, как Geth, Parity , Solidity, Remix, Truffle, Webpack, Angular и так далее. Каждый из них используется для решения конкретных задач.

Узлы сети блокчейна: Go-Ethereum, Parity, CPP-Ethereum

Примерами узлов блокчейна выступают такие программы, как Geth, Parity или CPP-Ethereum. Все они работают на клиентской стороне, то есть их можно загрузить и запустить на вашем компьютере, как и для всех других пользователей сети Ethereum. Они все выполняют одну и ту же задачу: реализуют протокол Ethereum. Не смотря на то, что разные инструменты выполняют одну и ту же роль, они написаны на разных языках программирования. Развитием инструментов занимаются различные команды, которые обязательно следят за тем, чтобы даже на разных языках программирования протокол Ethereum был реализован корректно. Если проводить аналогию, то эта схема похожа на использование среды MySQL в режиме "мульти-мастер", когда все узлы выполняют одну и ту же задачу по репликации базы данных . Это отлично описывает то, что делают все узлы в сети блокчейна - они копируют все блоки на своих компьютерах. Поэтому при загрузке Geth, Parity , или CPP-Ethereum и запуске клиента после установки подключения к другим узлам будет загружено все содержимое блокчейна. Исключение составляет только режим "легкого клиента", когда загружаются только заголовки блоков.


Блокчейн эволюционирует от платежных систем к платформам, поддерживающим децентрализованные приложения. Чарльз Хоскинсон приводит хороший пример: при работе над платформой Ethereum ее создатели поняли, что перевод токенов — отдельная история, в которой можно задавать определенные условия осуществления перевода. Благодаря дальнейшему развитию технологий пользователи блокчейна увидели более широкие возможности, чем просто перевод токенов, и начали создавать полезные — и даже прикольные — децентрализованные приложения. В рамках публичных блокчейнов существует несколько основных пользовательских кейсов:

  1. Игры — Crypto Kitties, Ride on waves и т.д.
  2. Обмен токенов
  3. Надежные системы голосования
  4. Краудфандинг (ICO).

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

  1. Документооборот компании
  2. Бизнес-процессы цепи поставок
  3. Страхование
  4. Надежные системы голосования
  5. Исполнение взаимных обязательств с поставщиками
  6. Лизинг и аренда оборудования
  7. Создание деривативных финансовых инструментов, обеспеченных материальными и нематериальными активами (например, токенизация долга)
  8. Аукционы любого вида и сложности
  9. Предиктивная аналитика данных на блокчейне.

Как вы понимаете, смарт-контракты для публичных и приватных блокчейнов отличаются. Основные отличия смарт-контрактов на приватном блокчейне:

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

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

Вопрос: На каком языке должны быть написаны смарт-контракты, и каким должен быть их уровень безопасности?

Ответ: Как вы знаете, у Waves есть язык Ride, удобный и хорошо интегрированный в блокчейн, но он работает лишь с приложениями, логика которых ограничена блокчейном. Для приложений, работающих с большим числом документов Ride неудобен, и мы должны использовать что-то более удобное для разработчиков.

Вопрос: Может ли система выразить сложные бизнес-правила в простой форме?

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

Вопрос: Можем ли мы в будущем доработать контакты, не переписывая все блокчейн-структуры?

Ответ: Нет — для большинства решений на рынке (кроме Hyperledger Fabric). Основная причина — в том, что контакты интегрированы в блокчейн слишком глубоко. Это — наследие публичных блокчейнов, где повторная интеграция является прямой угрозой безопасности системы.

Вопрос: Насколько легко интегрировать смарт-контракты в существующую инфраструктуру клиента и использовать с другими бизнес-приложениями?

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

Сейчас мы расскажем о нашем подходе к решению этих проблем и о готовом решении.

Итак, какие смарт-контракты доступны на Waves Enterprise?

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

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

Как описано в предыдущем разделе, Docker-контейнер содержит некоторое ПО. Но что на самом деле происходит, когда транзакция вызова контракта попадает в пул транзакций ноды? Процедура такова:

  1. Если нет активного контейнера, то он будет развернут из образа, который хранится в репозитории.
  2. Он загружает exec, файрвол, если подключение к интернету для этого контракта запрещено, и доменная нода инициализируется переменными среды.
  3. Затем выполняется скрипт run.sh, который инсталлирует зависимости, если контейнер не существует.
  4. Контракт может получать информацию о ноде и транзакции через переменные среды операционной системы.
  5. Если вычисление контракта занимает слишком много времени, он будет отменен по причине тайм-аута (точное время тайм-аута пользователь может задать в настройках).
  6. Результат исполнения контракта должен быть отпечатан в STDOUT и отформатирован как List [DataEntry]. Более подробная информация о формате и выводе находится в документации.
  7. Если контракт успешно исполнен, майнер создаст ExecutedContractTransaction и подпишет ее. Транзакция содержит транзакцию вызова, инициировавшую контракт, и результат. Затем, как и любая другая транзакция, она записывается в блок добавляется в стейт.
  8. Все участники, получающие блок, могут подтвердить, что транзакция была подписана участником с ролью miner и добавить ее в стейт.

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

Преимущества этих технологических решений важны, и здесь мы сравним наши контейнеризированным смарт-контракты с другими известными смарт-контрактами.

1. Ethereum имеет многочисленное сообщество и долгое время является платформой номер один для разработки dApp в сфере публичных блокчейнов. Также существуют версии для использования в приватных блокчейнах (например, Quorum и Masterchain). Но с точки зрения исполнения в публичной сети языки Solidity и EVM в целом имеют, в отличие от контейнеризированных смарт-контрактов Waves Enterprise, ряд ограничений.

  • “Газ”. Языки EVM — полные по Тьюрингу, но для стабильной работы в случае атаки, которая может парализовать систему бесконечными вычислениями, существуют ограничения по числу операций EVM в рамках исполнения одного контракта и по сложности. В результате при сложном контракте может быть выдана ошибка “не хватает газа”. В приватной сети это неудобно, потому что бизнес-процессы всегда должны быть завершены.
  • Данные вне блокчейна. В смарт-контракты Ethereum можно добавить некоторое количество данных, но их хранение ограничено и дорого. Например, вы не можете написать контракт, который запросит текущие биржевые котировки и будет использовать их для других операций. Другими словами, вы не можете создать мини-веб-сервер с помощью Solidity, но можете это сделать с помощью Waves Enterprise — и даже выбрать язык программирования и фреймворк.

2. Hyperledger Fabric — на сегодня самая известная платформа для приватных блокчейн-решений, и она тоже использует смарт-контракты в Docker-контейнере. Но они ограничены использованием SDK и доступны только на языках Go, JS и т. д. Разработчикам приходится совершать много операций низкого уровня — например, диспетчеризацию и вычисление аргументов. В результате даже простейшая программа в духе “Hello world” на Go потребует 90 строк кода. Для многих разработчиков это неудобно.

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

Solidity — это компьютерный код (язык программирования), который запускает сеть Ethereum. Он позволяет создавать смарт контракты и Dapps на платформе, расширяя возможности сетей, таких как Биткоин.

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

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

Эфир и смарт-контракт

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

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

Теперь перейдем непосредственно к языку.

Что такое Solidity

Solidity — это язык компьютерного программирования, созданный для работы с блокчейн-платформой Ethereum.

Он был сформирован из существующих языков: C ++, Python и JavaScript и в первую очередь предназначен для создания смарт контрактов в сети.

Кто создал Solidity

Ученый-компьютерщик Гэвин Вуд изначально придумал концепцию языка Solidity. Вуд был техническим директором в Ethereum в течение двух лет.

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

Все о Solidity

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

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

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

Вот некоторые образовательные ресурсы:

Стоит ли учиться Solidity

Если вы думаете об изучении Solidity для работы, вы можете подумать о том, какие другие навыки вам понадобятся. Вакансии требуют, обычно, знать один из дополнительных языков NodeJS, GoLang или Phyton, которые будут для вас базой. Изучать связанные с блокчейном навыки может быть очень ценным, потому что конкуренция пока низкая, серьезных экспертов не хватает.

Дальше вопрос веры в Ethereum и будущее блокчейна. Нужно понимать, что если вы освоите работу со смарт-контрактами на одной платформе, другие для вас будут гораздо проще и как специалист вы будете очень ценны, так как кадров с опытом сейчас найти очень сложно, а это отличная прибавка к вашей зарплате. Тем более, что платформ со смарт-контрактами уже очень много (EOS, ETC, NEO и т.д), так что без работы вы точно не останетесь.

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

Перспективы

Solidity — один из четырех языков для EVM (три других: Serpent, LLL и Mutan) и, пожалуй, самый проработанный. Капитализация Ethereum достигла 4 миллиардов долларов США всего за 2 года. Исходя из этих фактов, Solidity ждёт светлое будущее, как для самого языка, так и для разработчиков, которые его изучают.

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

Статья подготовлена на основе перевода Why Use Smart Contracts to Build Blockchain Applications? by Ronan Margo с дополнениями.

Где применяют блокчейн-приложения

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

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

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

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

Большинство приложений работают на блокчейне Эфириум, но есть примеры на базе других платформ: Tron, EOS, Stellar, Hyperledger. Часто (но необязательно) запуск блокчейн-приложения сопровождается выпуском собственных токенов .

Что такое смарт-контракт

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

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

Вот главные свойства смарт-контракта:

  • Проверяет сам себя.
  • Не изменяется.
  • Исполняется автоматически.

Как работают умные контракты

Процесс исполнения смарт-контрактов прост и прозрачен, он происходит в три этапа:

  • На первом этапе контракт пишется в виде кода и размещается на блокчейн-платформе.
  • На втором этапе происходит событие, которое прописано в смарт-контракте.
  • Контракт проверяет выполнение всех условий и выполняется автоматически.

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

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

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

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

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

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

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

Блокчейн-платформы для написания смарт-контрактов

Смарт-контракты могут быть написаны на разных платформах.

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

Смарт-контракты Hyperledger . Hyperledger основан в 2015 году Linux Foundation, сейчас объединяет несколько платформ и инструментов с открытым исходным кодом.

Один из них — Hyperledger Composer, позволяет разработчикам создавать умные контракты.

Смарт-контракты Stellar . Платформа Stellar — одна из старейших, она была основана еще в 2014 году. Ее разработкой и поддержкой занимается Stellar Development Foundation.

Смарт-контракты Automated Transactions (АТ). Это язык смарт-контрактов, используемый в некоторых популярных криптовалютах, таких как Quora и Burstcoins. Его применяют для кроссчейновой торговли между двумя сторонами, имеющими разные криптовалюты, например: биткоины, эфиры, лайткоины и другие. Он позволяет обменивать разные токены напрямую без посредников.

Читайте также: