Learning Objectives:
-
Understand Ethereum’s architecture and design principles
-
Master the Ethereum Virtual Machine (EVM) and its operation
-
Analyze Ethereum’s account model and state management
-
Understand gas, transactions, and block structure
4.1.1: Introduction to Ethereum – Beyond Bitcoin
What is Ethereum?
Ethereum is a decentralized, open-source blockchain platform that enables smart contracts and decentralized applications (dApps). Unlike Bitcoin, which was designed primarily as a digital currency, Ethereum is a programmable blockchain that can execute arbitrary code.
Ethereum vs Bitcoin Comparison: ┌─────────────────────────────────────────────────────────────────────┐ │ Ethereum vs Bitcoin │ │ │ │ Bitcoin: │ │ • Purpose: Digital cash │ │ • Scripting: Limited (non-Turing complete) │ │ • State: UTXO model │ │ • Block Time: ~10 minutes │ │ • TPS: ~7 │ │ • Use Cases: Payments, store of value │ │ │ │ Ethereum: │ │ • Purpose: Programmable blockchain │ │ • Scripting: Full (Turing complete) │ │ • State: Account model │ │ • Block Time: ~12-15 seconds │ │ • TPS: ~15-30 │ │ • Use Cases: dApps, DeFi, NFTs, DAOs │ │ │ └─────────────────────────────────────────────────────────────────────┘
Key Innovations of Ethereum:
| Innovation | Description | Impact |
|---|---|---|
| Smart Contracts | Self-executing code on blockchain | Programmable money |
| Ethereum Virtual Machine (EVM) | Decentralized runtime environment | Universal execution |
| Account Model | Stateful accounts instead of UTXOs | Simpler applications |
| Gas System | Transaction fee mechanism | Resource metering |
| Turing Completeness | Full programming language | Unlimited applications |
| ERC Standards | Standardized token contracts | Interoperability |
Ethereum History and Milestones:
| Year | Event | Significance |
|---|---|---|
| 2013 | Ethereum Whitepaper | Vision articulated |
| 2014 | Ethereum Crowdsale | Fundraising, initial development |
| 2015 | Frontier Launch | First live Ethereum network |
| 2016 | The DAO Hack | Security crisis, hard fork |
| 2016 | Ethereum Classic | Split from main chain |
| 2017 | Byzantium Upgrade | Performance improvements |
| 2018 | Constantinople Upgrade | Further improvements |
| 2019 | Istanbul Upgrade | Performance and security |
| 2020 | Beacon Chain Launch | Proof of Stake begins |
| 2021 | Berlin/London Upgrades | EIP-1559, fee market reform |
| 2022 | The Merge | Transition to Proof of Stake |
| 2023 | Shanghai Upgrade | Staking withdrawals enabled |
| 2024 | Dencun Upgrade | EIP-4844, Proto-Danksharding |
4.1.2: Ethereum Architecture
Ethereum’s Layered Architecture:
Ethereum Architecture Layers:
┌─────────────────────────────────────────────────────────────────────┐
│ DApp Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ DeFi Apps │ │ NFT Apps │ │ Gaming │ │
│ │ (Uniswap) │ │ (OpenSea) │ │ (Axie) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────────────┐
│ Smart Contract Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Solidity │ │ Vyper │ │ Yul │ │
│ │ Contracts │ │ Contracts │ │ Assembly │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────────────┐
│ Ethereum Virtual Machine (EVM) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Opcode │ │ Stack │ │ Memory │ │
│ │ Execution │ │ Operations │ │ Management │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────────────┐
│ Blockchain Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Blocks │ │ Transactions│ │ State Trie │ │
│ │ (Headers) │ │ (Receipts) │ │ (Patricia) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────────────┐
│ Consensus Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Proof of │ │ Validators │ │ Slashing │ │
│ │ Stake │ │ (32 ETH) │ │ Conditions │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────────────┐
│ Network Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ P2P │ │ Peer │ │ RPC │ │
│ │ Network │ │ Discovery │ │ Interface │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
4.1.3: Ethereum Virtual Machine (EVM) – Deep Dive
The EVM Overview:
The Ethereum Virtual Machine is the runtime environment for smart contracts on Ethereum. It is a stack-based, Turing-complete virtual machine that executes bytecode.
EVM Architecture: ┌─────────────────────────────────────────────────────────────────────┐ │ EVM Architecture │ │ │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ EVM State │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ │ │ Stack │ │ Memory │ │ Storage │ │ │ │ │ │ (256-bit) │ │ (byte) │ │ (key-value)│ │ │ │ │ │ Max 1024 │ │ Expandable │ │ Persistent │ │ │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘ │ │ │ │ │ ┌───────────────────────────▼─────────────────────────────────┐ │ │ │ Execution Context │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ │ │ PC │ │ Gas │ │ Call │ │ │ │ │ │ (Program │ │ Available │ │ Context │ │ │ │ │ │ Counter) │ │ (Gas Left) │ │ (Sender) │ │ │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘ │ │ │ │ │ ┌───────────────────────────▼─────────────────────────────────┐ │ │ │ World State │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ │ │ Accounts │ │ Balances │ │ Contract │ │ │ │ │ │ (160-bit) │ │ (Wei) │ │ Storage │ │ │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘
EVM Execution Components:
| Component | Description | Characteristics |
|---|---|---|
| Stack | Word-addressable, 256-bit values | Max 1024 items, LIFO |
| Memory | Linear byte-addressable | Expandable, non-persistent |
| Storage | Key-value store | Persistent, expensive |
| Program Counter | Points to current instruction | Increments after each opcode |
| Gas Counter | Tracks remaining gas | Deducted for each operation |
| Call Context | Execution environment | Sender, value, data |
EVM Word Size and Data Types:
EVM Word Size: - 256 bits (32 bytes) - Gas-optimized - Matches SHA-256 output - Supports big integers Data Types: 1. uint256: 256-bit unsigned integer 2. int256: 256-bit signed integer 3. address: 160-bit Ethereum address 4. bool: Boolean (true/false) 5. bytes: Arbitrary byte array 6. string: UTF-8 encoded string
EVM Operations Categories:
| Category | Opcodes | Description |
|---|---|---|
| Stack Operations | POP, PUSH, DUP, SWAP | Manipulate stack |
| Arithmetic | ADD, SUB, MUL, DIV, MOD | Integer arithmetic |
| Comparison | LT, GT, EQ, ISZERO | Compare values |
| Bitwise | AND, OR, XOR, NOT | Bitwise operations |
| Memory | MLOAD, MSTORE, MSTORE8 | Memory operations |
| Storage | SLOAD, SSTORE | Storage operations |
| Flow Control | JUMP, JUMPI, STOP, RETURN | Control execution |
| Environment | CALLER, ADDRESS, BALANCE | Environment data |
| Block | BLOCKHASH, TIMESTAMP, NUMBER | Block data |
| Transaction | ORIGIN, GASPRICE, GAS | Transaction data |
| System | CREATE, CALL, STATICCALL | Contract interactions |
| Logging | LOG0-LOG4 | Event logging |
| Extensible | SHA3, SELFDESTRUCT | Special operations |
4.1.4: Ethereum Accounts
Account Types:
Ethereum has two types of accounts that share the same state structure but serve different purposes.
Account Types: ┌─────────────────────────────────────────────────────────────────────┐ │ Account Types │ │ │ │ Externally Owned Account (EOA): │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ • Controlled by private key │ │ │ │ • Can send transactions │ │ │ │ • Has balance │ │ │ │ • No code │ │ │ │ • Nonce (transaction count) │ │ │ └─────────────────────────────────────────────────────────────┘ │ │ │ │ Contract Account: │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ • Controlled by code (smart contract) │ │ │ │ • Can respond to transactions │ │ │ │ • Has balance │ │ │ │ • Has code │ │ │ │ • Has storage │ │ │ │ • Has nonce (created contract count) │ │ │ └─────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘
Account Structure:
Account Fields: 1. Nonce (64-bit unsigned integer): - For EOA: Number of transactions sent - For Contract: Number of contracts created 2. Balance (256-bit unsigned integer): - Amount of Wei owned - 1 Ether = 10^18 Wei 3. Storage Root (256-bit hash): - Root of Merkle Patricia Trie - Contains contract storage data - Empty for EOAs 4. Code Hash (256-bit hash): - Hash of contract code - Empty for EOAs - Immutable after creation
Ethereum Addresses:
Address Generation:
Private Key (256 bits)
│
▼
Elliptic Curve Multiplication (secp256k1)
│
▼
Public Key (64 bytes uncompressed)
│
▼
Keccak-256 Hash (32 bytes)
│
▼
Take Last 20 Bytes
│
▼
Ethereum Address (20 bytes, 40 hex characters)
Address Example: 0x742d35Cc6634C0532925a3b844Bc454e4438f44e
Address Properties:
- 20 bytes (160 bits)
- 40 hexadecimal characters
- Case-insensitive (but checksummed)
- Checksum version: EIP-55 (mixed case)
4.1.5: Transactions in Ethereum
Transaction Structure:
Ethereum Transaction Fields: ┌─────────────────────────────────────────────────────────────────────┐ │ Transaction Fields │ │ │ │ To: 20 bytes (contract address or EOA) │ │ │ │ Value: 256-bit unsigned (amount in Wei) │ │ │ │ Data: Variable length (input data for contract calls) │ │ │ │ Nonce: 64-bit unsigned (transaction count) │ │ │ │ Gas Limit: 64-bit unsigned (max gas for this tx) │ │ │ │ Gas Price: 256-bit unsigned (price per gas unit) │ │ │ │ Signature: (v, r, s) (ECDSA signature) │ │ │ │ Chain ID: Prevents replay attacks on other networks │ │ │ └─────────────────────────────────────────────────────────────────────┘
Transaction Types:
| Type | Purpose | Characteristics |
|---|---|---|
| Legacy | Original transaction format | Gas price, nonce, value |
| EIP-1559 | Fee market reform | Base fee + priority fee |
| EIP-2718 | Typed transactions | Versioned transaction envelope |
| EIP-2930 | Access list | Optimized for complex contracts |
| EIP-4844 | Blob transaction | Data availability for rollups |
EIP-1559 Transaction Structure:
EIP-1559 Transaction: ┌─────────────────────────────────────────────────────────────────────┐ │ EIP-1559 Transaction Fields │ │ │ │ To: 20 bytes │ │ Value: 256-bit unsigned │ │ Data: Variable length │ │ Nonce: 64-bit unsigned │ │ │ │ Max Priority Fee Per Gas: Amount paid to validator │ │ Max Fee Per Gas: Max total fee (base + priority) │ │ │ │ Gas Limit: Max gas for this transaction │ │ │ │ Signature: (v, r, s) │ │ Chain ID: 1 (Mainnet) │ │ │ └─────────────────────────────────────────────────────────────────────┘ Fee Calculation: Total Fee = Gas Used × (Base Fee + Priority Fee) Base Fee: Burned (removed from circulation) Priority Fee: Paid to validator (tip)
4.1.6: Gas – The Fuel of Ethereum
Gas System Deep-Dive:
Gas is the unit that measures the computational work required to execute operations on Ethereum.
Gas Mechanics: ┌─────────────────────────────────────────────────────────────────────┐ │ Gas Mechanics │ │ │ │ 1. Gas Cost = Amount of gas consumed by operation │ │ │ │ 2. Gas Price = Amount of ETH per gas unit │ │ │ │ 3. Gas Limit = Max gas user is willing to spend │ │ │ │ 4. Transaction Fee = Gas Used × Gas Price │ │ │ │ 5. Gas Refund = Unused gas refunded to user │ │ │ └─────────────────────────────────────────────────────────────────────┘
Gas Costs for Common Operations:
| Operation | Gas Cost | Description |
|---|---|---|
| Add/Sub/Mul/Div | 3-5 | Arithmetic operations |
| Jump/Jumpi | 8-10 | Flow control |
| SLoad | 2100 | Read storage (warm) |
| SStore | 100-20000 | Write storage |
| SHA3 | 30 | Hash computation |
| CREATE | 32000 | Contract creation |
| CALL | 10000 | Contract call |
| SELFDESTRUCT | 5000 | Self-destruct |
| LOG | 375 | Log emission |
Gas Pricing (EIP-1559):
Base Fee: - Determined by network demand - Adjusted per block - Burned (removed from supply) - Target: 50% block utilization Priority Fee: - Optional tip to validators - Increases inclusion priority - Competitive market Fee Calculation: Total Fee = (Base Fee + Priority Fee) × Gas Used Block Utilization: - If >50%: Base fee increases - If <50%: Base fee decreases - Adjustment: 12.5% per block Maximum Base Fee Change: 12.5% per block
Gas Refund Mechanism:
-
Refunds for clearing storage
-
Up to 50% of gas used
-
Encourages state cleanup
4.1.7: Ethereum Blocks
Block Structure:
Ethereum Block Structure: ┌─────────────────────────────────────────────────────────────────────┐ │ Block Header │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ Parent Hash (32 bytes): Previous block hash │ │ │ │ Ommers Hash (32 bytes): Uncle blocks hash │ │ │ │ Beneficiary (20 bytes): Miner/validator address │ │ │ │ State Root (32 bytes): State trie root │ │ │ │ Transactions Root (32 bytes): Transaction trie root │ │ │ │ Receipts Root (32 bytes): Receipt trie root │ │ │ │ Logs Bloom (256 bytes): Event logs bloom filter │ │ │ │ Difficulty (256 bits): Mining difficulty (pre-merge) │ │ │ │ Number (64 bits): Block number │ │ │ │ Gas Limit (64 bits): Block gas limit │ │ │ │ Gas Used (64 bits): Gas consumed by block │ │ │ │ Timestamp (64 bits): Block creation time │ │ │ │ Extra Data (variable): Arbitrary data │ │ │ │ Mix Hash (32 bytes): PoW nonce proof (pre-merge) │ │ │ │ Nonce (8 bytes): PoW nonce (pre-merge) │ │ │ │ Base Fee (256 bits): EIP-1559 base fee │ │ │ │ Withdrawals Root (32 bytes): Withdrawals root │ │ │ └─────────────────────────────────────────────────────────────┘ │ │ │ │ Transactions List: │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ Tx 1: Transaction data │ │ │ │ Tx 2: Transaction data │ │ │ │ ... │ │ │ └─────────────────────────────────────────────────────────────┘ │ │ │ │ Uncles List (ommers): │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ Uncle block headers │ │ │ │ (Pre-merge, now removed) │ │ │ └─────────────────────────────────────────────────────────────┘ │ │ │ │ Withdrawals List (post-merge): │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ Withdrawal data for stakers │ │ │ └─────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘
Block Time and Finality:
| Metric | Value | Description |
|---|---|---|
| Block Time | ~12 seconds | Time between blocks |
| Blocks per Day | ~7200 | Daily block production |
| Finality | ~15 minutes | Time to finality (~64 blocks) |
| Epoch Length | 32 slots (~6.4 minutes) | Voting period |
| Checkpoint | Every epoch | Finality checkpoints |
4.1.8: Ethereum State
State Management:
Ethereum maintains three tries to store state:
State Tries: ┌─────────────────────────────────────────────────────────────────────┐ │ State Tries │ │ │ │ 1. State Trie: │ │ • Stores account state │ │ • Key: Address (160-bit) │ │ • Value: Account (nonce, balance, storage root, code hash) │ │ • Root hash in block header │ │ │ │ 2. Transaction Trie: │ │ • Stores transactions │ │ • Key: Transaction index │ │ • Value: Transaction data │ │ • Root hash in block header │ │ │ │ 3. Receipt Trie: │ │ • Stores transaction receipts │ │ • Key: Transaction index │ │ • Value: Receipt data (status, logs, gas used) │ │ • Root hash in block header │ │ │ │ All tries use Merkle Patricia Trie (MPT) │ └─────────────────────────────────────────────────────────────────────┘
Merkle Patricia Trie (MPT):
MPT Structure: ┌─────────────────────────────────────────────────────────────────────┐ │ MPT Structure │ │ │ │ Nodes: │ │ 1. Branch Node: Up to 16 children + value │ │ 2. Extension Node: Common prefix + next node │ │ 3. Leaf Node: Key suffix + value │ │ 4. Null Node: Empty node (placeholder) │ │ │ │ Key Encoding: │ │ • Hex-prefix encoding │ │ • Compact encoding │ │ • Extended encoding │ │ │ │ Benefits: │ │ • Efficient for sparse data │ │ • Cryptographic proofs │ │ • Versioning (historical state) │ │ • Verifiable state transitions │ └─────────────────────────────────────────────────────────────────────┘
State Transition:
State Transition Function: Y(S, T) = S' Where: - S: Previous state - T: Transaction - S': New state Process: 1. Validate transaction 2. Execute transaction 3. Update state 4. Generate receipts 5. Update block header State Root: - Hash of state trie root - Included in block header - Represents entire state - Enables light client verification
4.1.9: Ethereum Clients
Major Ethereum Clients:
| Client | Language | Maintainer | Features |
|---|---|---|---|
| Geth | Go | Ethereum Foundation | Most popular, full node |
| Besu | Java | Hyperledger | Enterprise, permissioned |
| Nethermind | C# | Nethermind | Performance-oriented |
| Erigon | Go | Erigon | Archive node optimized |
| Reth | Rust | Paradigm | High performance |
Node Types:
| Type | Storage | Function | Use Case |
|---|---|---|---|
| Archive Node | Full history | All historical states | DApps, research |
| Full Node | Recent history | Validate blocks | Validators, dApps |
| Light Node | Headers only | Verify with proofs | Mobile wallets |
| Validator Node | Full node + consensus | Validate blocks | Staking |
4.1.10: Ethereum Improvement Proposals (EIPs)
EIP Process:
EIP Lifecycle: 1. Draft: - Idea proposal - Initial specification - Community discussion 2. Review: - Technical review - Security analysis - Implementation discussion 3. Last Call: - Final review period - Community feedback - Consensus building 4. Final: - Approved EIP - Ready for implementation - Activated on network 5. Core EIPs: Network upgrades 6. Standards EIPs: ERC standards 7. Networking EIPs: Protocol improvements
Important EIPs:
| EIP | Title | Impact |
|---|---|---|
| EIP-20 | ERC-20 Token Standard | Fungible tokens |
| EIP-721 | ERC-721 Token Standard | NFTs |
| EIP-1155 | ERC-1155 Multi-Token | Multi-token standard |
| EIP-1559 | Fee Market Change | Gas fee reform |
| EIP-3675 | Proof of Stake | Merge consensus |
| EIP-4844 | Proto-Danksharding | Data availability |
1. EVM Opcode Details
EVM Opcode Table (Selected): 0x00 STOP: Halt execution 0x01 ADD: Addition (a+b) 0x02 MUL: Multiplication (a*b) 0x03 SUB: Subtraction (a-b) 0x04 DIV: Integer division (a/b) 0x05 SDIV: Signed division (a/b) 0x06 MOD: Modulo (a%b) 0x07 SMOD: Signed modulo (a%b) 0x08 ADDMOD: Modulo addition (a+b)%N 0x09 MULMOD: Modulo multiplication (a*b)%N 0x0A EXP: Exponentiation (a^b) 0x10 LT: Less than (a<b) 0x11 GT: Greater than (a>b) 0x12 SLT: Signed less than (a<b) 0x13 SGT: Signed greater than (a>b) 0x14 EQ: Equality (a==b) 0x15 ISZERO: Is zero (a==0) 0x16 AND: Bitwise AND 0x17 OR: Bitwise OR 0x18 XOR: Bitwise XOR 0x19 NOT: Bitwise NOT 0x20 BYTE: Extract byte 0x30 ADDRESS: Get current address 0x31 BALANCE: Get address balance 0x32 ORIGIN: Get transaction origin 0x33 CALLER: Get caller address 0x34 CALLVALUE: Get transaction value 0x35 CALLDATALOAD: Load calldata 0x36 CALLDATASIZE: Get calldata size 0x37 CALLDATACOPY: Copy calldata to memory 0x38 CODESIZE: Get code size 0x39 CODECOPY: Copy code to memory 0x3A GASPRICE: Get gas price 0x3B EXTCODESIZE: Get external code size 0x3C EXTCODECOPY: Copy external code 0x3D RETURNDATASIZE: Get return data size 0x3E RETURNDATACOPY: Copy return data 0x3F EXTCODEHASH: Get external code hash
2. Gas Cost Details
Gas Cost Breakdown: Basic Operations: - ADD/SUB: 3 - MUL: 5 - DIV: 5 - SDIV: 5 - MOD: 5 - SMOD: 5 - EXP: 10 + 50 per byte - LT/GT: 3 - EQ: 3 - AND/OR/XOR: 3 Memory Operations: - MLOAD: 3 - MSTORE: 3 - MSTORE8: 3 - Memory expansion: 3 per word Storage Operations: - SLOAD: 100 (warm), 2100 (cold) - SSTORE: 100-20000 (see rules) - SSTORE refund: Up to 4800 Contract Operations: - CREATE: 32000 - CALL: 10000 - STATICCALL: 10000 - DELEGATECALL: 10000 - SELFDESTRUCT: 5000 - LOG0: 375 + 375 per topic - LOG1: 375 + 375 per topic - LOG2: 375 + 375 per topic - LOG3: 375 + 375 per topic - LOG4: 375 + 375 per topic
3. Merkle Patricia Trie Details
MPT Node Types: 1. Branch Node: [ 16 children ] + [ value ] Children: 16 x 32 bytes Value: up to 32 bytes 2. Extension Node: [ key_prefix ] + [ next_node_hash ] Key prefix: variable length Next node: 32 bytes 3. Leaf Node: [ key_suffix ] + [ value ] Key suffix: variable length Value: up to 32 bytes 4. Null Node: Empty placeholder 32 bytes of zeros
4. Ethereum Economics
Ethereum Supply: Ether Unit: 1 Ether = 10^18 Wei 1 Wei = 1 Supply Metrics: - Genesis: 72,009,990 ETH - Current: ~120M ETH - Annual Issuance: ~0.5-1% - Max Supply: No hard cap - Staking: ~30M ETH Deflationary Mechanism: - EIP-1559 base fee burn - Reduced issuance (PoS) - Net effect varies - Possible deflation Inflation Rate: - Pre-Merge (PoW): ~4.5% annually - Post-Merge (PoS): ~0.5% annually - Post-Merge + Burn: Variable (0-0.5%)