Ethereum язык программирования – гайд по языку программирования для Ethereum

гайд по языку программирования для Ethereum

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

Для тех, кто не знает, умные контракты — это, что-то типа программ, которые существуют в блокчейне Ethereum. Они выполняют различные задачи, например, отправка или получение токенов Ether или других ERC-20.

Как и все компьютерные программы, контракты Ethereum написаны на языке программирования. Язык для блокчейна Эфириум называется Solidity. Но также есть и другие языки, совместимые со смарт-контрактами Ethereum.

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

Solidity как язык программирования

Большинство профессиональных программистов сегодня используют один или несколько популярных современных языков программирования. Это C (си) (и C ++, C # и т. д.), Python, Java (и JavaScript), Perl или другие. Solidity был разработан так, чтобы ему могли легко учиться программисты, которые уже знакомы с одним или несколькими современными языками.

Если вы владеете только чем-то вроде Visual Basic, то при освоении Solidity могут возникнуть трудности. Но если вы знакомы с Python или C, язык смарт-контрактов Ethereum покажется относительно знакомым.

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

Наиболее всего синтаксис похож на JavaScript.

Попробовать язык можно прямо из браузера, например на remix.ethereum.org, который представляет собой онлайн редактор с возможностью отладки и запуска вашего кода. Также вы можете использовать реализацию протокола на других языках например Go https://geth.ethereum.org/.

Вот несколько рандомных примеров кода:

Solidity трудно учить?

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

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

Рекомендуем также нашу статью — что нужно знать начинающему блокчейн разработчику

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

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

  • Для тех, у кого есть базовый опыт программирования, интересный Crypto Zombies. Это бесплатный сайт, где дается короткая задача по написанию кода. Криптозомби тематически крутится вокруг создания игры с использованием Solidity, поэтому круг задач будет соответствующий. Прохождение первой главы занимает около 1,5-2 часов. Пока курс не завершен. Разработчики заявили, что новые уроки будут выходить каждые несколько недель. И результатом должна стать полная игра, сделанная на Solidity. С этим ресурсом вы не станете лид-разработчиком, но Crypto Zombies действительно дает отличное введение во многие основные концепции программирования смарт-контрактов и синтаксиса Solidity.
  • Для более продвинутого уровня рекомендуем ресурс Block Geeks с бесплатным письменным курсом. Эту статью оценил Дмитрий Бутерин, отец Виталика.
  • Дальше переходит к платным. Те же Block Geeks предлагают видео-курсы по единому плану: 7 дней бесплатно, затем $29 в месяц или $299 в год.
  • BitDegree создает образование на блокчейне и учит блокчейну. Сайт предлагает онлайн-курсы, по завершении ученик получат онлайн-степень, которая зарегистрирована в блокчейне Ethereum. Пока BitDegree в ранней стадии, курсы стоят по $9, некоторые бесплатно. Видимо, затем будет рост цены. По смарт-контрактам на Solidity цена также 9 долларов вместо $189.99. Курсы доступны и для мобильного. В токенах BDG еще дополнительная скидка 20%.
  • На udemy.com предлагается большой курс по Solidity за $200, но часто скидки до 90 долларов.
  • Самые серьезные курсы от B9LAB.com, с соответствующей стоимостью. Академия предлагает обучение на 9 недель с сертификацией.
  • Русскоязычные ресурсы мы исследовали недостаточно, но то, что встречалось из бесплатных вариантов, больше охватывало теорию блокчейна без практики и не сильно отличалось от наших статей в разделе «База знаний» =)
  • Реальные разработчики могут поделиться с начинающими своими знаниями: на ресурсах https://dev.to/t/ethereum и в ветке на Реддит, имиджбордах или в чатах разработчиков в ТГ.

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

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

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

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


Основы Solidity и разработки смарт-контрактов

Переведем начало курса от Block Geeks, общие моменты про Solidity, а примеры кода, этапы написания и тестирование вы можете посмотреть в оригинале.

