Написать нам
Категория: Блокчейн
03 December 2019

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

Хотите Создать Блокчейн на Ethereum?
Компания Merehead занимается криптовалютной и блокчейн разработкой. Свяжитесь с нами и получите бесплатную консультацию! Поговорить с Менеджером
В статье мы расскажем, как запустить частный блокчейн Ethereum с помощью Geth, а также немного затронем механику работы частных сетей Ethereum.

Что такое Ethereum Private Network







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



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



  1. Блокчейн частной сети не связан с основной цепочкой Ethereum.


  2. Доступ к сети ограничен одним или несколькими узлами.


  3. Создание частных сетей Ethereum бесплатно.


  4. Сложность майнинга задается при создании.


  5. Бесплатные транзакции.




Что такое Ethereum Virtual Machine



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





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, поэтому в конечном счете не особо важно, какой именно инструмент вы выберете.





Интерфейс клиента 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.







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







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





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





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


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



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



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







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





  1. chainId. Идентификатор используемого блокчейна (что-то вроде адреса). Можно указать случайное число при условии, что оно не совпадает с номерами нескольких важных блокчейнов, например с номером основной цепочки Ethereum (1). В инструкции указан случайный трехзначный идентификатор (777).


  2. homesteadBlock. Homestead — первая официальная стабильная версия протокола Ethereum, которая заменила предыдущую версию под названием Frontier. Если вы планируете использовать этот релиз, атрибут должен быть задан как «0».


  3. Можно подключить и другие протоколы например,Byzantium, eip155B и eip158. Для этого под homesteadBlock добавьте название протокола с приставкой Block (например, eip158Block) и задайте им параметр «0».






Создать Genesis-файла с нужными атрибутами можно с помощью любого текстового редактора, например, Notepad (есть в любой версии Windows). Название файла генезиса может быть любым, главное — указать расширение «json». В нашей индукции будет использоваться название CustomGenesis.json.



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







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



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





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



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







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



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



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







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







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



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







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

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





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


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







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







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







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



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



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





Вот что у вас должно получится:







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

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



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







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







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







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







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

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



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