1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ikaiguang-docker-ethereum

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
genesis.md 7.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 15:10 e77dad2

Генезис

Определение приватного состояния генезиса

Определение приватной цепочки блоков

Сначала вам нужно создать состояние генезиса вашей сети, о котором должны знать и с которым должны согласиться все узлы. Это небольшой файл 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 )

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

1
https://api.gitlife.ru/oschina-mirror/ikaiguang-docker-ethereum.git
git@api.gitlife.ru:oschina-mirror/ikaiguang-docker-ethereum.git
oschina-mirror
ikaiguang-docker-ethereum
ikaiguang-docker-ethereum
master