Сам язык Solidity — это инструмент, который мы используется для создания кода машинного уровня, чтобы он мог выполняться на EVM. Это язык с компилятором, который берет наш высокоуровневый читаемый код и разбивает его на простые инструкции, типа «перейти к инструкции в точке памяти xxxxx» и прочее.

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

Solidity свободно типизированный язык с синтаксисом, очень похожим на ECMAScript (Javascript). Есть несколько ключевых моментов — работаем по модели stack-and-memory с 32-байтным размером инструкции. EVM дает:

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

EVM требует полного детерминизма в рамках смарт-контрактов.

Детерминизм является причиной того, что вы не увидите функцию «random()» в языке Solidity. Когда блок «ethereum» «майнится», развертывается смарт-контракт и вызываются функции внутри этого блока. И новое состояние меняет пространство хранилища или транзакции, так что смарт-контракт фактически выполняется в майнинг-ноде.

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

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

Также в разработке смарт-контракта нужно учитывать, что любое изменение состояние или вычисления (вообще любые действия, кроме просто чтения блокчейна) оплачиваются в газе. Стоимость газа исчисляется по объему работы. Про эту систему мы писали отдельно (с ценами за действия). Отсюда важно то, что смарт-контракт должен быть оптимизирован, чтобы не тратить много эфира.

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

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

В остальном, сам код использует традиционные типы данных, операторы и команды.

Дальше примеры кода и тестирование можно посмотреть в The Ultimate Ethereum Coding Guide (ссылка не спонсирована).

Также на русском языке есть серия статей на Хабре, листайте к первой части в серии «Погружение в разработку на Ethereum».

crypto-fox.ru

Представлен новый язык программирования для Ethereum -mycrypter.com

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

Разработчики Vyper говорят, что их экспериментальный язык программирования имеет более высокий уровень. Он предназначен исключительно для работы в Ethereum Virtual Machine. В нем используется упрощенный синтаксис, как в Python, что позволяет быстрее писать код и повышает эффективность смарт-контрактов.

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

Система сможет преднамеренно усложнять процессы

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

Как мы уже сообщали, восемь южноафриканских банков под эгидой Резервного банка (SARB) приняли участие в тестировании блокчейн-технологии, разработанной ConsenSys Labs. В программе не принимал участие сам центробанк, но участвовали Absa, Capitec, Discovery, Investec, FirstRand, Nedbank и Standard Bank.

mycrypter.com

Новая версия Ethereum Virtual Machine будет построена на WebAssembly

Разработчики Ethereum опубликовали дорожную карту новой версии Ethereum Virtual Machine (EVM). Инициатива eWASM предполагает замену нынешней версии EVM на новую, в основе которой будет лежать язык программирования WebAssembly, сообщает CoinDesk.

Ethereum Virtual Machine представляет собой часть протокола исходной платформы, отвечающую за внутренние состояния смарт-контрактов и соответствующие вычисления при их исполнении.

Одним из этапов инициативы eWASM станет запуск тестовой сети, которая станет площадкой для продолжающихся экспериментов, охватывающих, в том числе, и работу над запланированным переходом на алгоритм консенсуса proof-of-stake (Casper).

Как написал в блоге Ethereum разработчик JavaScript Мартин Беще, запуск тестовой сети планируется позже в этом году.

Язык WebAssembly (wasm) был запущен в 2015 году командой разработчиков из Google, Microsoft и Mozilla и ставит своей целью предоставить разработчикам единый способ компиляции кода, который в конечном счете станет веб-стандартом, реализованным во всех браузерах.

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

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

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

Подписывайтесь на новости Forklog в Telegram!

Нашли ошибку в тексте? Выделите ее и нажмите CTRL+ENTER

Подписаться на новости Forklog

forklog.com

Обновлено: 15.09.2019 — 01:12

Добавить комментарий

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