Где хранятся журналы событий контракта в архитектуре Ethereum?

Предыстория событий: https://github.com/ethereum/wiki/wiki/Solidity-Features

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

Если не внутри контейнера смарт-контракта, где хранятся данные журнала?

28 голосов | спросил Alan Wunsche 13 FebruaryEurope/MoscowbSat, 13 Feb 2016 03:57:34 +0300000000amSat, 13 Feb 2016 03:57:34 +030016 2016, 03:57:34

2 ответа


32

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

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

ответил Péter Szilágyi 13 FebruaryEurope/MoscowbSat, 13 Feb 2016 15:43:18 +0300000000pmSat, 13 Feb 2016 15:43:18 +030016 2016, 15:43:18
13

Чтобы помочь с ответом @ Peter, он помогает понять, что такое события и журналы. События, журналы и журналы событий обычно являются членами Ethereum, которые взаимозаменяемы (в некоторых контекстах предпочтение отдается определенному термину, например события в Solidity и web3.js, а также журналы, как в EVM и Yellow Paper).

События /журналы являются результатом выполнения кодов LOG, выполняемых в EVM. Они являются частью " внутренние транзакции ", которые производятся путем выполнения данных транзакций через EVM.

Таким образом, до тех пор, пока у вас есть блок-цепочка, у вас есть все события /журналы. . Для эффективности они хранятся в виде описания @Peter, но концептуально их не нужно хранить, поскольку они могут быть пересчитаны из блок-цепи (которая по определению состоит из всех блоков и данных транзакции).

Наконец, обрезка не влияет на события /журналы, потому что выполняется для trie государства, и никакие блоки не теряются.

ответил eth 24 AM00000030000005131 2016, 03:32:51

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

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

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