Написать нам
Категория: Блокчейн
03.12.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:


Написать нам
Имя*:
Email*:
Сообщение: