Блокчейн Эфириума (Ethereum): что это, размер, где хранится, как создать свой blockchain

Как работает блокчейн Ethereum — смарт контракты и адреса счетов

Как следует из официальной документации платформы Эфириум :

Блокчейн Ethereum – это криптографически защищённый одноэлементный механизм записи транзакций с совместно используемым состоянием.

Звучит немного запутанно, правда? Давайте попробуем разобраться.

  • “Криптографически защищённый” означает, что создание цифровой валюты обеспечивается сложным математическим алгоритмом, который чрезвычайно сложно взломать. Представьте себе своего рода файервол. Это делает обман и злоупотребление системой (напр., создание поддельных или удаление существующих транзакций) практически невозможным.
  • “Одноэлементный механизм записи транзакций”означает, что существует только один канонический экземпляр механизма, ответственного за создание всех транзакций в блокчейне Ethereum. Иными словами, в этой системе есть только одна глобальная истина, которая принимается всеми участниками системы.
  • “С совместно используемым состоянием” означает, что состояние этого механизма в каждый момент времени открыто для всех и используется совместно всеми участниками сети.

В сети криптовалюты Эфириум реализована данная парадигма блокчейна, далее мы разберем ее подробно и объясним основные принципы функционирования экосистемы платформы.

Навигация по материалу:

Основные принципы блокчейна Эфириума

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

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

Состояние Эфириума включает в себя миллионы транзакций. Эти транзакции группируются в «блоки». Блок содержит группы транзакций и каждый блок связан с предыдущим, образуя цепочку.

Для того чтобы вызвать переход сети из одного состояния в другое, транзакция должна быть действительной. Для того чтобы транзакция была признана действительной, она должна пройти через процесс валидации (проверки и утверждения), известный как майнинг. Майнингом в сети Эфириум называется процесс, в котором группа узлов сети (т.е. компьютеров) расходует свои вычислительные ресурсы на создание блока действительных транзакций.

Любой вычислительный узел сети (их также называют «нодами», от англ. node – узел сети), декларирующий себя в качестве майнера, может претендовать на создание и валидацию блока транзакций. Многие майнеры со всего мира одновременно пытаются создавать и валидировать блоки. Каждый майнер при записи блока в блокчейн предоставляет математическое «доказательство» (англ. proof), и это доказательство действует как гарантия: если доказательство существует, блок должен быть валидным (действительным).

Для того чтобы добавить блок к основному блокчейну, майнер должен подтвердить его раньше других, конкурирующих с ним, майнеров. Процесс валидации каждого блока путём предоставления майнерами математического доказательства называется Proof-of-Work (доказательство выполнения работы).

Майнер, подтверждающий новый блок, получает за выполнение этой работы вознаграждение. Какое вознаграждение? В блокчейне Эфириума используются внутренние цифровые токены, называемые «эфирами». Каждый раз, когда майнер подтверждает блок, генерируются новые эфиры и выплачиваются майнеру.

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

Ранее мы приводили определение блокчейна как одноэлементного механизма записи транзакций с совместно используемым состоянием. Из этого определения мы можем понять, что корректное текущее состояние – это единственная глобальная истина, которая должна приниматься всеми. Наличие нескольких состояний (или цепочек) разрушило бы всю систему, так как в этом случае было бы невозможно договориться о том, какое состояние сети считать истинным. Если бы цепочки блоков расходились, то на одной из них у вас могло бы быть 10 коинов, на другой – 20, а на третьей – например, 40, и не было бы возможности определить, какая цепочка является более «валидной.»

Всякий раз, когда генерируется несколько вариантов цепочек, образуется «форк» (от англ. fork – вилка, разветвление). Обычно форков стараются избегать, так как они разрушают систему и ставят пользователей перед выбором, какой цепочке они доверяют больше.

Для того чтобы определить, какой путь в большей степени валиден и предотвратить образование нескольких цепочек, в Эфириуме используется механизм, называемый «протоколом GHOST».

  • “GHOST” = “Greedy Heaviest Observed Subtree” («Жадное и самое весомое видимое поддерево»)

Простыми словами, согласно протоколу GHOST, мы должны выбирать тот путь, на котором было выполнено наибольшее количество вычислений. Один из способов определить этот путь – по номеру последнего («листового») блока, который представляет собой общее количество блоков (не считая генезисного) на текущем пути. Чем больше номер блока, тем длиннее проделанный путь и тем выше количество усилий, затраченных майнерами для того, чтобы достичь этой точки. Используя такое рассуждение, мы можем договориться о канонической версии текущего состояния.

Теперь, когда вы получили общее представление о том, что такое блокчейн, давайте поговорим подробнее об основных компонентах, из которых состоит система Эфириума:

  • счета (аккаунты)
  • состояние
  • газ и комиссии
  • транзакции
  • блоки
  • выполнение транзакций
  • майнинг
  • Proof-of-Work

Прежде чем мы начнём, оговорюсь, что всякий раз, когда я говорю о «хэше» чего-либо, я имею в виду хэш KECCAK-256, используемый в Эфириуме.

Адреса счетов — аккаунты сети Ethereum

Глобальное «совместно используемое состояние» Эфириума состоит из множества небольших объектов («счетов»), которые могут взаимодействовать друг с другом через обмен сообщениями. Каждый счёт имеет ассоциированное с ним состояние и 20-битный адрес. Адрес в Эфириуме представляет собой 160-битный идентификатор, который используется для идентификации любого счета.

Существует два типа счетов :

  • Счета внешних владельцев (externally owned accounts) управляются при помощи секретных ключей и не имеют ассоциированного с ними программного кода.
  • Счета контрактов управляются ассоциированным с ним программным кодом.

Адреса владельцев счетов и адреса смарт-контрактов

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

В отличие от счетов внешних владельцев, счета контрактов не могут самостоятельно инициировать новые транзакции. Они осуществляют их только в ответ на полученные транзакции (от счёта внешнего владельца либо от другого счёта контракта).

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

Состояние счета

Состояние счёта, независимо от его типа, складывается из четырёх компонентов:

  • nonce: для счетов внешних владельцев, это число представляет собой количество транзакций, отправленных с адреса данного счёта. Для счетов контрактов, это количество контрактов, созданных данным счётом.
  • balance: баланс Wei для данного адреса. 1 эфир = ¹⁰¹⁸Wei.
  • storageRoot: хэш корневого узла patricia-дерева Меркла (о деревьях Меркла мы поговорим позже). Это дерево кодирует хэш содержимого хранилища данного счёта и по умолчанию пусто.
  • codeHash: хэш кода EVM (виртуальной машины Эфириума – подробнее об этом позже) для данного счёта. Для счетов контрактов, это код, который хэшируется и сохраняется как codeHash. Для счетов внешних владельцев, поле codeHash является хэшем пустой строки.

Экосистема сети Эфириум

