Опубликован: 28.01.2018 | Доступ: свободный | Студентов: 924 / 143 | Длительность: 06:54:00
Лекция 2:

Работа с MetaMask. Децентрализация приложения

< Лекция 1 || Лекция 2: 123 || Лекция 3 >

Основные понятия среды Ethereum

Блокчейн в среде Ethereum очень напоминает блокчейн для Bitcoin. Есть транзакции, есть эфир, подобный биткоину, есть майнеры и так далее. Однако есть и различия. Во-первых, майнеры все еще работают по механизму Proof-of-Work, то есть решают математические задачи по шифрованию данных. Это требует большого количества энергии и вычислительной мощности, а после успешного завершения к блокчейну добавляется новый блок. В скором будущем будет внедрен механизм Proof-of-Stake, который потребует приобретения определенного количества эфира, который будет использоваться для обсчета новых блоков.

Самым большим отличием от блокчейна Bitcoin является возможность размещать приложения непосредственно в блокчейне. Именно этой теме будет посвящен данный раздел.

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

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

Основы работы среды Solidity

Среда Solidity представляет из себя высокоуровневый язык программирования. Существуют и другие способы разработки приложений для блокчейна, но общим правилом является необходимость компиляции текста на языке программирования в байткод, который затем размещается в блокчейн посредством транзакции. Такие транзакции очень похожи на используемые в блокчейне Bitcoin, когда вы отправляете биткойны с одного адреса на другой; в среде Ethereum для тех же целей используются единицы эфира. Если есть потребность отправить в блокчейн байткод, то он прикрепляется к транзакции как данные, а в самой транзакции при этом должно быть пустым поле получателя To - в этом случае блокчейн создаст новый адрес для размещения этого байткода.

Практический пример


Например. Предположим, что у нас есть функция ABC, требующая параметр a. Если a меньше 50, функция возвращает 10, в противном случае a. Компилятор обрабатывает функцию, и в блокчейн отправляется новая транзация со следующими значениями полей: from содержит адрес отправителя - ваш адрес, поле value пусто, как и поле to (это самый важный момент), а поле data содержит байткод из функции, созданной в Solidity. В процессе обсчета транзакции этот код будет добавлен в очередной блок, получит собственный адрес, например, 0xabcdef001, или какой-нибудь другой, и у каждого пользователя сети появится возможность взаимодействовать с этим кодом по заданному адресу.

Важность обсчета кода и учета валюты в одном блокчейне

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

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

Классические примеры распределенных приложений

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

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

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

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

Как работает доступ к блокчейну

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

С другой стороны, для выполнения операций в блокчейне можно применять удаленный вызов процедур (Remote Procedure Call, RPC), запуская файлы JSON, созданные на JavaScript.


Удаленный вызов процедур можно реализовать через протокол HTTP, что позволяет взаимодействовать пользователям с узлами сети, а самим узлам - друг с другом посредством протокола Ethereum. Важно понять схему: пользователь работает с файлами JSON для удаленного вызова процедур, а узлы передают эту информацию между собой по протоколу Ethereum. Это напоминает работу в консоли MySQL, когда пользователь задает запросы MySQL (в случае с Ethereum отправляются команды для удаленного вызова процедур в формате JSON), а узлы сети MySQL обмениваются информацией по протоколу MySQL (в блокчейне узлы взаимодействуют по протоколу Ethereum).

Итоги

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

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

< Лекция 1 || Лекция 2: 123 || Лекция 3 >
Алексей Миронов
Алексей Миронов

Здравствуйте, сколько стоит курс Работа с Ethereum?