Основы протокола Ethereum.

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

В протоколе Ethereum главное звено — EVM (Ethereum Virtual Machine), виртуальная машина Ethereum. Суть в том, что все вычисления в блокчейне совершает децентрализованный 256-битный виртуальный компьютер. Виртуальная машина Ethereum, является, так называемой state — машиной, то есть компьютером, число возможных внутренних состояний которого конечно. Это значит, что в момент времени х в экосистеме Ethereum существует y токенов сети (эфир), которые распределены между аккаунтами. В момент x, если один пользователь посылает z эфиров другому пользователю, то состояние EVM изменится следующим образом, что у посылающего аккаунта уменьшится количество токенов на z, а соотвественно у принимающего аккаунта на это же количество увеличется. За исключением комиссии за транзакцию. Таким образом реализуется функционал передачи ценности в протоколе Ethereum.

Это обычная пиринговая денежная система, которая уже реализована во множестве криптовалютных протоколах, например в протоколе Bitcoin. Нас интересуют самоисполняемые финансовые контракты или, как их принято называть — смарт-контракты.

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

Первая большая и перспективная область развития блокчейна — финансовая. Это и криптовалюта, и смарт-контракты, и госреестры. Например, сейчас, чтобы продать дом, нужно несколько недель, а это может занимать всего 3 минуты.(С) Виталик Бутерин, Москва, 30 августа 2017 года.

На данный момент существует 4 языка программирования для EVM:

  • Serpent (похожий на Python)
  • LLL (Lisp Like Language)
  • Mutan (на некоторых сайтах написано, что он похож на C, а на некоторых, что на GO)
  • Solidity (похожий на JavaScript)

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

 

 

Настраиваем Atom для написания смарт-контрактов на Solidity.

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

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

Первое, с чем сталкивается человек, который хочет начать программировать — это IDE — Integrated Development Inveronment или интегрированная среда разработки. Эта самая IDE включает в себя:

  • Редактор текста.
  • Компилятор и/или интерпретатор текста.
  • Средства автоматизации сборки.
  • Отладчик.

На данном этапе — главное для нас это удобный редактор текста с подсветкой синтаксиса. С моей точки зрения идеально подойдет — Atom (https://atom.io/). Скачиваем, устанавливаем.

Сам по себе Atom не будет подсвечивать синтаксис Solidity и код будет очень тяжело читать.


Согласитесь, читать такое, крайне не комфортно.

Для комфортного чтения и написания кода нам понадобится два плагина.
Autocompete-solidity (https://github.com/austp/autocomplete-solidity).

Language-ethereum (https://github.com/caktux/language-ethereum).

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

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

Очевидно, что такой код намного легче воспринимать визуально.

Установка дополнений идет внутри самого Atom’a, вам необходимо открыть вкладку «File -> Settings -> Install», как показано на рисунке ниже и в строке поиска ввести название плагинов.

 

 

 

 

 

 

 

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