Объяснение параметра командной строки Geth: targetgaslimit?

Я пытался выяснить, что этот targetgaslimitпараметр делает именно для Geth в контексте частных блокчейнов.

Я видел следующее объяснение, но оно мне никогда не помогало: «Предел целевого газа устанавливает искусственный нижний уровень целевого газа для блоков на мой (по умолчанию: 4712388)».

Может ли кто-нибудь дать другое объяснение, пожалуйста? Я искал, но не смог найти ничего хорошего в Интернете?

Ответы (2)

Отказ от ответственности: я предполагаю, что понимаю, что такое газ.

Лимит газа — это максимальное количество газа, которое может быть потрачено во время транзакции Ethereum. Это число не является фиксированным — в начале существования Эфириума лимит газа был намного ниже, чем сегодня.

Существует расчет, который узлы Ethereum выполняют для корректировки лимита газа после каждой транзакции на основе использования в текущем блоке. Согласно документации в коде: https://github.com/ethereum/go-ethereum/blob/e29c2e43640445e743bb69ab48d6c862d3e964d9/core/block_validator.go#L108

    strategy: gasLimit of block-to-mine is set based on parent's
    gasUsed value.  if parentGasUsed > parentGasLimit * (2/3) then we
    increase it, otherwise lower it (or leave it unchanged if it's right
    at that usage) the amount increased/decreased depends on how far away
    from parentGasLimit * (2/3) parentGasUsed is.

Хотя технически это отвечает на ваш вопрос, он по-прежнему оставляет открытым вопрос о том, почему: лимит газа существует для защиты сети от безудержно работающих скриптов. Это делается следующим образом: смотрите на текущее использование и используйте его в качестве базового уровня.

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

targetgaslimitэто лимит газа для каждого блока. Например, если вы установите его на 8 000 000 (текущее значение в основной сети прямо сейчас), майнер сможет принять столько транзакций, сколько сможет, общая сумма которых gasLimit<= 8 000 000.

Майнеры имеют возможность корректировать это значение с течением времени в зависимости от состояния сети. Например, Виталик предложил майнерам работать --targetgaslimit 2000000в прошлом году из-за спам-атак (повышение ставки, вероятноtargetgaslimit , позволило бы проводить больше законных транзакций).

Будьте осторожны при использовании этого, однако, как указывает здесь Петер Силаджи , «лимит может меняться только с определенной суммой между блоками. Если изменение больше, блок не принимается». Вы можете столкнуться с такими проблемами, которые трудно отладить в вашей частной цепочке.