Как Создать Приватный Блокчейн Ethereum

В статье мы расскажем, как запустить частный блокчейн Ethereum с помощью Geth, а также немного затронем механику работы частных сетей Ethereum. Что...

Содержание

#1. Что такое Ethereum Private Network
#2. Что такое Ethereum Virtual Machine
#3. Что такое Geth (Go Ethereum)
#4. Как создать частный блокчейн Ethereum
#5. Шаг 1: Создаем папку DATADIR
#6. Шаг 2: Создаем генезис-блок
#7. Шаг 3: Запускаем частную сеть
#8. Шаг 4: Создаем внешнюю учетную запись (EOA)
#9. Шаг 5: Добываем немного эфира для нашего счета
#10. Поздравляем!

В статье мы расскажем, как запустить частный блокчейн Ethereum с помощью Geth, а также немного затронем механику работы частных сетей Ethereum.

Что такое Ethereum Private Network

Приватный Блокчейн Ethereum

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

Особенности частного блокчейна Ethereum:

  1. Блокчейн частной сети не связан с основной цепочкой Ethereum.
  2. Доступ к сети ограничен одним или несколькими узлами.
  3. Создание частных сетей Ethereum бесплатно.
  4. Сложность майнинга задается при создании.
  5. Бесплатные транзакции.

Что такое Ethereum Virtual Machine

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

Приватный Блокчейн Ethereum EVM

Ethereum — это сеть EVM

Если не вдаваться в технические нюансы, то можно сказать, что Ethereum — это сеть из множества узлов / нод, или EVM (Ethereum Virtual Machine). EVM — это программное обеспечение, которое может понимать написанный по определенным правилам набор инструкций (для запуска транзакции, смарт-контрактов, приложений) и выполнять их в сети Ethereum в некотором логическом порядке, как обычный компьютер.

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

  1. Geth (Go Ethereum). Реализация языка программирования Go (Golang) для Ethereum называется Geth. Это одна из трех изначальных реализаций протокола Ethereum (наряду с Python и C++). Выбирайте этот инструмент, если у вас есть хотя бы минимальный опыт веб-разработки и вы хотите поэкспериментировать или профессионально создать интерфейсы для dapps.
  2. Pyethapp. Клиент на основе Python, реализующий «криптоэкономический конечный автомат Ethereum». Нужно выбирать, если вы заинтересованы в разработке dapps или академических исследованиях сети Ethereum.
  3. C++ (eth). Имплементация Ethereum на C++. Выбирайте, если серьезно относитесь к майнингу на GPU или нужно повысить безопасность, запустив две реализации программы.
С помощью этих инструментов можно получить доступ к консоли (терминалу) — среде JavaScript, содержащей все основные функции, которые нам понадобятся позже. Доступ к консоли — главное, что нужно для запуска приватного блокчейна Ethereum, поэтому в конечном счете не особо важно, какой именно инструмент вы выберете.

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

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

Что такое Geth (Go Ethereum)

Geth — это инструмент интерфейса командной строки (CLI), который связывает вашу систему и оборудование с сетью Ethereum. С Geth вы можете:
  • осуществлять финансовые транзакции;
  • майнить эфир (утилитарная валюта сети Эфириума);
  • создавать смарт-контракты, децентрализованные приложения;
  • создавать частные блокчейны;
  • исследовать историю блоков;
  • многое другое.
 

Клиент можно скачать на сайте geth.ethereum.org. Есть сборки для Ubuntu (семейство Linux), OS X («яблочные» устройства), Windows и даже Android. Инструкция по тому, что делать после загрузки дистрибутива находится в разделе «Install» (обязательно прочтите и сделайте все, что там написано).

Как создать частный блокчейн Ethereum

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

Шаг 1: Создаем папку DATADIR

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

Для этого сделайте следующее:

1. Создайте пустую папку на рабочем столе вашего компьютера. Например, с названием PrviaceChain3.

Приватный Блокчейн Ethereum 1

2. Кликните правой кнопкой по созданной папке и выберите «Git Bash Here».

Приватный Блокчейн Ethereum 2

3. Если все нормально, система покажет следующее.

Приватный Блокчейн Ethereum 3

Шаг 2: Создаем генезис-блок

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

Схема блокчейна: генезис-блок, основная и «побочные» цепочки

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

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

Вот какие команды нужно прописать в файл Genesis:

Приватный Блокчейн Ethereum Генезис

