Мы начинаем разбирать вторую по величине имплементации технологии блокчейна – Эфириум (Ethereum).

Web 2.0
Эфириум часто называют блокчейном версия 2.0. И тут можно ли провести прямую аналогию с вебом 2.0 До 1996 года у нас был интернет, web версия 1.0, который позволял генерировать только статические страницы. Картинки, текст с описанием, ссылки и всё.
С развитием серверных языков программирования, таких как PHP, Python, Java, JavaScript, произошёл переход в Web 2.0. Это позволило создавать динамические сайты и веб-приложения. Они позволили генерировать контент индивидуально под каждого клиента, в зависимости от каких-то критериев.
До появления версии 2.0 не было возможности создать социальную сеть или чаты, например. Допустим, мы входим в учётную запись какой-то социальной сети или на форум. Сервер должен выдать каждому отдельному пользователю индивидуальный контент. Каждый пользователь должен видеть свой личный кабинет, личный профиль и т.д.
В случае статичных страниц это было невозможно, потому что сервер выдавал единую разметку HTML для всех пользователей.
Эфириум Blockchain 2.0
Блокчейн 2.0 означает, что с появлением эфириума 2.0, у нас появился динамический блокчейн. Он позволил создавать программируемые активы. Будь то деньги, криптовалюты, или коллекционные вещи, такие как NFT. Мы можем управлять с помощью смарт-контрактов этими ценностями или деньгами. Условиями их распределения, а также логикой.

Эфириум Web 3.0
Многие крипто-энтузиасты одержимы идеей создания Web версии 3.0, которая подразумевает под собой следующую стадию. Смену парадигм текущего веба с централизованной системы на децентрализованную. То есть фактически отказ от централизованных серверов. Эфириум и все конкуренты которые связаны с эфириумом такие как Трон, Кардано, мечтают увидеть имплементацию веб 3.0 в своей сети, которая подразумевает собой полностью децентрализованный интернет.
Смарт-контракты Биткойна
Многие, наверное, могли слышать о такой важной фишке Эфириума, как смарт-контракты.
Часто люди заблуждаются, когда считают, что смарт-контракты недоступны в сети биткойна.
Например, Multisig Transaction является, своего рода, смарт-контрактом, потому что мы программируем логику передачи UTXO в блокчейне биткоина.
Либо технология Atomic Swap, которая позволяет нам заблокировать транзакцию на определённое время для того, чтобы быть выполненной либо же она будет полностью возвращена владельцу. Это тоже является примером смарт-контракта в блокчейне биткойн.
Они реализованы с помощью языка программирования Script в блокчейне биткоина.
Скрипт – это язык программирования, основанный на стеке.
И это не полный по тьюрингу язык программирования. Он ограничивает ту логику, которую мы можем писать. Именно поэтому эти смарт-контракты настолько мелкие по-своему содержанию, если сравнить их со смарт контрактами в сети эфириума. Поэтому разработчики говорят, что в блокчейне биткойна нету смарт-контрактов. Означает что по сравнению с тем, что есть в эфириуме, эти смарт-контракты очень простые. Но надо понимать, что в блокчейне биткоина у нас могут быть смарт-контракты. Просто из-за специфики языка программирования на которых строятся эти смарт-контракты, в блокчейне и Bitcoin, очень сильно ограничена логика такого смарт-контракта.
Смарт-контракты в Эфириуме
В одной из первых презентацией проекта эфириума было представлено, как смарт-контракты эфириума могут помочь поставщикам по всему миру заключать контракты с заказчиками. Позже это было реализовано одной из крупнейших корпораций по перевозке груза по всему миру.
В смарт-контракте четко прописаны условия доставки груза и средства. Этапы, на которых эти средства должны быть выплачены по каким-то определённым критериям, которые обычно при заключении стандартных юридических договоров.
Можно программировать логику, например, грузим какой-то товар на корабль из Австралии в Европу. Этот груз должен пройти несколько этапов. Перевозчик должен соблюдать условия при перевозке, такие как влажность воздуха, например.