Итак, мы знаем, что глобальное состояние Эфириума складывается из сопоставления адресов и состояний счетов. Это сопоставление хранится в структуре данных, называемой patricia-деревом Меркла.

Дерево Меркла (также известное как trie-дерево) – это тип двоичного дерева, состоящего из множества узлов с:

  • большим количеством конечных (листовых) узлов в нижней части дерева, содержащего базовые данные;
  • рядом промежуточных узлов, где каждый узел является хэшем двух его дочерних (подчинённых) узлов;
  • одним корневым узлом, также сформированным из хэша двух своих дочерних узлов, представляющих собой вершину дерева.

Данные нижней части дерева генерируются следующим образом: данные, которые мы хотим сохранить, делятся на блоки, затем блоки делятся на сегменты, после чего берётся хэш каждого сегмента и весь процесс повторяется до тех пор, пока не останется только корневой хэш.

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

В случае с Эфириумом, ключ/значение для дерева состояний отображается между адресами и ассоциированными с ними счетами, включая balance, nonce, codeHash и storageRoot для каждого счёта (где storageRoot сам также является деревом).

Та же самая trie-структура используется для хранения транзакций и квитанций (они же чеки, анг. receipt).

Точнее говоря, каждый блок имеет «заголовок», в котором хранится хэш корневых узлов трёх различных trie-структур, включая:

  1. trie-дерево состояний;
  2. trie-дерево транзакций;
  3. trie-дерево квитанций.

Возможность эффективного хранения всей этой информации в деревьях Меркла в Эфириуме чрезвычайно полезна для того, что мы называем «лёгкими клиентами» или «лёгкими нодами». Не забывайте, что блокчейн поддерживается множеством нод (узлов). Говоря в общем, есть два типа нод: полные и лёгкие.

Полные архивные ноды синхронизируют блокчейн, загружая всю цепочку, от генезисного блока до текущего верхнего блока, включая все записанные в цепочке транзакции. Как правило, полные архивные ноды держат майнеры, так как они необходимы для майнинга. Можно также загрузить полную ноду без записей о каждой совершённой транзакции. Независимо от этого, каждая полная нода содержит полную информацию обо всей цепочке.

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

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

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

Причина, по которой это работает, заключается в том, что хэши в дереве Меркла распространяются вверх – если злоумышленник пытается подменить или вписать поддельную транзакцию в нижнюю часть дерева Меркла, это действие повлечёт за собой изменение хэша узла уровнем выше, что, в свою очередь, приведёт к изменению хэша узла над ним и так далее до тех пор, пока, в конце концов, это не изменит корень дерева.

Для проверки части данных любая нода может использовать «доказательство Меркла». Доказательство Меркла состоит из:

  1. фрагмента данных для проверки;
  2. корневого хэша дерева;
  3. «ветви» (всех хэшей на пути от проверяемого фрагмента данных к корню дерева).

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

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

«Желтая книга» Эфириума находится в свободном доступе на Github.

Ethereum кошелек – где создать и как безопасно хранить ETH

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

Table of Contents

Где хранить Эфириум – топ безопасных мест

С выбором кошелька для монет ETH проблем не возникнет. На рынке представлены разные варианты, среди которых:

  • десктопные – Mist, Exodus, Jaxx;
  • онлайн – MyEtherWallet;
  • браузерное расширение – MetaMask;
  • аппаратные устройства – TREZOR, KeepKey Ledger Nano S;
  • мобильные – Jaxx, Coinomi;
  • бумажный.

Создать кошелек Эфириум не проблема и на одной из криптовалютных торговых площадок. Точнее после регистрации, например, на Exmo, Bittrex, Poloniex вы сразу получаете в свое распоряжение биржевой бумажник. Однако хранить долгосрочно на нем большие суммы не стоит, поскольку в этом случае вы не контролируете свои приватные ключи. Для этих целей лучше выбрать десктопный, аппаратный или бумажный Ethereum Wallet. На бирже держать желательно монеты, необходимые для текущих торговых операций.

Mist – официальный кошелек Ethereum

Mist – это Эфириум кошелек на ПК, с помощью которого вы можете хранить токены ether и других криптовалют, работающих на блокчейне Эфира. Помимо этого, продвинутые пользователи могут здесь работать со смарт-контрактами.

Как создать кошелек Ethereum Mist

Ссылку на Эфириум кошелек для Windows можно найти на официальном сайте криптовалюты – ethereum.org. Для этого главную страницу прокручиваем немного вниз, пока не увидим кнопку «Download».

Скачать Ethereum Wallet для других операционных систем можно на Github. Доступны также релизы для Linux и Mac OS. Выбираем нужный вариант, загружаем и устанавливаем.

К слову, здесь вы найдете установщики не только Mist, но и Ethereum-Wallet. Разница между ними состоит в том, что Mist – это браузер для работы с децентрализованными приложениями, в том числе и кошельком, который также является DApp. Например, как с помощью Google Chrome мы получаем доступ в интернет версии Web 2.0, так и с помощью Mist мы будем иметь доступ к децентрализованной версии Web 3.0.

А Ethereum Wallet – всего лишь вариант Mist, который дает доступ только к одному децентрализованному приложению – кошельку.

При установке вам нужно указать две папки – для непосредственной установки самой программы – здесь потребуется около 2 сотен мегабайт, и загрузки блокчейна сети – размеры в этом случае на порядок выше, свыше 200 гигабайт.

После того как инсталлировали приложение, находим на рабочем столе его ярлык и запускаем его. Кошелек предложит выбрать одну из сетей – или основную, или тестовую. Для простых юзеров, которые только знакомятся с крипто-миром, подойдет тестовая – она позволит вам понять, как работает система. Если выберете основную, придется долго ждать, пока приложение загрузит на компьютер весь блокчейн Эфира. В первом случае он подгрузит только часть блоков.

На следующем шаге устанавливаем пароль. Программа предупреждает, что пароль важно хранить в надежном месте, а также необходимо после установки сделать бэкап ваших файлов ключей. Найти их можно в главном меню, далее Accounts — Backup.

Если вы выбрали основную сеть, далее вам предложат пополнить депозит кошелька. Рекомендуемая сумма – от 0.25 до 1 ether. Без них вы не сможете работать со смарт-контрактами. Если пока не хотите пополнять, это действие можно на данном этапе и пропустить, нажав Next.

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

Мультивалютные Exodus и Jaxx

Exodus – еще один кошелек который дает возможность держать Эфир, а также другие криптовалюты на компьютере. Имеет стильный и удобный интерфейс. Все имеющиеся в наличии монеты показывает в виде наглядной диаграммы. Exodus также дает возможность обменивать токены не выходя из кошелька благодаря связке с ShapeShift. Для этого существует вкладка «Exchange».

Кошелек Jaxx работает на разных платформах: как на компьютере, так и на мобильных устройствах. Представлено также расширение для браузера Chrome. Помимо Эфира позволяет хранить биткоин, Лайткоин, Zcash, Dash и многие другие криптомонеты. Также позволяет конвертировать одну валюту в другую с помощью встроенного ShapeShift конвертера.