И вот что означают прописанные в нем атрибуты:

  • config. Определяет конфигурацию блокчейна. Не настраивает ничего конкретного для самого блока генезиса, но определяет, как будет работать сеть.
  1. chainId. Идентификатор используемого блокчейна (что-то вроде адреса). Можно указать случайное число при условии, что оно не совпадает с номерами нескольких важных блокчейнов, например с номером основной цепочки Ethereum (1). В инструкции указан случайный трехзначный идентификатор (777).
  2. homesteadBlock. Homestead — первая официальная стабильная версия протокола Ethereum, которая заменила предыдущую версию под названием Frontier. Если вы планируете использовать этот релиз, атрибут должен быть задан как «0».
  3. Можно подключить и другие протоколы например,Byzantium, eip155B и eip158. Для этого под homesteadBlock добавьте название протокола с приставкой Block (например, eip158Block) и задайте им параметр «0».
  • difficulty. Определяет сложность генерации блоков. Чем выше сложность, тем больше потребуется ресурсов для майнинга. Чтобы избежать ожидания во время тестов и написания данного текста, мы установили относительно невысокое значение сложности.
  • gasLimit. указывает текущий общесетевой лимит расходов газа на блок. Газ — это «топливо», которое используется для оплаты транзакционных комиссий в сети Ethereum. Чем больше газа пользователь готов потратить, тем выше приоритет его транзакции в очереди. Мы установили это значение на достаточно высоком уровне, чтобы избежать ограничений во время тестов.
  • alloc. Позволяет создать криптовалютный кошелек для нашего частного блокчейна и наполнить его поддельным эфиром. В нашем тексте мы не будем использовать эту опцию, чтобы показать, как инициировать майнинг на частном блокчейне. Если же вы запускаете частный блокчейн, чтобы протестировать смарт-контракт или децентрализованное приложение, установите нужное вам значение (например, 9999999999999).
Создать Genesis-файла с нужными атрибутами можно с помощью любого текстового редактора, например, Notepad (есть в любой версии Windows). Название файла генезиса может быть любым, главное — указать расширение «json». В нашей индукции будет использоваться название CustomGenesis.json.

После создания Genesis-файла откройте Geth и введите следующую команду:

Приватный Блокчейн Ethereum команда

Данная команда инструктирует Geth использовать ранее созданный нами файл CustomGenesis.json для генерации первого блока приватного блокчейна Ethereum. Атрибут «path_to_folder» — это папка, в которой вы сохранили Genesis-файл. Тогда как атрибут «path_to_your_data_directory» указывает папку, в которой будут храниться данные нашей частной цепочки (создана на первом шаге).

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

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

Шаг 3: Запускаем частную сеть

Итак, мы создали генезис-блок. Теперь можно запускать нашу частную сеть, чтобы мы или другие узлы (если вы создали несколько) могли добавлять новые блоки. Для этого в консоли Geth нужно инициировать команду:

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

Данная команда инструктирует Geth на запуск частного блокчейна. И использовать указанный каталог («path_to_your_data_directory» замените на адрес нужной папки) для доступа к запущенной сети.

В команде также присутствует идентификатор «7776». Его следует заменить на произвольное число, которое не будет равно идентификатору уже созданных сетей, например идентификатору основной сети Ethereum («networkid=1»). Идентификатор «networkid=7776» также не стоит использовать, иначе вы подключитесь к сети, которую мы создали для данного гайда.

Вот список идентификаторов существующих сетей блокчейна Ethereum:

Приватный Блокчейн Ethereum идентификатор

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

Приватный Блокчейн Ethereum точка

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

Вот эти две команды:

Приватный Блокчейн Ethereum команда

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

Шаг 4: Создаем внешнюю учетную запись (EOA)

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

Типы аккаунтов в сети Ethereum

В сети Ethereum есть два типа аккаунтов: Externally Owned Accounts (EOA) и Contracts Accounts. Об их возможностях и отличиях можно узнать в разделе «Типы счетов, газ и транзакции» на сайте ethdocs.org. Для управления нашей блокчейн-сетью нужна EOA. Чтобы ее создать, вам нужно запустить Geth в двух окнах. Во втором окне/консоли введите следующую команду:

Приватный Блокчейн Ethereum окно

Это подключит второе окно к терминалу первого окна (убедитесь, что это действительно произошло — все заработало). Если все правильно, терминал покажет следующее:

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

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

Приватный Блокчейн Ethereum команды

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

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

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

Приватный Блокчейн Ethereum статус
Вот что у вас должно получится:

Приватный Блокчейн Ethereum zero

Баланс учетной записи должен быть равен нулю. Это правильно, поскольку при запуске частной сети в файле генезиса мы ничего не прописали в атрибуте alloc. Пополнить баланс сейчас можно двумя способами: либо кто-то вам отправит немного эфира, либо получите вознаграждение за создание нового блока. А так как вы сейчас единственный участник вашей частной сети, то выбора у вас, по сути, нет.

Шаг 5: Добываем немного эфира для нашего счета

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

Приватный Блокчейн Ethereum майнинг

Результат должен быть таким:

Приватный Блокчейн Ethereum eth.getBalance

Если вы используете команду eth.getBalance во втором окне Geth, то увидите, как баланс вашей учетной записи пополняется поддельным эфиром. Скорость майнинга будет очень большой, так что вы сможете стать мультимиллионером буквально за пару секунд.

Приватный Блокчейн Ethereum деньги

Когда денег будет достаточно, используйте следующую команду, чтобы остановить майнинг:

команда остановки

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

Поздравляем!

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

Оцените (2 голосов - 4.7 из 5)
Спасибо!