Создание смарт-контрактов Solidity для блокчейна Ethereum. Практическое руководство. Александр Вячеславович Фролов
Чтение книги онлайн.

Читать онлайн книгу Создание смарт-контрактов Solidity для блокчейна Ethereum. Практическое руководство - Александр Вячеславович Фролов страница 8

СКАЧАТЬ сеть Rinkeby, работающую в точности как Ethereum и пригодную для отладки «настоящих» контрактов перед публикацией в Ethereum.

      Готовим файл genesis.json

      Прежде всего создайте в домашнем каталоге пользователя book файл genesis.json (листинг 2.1.).

      Листинг 2.1. Файл genesis.json

      {

       "config": {

          "chainId": 1999,

          "homesteadBlock": 0,

          "eip155Block": 0,

          "eip158Block": 0

       },

       "difficulty": "10",

       "gasLimit": "5100000",

       "alloc": {}

      }

      Этот файл описывает первичный блок (genesis block) цепочки блоков – самый первый блок блокчейна. Так как мы создаем наш приватный блокчейн, то и о первом блоке мы должны позаботиться сами.

      Хорошее описание первичного блока сети Ethereum можно найти, например, здесь: https://arvanaghi.com/blog/explaining-the-genesis-block-in-ethereum/.

      Блок config файла genesis.json содержит переменные конфигурации сети Ethereum.

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

      Если речь идет о главной сети Ethereum, то ее идентификатор равен 1. Идентификатор тестовой сети Rinkeby равен 4. При создании нашей приватной сети мы можем указать любое значение, отличное от известных. Мы выбрали значение 1999.

      Значение 0 в поле homesteadBlock указывает на то, что мы будем использовать релиз сети Ethereum под названием Homestead. Homestead представляет собой второй релиз сети Ethereum (первый релиз назывался Frontier). Нулевое значение этого параметра используется и в основной сети Ethereum.

      Немного о параметрах с префиксом EIP. При реализации Homestead был обновлен протокол, причем без обратной совместимости с предыдущим релизом Ethereum. Соответствующие изменения отражены в документах «Предложения по улучшению Ethereum» (Ethereum Improvement Proposals, EIPs), опубликованных на сайте https://eips.ethereum.org/.

      Реализация изменений может потребовать выполнения так называемой процедуры хардфорка (hard-forking), или обновления ПО узлов. В результате этой процедуры может меняться структура блока, появляется возможность использовать ранее недоступные блоки и вносить различные изменения в протокол.

      Так как мы не будем делать хардфорк, то установим значения соответствующих параметров eip155Block и eip158Block равными нулю.

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

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

      Параметр СКАЧАТЬ