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