Блочная архитектура Эфириума

Где я могу найти описание (предпочтительно диаграмму, как показано ниже), показывающую структуру блока в блокчейне Ethereum?

Диаграмма, показывающая, как можно проверить биткойн-транзакции

Кредиты: Википедия

Поправьте меня, если я ошибаюсь, но это относится не только к доказательству работы, доказательство доли по-прежнему будет использовать то же самое дерево Меркла, верно?

Ответы (7)

Вот моя интерпретация, основанная на желтой бумаге:

введите описание изображения здесь

... Попытки должны выглядеть примерно так:

введите описание изображения здесь

Привет @atomh33ls, не могли бы вы поделиться исходным файлом для иллюстраций (в любом формате программного обеспечения, которое вы использовали для их создания). Я хотел бы создать иллюстрацию для транзакции. Он будет выглядеть почти так же, как и state, за исключением того, что некоторые детали будут изменены. Благодарю вас!
Объясните их нам на простом английском языке
@atomh33ls Меня также интересуют исходные файлы. Мне очень нравится этот замечательный обзор! Какое программное обеспечение вы использовали?
@atomh33ls +1 к исходному файлу, пожалуйста. Если нет, я также был бы рад воссоздать его в mermaid.js, чтобы сообщество могло совместно редактировать его. Я имею в виду три конкретных изменения: добавление примечания о том, что размер ключа укорочен для упрощения целей, размещение сложности дерева (максимальная глубина) в правом нижнем углу, а также добавление и пример узла расширения с префиксом 1[].
@Olshansk Основная диаграмма svg здесь . Увы, у меня нет под рукой диаграммы Меркла. Идеи кажутся хорошими - будет интересно посмотреть, что вы придумаете..

Давайте начнем с моей адаптации этого рисунка , иллюстрирующего структуру блока Биткойн:

Архитектура блокчейна Boitcoin

Все идет нормально. Все достаточно просто.

Введите Ethereum, и все станет немного сложнее. После прочтения this и this , а также в соответствии с рекомендацией @eth this , моей лучшей интерпретацией является рисунок ниже:

![Архитектура блокчейна Эфириума

Определения полей заголовка доступны в разделе 4.3 желтой бумаги .

Uncles - это хэш (списка дядей), в Yellow Paper есть: «256-битный хэш Keccak части списка оммеров этого блока». Codehash — это просто хэш, поскольку контракты неизменны. Указатели указывают на «хэш всего заголовка блока» (хэш Keccak-256 всех байтов в заголовке блока). Чтобы иметь полную диаграмму, действительно следует обратиться к Желтой книге ...
Обновлен ответ после консультации с YP. Теперь начинает проясняться. Спасибо!
Почему транзакции из блока N связаны с транзакциями из блока N+1?
Эти ссылки соответствуют состоянию контракта, которое не изменилось между блоками. Ссылка на состояние из предыдущих блоков вместо репликации более эффективна с точки зрения размера блока.
Вы забыли о сложности заголовков биткойнов.
Включаются ли новые добытые транзакции в блок в качестве «ссылки» (например, только хэш ранее транслируемой транзакции в мемпуле) или структура транзакции полностью встроена в блок? Если встроено/скопировано: есть некоторая неэффективность избыточных данных, верно? один раз, когда транзакция транслируется в мемпул, а затем при копировании в блок? Если блочная транзакция ссылается на транзакцию мемпула: что произойдет, если узел, проверяющий блок, имеет неизвестную транзакцию? например: транзакция не находится в мемпуле узла?

Вот полная структура блока и его роль в блокчейне Ethereum.

Структура блока Эфириума

Вы просили диаграмму, но я думаю, что это было бы более пояснительно.

Описание можно найти в « Желтой книге» , которая является официальной спецификацией протокола Ethereum.

Вот основные части блока:

4.3. Блок. Блок в Ethereum представляет собой набор соответствующих частей информации (известной как заголовок блока), H, вместе с информацией, соответствующей включенным транзакциям, T, и набору других заголовков блоков U, которые, как известно, имеют родителя, равного родитель родителя текущего блока.

Однако нет диаграммы (возможность для сообщества).

Да ладно, я думаю, вы, ребята, лучше справитесь с этим объяснением.

Вот картинка из статьи Ви о структурах данных для легких клиентов:

https://blog.ethereum.org/2014/02/18/ethereum-scalability-and-decentralization-updates/

введите описание изображения здесь

Вышеприведенное является абстракцией дерева Меркла. Я скорее ищу структуру блоков Ethereum (включая все фактические поля заголовков).

Виталик Бутерин дает лаконичный ответ:

Каждый заголовок блока в Ethereum содержит 3 дерева для трех типов объектов: транзакции, квитанции (по сути, фрагменты данных, показывающие эффект каждой транзакции), состояние.

Вы можете прочитать более длинную версию с картинками здесь .

Экстраполируя структуру синтаксического блока, мы также можем спросить, как выглядит семантическая структура состояния мира Эфириума. Я использую эту диаграмму, чтобы объяснить взаимосвязь между «в сети», «вне сети» и всем, что между ними, включая решения для масштабирования L2. Пожалуйста, смотрите мой сопровождающий пост в блоге для более подробной информации.

введите описание изображения здесь