Перейти к основному содержанию

Помогите обновить эту страницу

🌏

Есть новая версия этой страницы, но пока только на английском языке. Помогите нам перевести последнюю версию.

Перевести страницу
См. английский

Здесь нет ошибок!🐛

Эта страница сейчас не переводится. Пока что мы намеренно оставили эту страницу на английском языке.

Блоки

Последнее редактирование: , Invalid DateTime
Редактировать страницу

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

Прежде чем начать

Блоки — простая тема для новичков. Но чтобы помочь вам лучше понять эту страницу, мы рекомендуем сначала прочитать наше введение в Ethereum, а так же разделы Аккаунты и Транзакции.

Зачем нужны блоки?

Чтобы удостовериться, что все участники сети Ethereum находятся в синхронизированном состоянии и согласны с точной историей транзакций, мы объединяем наборы транзакций в блоки. Это означает, что десятки (или сотни) транзакций запрашиваются, проверяются и синхронизируются одновременно.

Диаграмма, показывающая транзакцию в блоке, вызывающем изменения состояния Диаграмма адаптирована к Ethereum EVM иллюстрирована

Учитывая все обязательства, мы предоставляем всем участникам сети достаточно времени для достижения консенсуса: даже несмотря на то, что запросы о транзациях происходят десятки раз в секунду, блоки на Ethereum создаются примерно один раз в 15 секунд.

Как работают блоки

Чтобы сохранить историю транзакций, блоки строго упорядочены (каждый новый блок содержит ссылку на предыдущий блок). Транзакции внутри блоков также строго упорядочены. За исключением редких случаев, в любое время все участники сети согласны с точным количеством и историей блоков и работают над набором текущих запросов транзакций в следующий блок.

Как только блок собран (добыт) некоторым майнером в сети, он передается в остальную часть сети; все узлы добавляют этот блок в конец блокчейна и добыча продолжается. Точный процесс сборки (майнинга) и выполнения обязательств/консенсуса в настоящее время определяется протоколом Ethereum «доказательство работы».

Визуализация

Протокол доказательства работы

Доказательство работы (Proof-of-Work) означает следующее:

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

Подробнее о майнинге

Что входит в блок?

  • timestamp — время, когда был добыт блок.
  • blockNumber — длина блокчейна в блоках.
  • baseFeePerGas — минимальная комиссия за газ, требуемая для транзакции, которая будет включена в блок.
  • difficulty — необходимые усилия, чтобы добыть блок.
  • mixHash — уникальный идентификатор этого блока.
  • parentHash — уникальный идентификатор для предыдущего блока в блокчейне (так блоки связываются в цепь — блокчейн).
  • transactions — транзакции, включенные в блок.
  • stateRoot — все состояние системы: учетные балансы, хранение контракта, код контракта и счетчик транзакций.
  • nonce — хэш, который в сочетании с mixHash доказывает, что блок прошел доказательство работы.

Время блока

Под интервалом блока подразумевается время, которое нужно затратить на майнинг нового блока. В Ethereum средний интервал блока составляет от 12 до 14 секунд и пересчитывается после майнинга каждого блока. Ожидаемый интервал блока установлен как константа на уровне протокола, и этот ожидаемый интервал используется для защиты сети, когда майнеры увеличивают мощность майнинга. Средний интервал блока сравнивается с ожидаемым, и если средний интервал больше ожидаемого, то это приводит к уменьшению сложности в заголовке блока. Если средний интервал блока меньше ожидаемого, то сложность в заголовке блока увеличивается.

Размер блока

Последнее важное примечание — сами блоки ограничены по размеру. Каждый блок имеет целевой размер 15 миллионов единиц газа, но размер блоков будет увеличиваться или уменьшаться в соответствии с загруженностью сети до предела блока в 30 миллионов единиц газа (двукратный целевой размер блока). Общее количество газа, израсходованного всеми транзакциями в блоке, должно быть меньше, чем предел газа в блоке. Это гарантирует, что блоки не могут быть произвольно большими. Если бы блоки могли быть произвольно большими, то менее производительные полные узлы со временем не смогли бы поддерживать сеть в связи с требованиями к пространству и скорости.

Дополнительные ресурсы

Знаете ресурс сообщества, который вам пригодился? Измените эту страницу и добавьте его!

Была ли эта статья полезной?

👈

Предыдущие

Транзакции

Следующий

Виртуальная машина Ethereum (EVM)
👉