Взаимосвязь между транзакциями и квитанциями

Читая Yellow paper , я вижу, что каждый заголовок блока включает в себя хэш Keccak 256 корня дерева для транзакций и квитанций о транзакциях. Я изо всех сил пытаюсь понять, как и где они создаются.

Как связаны Trie транзакций и Trie получения транзакций для данного блока?

Дело в том, что при обновлении состояния мира путем прохождения транзакций транзакции и квитанции о транзакциях сохраняются в соответствующих попытках?

Ответы (2)

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

Цель :

  • Попытки транзакций : записывает векторы запросов транзакций.

  • Попытки получения транзакции : записывает результат транзакции.

Содержание :

Параметры, используемые при составлении Transaction Trie [подробности в разделе 4.3 желтой бумаги] :

  • одноразовый,
  • цена газа,
  • лимит газа,
  • получатель,
  • трансфертная стоимость,
  • значения подписи транзакции и
  • инициализация учетной записи (если транзакция относится к типу создания контракта) или данные транзакции (если транзакция является вызовом сообщения)

Параметры, используемые при составлении Trie получения транзакций [подробности в разделе 4.4.1 желтой бумаги] :

  • посттранзакционное состояние,
  • совокупный расход газа,
  • набор журналов, созданных при выполнении транзакции, и
  • фильтр Блума, составленный из информации в этих журналах
Спасибо, zanzu, всегда ли рецепты для транзакций находятся в одном и том же блоке? Если да, то хранятся ли они в том же порядке?
@atomh33ls. Да и да. Это ясно из уравнений для корня транзакций, Ht, и корня квитанций, Hr, в уравнении 29, оба из которых проиндексированы по индексу блочной транзакции, т.е.
Ах да спасибо; Я думаю, вы имеете в виду Хе для получения root? Компоненты Ht и He уравнения 28 также имеют значение.
@atomh33ls. Да, извините, замените Hr на He в моем комментарии выше (было бы слишком просто, если бы корень квитанций обозначался Hr! :о))
Что ты имеешь в виду под transaction request vectors@zanzu

В https://blog.ethereum.org/2015/11/15/merkling-in-ethereum Виталик Бутерин привел пример использования разных деревьев (транзакций, чеков, деревьев состояний).

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

Первый обрабатывается деревом транзакций ; третий и четвертый обрабатываются деревом состояний, а второй — деревом квитанций . Первые четыре довольно просто вычислить; сервер просто находит объект, извлекает ветку Merkle (список хэшей, идущих от объекта к корню дерева) и отвечает легкому клиенту с веткой. Пятый _также обрабатывается деревом состояний, но способ его вычисления более сложен. Здесь нам нужно построить то, что можно назвать доказательством перехода состояния Меркла. По сути, это доказательство, которое делает утверждение, что «если вы запустите транзакцию T в состоянии с корнем S, результатом будет состояние с корнем S', с журналом L и выходом O» («выход» существует как концепция в Ethereum, потому что каждая транзакция — это вызов функции, теоретически это не обязательно).

Квитанции в основном предназначены для проверки журналов и событий .