Читайте также:  Эфириум Классик – прогноз криптовалюты на 2020 год

MetaMask

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

Чтобы открыть кошелек Эфириум MetaMask, нужно перейти по одной из ссылок на официальном сайте metamask.io и выбрать расширение для нужного вам браузера. Поддерживаются Chrome, Opera, Firefox, Brave.

Полный обзор кошелька MetaMask читайте здесь

Онлайн кошелек Ethereum – MyEtherWallet

MyEtherWallet вы найдете по одноименному адресу myetherwallet.com. Здесь ничего скачивать не нужно, чем и удобен данный вариант. Просто регистрируетесь и пользуетесь. Также что важно – бумажник предоставляет вам возможность самостоятельно контролировать свои приватные ключи.

Полный обзор MyEtherWallet вы найдете здесь

Онлайн кошелек для Эфириума можно также создать на сервисе blockchain.info. Этот кошелек мы уже описывали в отдельной статье. Поддержку Эфира сервис добавил еще прошлым летом. Таким образом непосредственно на сайте можно обменить биткоин на Эфириум и наоборот.

Аппаратные кошельки

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

Эфириум на сегодня поддерживают такие бумажники:

Самым доступным по цене считается Ledger Nano S – на конец марта 2018 года он стоит около 80 долларов. Для удобства проведения транзакций эти устройства имеют на передней стороне аккуратный экран.

Бумажный кошелек для Эфира

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

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

Как пополнить Эфириум кошелек

Пополнение кошелька Эфира стандартное. Для этого копируем адрес бумажника и передаем его отправителю монет. Если сами будете переводить себе токены, например, с биржи, вставляете этот адрес в соответствующее поле на площадке при формировании транзакции.

Можно воспользоваться и обменными площадками. Для удобства заходите на известный мониторинговый ресурс Bestchange, указываете платежную систему, с помощью которой будете оплачивать покупку, например, Яндекс.Деньги, QIWI, выбираете обменник с лучшим курсом, переходите на его сайт и создаете транзакцию.

Какой кошелек выбрать для Эфириума

Где лучше завести кошелек для Эфириума – сходу советовать сложно. Нужны монеты всегда под рукой – онлайн бумажник или биржевой вариант будет лучшим выбором. Также в этом случае удобны и мобильные приложения. Долгосрочное хранение, причем крупных сумм денег – здесь фаворитом однозначно будут аппаратные или бумажные кошельки.

При выборе бумажников и их установке стоит обращать внимание на такие моменты:

  • Где хранятся приватные ключи. Печетесь о сохранности средств, выбирайте бумажники, где вы можете эти данные контролировать самостоятельно.
  • Резервное копирование данных – об этом важно также не забывать.
  • Репутация разработчиков бумажника и активное сообщество.
  • Удобный интерфейс.

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

Создаём собственный блокчейн на Ethereum

Как создать приватный блокчейн Ethereum с нуля?

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

Инструкция включает в себя следующее:

  • Создание приватного блокчейна Ethereum с помощью geth.
  • Создание кошелька MetaMask для работы с приватным блокчейном.
  • Перевод средств между несколькими аккаунтами.
  • Создание, развёртывание и вызов смарт-контракта в приватном блокчейне с помощью remix.
  • Создание обозревателя блоков Ethereum поверх приватного блокчейна.

Установка Geth

Go Ethereum (или geth) это одна из трёх изначальных реализаций протокола Ethereum (наряду с C++ и Python). Она написана на Go, полностью открыта и лицензирована под GNU LGPL v3. Go Ethereum можно скачать или как отдельный клиент, работающий практически в любой ОС, или как баблиотеку для встраивания в проекты Go, Android или iOS.

Для установки geth под Mac OS X мы использовали homebrew. Homebrew устанавливает всё необходимое, о чём не позаботилась Apple. Эта статья предполагает, что homebrew у вас уже установлен. Если нет, следуйте этой инструкции. После установки homebrew следующие команды установят geth.

brew tap ethereum/ethereum
brew install ethereum

Установить geth на Ubuntu довольно просто, достаточно запустить следующие команды apt-get.

sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum

Для Windows соответствующий инсталлятор лежит здесь. В случае каких-либо сложностей обращайтесь к инструкции.

Создание аккаунта майнера

Сначала нужно создать аккаунт для майнинга Ethereum. Так мы сгенерируем пару приватного и публичного ключей с паролем для защиты. Не потеряйте свой пароль, иначе никогда не сможете восстановить ключи. По умолчанию, ключи хранятся внутри: /keystore. Всё, что сохраняет geth, хранится внутри datadir (кроме PoW Ethash DAG). Расположение директории по умолчанию зависит от ОС. Всегда лучше изменить стандартные настройки и задать свой собственный путь для приватного блокчейна.

