Поговорим о надстройке для браузера Chrome - MetaMask. В этом разделе установим ее, разберем функционал, а также узнаем, как получить немного эфира для тестирования MetaMask и размещения контрактор в тестовой сети Rinkeby.
Откроем веб-сайт MetaMask, маскотом которой является лисичка.
При щелчке на Get the Chrome Extension (браузер Chrome существует для всех платформ) вы перейдете на страницу установки надстройки MetaMask и увидите кнопку Install, если MetaMask еще не установлена.
После установки MetaMask можно будет запустить с помощью ее иконки в верхнем правом углу браузера Chrome, а несколько простых шагов установки сопровождаются подробными инструкциями. Потребуется задать пароль для защиты ваших счетов, после этого можно работать с MetaMask.
Продолжим разговор о надстройке MetaMask. Для начала выбраем сеть, с которой вы будете взаимодействовать - ее можно выбрать в левом верхнем углу окошка MetaMask.
После этого необходимо опубликовать свое приложение в главной сети Ethereum, которое будем использовать для взаимодействия с другими смарт-контрактами, опубликованными там.
В рамках данного курса будет достаточно тестовой сети Rinkeby. Мы узнаем, как получить немного эфира для использования в этой тестовой сети, разобраться с тем, как сеть реагирует на запросы, посмотрим на майнинг, задержки и проблемы одновременных вычислений, характерные для блокчейна.
Теперь авторизуемся в MetaMask. Используем пароль и после входа в систему будет создан счет.
Доступен обзор имеющихся счетов, просмотр совершенных транзакций, а также жетонов среды Ethereum.
Если на счету есть эфир, его можно отправить на другой адрес и добавить к транзакции данные. Об этом мы поговорим позднее. На данном этапе ограничимся просто пересылкой эфира.
В меню обзора счета можно скопировать адрес в буфер обмена и экспортировать частный ключ вашего счета для использования его в другом приложении.
Обратите внимание, что доступ к счетам обеспечивается с помощью вашего частного ключа.
Для переключения между счетами можно использовать опцию в верхнем правом углу.
Можно создавать новые счета с помощью кнопки Create Account или импортировать счета с помощью Import Account.
Для этого потребуется частный ключ к счетам, предварительно созданным в Geth или другой системе, создающей ключи JSON.
Импорт осуществляется посредством этих файлов-ключей JSON.
Чтобы получить некоторое количество эфира для использования в тестовой сети Rinkeby, потребуется открыть веб-сайт http://rinkeby.io.
В его нижнем левом углу расположена иконка Crypto Faucet, при щелчке по которой разъясняется, как можно получить эфир на счет Rinkeby.
Для получения эфира достаточно опубликовать номер своего счета в Twitter, Google Plus или Facebook, а затем скопировать адрес веб-страницы с публикацией в форму на сайте rinkeby.io. Эти меры предосторожности необходимы для защиты от автоматического массового получения эфира.
Теперь зайдем в учетную запись Twitter.
скопируем адрес счета из MetaMask,
введем в поле для публикации нового твита, допишем комментарий,
затем скопируем ссылку на твит.
То же самое можно сделать и с помощью Facebook, единственное, в чем нужно убедиться - это должен быть публичный пост. Так, запрос на выделение эфира был размещен.
Для корректной работы системы начисления эфира потребуется отключение блокировщика рекламы. Теперь убедимся, что запрос на выделение эфира был удовлетворен; через пару секунд на счету должен появиться эфир.
Наличие на счету эфира можно проверить с помощью сервиса Etherscan.
Теперь попробуем выполнить пересылку эфира между счетами с помощью MetaMask. Допустим, что на счете номер восемь есть три единицы эфира.
Необходимо переслать часть этих средств на счет номер шесть.
Скопируем адрес счета номер шесть, переключимся на счет номер восемь и отправим 0,2 единицы эфира.
Щелкнем по Next, посмотрим на транзакцию и отправим ее в блокчейн.
Статус транзакции можно проверить с помощью сервиса Etherscan.
После успешно завершенного обсчета транзакции, средства будут отправлены, и будет отображаться адрес блока, в котором эта транзакция была впервые подтверждена.
Следующей возможностью MetaMask является взаимодействие с блокчейном посредством веб-сайта. В этом случае веб-сайт подключается к MetaMask, MetaMask - к блокчейну с помощью сервиса Infura, а Infura, в свою очередь, содержит в себе запущенный клиент Geth. Позднее, когда будем разбирать тему подключения к блокчейну из браузера, данная схема будет рассмотрена подробнее - для нее возможны несколько реализаций. На текущем этапе достаточно посмотреть, что происходит в надстройке MetaMask, когда вы пытаетесь взаимодействовать с блокчейном. Откроем среду Remix, здесь есть простой смарт-контракт.
В правой стороне окна Remix видно, что в качестве опорной библиотеки выбрана Web3.
Надстройка MetaMask подключается непосредственно к окну браузера и таким образом обеспечивает связь с блокчейном. В раскрывающемся списке выбрана Injected Web3, а в окне разработки, доступном для любой веб-страницы, видно, что с помощью объекта web3.currentProvider можно работать с надстройкой MetaMask посредством обычного кода JavaScript.
Выберем Injected Web3, затем счет - тот же самый, который открыт в надстройке MetaMask. Теперь можно перейти на вкладку Run и создать контракт.
Отследим всю цепочку: контракт, написанный в среде Remix на языке JavaScript, исполняется, надстройка MetaMask отслеживает эту транзакцию и открывает всплывающее окно для подтверждения создания контракта.
Для этой процедуры потребуется израсходовать немного газа. После подтверждения MetaMask отправляет транзакцию в блокчейн.
MetaMask располагает некоторым числом узлов сети, расположенных на серверах разработчиков, которые играют роль посредника между вашим браузером и блокчейном. Если вы хотите создать и использовать свой собственный блокчейн, потребуется один из клиентов: Geth, Parity, Mist. Mist обеспечивает интегрированный в браузер доступ к блокчейну, а Geth - это работающий на вашем компьютере клиент, загружающий все блоки и предоставляющий к ним непосредственный доступ. Успешность завершения транзакции подтверждается обсчитанными блоками.
Блокчейн в среде Ethereum очень напоминает блокчейн для Bitcoin. Есть транзакции, есть эфир, подобный биткоину, есть майнеры и так далее. Однако есть и различия. Во-первых, майнеры все еще работают по механизму Proof-of-Work, то есть решают математические задачи по шифрованию данных. Это требует большого количества энергии и вычислительной мощности, а после успешного завершения к блокчейну добавляется новый блок. В скором будущем будет внедрен механизм Proof-of-Stake, который потребует приобретения определенного количества эфира, который будет использоваться для обсчета новых блоков.
Самым большим отличием от блокчейна Bitcoin является возможность размещать приложения непосредственно в блокчейне. Именно этой теме будет посвящен данный раздел.
Технология блокчейн подразумевает, что все приложения обладают невероятной устойчивостью и надежностью, поскольку исполняются непосредственно в блокчейне - единый сервер отсутствует, код выполняется на всех узлах блокчейна одновременно. Это открывает большие возможности для решения сложных вычислительных задач, а также построения высокораспределенных сред.
Среда 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.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.