Работа с Ethereum
Покупка
Тематика:
Финансы. Денежное обращение. Кредит
Издательство:
ИНТУИТ
Год издания: 2016
Кол-во страниц: 247
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
Дополнительное образование взрослых
Артикул: 834869.01.99
Курс поможет вам в кратчайшие сроки разработать собственное приложение для работы с блокчейном на базе Ethereum.
По окончании курса вы создадите программу-кошелек для хранения криптовалюты с возможностью доступа нескольких людей. У каждого из них будет своя учетная запись, или счет, с помощью которого можно будет получать доступ к денежным средствам. Кроме того, каждый из пользователей этого кошелька сможет видеть операции внесения и снятия валюты через веб-сайт. Вы узнаете, как использовать данные разных типов, изучите, как работают смарт-контракты, поймете, как считывать и изменять данные в блокчейне. Вы познакомитесь с тем, как работать с блокчейном Ethereum и Web 3, как отлавливать и реагировать на отдельные события, и даже как создавать тесты для успешного
развертывания вашего децентрализованного приложения.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 38.03.01: Экономика
- ВО - Магистратура
- 38.04.01: Экономика
- 38.04.08: Финансы и кредит
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Работа с Ethereum 2-е издание, исправленное Национальный Открытый Университет “ИНТУИТ” 2016 2
Работа с Ethereum/ - М.: Национальный Открытый Университет “ИНТУИТ”, 2016 Курс поможет вам в кратчайшие сроки разработать собственное приложение для работы с блокчейном на базе Ethereum. По окончании курса вы создадите программу-кошелек для хранения криптовалюты с возможностью доступа нескольких людей. У каждого из них будет своя учетная запись, или счет, с помощью которого можно будет получать доступ к денежным средствам. Кроме того, каждый из пользователей этого кошелька сможет видеть операции внесения и снятия валюты через веб-сайт. Вы узнаете, как использовать данные разных типов, изучите, как работают смарт-контракты, поймете, как считывать и изменять данные в блокчейне. Вы познакомитесь с тем, как работать с блокчейном Ethereum и Web 3, как отлавливать и реагировать на отдельные события, и даже как создавать тесты для успешного развертывания вашего децентрализованного приложения. (c) ООО “ИНТУИТ.РУ”, 2018-2016 (c) 2018-2016 3
Основы технологии блокчейн Давайте разберемся, что такое блокчейн Итак, что же такое блокчейн? Перед тем, как вникнуть в детали, начнем с общего определения блокчейна. Для ясности будем использовать конкретный пример. Это будет блокчейн Bitcoin, потому что как только вы поймете, как работает блокчейн Bitcoin, вы поймете механику работы и всех остальных реализаций блокчейна - она практически одинаковая по своей сути. Конечно, каждая реализация технологии блокчейн отличается от других. Блокчейн это как публичный счет, на котором учитываются все транзакции в биткоинах за всю историю его существования. В результате блокчейн постоянно растет - новые блоки добавляются к цепочке существующих по мере обработки транзакций. Эти транзакции обрабатываются компьютерами, или, как их часто называют, узлами, подключенными к единой сети. Важно понимать, что каждый блок добавляется в блокчейн, или буквально “цепочку блоков”, в хронологическом порядке. Компьютеры, обрабатывающие транзакции, разбросаны по всему миру, поэтому блокчейн - это децентрализованная технология, защищенная надежными методами шифрования. Давайте разберем блокчейн подробнее. Наилучшим образом его работу можно пояснить на примере из банковской сферы. Представьте себе, что все транзакции вашего банка записаны в блокчейн и надежно защищены методами шифрования данных. Как уже упоминалось ранее, блокчейн будет включать в себя все банковские транзакции со времени его создания, и каждый отдельный блок будет представлять собой определенную банковскую операцию. И вся эта история операций децентрализована. Поэтому все, что происходит с сетью блокчейна, происходит со всеми узлами, что делает невозможным проведение мошеннических операций, так как сетью управляет множество узлов. Представьте себе биржу, работающую на основе технологии блокчейн. Покупка и продажа акций может быть практически мгновенной просто потому, что этой сетью управляет множество распределенных компьютеров. Она работает по принципу одноранговой, или пиринговой, сети. Вот это и представляет собой блокчейн, в нашем примере - блокчейн Bitcoin. Но в природе существуют и другие реализации технологии блокчейн, например, Ethereum. Вместо того, чтобы заменить традиционные валюты, что стремится сделать биткоин, платформа Ethereum ставит своей задачей децентрализацию рынка приложений. Разумеется, Ethereum - это децентрализованная и распределенная облачная платформа со временем доступности в 100 процентов. Блокчейн Ethereum позволяет запускать код приложений без участия сторонних организаций. Поэтому Ethereum открывает бесчисленные возможности для всех отраслей - управление личными финансами, контракты с самостоятельным выполнением, сайты для азартных игр и так далее. Обратите внимание, что платформа Ethereum позволяет реализовать всё перечисленное за очень малое время. Можно даже собрать версию Bitcoin на базе Ethereum, то есть с помощью Ethereum создать свою криптовалюту. Криптовалютой среды Ethereum является эфир - он расходуется каждый раз, когда вы запускаете свое приложение в блокчейне Ethereum. Это создает экономическую основу для использования эфира, 4
ведь он выступает как платежное средство для работы кода. Различия между публичным, блокчейном консорциумов и частным блокчейном Существует три типа блокчейна, каждый из которых имеет свои преимущества и недостатки. Это публичный блокчейн, блокчейн консорциумов и частный блокчейн. Публичный блокчейн наиболее известен благодаря взлету таких криптовалют, как биткойн или эфир. В публичном блокчейне любой человек может скачать всю цепочку транзакций и при желании изучить все данные. Например, вы можете отследить, какое количество биткойнов отправлялось или поступало на конкретный биткойн-адрес. 5
В отношении публичного блокчейна важно понять, что его публичность не означает, что использовать его небезопасно. Вся цепочка транзакций защищена надежными методами шифрования. Это часть технологии блокчейн, децентрализованной по своей природе. Блокчейн-консорциумов недоступен широкой публике, поэтому не всякий человек может легко ознакомиться с историей транзакций. Блокчейн консорциумов контролируется заранее определенным числом компьютеров, называемым узлами. Чтобы лучше понять эту схему, представим десять банков, управляющих таким блокчейном. Все они заранее договорились, что только они будут участвовать в формировании транзакций для их общей цепочки, и не будут допускать к этому других участников, как в случае с публичным блокчейном. Для добавления новых блоков к цепочке блокчейн они могут решить, что новые транзакции будут подтверждать, скажем, шесть банков из десяти, но никакие другие люди или организации не смогут подтверждать транзакции. Таким образом, блокчейн консорциумов является частично, а не полностью децентрализованным, в отличие от публичного блокчейна. Наконец, частный блокчейн. Многие считают, что такие системы учета транзакций не являются настоящим блокчейном. Частный блокчейн по своей сути может использоваться лишь ограниченным кругом лиц, так как разрешения на добавление транзакций выдаются централизованно. Если вернуться к нашему примеру с банками, то все разрешения на добавление транзакций будут выдаваться только одним банком. Еще один момент - технология блокчейн децентрализована по своей природе, поэтому ее централизация обычно вызывает много критики. Однако банки ведут эксперименты именно с этим типом технологии блокчейн. Другими типовыми применениями для частного блокчейна являются использование в работе с базами данных, при проведении аудита и любые другие внутренние операции для конкретной компании. Поэтому обычным ответом на критику использования частного блокчейна является 6
обоснование необходимости ведения дел без предоставления информации широкой аудитории. Смарт-контракты: что это? Смарт-контракты, или “умные контракты”, позволяют передавать некоторые ценности, например, собственность или акции, прозрачным и одновременно безопасным способом, что делает весь процесс сверхэффективным, одновременно устраняя промежуточные звенья, зачастую долгие и дорогие. Рассмотрим пример, который позволит понять, как блокчейн работает со смарт-контрактами. Давайте представим, что есть два заинтересованных лица в сделке с недвижимостью. Один (продавец) желает продать жилье, а другой (покупатель) хочет купить это жилье. Сделка по продаже может быть реализована посредством блокчейна, и покупатель готов платить, например, биткоинами. Как только покупатель заплатит, то сразу получит подтверждение о транзакции, которое будет исполнено в виде виртуального смарт-контракта. Продавец, в свою очередь, передает покупателю цифровой ключ от входной двери, который будет доставлен в день, о котором заинтересованные стороны договорились. Если продавец вдруг передумает продавать дом, покупатель не получит ключ, блокчейн в этом случае автоматически вернет покупателю деньги в тот день, когда должен был быть получен ключ. А если покупатель получит ключ заранее, то блокчейн его удержит до дня, в который была договоренность осуществления передачи. Поэтому каждая из сторон получит то, что хочет, в оговоренный в контракте день: продавец - деньги, а покупатель - ключ. А поскольку блокчейн - это технология, основанная на пиринговой сети, договор по этой сделке будет храниться на множестве узлов, что обеспечит выполнение взятых по контракту обязательств, и ни одна из сторон не сможет изменить условия контракта после его заключения. Ну а если кто-то из сторон наберется смелости сделать это, все узлы в сети тут же об этом узнают, и проблема будет мгновенно решена. Мы рассмотрели пример с куплей-продажей недвижимости. Но такие же соглашения могут заключаться при передаче акций, в страховании автомобилей или другого имущества и во многих других случаях. Позвольте привести несколько ключевых преимуществ смарт-контрактов. Первое качество, за которое смарт-контракты так ценятся, это автономность. Смартконтракты не могут быть изменены третьими лицами, так как только их стороны заключают соглашение. Нет необходимости обращаться к услугам юристов при заключении соглашений. Второе преимущество, за которое люди любят - или еще полюбят - смарт-контракты, это доверие к ним. Смарт-контракт невозможно потерять. Они все зашифрованы и хранятся в общественном хранилище. Поэтому потеря любого из них исключена. Это подводит к следующему плюсу - резервированию. Можно положиться на надежность смарт-контрактов, потому что они все зарезервированы. Аннулирование договора по причине потери его копии просто невозможно. 7
Следующим в списке идет безопасность, которая опять же связана с предыдущими двумя. Ваши смарт-контракты будут защищены современными методами шифрования данных. Это отсылает нас к вопросу доверия - вы можете полностью доверять безопасности методов шифрования. Смарт-контракт практически невозможно взломать. Пятая причина превосходства смарт-контрактов над обычными - это скорость их передачи. На заключение традиционных договоров уходит уйма времени, поскольку в их эту работу вовлечено множество третьих лиц. Если речь идет о распространении кода, смарт-контракты на высоте, поскольку позволяют решать задачи в разы быстрее. Шестая причина - это экономия денег на заключении договоров. Нет необходимости прибегать к услугам адвокатов. Можно просто использовать технологию смартконтрактов. И, наконец, огромным преимуществом является точность. Если все подробности контракта указаны точно, то он будет выполнен значительно точнее, чем любой другой контракт. Инструментарий и приложения экосистемы эфириума Прежде чем погрузиться в написание кода, стоит изучить экосистему Ethereum. Давайте разберемся, какие инструменты и подходы существуют, как они называются и взаимодействуют. В экосистеме Ethereum широко используются такие инструменты, как Geth, Parity, Solidity, Remix, Truffle, Webpack, Angular и так далее. Каждый из них используется для решения конкретных задач. Узлы сети блокчейна: Go-Ethereum, Parity, CPP-Ethereum Примерами узлов блокчейна выступают такие программы, как Geth, Parity или CPPEthereum. Все они работают на клиентской стороне, то есть их можно загрузить и запустить на вашем компьютере, как и для всех других пользователей сети Ethereum. Они все выполняют одну и ту же задачу: реализуют протокол Ethereum. Не смотря на то, что разные инструменты выполняют одну и ту же роль, они написаны на разных языках программирования. Развитием инструментов занимаются различные команды, которые обязательно следят за тем, чтобы даже на разных языках программирования протокол Ethereum был реализован корректно. Если проводить аналогию, то эта схема похожа на использование среды MySQL в режиме “мульти-мастер”, когда все узлы выполняют одну и ту же задачу по репликации базы данных. Это отлично описывает то, что делают все узлы в сети блокчейна - они копируют все блоки на своих компьютерах. Поэтому при загрузке Geth, Parity, или CPP-Ethereum и запуске клиента после установки подключения к другим узлам будет загружено все содержимое блокчейна. Исключение составляет только режим “легкого клиента”, когда загружаются только заголовки блоков. 8
Взаимодействие веб-сайтов и блокчейна Рассмотрим популярные браузеры MetaMask и Mist. Оба они представляют собой связующее звено между обычным браузером для просмотра интернет-страниц и блокчейном С помощью корректно настроенного веб-сайта можно выполнять программы и отправлять команды в блокчейн. Пользователь сможет запустить любой браузер: например, Chrome, Firefox, Internet Explorer или другой браузер, зайти на такой веб-сайт и взаимодействовать с блокчейном. Для этого к блокчейну необходимо подключиться. MetaMask представляет собой надстройку для Chrome и Firefox, облегчающую подключение к блокчейну. Mist, в свою очередь - это полновесный браузер, оснащенный собственным узлом сети блокчейна. В случае с Mist, узлом блокчейна является Geth, или Go-Ethereum, непосредственно встроенный в браузер. MetaMask для работы использует сервис под названием Infura. В 9
среде Infura используются узлы Geth и Parity, которые запущены на стороне сервера, а не на компьютере клиента, а Infura реализует подключение к ним. Чтобы познакомиться с надстройкой MetaMask, можно открыть браузер, например, Chrome, найти раздел с иконками надстроек, далее открыть MetaMask и можно начинать работать с блокчейном. Кошелек Mist выглядит так: слева доступ к различным разделам, есть отображение статуса подключения и синхронизации данных, в центре располагается собственно браузер Это позволяет работать с блокчейном и просматривать веб-страницы можно одновременно. Что такое Solidity Solidity представляет собой язык программирования высокого уровня. Для ее работы требуется компилятор solc, который формирует байткод для виртуальных машин Ethereum.Встречаются мнения, что Solidity похож на JavaScript. В первых версиях так и было, однако сейчас эти два языка значительно расходятся. Тем не менее, Solidity похож на JavaScript больше, чем любой другой язык программирования. Remix, веб-среда разработки для Solidity Remix - это облачная среда разработки, поддерживающая много полезных функций. Доступ к Remix можно получить по адресу ссылка: http://remix.ethereum.org. Среда Remix позволяет создавать и запускать код на языке Solidity прямо в окне браузера. Remix оснащена встроенным отладчиком и статическим анализатором кода, а также многими другими инструментами. На текущий момент Remix выглядит так. Слева расположен браузер, с помощью которого можно управлять файлами. В центре располагается окно для создания кода, а справа - управляющие элементы - вкладки для компиляции (Compile), запуска (Run), изменения настроек (Settings), отладки (Debugger), анализа (Analysis) и получения поддержки (Support).На вкладке Run можно выбрать среду запуска кода, например, виртуальную машину Java. Remix предоставляет доступ к нескольким счетам в эмулированной среде Ethereum для апробирования создаваемого кода. С их помощью можно размещать и обсчитывать контракты, а потом анализировать результаты благодаря наличию журнала исполнения кода. 10