Генезис
Определение приватного состояния генезиса
Определение приватной цепочки блоков
Сначала вам нужно создать состояние генезиса вашей сети, о котором должны знать и с которым должны согласиться все узлы. Это небольшой файл JSON (например, назовите его genesis.json):
Сначала вам необходимо создать исходное состояние сети, которое должно быть известно всем узлам и согласовано ими. Оно включает в себя небольшой файл в формате JSON (например, можно назвать его genesis.json):
{
"config": {
"chainId": 0,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
Параметр | Описание |
---|---|
mixhash | Совместно с nonce используется для майнинга, генерируется из части предыдущего блока. Обратите внимание, что его настройка вместе с nonce должна соответствовать условиям, описанным в Yellow paper Ethereum, раздел 4.3.4. Block Header Validity, (44). |
nonce | nonce — это 64-битное случайное число, используемое для майнинга. Обратите внимание, что его установка вместе с mixhash должна соответствовать условиям, описанным в Yellow paper Ethereum, раздел 4.3.4. Block Header Validity, (44). |
difficulty | Устанавливает сложность текущего блока. Если сложность слишком велика, то майнинг на CPU будет затруднён. Здесь установлена небольшая сложность. |
alloc | Используется для предварительного размещения учётных записей и количества ETH на них. Поскольку приватная цепочка блоков легче для майнинга, нет необходимости предварительно размещать учётные записи с ETH. При необходимости их можно создать позже. |
coinbase | Учётная запись майнера. Можно указать произвольно. |
timestamp | Устанавливает временную метку блока генезиса. |
parentHash | Значение хэша предыдущего блока, поскольку это блок генезиса, значение равно 0. |
extraData | Дополнительная информация, которую можно указать по своему усмотрению, например, личную информацию. |
gasLimit | Это значение устанавливает общий лимит потребления GAS для блока, который ограничивает общее количество транзакций, которые может содержать блок. Поскольку это приватная цепочка, здесь установлено максимальное значение. |
Для большинства целей приведённых выше полей должно быть достаточно, хотя мы рекомендуем изменить nonce на какое-нибудь случайное значение, чтобы предотвратить возможность подключения неизвестных удалённых узлов к вам. Если вы хотите предварительно пополнить некоторые учётные записи для упрощения тестирования, вы можете заполнить поле alloc конфигурациями учётных записей:
Для большинства целей указанных выше параметров должно быть достаточно. Однако мы рекомендуем заменить nonce случайным значением, чтобы неизвестные удалённые узлы не могли подключиться к вам. Если вы хотите заранее предоставить средства некоторым учётным записям для облегчения тестирования, вы можете использовать конфигурации учётных записей для заполнения поля alloc:
{
"alloc": {
"0x0000000000000000000000000000000000000001": {"balance": "100"},
"0x0000000000000000000000000000000000000002": {"balance": "200"}
}
}
Запуск
Параметр | Описание |
---|---|
identity | Идентификатор блокчейна, произвольное значение для обозначения текущей сети. |
init | Указывает местоположение файла состояния блока генезиса и создаёт начальный блок. |
datadir | Задаёт расположение данных текущей цепочки блоков. |
port | Порт для сетевого мониторинга. |
rpc | Запускает RPC-коммуникацию, которая позволяет развёртывать и отлаживать смарт-контракты. |
rpcapi | Определяет разрешённые клиенты RPC, обычно db, eth, net, web3. |
networkid | Задаёт идентификатор текущей цепочки блоков, используемый для различения разных сетей, представляет собой число. |
console | Запускает режим командной строки, позволяющий выполнять команды в Geth. |
nodiscover | Частная сеть не будет видна в интернете. |
geth --identity "secbro etherum" \
--rpc --rpccorsdomain "*" \
--datadir "/home/zhuzs/eth/chain" \
--port "30303" \
--rpcapi "db,eth,net,web3" \
-- networkid 95518 console --dev
Имея состояние генезиса, определённое в приведённом выше файле JSON, вам необходимо инициализировать каждый узел Geth этим состоянием перед запуском, чтобы убедиться, что все параметры блокчейна установлены правильно:
Используя состояние генезиса, указанное в приведённом выше JSON-файле, необходимо инициализировать им каждый узел Geth перед запуском, чтобы гарантировать правильную настройку всех параметров цепочки блоков:
geth init path/to/genesis.json
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )