Что означает каждый параметр genesis.json?

Я пытаюсь настроить genesis.json для своей частной сети. Что означает каждый параметр и какое значение я могу установить в genesis.json?

  • nonce: любые данные?
  • временная метка: в любое время?
  • parentHash: любой хеш?
  • extraData: поместите какие-либо данные, если хотите добавить? Каков максимальный размер?
  • gasLimit: Каково максимальное количество?
  • трудность: что такое наименьшее число?
  • mixhash: Что это?
  • coinbase: адрес Ethereum для coinbase, правильно?
  • alloc: первое распределение эфира

Пример генерации json-файла из Как создать частную цепочку Ethereum . Официальный документ для генерации частной сети json находится здесь. Подключение к сети

{
    "nonce": "0xdeadbeefdeadbeef",
    "timestamp": "0x0",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "extraData": "0x0",
    "gasLimit": "0x8000000",
    "difficulty": "0x400",
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "coinbase": "0x3333333333333333333333333333333333333333",
    "alloc": {
    }
}
43 голоса | спросил Satoshi Nakanishi 29 MaramTue, 29 Mar 2016 05:33:52 +03002016-03-29T05:33:52+03:0005 2016, 05:33:52

2 ответа


54

Блок генерации Объяснение

mixhash 256-битный хеш, который в сочетании с nonce показывает, что в этом блоке выполнено достаточное количество вычислений: Работа (PoW). Комбинация nonce и mixhash должна удовлетворять математическому условию, описанному в «Желтой книге», 4.3.4. Заданность заголовка блока, (44). Это позволяет проверить, что блок действительно был криптографически добыт, следовательно, из этого аспекта действительно.

nonce 64-битный хеш, который доказывает в сочетании с хэш-миксами, что на этом блоке выполнено достаточное количество вычислений: Proof-of-Work (PoW) , Комбинация nonce и mixhash должна удовлетворять математическому условию, описанному в «Желтой книге», 4.3.4. Задействование заголовка блока (44) и позволяет проверить, что блок действительно криптографически добыт и, следовательно, из этого аспекта является действительным. nonce - это криптографически защищенная доказательная документация по горным работам, которая не вызывает сомнений в том, что определенный объем вычислений был затрачен при определении этого значения токена. (Yellowpager, 11.5. Добыча полезных ископаемых).

трудность Скалярное значение, соответствующее уровню сложности, применяемому при обнаружении этого блока nonce. Он определяет цель Mining, которая может быть рассчитана на уровне сложности предыдущего блока и временной отметке. Чем выше сложность, тем более статистически больше вычислений, которые должен выполнить Miner, чтобы обнаружить действительный блок. Это значение используется для управления временем генерации блока Blockchain, сохраняя частоту генерации блока в целевом диапазоне. В тестовой сети мы сохраняем это значение низким, чтобы избежать ожидания во время тестов, поскольку для выполнения транзакции в Blockchain требуется открытие действительного блока.

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

coinbase . 160-битный адрес, на который были получены все награды (в эфире), собранные в результате успешного запуска этого блока. Они являются суммой самого вознаграждения за добычу полезных ископаемых и возмещения транзакций по контракту. Часто называются «преимуществами» в спецификациях, иногда «объединенными» в онлайн-документации. Это может быть что угодно в блоке Genesis, поскольку значение устанавливается настройкой Miner при создании нового блока.

timestamp Скалярное значение, равное разумному выводу функции Unix time() на этом этапе создания. Этот механизм обеспечивает гомеостаз с точки зрения времени между блоками. Чем меньше период между двумя последними блоками, тем выше уровень сложности и, следовательно, дополнительные вычисления, необходимые для поиска следующего допустимого блока. Если период слишком велик, сложность и ожидаемое время для следующего блока уменьшаются. Временная метка также позволяет проверять порядок блока в цепочке (Желтая бумага, 4.3.4. (43)).

parentHash 256-битный хэш Keccak всего заголовка родительского блока (включая его nonce и mixhash). Указатель на родительский блок, тем самым эффективно создавая цепочку блоков. В случае блока Genesis, и только в этом случае, это 0.

extraData Необязательный бесплатный, но макс. 32-байтовое длинное пространство для сохранения умных вещей для этой цели. :)

gasLimit Скалярное значение, равное текущему общему пределу расхода газа на блок. Высокий в нашем случае, чтобы избежать ограничения этого порога во время испытаний. Примечание: это не означает, что мы не должны обращать внимание на потребление газа нашими Контрактами.

ответил niksmac 29 MaramTue, 29 Mar 2016 05:50:01 +03002016-03-29T05:50:01+03:0005 2016, 05:50:01
6

В дополнение к полям, описанным niksmac:

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


Значение /спецификация "config" в генезисе. JSON

См. config.go :

type ChainConfig struct {
    ChainId *big.Int `json:"chainId"` // Chain id identifies the current chain and is used for replay protection

    HomesteadBlock *big.Int `json:"homesteadBlock,omitempty"` // Homestead switch block (nil = no fork, 0 = already homestead)
    DAOForkBlock   *big.Int `json:"daoForkBlock,omitempty"`   // TheDAO hard-fork switch block (nil = no fork)
    DAOForkSupport bool     `json:"daoForkSupport,omitempty"` // Whether the nodes supports or opposes the DAO hard-fork

    // EIP150 implements the Gas price changes (https://github.com/ethereum/EIPs/issues/150)
    EIP150Block *big.Int    `json:"eip150Block,omitempty"` // EIP150 HF block (nil = no fork)
    EIP150Hash  common.Hash `json:"eip150Hash,omitempty"`  // EIP150 HF hash (fast sync aid)

    EIP155Block *big.Int `json:"eip155Block,omitempty"` // EIP155 HF block
    EIP158Block *big.Int `json:"eip158Block,omitempty"` // EIP158 HF block

    // Various consensus engines
    Ethash *EthashConfig `json:"ethash,omitempty"`
    Clique *CliqueConfig `json:"clique,omitempty"`
}
ответил Richard Horrocks 1 Mayam17 2017, 08:23:19

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132