/.ethereum

  • Windows: %APPDATA%Ethereum
  • Ethash DAG хранится в

    /.ethash (Mac/Linux) или %APPDATA%Ethash (Windows), так что его могут использовать все клиенты.

    Следующая команда показывает, как создать аккаунт с произвольным путём для директории данных. Эта команда выдаст ваш адрес Ethereum.

    geth account new –datadir

    geth account new –datadir /path/to/data/dir

    Создание первичного блока (genesis block)

    Блокчейны Ethereum отличаются друг от друга первичными блоками. Каждый блокчейн начинается с такого блока, а всё остальное строится поверх него, где каждый следующий блок ссылается на предыдущий. В публичном блокчейне Ethereum первичный блок был создан 20 июля 2015 года. Для нашей собственной цепочки нужно создать собственный первичный блок. Инициализация приватного блокчейна с заданным первичным блоком осуществляется следующей командой:

    geth -datadir /path/to/data/dir init /path/to/genesis.json

    • datadir: директория для баз данных и хранилища ключей.
    • init: начальная загрузка и инициализация нового первичного блока — с соответствующим файлом json.

    Ниже показан наш первичный блок, который используется в приватном блокчейне — нужно сохранить его под именем genesis.json и указать в приведённой выше команде.

    • chainid: обеспечивает способ совершения транзакций в Ethereum без использования ETC (Ethereum Classic) или тестовой сети Morden. EIP 155 предусматривает следующие значения chainid для разных сетей: основная сеть Ethereum (1), основная сеть Morden / Expanse (2), Ropsten (3), Rinkeby (4), основная сеть Rootstock(30), тестовая сеть Rootstock (31), Kovan (42), основная сеть Ethereum Classic (61), тестовая сеть Ethereum Classic (62), приватные цепочки geth (1337 по умолчанию). В нашем примере мы указали идентификатор 15, который не используется ни одной из существующих цепей.
    • homesteadBlock: значение 0 указывает на использование релиза Ethereum Homestead. Это второй из основных релизов Ethereum — а недавно, 16 октября 2017 года, Ethereum форкнулся на релиз Byzantium.
    • eip155Block: значение 0 указывает, что этот блок поддерживает EIP (Ethereum improvement proposal, предложение об улучшении Ethereum) номер 155. Предложения EIP описывают стандарты для платформы Ethereum, в том числе ключевые спецификации протокола, клиентские API и стандарты контрактов.
    • eip158Block: значение 0 указывает, что этот блок поддерживает EIP 158.
    • difficulty: значение соответствует уровню сложности, которое применяется для поиска случайного значения nonce к этому блоку. В этой статье подробно объясняется, как рассчитывается уровень сложности в Ethereum.
    • gasLimit: газ — это внутренняя единица оплаты для проведения транзакции или контракта в Ethereum. Каждая инструкция, которая отправляется в виртуальную машину Ethereum Virtual Machine (EVM) для обработки транзакции или смарт-контракта стоит определённое количество газа. Если транзакция не получает нужного количества газа, то она не пройдёт. При совершении каждой транзакции в Ethereum вы указываете лимит газа — максимальное количество, которое могут использовать все сопутствующие операции для этой транзакции. Параметр gasLimit в блоке определяет общий лимит всех транзакций в блоке.
    • alloc: параметр для предварительного распределения Эфира из первичного блока на один или несколько аккаунтов. В вышеприведённом примере первичного блока весь Эфир поступает на аккаунт, созданный с самого начала.

    Начинаем майнинг

    Всё готово! Теперь можно начать майнинг через geth с помощью следующей команды. Здесь параметр networkid выделяет эту сеть Ethereum среди других. Все майнеры, желающие подключиться к этой сети, должны использовать тот же идентификатор networkid с тем же первичным блоком.

    geth –mine –rpc –networkid –datadir

    geth –mine –rpc –networkid 1999 –datadir /path/to/data/dir

    • networkid: сетевой идентификатор этой сети Ethereum. Выбираете любое значение. Например, Olympic (0), Frontier (1), Morden (2), Ropsten (3).
    • mine: включает майнинг.
    • rpc: включает сервер HTTP-RPC. Приложения кошельков могут подключаться по http к этому узлу майнинга.
    • rpcaddr: указывает интерфейс для прослушивания на сервере HTTP-RPC (по умолчанию: “localhost”)
    • rpcport: указывает порт для прослушивания на сервере HTTP-RPC (по умолчанию: 8545)
    • rpcapi: указывает API, доступные по интерфейсу HTTP-RPC (по умолчанию: “eth,net,web3”)
    • rpccorsdomain: активирует CORS, указывая разделённый запятыми список сторонних доменов, с которых можно принимать запросы (cross-origin). Полезная опция при использовании для размещения смарт-контрактов браузерных редакторов Solidity (Remix) или браузерных кошельков. Например, такой параметр позволит принимать CORS с любого домена.

    –rpccorsdomain “*”

  • nodiscover: отключает механизм поиска пиров. Ваш узел не смогут найти никакие другие узлы в сети. Если намерены использовать блокчейн в локальной сети совместно с другими, не применяйте этот параметр.
  • console: этой командой мы можем запустить узел майнинга с интерактивным окружением JavaScript. В следующем разделе подробнее рассмотрим эту тему.

    geth –mine –rpc –networkid 1999 –datadir /path/to/data/dir console

    Подключаем консоль Geth

    Можно или начать майнинг как console , или запустить console отдельно — и подключить её к узлу майнинга командой attach. Сейчас покажу, как это делается, и проверьте, что вы указали параметры в том же порядке.

    geth –datadir /path/to/data/dir attach ipc:/path/to/data/dir /geth.ipc

    Консоль подключается к узлу майнинга по IPC. IPC (межпрорцессное взаимодействие) работает на локальном компьютере. В этом случае geth создаёт конвейер Geth (который представлен файлом

    /geth.ipc) в файловой системе локального компьютера — а консоль подключается к этому узлу по IPC.

    Просмотр всех аккаунтов

    Как только вы подключились к консоли geth, можно попробовать запустить следующую команду для отображения всех доступных аккаунтов.
    > eth.accounts
    [“0x7a69b359e86893efa3d9732e4c65ced51567edd0”]

    Просмотр баланса аккаунта

    Следующая команда позволяет просмотреть баланс заданного аккаунта из консоли geth.

    Подключение кошелька MetaMask Ethereum

    MetaMask — это кошелёк Ethereum, работающий как расширение Chrome. Он внедряет Ethereum Web3 API в каждый контекст JavaScript на сайте, так что все эти приложения способны получать информацию из блокчейна. MetaMask также позволяет создавать собственные идентификаторы (identities) и управлять ими, так что когда приложение хочет совершить транзакцию и записать данные в блокчейн, у пользователя есть безопасный интерфейс для просмотра транзакции, прежде чем одобрить или отклонить её.

    Для подключения MetaMask к приватному блокчейну Ethereum нужно выбрать правильные имя хоста и порт. Web3 API — это программные интерфейсы JavaScript для Ethereum, реализованные в web3.js. Чтобы JavaScript-приложение обменивалось данными с узлом Ethereum, MetaMask использует библиотеку web3.js с удобным интерфейсом для методов rpc. Она обменивается с локальным узлом вызовами rpc. Библиотека web3.js работает с любым узлом Ethereum, у которого есть слой rpc. Вы могли заметить выше, что при запуске узла майнинга можно передать параметр rpcapi и указать, какие интерфейсы мы хотим использовать на этом узле. По умолчанию, если ничего не указать, будут использоваться интерфейсы eth,net,web3 .

    Передача Эфира

    MetaMask создаст аккаунт Ethereum — секретный ключ и адрес Ethereum. Дальше разберёмся, как передавать Эфир с первого аккаунта, созданного в самом начале, на аккаунт MetaMask из консоли geth. Для передачи средств аккаунта нужно использовать для подписи секретный ключ этого аккаунта. Чтобы его использовать, нужно его сначала разблокировать, как показано ниже.

    personal — это управляющие программные интерфейсы в geth. Кроме personal, geth также предоставляет следующие управляющие API: admin, debug, miner и txpool. Как только мы разблокировали аккаунт, мы можем определить в консоли три переменные: для sender, receiver и amount, то есть получателя, отправителя и количества передаваемых средств. Значение sender — это адрес Ethereum, который мы создали в начале этой статьи, а значение receiver — адрес Ethereum, созданный в MetaMask.

    > var sender = “0x7a69b359e86893efa3d9732e4c65ced51567edd0”;
    > var receiver = “0xA9f28458eE1170F285440990c196c1592D3a73f5”
    > var amount = web3.toWei(1, “ether”)

    Следующая команда осуществит передачу средств — она ссылается на переменные, которые мы определили выше.

    Просмотр баланса аккаунта в MetaMask

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

    Другой способ — через консоль geth, с помощью следующей команды.

    Редактор Remix для Solidity

    Solidity — самый популярный язык программирования для написания смарт-контрактов Ethereum. Remix — это IDE для Solidity со встроенным отладчиком и средой тестирования. Онлайновый редактор remix можно найти здесь. Remix подключается к любой сети Ethereum. Для подключения к нашему локальному блокчейну убедитесь, что вы запустили узел майнинга следующей командой, как показано ниже. О параметре –rpccorsdomain “*” мы уже говорили. Вместо звёздочки (максимальная открытость) в качестве значения этого параметра можно указать “https://remix.ethereum.org”.

    geth –mine –rpc –rpccorsdomain “*” –networkid –datadir

    Для подключения remix к нашей закрытой сети нужно изменить Environment на Web3 Provider, это делается на вкладке Run. При этом изменении remix попросит указать Web3 Provider Endpoint — установите значение http://localhost:8545 . Пока вы явно не изменили порт, по умолчанию узел для майнинга стартует на порту 8545.

    Создание смарт-контракта

    Теперь всё готово для написания самого первого смарт-контракта, который мы запустим в сети Ethereum. Скопируйте следующий код и вставьте его в онлайновый редактор remix. Это очень простой смарт-контракт — я даже не хочу объяснять его построчно. В следующей статье подробно рассмотрим язык программирования Solidity.

    Если вы не меняли настройки по умолчанию в remix, то они установлены на автоматическую компиляцию. Если нет, то надо скомпилировать код.

    После компиляции при нажатии кнопки Details вы увидите расчётное количество газа, необходимое для создания этого смарт-контракта.

    Внедрение смарт-контракта

    Теперь можем внедрить смарт-контракт в наш приватный блокчейн. На вкладке Run убедитесь, что у вас выбран правильный аккаунт Ethereum и правильный лимит газа. Значения gas price и value можно указать нулевыми.

    Здесь транзакция Ethereum, подписанная с выбранного выше аккаунта для создания смарт-контракта в блокчейне. Для подписи сначала нужно разблокировать аккаунт через консоль geth.

    Теперь можете нажать кнопку Create, чтобы создать смарт-контракт. У нас в нём конструктор, принимающий строковый параметр, вот почему remix показывает поле ввода вместе с кнопкой Create. Сюда можно ввести какое-нибудь значение (в кавычках, например, “Hi”) — или просто оставить пустым. В консоли geth при создании смарт-контракта появится следующее сообщение. Также обратите внимание, что если не установлен корректный gas limit, то такая команда приведёт к ошибке.

    INFO [10-19|07:31:08] Submitted contract creation fullhash=0xf5511bb9d088672ac0d3896b8590b9a3e25484300f02deecdd739c3a549ed33a contract=0x42b7E903Fb42e191a7D623cbb4b7b4330D329d78

    Вызов смарт-контракта

    После создания смарт-контракта интерфейс remix немного изменится — как показано ниже, на вкладке Run.

    Здесь можно установить некое значение для метода setGreeting — и нажать на него для вызова смарт-контракта. Опять же следует убедиться, что аккаунт разблокирован, потому что при вызове смарт-контракта мы использует транзакции Ethereum и требуется подпись инициатора. Проделав операцию с setGreeting, можно вызвать и другие методы.

    Ethereum Block Explorer

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

    Для установки программы сначала возьмём исходники со следующего репозитория.

    git clone https://github.com/carsenk/explorer

    Затем запустим команду установки из директории Ethereum Block Explorer.

    По окончании установки запустите Ethereum Block Explorer следующей командой — и получите доступ к веб-консоли через http://localhost:8000 .

    Перед подключением Ethereum Block Explorer к локальному блокчейну убедитесь, что запустили узел майнинга следующей командой с параметром –rpccorsdomain “*” — его значение мы обсуждали ранее.

    geth –mine –rpc –rpccorsdomain “*” –networkid –datadir

    Обновление: Обсуждение этой статьи на Hacker News см. здесь. Не стесняйтесь присоединяться.

    Блокчейн Ethereum: принцип работы, экосистема, перспективы

    Несмотря на то, что первым криптовалютным проектом был запущенный более 10 лет назад биткоин, настоящая революция в сфере децентрализованных технологий начала вершиться лишь с 2015 года, когда была запущена сеть Ethereum. Именно это событие стало отправной точкой для множества финтех-проектов, которые привлекли волну «свежей крови» на крипторынок.

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

    Что такое блокчейн Эфириум

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

    Если более простыми словами, блокчейн Эфириума — это платформа, позволяющая выполнять операции по переводу активов между участниками сети и создавать dApps на базе смарт-контрактов.

    Внутри системы Ethereum имеется одноименная криптовалюта (ETH), которая используется для передачи ценности между пользователями, а также выполняет роль своеобразного топлива, необходимого для поддержания работоспособности сети.

    Принцип работы и структура блокчейна Эфириум

    Основными концептуальными принципами, на которых базируется работа блокчейна Ethereum, являются:

    1. Одноэлементная запись транзакций — цифровой механизм, подразумевающий принятие системой и ее пользователями единственно правильного (каноничного) алгоритма выполнения операций, который определяется по количеству произведенных вычислений.
    2. Криптографическая защищенность — подчинение всего происходящего в блокчейне сложным математическим законам, обеспечивающим надежную защиту от взломов.
    3. Открытость состояния — возможность беспрепятственного использования сети ее участниками в любое время.

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

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

    Жизнеспособность блокчейна Ethereum поддерживается пользователями (майнерами), которые предоставляют сети вычислительные мощности своего оборудования для выполнения операций по валидации транзакций и генерации новых блоков (майнинга). За это они получают от системы вознаграждение в виде монет ETH, что и является основной мотивацией для их участия в работе сети.

    Транзакции в сети Ethereum

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

    Топливом для движения пакетов данных внутри блокчейна эфира выступает газ (gas) — своеобразная внутренняя валюта сети, характеризующая количество вычислительных операций, на которые тратятся мощности оборудования майнеров.

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

    Эфириум-аккаунты и их виды

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

    Все аккаунты в сети эфира делятся на два вида:

    1. Внешние — независимые счета, которые управляются посредством приватных ключей. Чаще всего, когда речь идет об аккаунте Ethereum, на котором хранятся средства, речь идет именно об этой категории.
    2. Контрактные — управляются ассоциированными программными кодами.

    Возможность инициировать транзакции по переводу средств на внешние счета и отправке команд смарт-контрактам имеют исключительно профили первого типа.

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

    Любая учетная запись Ethereum всегда содержит четыре стандартных элемента:

    • nonce — если речь идет о внешних счетах, этот параметр отображает число осуществленных переводов; для контрактных аккаунтов — количество созданных ими новых контрактов;
    • balance — показывает, сколько наименьших дробных частиц ETH (wei) удерживается на счету;
    • storageRoot — закодированное дерево Меркла (хеш содержимого аккаунта);
    • codeHash — у внешних записей это поле пустое, а у контрактных содержит хеш кода виртуальной машины, отвечающей за обработку транзакций.

    Смарт-контракты в сети Ethereum

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

    В данный момент основная сфера применения смарт-контрактов Эфириума — описанный в примере сбор средств во время первичных предложений монет, а также обеспечение работы тысяч dApps-приложений.

    Транзакции, посредством которых создаются умные контракты, отличаются от операций по переводу активов не только целевым назначением, но и содержимым. У них имеется параметр «init» с кодом, который с помощью математической формулы объявляет адрес нового смарт-контракта и запускает процесс его создания.

    Просмотр всех существующих блоков и аккаунтов, а также содержимого смарт-контрактов и транзакций доступен любому желающему. Для этой цели используются веб-сайты обозревателей блоков (эксплореры), самым популярным из которых является Etherscan.

    Технические особенности экосистемы Эфириума

    Хранящиеся в блокчейне Ethereum данные организованы в виде ассоциативной иерархической структуры, которая носит название префиксного дерева Меркла (Merkle trie). По факту это двоичный файл, содержащий информацию от нескольких типов узлов (нод):

    • Листовые (конечные) — содержат базовые данные и располагаются внизу древовидной системы;
    • Промежуточные — каждый из них содержит хеш пары дочерних узлов;
    • Корневой — узел, представляющий собой вершину дерева; формируется из хешей двух ближайших к нему по иерархии промежуточных узлов.

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

    Такая организационная структура используется для хранения в заголовках блоков Ethereum истории транзакций, состояния префиксного дерева и страниц оплаты. Кроме того, использование дерева Меркла позволяет уберечь сеть от внедрения неоригинальных (поддельных) транзакций злоумышленниками.

    Упомянутые узлы (ноды) представляют собой копии ПО, установленного на компьютерном оборудовании с подходящим видом вычислительных мощностей. Они бывают:

    1. Полными — с загрузкой на жесткий диск всего блокчейна Эфириума. Позволяют использовать все возможности сети.
    2. Легкими — на диск загружаются только заголовки блоков, в которых хранится достаточно информации для создания запросов и получения ответов, касающихся балансов аккаунтов, истории переводов активов, различных событий в сети и т.д. При этом нет возможности проводить транзакции.

    Как правило, полные ноды контролируются майнерами, большинство которых объединяет свои мощности в рамках пулов для повышения вероятности нахождения новых блоков.

    Возможности блокчейна эфира

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

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

    Именно этот функционал сделал Эфириум самой популярной платформой для выпуска токенов (ERC-20) и проведения первичных предложений монет. По сути, его появление и стало причиной ICO-бума 2016-18 гг.

    По сути как платформа для создания dApps и работы со смарт-контрактами Ethereum может применяться в очень широком спектре отраслей (международные сети поставок, голосование, финансы, страховая сфера, компьютерные игры, аренда недвижимости и т.д.).

    Преимущества и недостатки сети Ethereum

    Кроме уже названной универсальности (одновременно криптовалютная сеть и платформа для создания dApps), можно выделить следующие плюсы блокчейна Ethereum:

    • Относительная быстрота обработки сетью транзакций;
    • Поддержка смарт-контрактов;
    • Регулярные технологические обновления;
    • Доступность (создавать децентрализованные приложения на базе Эфириума может кто-угодно);
    • Публичность и открытость команды проекта.

    В качестве основных минусов блокчейна Эфириума можно упомянуть:

    • Проблемы с масштабируемостью;
    • Несвоевременная активация «бомбы сложности»;
    • Бесконечная эмиссия монет;
    • Наличие у команды проекта централизованных рычагов управления сетью;
    • Постоянное откладывание разработчиками реализации анонсированных обновлений.

    Кроме того, преимущество в виде работы множества dApps на блокчейне Ethereum одновременно является и его недостатком из-за риска перегруженности сети транзакциями этих приложений. Самый яркий пример — всем известная игра CryptoKitties, которая поначалу была настолько популярной, что в течение нескольких недель сеть эфира была ужасно заторможенной, а комиссии выросли с 20 центов до $4.

    Разница между блокчейнами эфира и биткоина

    Изначально создатели Ethereum называли свою разработку улучшенным биткоином (Bitcoin 2.0). Однако оказалось, что, по сути, единственной общей характеристикой обоих блокчейнов является возможность их использования в качестве платежных каналов. Еще можно упомянуть об одинаковом подходе к добыче новых монет (Proof-of-Work), но эта схожесть уже скоро должна исчезнуть (после перехода Эфириума на PoS).

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

    Еще одним важным различием является максимальное количество монет: у биткоина оно не может превысить 21 млн, а у Эфира эмиссия бесконечная и, как следствие, более высокие инфляционные риски.

    Также не стоит забывать о скорости работы блокчейнов: если генерация нового блока в сети Bitcoin составляет в среднем около 10 минут, то у Ethereum этот показатель сейчас составляет всего 13–14 секунд.

    Перспективы блокчейна Ethereum

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

    Конечно же, за прошедшие годы существования этой сети периодически всплывали и разочаровывающие моменты, из-за которых многие переходили на более быстрые и надежные блокчейны, называемые «убийцами эфира» (например, NEO, EOS, Binance Chain). Но когда наконец будут решены проблемы с масштабируемостью, в частности путем внедрения технологии шардинга, у Ethereum появится реальный шанс выйти на один уровень с мировыми платежными системами (а то и обогнать их!), стать глобальной платформой для децентрализованных приложений и укрепить свои позиции в качестве криптовалюты №2, а также самого популярного решения для проведения ICO.

    Более подробно о планах команды Ethereum мы рассказали в этом видео:

    Планы команды Ethereum

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

    Состав и принципы работы Ethereum Blockchain

    Под термином Ethereum blockchain подразумевается цепочка блоков, состоящая из множества элементов, работающих по конкретным правилам и содержащих определенные сведения о переводах и других узлах. Безопасность цепочки транзакций обеспечивается наличием копий блокчейн на ПК сотен тысяч пользователей в разных странах мира, не зависящих друг от друга. Особенность сети Эфириум — особое построение, а создание блокчейна Ethereum возможно своими руками.

    Определение

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

    1. Криптографически защищен. Свидетельствует о применении сложного алгоритма, построенного на математическом принципе. Построение сводит к минимуму вероятность взлома. Это брандмауэр, защищающий систему от подделки, атак и иных действий злоумышленников. Все транзакции должны быть действительными и проверенными на валидность каждым из участников сети.
    2. БлокчейнEthereum — одноэлементный механизм, обеспечивающий фиксацию операций в сети. Свидетельствует о существовании единого алгоритма, отвечающего за переводы в цепочке Эфира. В криптосети действует стандартный набор правил, необходимых для проведения операций и принимаемых участниками сети.
    3. Цепочка блокчейн Эфириум отличается совместно применяемым состоянием. Работа алгоритма открыта в любой момент для каждого из пользователей и применяется участниками (при наличии необходимости).

    купить биткоин

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

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

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

    Каждый майнер (вычислительный узел) имеет право на создание нового элемента цепи, подтверждение транзакции и премии (на 10 ноября 2018 года составляет 3 Эфира). В проверке правильности операций участвуют десятки тысяч майнеров по всему миру. Каждый с помощью вычислительных мощностей ищет доказательство валидности перевода. При успешном поиске блок добавляется к общей цепочке и считается корректным. Процесс подтверждения элементов блокчейна Ethereum происходит с применением механизма консенсуса под названием PoW (Proof-of-Work).

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

    Появление нескольких ответвлений приводит к появлению форка — так называемой «вилки», возникающей при отсутствии консенсуса участников в отношении принципов работы системы. Пример ответвления (хардфорка) блокчейн — Ethereum Classic. Разработчики делают все возможное во избежание разделений для защиты криптовалютной сети.

    В состав системы Ethereum входит ряд компонентов: аккаунты, определенное состояние, операции, газ и размер комиссии. Сюда включаются блоки, выполнение переводов, добыча криптовалюты и механизм PoW.

    Адреса Ethereum и их взаимодействие в криптосети

    Блокчейн Эфириум включает несколько видов счетов, взаимодействующих между собой посредством обмена информацией (передается в виде сообщений). Для каждого счета характерен определенный адрес и актуальное состояние. Адрес в Ethereum — идентификатор (160 бит). Используется для проверки корректности разных аккаунтов. Бывают двух видов:

    1. Внешние. Их управление осуществляется с помощью private key и характерной программы.
    2. Внутренние (для smart-контрактов). Контролируются с помощью ассоциированного кода.

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

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

    Состав счета в системе Ethereum

    Счет криптосети Эфириум включает несколько параметров:

    1. StorageRoot — хеш главного узла дерева Меркла (распространяется в блокчейне для кодирования хеша хранилища конкретного счета). Если не ставить параметр вручную, по умолчанию ничего не указано.
    2. Nonce — показатель, представляющий собой число операций, совершенных с определенного адреса аккаунта (для внешнего пользователя). В случае с внутренним счетом указанный параметр отражает число смарт-контрактов, сформированных с помощью конкретного счета.
    3. CodeHash — хеш виртуальной машины Ethereum для определенного аккаунта. Для внутренних счетов представляет собой код, хеширующийся и сохраненный в качестве «кодХеш». Для смарт-контрактов показатель не указывается (оставляется незаполненная строчка).
    4. Balance — количество горючего, необходимого для конкретного адреса (измеряется в Wei).

    Состав счетов (внешнего владельца и контракта) идентичен, а отличается только содержание.

    Экосистема Ethereum и место хранения блокчейна

    Состояние криптовалютной сети формируется из совмещения адресов и аккаунтов. Информация блокчейн содержится во внутренней структуре, именуемой древом Меркла, представляющим собой двоичное древо, состоящее из ряда узлов:

    1. «Листья». Находятся в нижней части древа блокчейн. Внутри базовые сведения.
    2. Промежуточные узлы. Элементы, играющие роль хешей для подчиненных ответвлений.
    3. Корневой узел. Находится на пике древа. Из него выходят подчиненные узлы.

    Данные из «листьев», находящихся в нижней части древа, создаются по следующему алгоритму:

    1. Сведения для хранения разделяются на блоки.
    2. Новые элементы блокчейн разбиваются на сегменты.
    3. Для каждого нового элемента берется хеш.
    4. Происходит повторение цикла до момента, пока единственным не остается «корень».

    Для «работы» древа Меркла требуется ключ, применяемый для каждого содержащегося внутри параметра. От корневого элемента ключ направляет к очередному узлу для получения в будущем необходимого параметра (того, что содержится в конечных элементах).

    В ситуации с блокчейном Ethereum ключ для древа находится между адресами и характерными для них аккаунтами. Аналогичная древовидная структура применяется для хранения операций и чеков. Так, в каждом узле блокчейна Ethereum имеется заголовок, в состав которого включается хеш главных узлов (корневых элементов) для трех древовидных структур — состояний, чеков и операций.

    Применение древа Меркла обеспечивает удобство хранения указанных сведений. Здесь важно учесть особенность блокчейна Ethereum, включающего в себя ноды (бывают легкими и полными). Особенность полных нод заключается в синхронизации с блокчейн и загрузкой истории транзакции за весь период существования сети. Владельцами полных нод являются майнеры, на ПК которых находятся сведения обо всей цепочке.

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

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

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

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

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

    Создание своего блокчейн на Ethereum — шаг за шагом

    Создание и разработка блокчейн на Ethereum включает в себя несколько этапов, начиная с формирования приватного blockchain, заканчивая формированием smart-контракта. Рассмотрим каждый из этапов подробнее:

    • УстановкаGeth. Протокол можно скачать в качестве отдельной программы, работающей на различных операционных системах, или в роли библиотеки для внедрения в системы Андроид, Go или iOS. На этом этапе устанавливается homebrew, а после вводятся специальные команды. Подробная инструкция приведена по ссылке — ethereum.github.io/go-ethereum/install/, а скачивание установщика для Windows доступно здесь — ethereum.github.io/go-ethereum/downloads/.
    • Создание майнер-аккаунта. Такой шаг позволяет создать два ключа (секретный и общедоступный) с защитным паролем. Место для хранения ключей — /keystor. Папка со своим блокчейном располагается в месте, которое зависит от операционной системы. К примеру, в случае с Windows местонахождение папка %APPDATA%Ethereum. Место для хранения можно изменить.
    • Создание генезис-блока. Для блокчейна Эфира первый блок создан еще 20 июля 2015 года. Теперь нужно создать генезис для нового blockchain. Его активация осуществляется с применением специальной команды, где указывается директория для базы данных, а также точка для начальной загрузки и создания первого блока. Генезис сохраняется под названием genesis.json.

    • Майнинг. После выполнения рассмотренных шагов можно приступать к добыче новых элементов блокчейн Ethereum. Здесь применяется параметр networkid. Участники сети, подключаемые к майнингу, должны использовать тот же идентификатор.
    • Подключение консолиGeth. Здесь в распоряжении создателя блокчейн имеется два варианта — запустить «консоль» отдельно или начать добычу как «консоль». Подключение осуществляется через узел добычи по IPC.
    • Просмотр аккаунтов и баланса. Далее можно внести специальную команду для получения сведений о подключенных пользователей, а после посмотреть баланс. Для этого применяются специальные команды.

    • Подключение МетаМаск. Это приложение необходимо для получения сведений из блокчейна, создания и управления идентификаторами.
    • Передача Эфира. После создания приватного и публичного ключа Ethereum, требуется разблокировка ключа. Далее определяется три переменные (стороны-отправителя, получателя и числа передаваемых монет). Теперь с помощью специальной команды осуществляется отправка денег.
    • Изучение баланса — прямо в плагине или через geth (необходима специальная команда).

    • Подключение редактораRemixк закрытой сети.
    • Формирование, внедрение и вызовsmart-контракта.

    На завершающем этапе можно проверить процесс формирования блоков с применением Ethereum Block Explorer. Для получения доступа к личному блокчейну требуется запуск программы с помощью команды localhost:8000.

    Интерес к криптовалюте ETH и блокчейну легко объяснить. Эксперты прогнозируют будущий рост курса Эфириума к доллару, что свидетельствует о перспективах криптовалюты. Повышается интерес к смарт-контрактам, активно применяемыми государственными и частными организациями. На 11 ноября стоимость 1 Эфириума составляет 210 долларов, но уже к концу года этот показатель может достигнуть 300 долларов и выше. Знание блокчейна Ethereum и принципов его построения позволяет почерпнуть максимум из системы, заработать на майнинге и даже создать собственный blockchain.

    Как работает Ethereum

    Почему Эфириум не просто еще одна криптовалюта? Попробуем на пальцах объяснить его преимущества и принцип действия.

    Хотя Биткоин и Эфириум часто упоминаются вместе, на самом деле они очень разные. Их общая черта — то, что оба могут выступать как платежные средства и построены на технологии blockchain. Однако помимо роли криптовалюты (как биткоин), Ethereum имеет свойства, превращающие его в огромный децентрализованный компьютер.

    Для того, чтобы понять принцип работы Эфириума, нужно понять принцип работы блокчейна.

    Что такое блокчейн?

    В двух словах, это распределенный реестр. Это вечно растущая база данных, заполненная определенной информацией и имеющая следующие свойства:

    — Если данные заносятся в блокчейн, они не могут быть изменены или удалены. Каждая запись остается в базе навсегда.

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

    Чтобы понять механизм синхронизации тысяч версий блокчейна, прибегнем к упрощенной аналогии. Представьте коллектив из 10 человек. Все они сидят за одним столом, и у каждого перед собой файловая папка и чистый лист. Каждый раз, когда кто-то совершает любую важную операцию (например, переводит деньги другому человеку), он говорит об этом всем остальным. Каждый сидящий записывает озвученные объявления на своем листе, пока лист не заполнится. Как только лист заполнен, человек кладет его в папку, предварительно решив математическую задачу. Законченное решение гарантирует, что записи на всех листах были одинаковы и не могут быть изменены. Тот, кто решил задачу первым, получает бонус в криптовалюте. На лист же ставится печать, гарантирующая, что он не будет изменен в будущем.

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

    Что хранится в блокчейне?

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

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

    Эфир – это не просто валюта наподобие долларов, рублей или биткоинов.

    Фактически это огромный компьютер, хотя и очень медленный – где-то в 100 раз медленнее нынешних ПК. К тому же, очень дорогой. “Компьютер Ethereum” по параметрам сравним с мобильником из девяностых; он способен лишь на очень тривиальные и нетребовательные операции.

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

    Как же работает Эфириум?

    Как и любому другому блокчейн-продукту, Эфириуму необходимо, чтобы его ПО непрерывно работало на тысячах компьютеров. На каждом компьютере (узле) сети запущена Ethereum Virtual Machine (EVM – виртуальная машина Эфириума). Фактически EVM – это операционная система, использующая специальный язык программирования и исполняющая специфические программы. Эти программы носят названия «смарт контрактов». Чтобы этот огромный компьютер выполнил какую-либо операцию, нужно заплатить, но не долларами, а криптовалютой данной системы, то есть эфиром.

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

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

    Сила смарт-контрактов

    Представьте, что вы заключаете спор на $100 о завтрашней погоде с другом по переписке: он считает, что завтра будет солнце, а вы – что будет дождь. Проигравший должен отдать победившему $100. Как гарантировать, что проигравший сдержит слово? На ум приходят 3 способа:

    1. Взаимное доверие

    Проще всего было бы положиться на честность друг друга. Однако, так как вы не знаете друг друга и никогда не встречались лично, а сумма немаленькая, лучше прибегнуть к более надежному методу.

    2. Подписание формального договора

    Казалось бы, решение найдено: вы подписываете официальное соглашение, обязывающее проигравшего выплатить заявленную сумму победившему. Мы заверяем его и спокойно делаем свои ставки. На практике же в случае конфликта сторон вы потратите немало времени на суд и кучу денег на юристов, что сделает весь процесс слишком затянутым и дорогостоящим.

    3. Помощь доверенного лица

    Ну и третий вариант — мы могли бы найти “общего друга”, надежного гаранта, которому вы оба доверяете. На следующий день он посмотрел бы в окно и отдал бы $200 выигравшему спор. Все легко и просто. Но только что, если гарант все-таки украдет деньги?

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

    Именно здесь вам на помощь придет смарт-контракт Ethereum. Смарт-контракт — это “общий друг”, гарант сделки в лице исполняемого кода. Эфириум позволяет воспользоваться программой, которая возьмет с вас обоих по 100 долларов, а на следующий день проверит погоду и переведет 200 долларов победителю спора.

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

    Однако, возникает еще один вопрос: как выполняется смарт-контракт и как он интегрирован в блокчейн?

    Каким образом смарт-контракт интегрирован в блокчейн?

    Каждый раз когда смарт-контракт исполнен, информация об этом записывается на лист (блок) как транзакция. На высоком уровне процесс выглядит так: Процесс записи информации о смарт-контракте как транзакции является уникальным, и именно эта функция отличает Эфириум от других платформ.

    В Эфириуме встречаются три типа транзакций:

    1. Перевод от человека человеку

    Перевод эфира по типу “human sender – human recipient” ничем не отличается от перевода Bitcoin. В этом случае поле данных остается пустым.

    2. Перевод эфира без получателя

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

    3. Перевод эфира смарт-контракту от пользователя сети

    Если человеку (или смарт-контракту) нужно запустить исполнение смарт-контракта, по адресу последнего нужно направить транзакцию и прописать условия его исполнения в поле данных.

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

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

    А что такое “газ”? О нём я что-то слышал

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

    Каждое действие внутри смарт-контракта имеет свою цену. Например, определенную цену придется заплатить, если вы хотите занять какой-то объем памяти узла.

    Средство оплаты всех подобных операций и есть так называемый gas, переведенный русскоязычным сообществом как «газ» (хотя оригинальное название – явная отсылка к автомобильному топливу, что станет понятно ниже).

    Впоследствии газ конвертируется в эфир по определенному курсу.

    Для исполнения смарт-контракта, необходимо заранее определить максимально возможное количество уплачиваемого газа. Есть два условия остановки исполнения контракта:

    — Доведение его до конца и завершение алгоритма;

    Заключение

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

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

    Полагаясь на централизованный сервер и доверяя ему свои данные, мы становимся уязвимыми к независящим от нас факторам – хакерским атакам, перебоям в электричестве, рискам катастроф. Децентрализованный же компьютер будет держаться «до последнего узла», в этом и есть его главное преимущество.

  • Ссылка на основную публикацию