Статьи

Солидность для начинающих: руководство по началу работы

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

Что вы узнаете

К концу этого урока вы узнаете;

  • Основы умных контрактов
  • Основы Солидности
  • Базовое кодирование в Солидности
  • Приложения Твердости

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

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

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

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

Все умные контракты выполняются на уровне блокчейна, где все данные хранятся с использованием алгоритмов Proof of Work или Proof of Stake.

Умные контрактные приложения

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

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

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

Умные контракты могут сделать что-нибудь?

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

Умные контракты могут быть не в состоянии сделать все, что они обещают теоретически, по крайней мере в настоящее время. Вот основные причины;

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

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

Что такое солидность?

Солидность — это довольно простой язык, специально созданный для упрощенного подхода к решению реальных задач. Первоначально Гэвин Вуд предложил его в августе 2014 года. Несколько разработчиков цепочки Ethereum, такие как Кристиан Рейтсиснер, Алекс Берегсзаси, Лиана Хусикян, Йоичи Хираи и многие другие, внесли свой вклад в создание языка. Язык Solidity может быть выполнен на платформе Ethereum, которая является основной виртуальной машиной, реализующей сеть блокчейнов для разработки децентрализованных общедоступных регистров для создания систем интеллектуальных контрактов.

Язык имеет те же функции, что и C и JavaScript. Кроме того, язык поддерживает переменные состояния (аналогичные объектам в объектно-ориентированном программировании), типы данных и функции программирования. Тем не менее, язык сталкивается с последовательными обновлениями и быстрыми изменениями по всей платформе. Следовательно, как программист, вы должны обращать внимание на обновления через форумы платформы Ethereum, блоги и чаты.

И Солидность, и Эфириум находятся в активной разработке.

Как я могу изучить Солидность?

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

Виртуальная память также предоставляет временную память для распределения данных, которая несколько расширяется по сравнению с постоянным распределением памяти, предоставляемым узлами блокчейна. Язык создан, чтобы привнести точность и детерминизм в умные контракты. Чтобы «добыть» блок в Ethereum, узел выполняет умные контракты и методы программирования в соответствующих блоках.

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

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

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

Основы солидности

Для начала изучения языка и изучения основ давайте углубимся в кодирование. Мы начнем с понимания синтаксиса и общих типов данных, а также переменных типов данных. Solidity поддерживает общие типы значений, а именно:

Booleans : возвращает значение как true или false. Логические операторы, возвращающие логические типы данных:

  • ! Логическое отрицание
  • &&
  • || логическая дизъюнкция, «или»
  • ==
  • !=

Целые числа : Solidity поддерживает intunit Эти распределения памяти могут быть разных размеров. Ключевые слова, такие как uint8uint256 По умолчанию выделение составляет 256 бит. То есть, uintintuint256int256 Операторы, совместимые с целочисленными типами данных:

  • Сравнения: <=<==!=>=> Они используются для оценки, чтобы bool
  • Битовые операторы: &| , ^~
  • Арифметические операторы: +--+*/%**<<>>

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

Адрес : адрес может содержать 20-байтовое значение, эквивалентное размеру адреса Эфириума. Эти типы адресов поддерживаются членами, которые служат основой контракта.

Строковые литералы : строковые литералы могут быть представлены с помощью одинарных или двойных кавычек (например, "foo"'bar' В отличие от языка Си, строковые литералы в Солидности подразумевают конечные нули значений. Например, «bar» будет представлять трехбайтовый элемент вместо четырех. Точно так же в случае целочисленных литералов литералы по своей природе могут быть преобразованы с использованием соответствующего соответствия, то есть байта или строки.

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

Солидность предоставляет базовые массивы, перечисления, операторы и значения хеш-функции для создания структуры данных, известной как «отображения». Эти отображения используются для возврата значений, связанных с данным местом хранения. Массив — это непрерывное выделение памяти размера, определенного программистом, где, если размер инициализируется как K, а тип элемента создается как T, массив может быть записан как T[k]

Массивы также могут быть созданы динамически с использованием нотации uint[][6] Здесь нотация инициализирует динамический массив с шестью непрерывными выделениями памяти. Аналогично, двумерный массив может быть инициализирован как arr[2][4]

Мы начнем наше программирование с простой структуры контракта. Рассмотрим следующий код:

 pragma solidity^0.4.0;
contract StorageBasic {
  uint storedValue;
  function set(uint var) {
     storedValue= var;
  }
  function get() constant returns (uint) {
   return storedValue;
  }
}

В приведенной выше программе первая строка кода объявляет исходный код, который должен быть написан в версии 0.4.0 Solidity. Поэтому код будет совместим с соответствующим EVM или любой другой улучшенной версией.

Такое объявление важно для обеспечения того, чтобы программа выполнялась, как ожидается, со всеми совместимыми версиями компилятора. Слово «Pragma» относится к инструкциям, данным компилятору для последовательного выполнения исходного кода.

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

Составление и тестирование нашего умного контракта

Чтобы протестировать ваш умный контракт в локальной системе, вам нужно установить удобную в использовании тестовую среду и принимать простые команды Truffle. Вы можете использовать Ethereum TestRPC для этого. Это в основном тонкий код, который создает «поддельный» узел на сайте пользователя и компилирует ваш код Solidity с использованием порта 8545. Компилятор преобразует исходный код в код EVM, тем самым позволяя вам протестировать свой код без необходимости тратить свои эфирные монеты. Вот несколько команд быстрой установки:

 npm i -g ethereum-testrpc
testrpc -m "This is sample code check check"

Чтобы запустить команду компиляции в Truffle, мы используем следующую команду:

 truffle compile

После успешной компиляции исходного кода консоль возвращает сообщение «Сохранение артефактов». В противном случае он возвращает ошибки компиляции для вашего кода.

Как только вы ознакомитесь с идеей умных контрактов, продолжайте изучать разработки DApp через сеть Ethereum.

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

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