И этот смарт-контракт позволяет считывать данные датчиков влажности в контейнере. Потом считывать данные из базы почтовых служб разных стран. Смотреть на каком этапе находится товар. И, исходя из этих условий, будет производиться выплата.
Например, если поставщик просрочил поставку товара на один день, то он подвергается штрафу в размере 0.5 процентов от стоимости контракта. И все эти вещи автоматически программируются в смарт-контракте.
Эфириум может обращаться в базу Почтовых Служб и смотреть, когда фактически был доставлен груз. И если он доставлен позже, чем прописано в контракте, то автоматически будет реализована логика уменьшения стоимости контракта на 0.5%. И потом поставщик сможет разблокировать только сумма за вычетом всех штрафов. Таким образом отпадает необходимость оспаривать стоимость.
В свою очередь, поставщик защищён тем, что сумма будет заморожена сразу же после начала работы смарт-контракта. То есть он в любом случае получит деньги.
И, если поставщик выполнил условия, которые были прописаны в смарт-контракте, он сможет забрать деньги, и никто не сможет их заблокировать.
Это пример, насколько глубоко может быть логика написания смарт-контрактов в блокчейне эфириума.
Solidity
Для написания смарт-контрактов в блокчейне Эфириума, используется язык программирования, который называется Solidity.
Solidity является turing complete, то есть полный по тьюрингу язык программирования.
Главной отличительной чертой является то, что в полных по тьюрингу языках программирования есть такая штука как loops, циклы. Они позволяют выполнять какую-то логику, при определенном условии, пока это условие выполняется.
Смарт-контракты — это приложения?
Смарт контракты – это мини-приложение. Представим обычное приложение на нашем компьютере. Например, это какой-то текстовых редактор. Его программируют на разных языках программирования. Любое предложение — это список инструкций для центрального процессора.
Все приложения, которые мы устанавливаем наш компьютер, взаимодействуют с центральным процессором. И сами приложения — это строчки кода с определёнными инструкциями. Например, запустить интерфейс, сохранить это значение в ячейку памяти. И так далее.
Смарт-контракты эфириума тоже можно представить в виде приложений, в виде списка инструкции.
Но, есть важный момент, связанный с тем, что эфириум – это сеть децентрализованных компьютеров. Это означает, что смарт-контракты хранятся в блокчейне эфириума.
В свою очередь, это означает, что все смарт-контракты, которые запущены в сети эфириума, хранятся на всех нодах, которые подключены в сеть эфириума.
Каждый смарт-контракт должен взаимодействать с центральным процессором каждого отдельного устройства. В блокчейне эфириума приложения из смарт-контрактов не могут напрямую взаимодействовать с центральным процессором.

EVM
Для этого у нас есть ещё одна прослойка, EVM – Ethereum Virtual Machine. EVM считывает код каждого смарт-контракта и проверяет валидацию этого смарт-контракта в своей среде. И после уже позволяет ему взаимодействовать с центральным процессором каждой отдельной ноды. Потому что, каждая отдельная нода – это устройство, компьютер.
Зачем это нужно? Любой человек может запустить смарт контракт и этот контракт будет опубликован на всех устройствах, на всех нодах. EVM был создан в первую очередь для безопасности смарт-контрактов. Ведь иначе, любой человек мог бы написать опасную для сети логику. Чтобы предотвратить запуск зловредного кода на всех устройствах сразу.
EVM есть на каждой машине. То есть каждая машина, каждая нода проверяет каждый опубликованный смарт-контракт.
Таким образом, сначала смарт-контракт взаимодействием с EV и, если контракт не нарушает условия консенсуса, может в дальнейшем могут взаимодействовать уже непосредственно с ЦП устройства через Ethereum Virtual Machine.
Получается, EVM — это приложение, которое позволяет каждой ноде в сети эфириума взаимодействовать со смарт контрактами в таком виде, чтобы мы точно знали, что эти смарт-контракты сделаны по правилам, не нарушают правила консенсуса и не зловредны для всей сети.
Потому что иначе можно было бы просто разрушить всю сеть блокчейна эфириума. К сожалению, такие попытки всегда предпринимаются. И над защитой EVM всегда плотно работает Community Эфириума. Он является вторым по величине после комьюнити Bitcoin.

Бутерин и биткойн
Интересный факт. Создатель эфириума Виталик Бутерин изначально хотел вообще реализовать всю логику со смарт контрактами на блокчейне биткоина. Он хотел, чтобы Bitcoin стал тем самым программируемым активом. Чтобы мы могли программировать Bitcoin более глубоко.
Но, на тот момент у биткоина уже был язык программирования Script. И эта идея не получила одобрения от разработчиков биткоина. Почему? Потому что, реализация полного по тюнингу языка программирования с циклами, могла привести к бесконечному количество итераций и состояний.
Состояние Эфириума
Кстати, состояние – это тоже одна из фич Эфириума. Состояния тоже хранятся блокчейне эфириума, отдельно. Приведем пример.
Родители создали смарт-контракт для ребенка и положили на него эфириум. И запрограммировали, что этот смарт-контракт может быть разблокирован этим ребёнком, когда он достигнет 18 лет. Получается, уже и родители не могут забрать эти деньги назад. То есть, единственный способ, чтобы смарт-контракт сработал, это достижение 18-летия ребенком.
Для этого нужно, чтобы смарт-контракт смотрел в базу данных физических лиц, исполнилось ли ребенку 18 лет? Если нет, то деньги остаются замороженными. Как только исполнилось 18 лет, деньги автоматически выплачиваются на подконтрольный кошелек, приватный ключ этого человека.
Заключение
В следующей статье мы разберём особенности и сравнение блокчейнов биткоина и эфириума.
Мы рассмотрим, чем отличается UTXO model в блокчейне биткойна от Account model в блокчейне эфириума.
И сможем наглядно, ещё раз более фундаментально, понять, чем они отличаются.
Это позволит ещё раз рассмотреть и понять более хорошо, что такое UTXO биткойна. Потому что, это – фундаментальное понятие и оно не раз будет встречаться, если мы будем говорить о Биткойне.
Эфириум — «серебро» крипторынка, а может, «платина»?