Аккаунты и состояние
EOA и контракты
«Аккаунты и состояние» — бесплатный урок Web3 & DApp Development Fundamentals на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Web3 & DApp Development Fundamentals, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Web3 & DApp Development Fundamentals содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
What Is the World State?
Ethereum's world state is the complete snapshot of all accounts and their data at a given moment.
Every transaction transforms this state from one valid version to the next. Accounts are the building blocks of that state.
Two Types of Accounts
Ethereum has exactly two account types:
- Externally Owned Accounts (EOAs) — controlled by private keys (users)
- Contract Accounts — controlled by their code
Both share the same 20-byte address format.
Externally Owned Accounts
An EOA is controlled by a private key. It can initiate transactions: send ETH or call contracts.
EOAs have no code of their own — they are simply key-controlled accounts that humans (or bots) operate.
EOA {
address: 0xAbc...123
balance: 4.2 ETH
nonce: 17
code: none
}Contract Accounts
A contract account holds code (bytecode) and storage. It has no private key and cannot start a transaction on its own.
It only acts when called by an EOA or another contract, running its code in response.
Contract {
address: 0xDef...456
balance: 10 ETH
code: 0x6080604052...
storage: { slot0: ..., slot1: ... }
}The Four Account Fields
Every account stores four fields:
- nonce — transaction count (EOA) or contracts created (contract)
- balance — ETH held, in wei
- storageRoot — hash of the account's storage
- codeHash — hash of the account's code
EOA vs Contract Differences
The key distinction:
- Only EOAs can initiate transactions
- Only contracts have code and significant storage
- An EOA's codeHash is empty; a contract's is not
How State Changes
State changes only through transactions. A transaction can move ETH, deploy a contract, or call a contract that updates its storage.
After each block, the world state advances to a new, agreed-upon version.
The State Trie
All accounts are stored in a giant Merkle Patricia Trie. Its root hash — the state root — is recorded in each block header.
This single hash commits to the entire world state, just as a Merkle root commits to all transactions.
block header includes:
stateRoot -> all accounts
txRoot -> all transactions
receiptRoot -> all receiptsAccount Creation
An EOA effectively exists the moment a key pair is generated — no on-chain step is needed until it transacts.
A contract account is created when a deployment transaction runs constructor code and stores the resulting bytecode.
Smart Contract Interaction
To interact with a contract, an EOA sends a transaction specifying the contract address and the function data.
The EVM looks up the contract's code by its codeHash and executes it, possibly updating storage.
Putting It Together
Ethereum's state is a collection of accounts. EOAs are key-controlled and initiate transactions; contracts hold code and storage and react to calls.
The state root in each block commits to all of it.
Quick Check
Test your accounts knowledge.
Recap: Accounts and State
You learned that:
- Ethereum has EOAs (key-controlled) and contract accounts (code-controlled)
- Only EOAs can initiate transactions
- Each account has a nonce, balance, storageRoot, and codeHash
- The state root commits to all accounts
You have completed the Web3 fundamentals track.
Часто задаваемые вопросы
Урок «Аккаунты и состояние» бесплатный?
Да — полный текст урока «Аккаунты и состояние» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Web3 & DApp Development Fundamentals, подпишись на CoddyKit PRO. Курс Web3 & DApp Development Fundamentals содержит 4 уроков всего.
Чему я научусь в уроке «Аккаунты и состояние»?
EOA и контракты Ты практикуешь Web3 & DApp Development Fundamentals с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Web3 & DApp Development Fundamentals?
Предыдущий опыт не требуется. Web3 & DApp Development Fundamentals на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Аккаунты и состояние»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Web3 & DApp Development Fundamentals?
Да. Каждый урок Web3 & DApp Development Fundamentals включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Виртуальная машина Ethereum
- Хранилище, память и стек
- Опкоды
- Аккаунты и состояние