За подтверждение оммеров майнеры получают меньшее вознаграждение, чем за полный блок.
Виртуальная машина Ethereum является сердцем Ethereum.
Эта виртуальная машина предназначена для запуска всеми участниками одноранговой сети.
Она может читать и записывать в блокчейн как исполняемый код, так и данные, проверять цифровые подписи и запускать код, когда виртуальная машина получит сообщение, подтвержденное цифровой подписью, и информация, хранящаяся в блокчейне, говорит, что это целесообразно.
Ethereum представляет собой одноранговую сеть, где каждый одноранговый узел хранит одну и ту же копию базы данных blockchain и запускает виртуальную машину Ethereum для поддержания и изменения ее состояния, которое хранится в блокчейне.
Теперь разберемся со всем этим поподробнее.
Блокчейн Ethereum хранит блоки, которые в свою очередь хранят транзакции и состояние.
И блокчейн Ethereum во многом похож на блокчейн биткойнов, хотя он имеет некоторые отличия.
Основное различие между Ethereum и Bitcoin в отношении архитектуры blockchain заключается в том, что, в отличие от биткойнов, блоки Ethereum содержат копию как списка транзакций, так и самого последнего состояния.
Состояние хранится в специальной структуре данных, называемой деревом Merkle.
Таким образом, блокчейн Ethereum включает в себя корень состояния (по одному на блок), который хранит корневой хэш дерева, представляющего состояние системы во время создания блока.
И эта структура данных хранит специальные объекты, называемые аккаунтами или счетами, причем каждый аккаунт имеет 20-байтовый адрес и содержит четыре поля:
Счетчик nonce, используемый для проверки, что каждая транзакция может обрабатываться только один раз;
Текущий баланс эфира;
Код смарт-контракта аккаунта, если присутствует;
И хранилище аккаунта (пустое по умолчанию);
И данные состояния (вместе с балансами, контрактами) хранятся каждым клиентом Ethereum (или узлом Ethereum).
Есть два типа аккаунтов:
Счет внешнего владельца, который контролируется закрытым ключами и не имеет никакого кода, связанного с ним.
И счет контракта, который контролируются его кодом контракта, и имеет связанный с ним код.
Счет внешнего владельца может отправлять сообщения другим счетам внешних владельцев или другим счетам контрактов, создавая и подписывая транзакцию с использованием своего закрытого ключа.