Before we discuss blocks: what is a ledger?
The word “ledger” easily brings to mind a table of balances. In Ethereum, it encompasses at least three things at once: history, current state, and the rules that change that state.
A traditional bank ledger has a natural center: whatever the bank’s database says you own is the authoritative business record. A distributed ledger removes that single authoritative machine, yet it must still let strangers answer: Who submitted what, in what order, and what is the valid state now?
A distributed ledger therefore cannot be merely a static table. It is closer to a replicated state machine maintained collectively by many computers: nodes store protocol data, receive inputs, validate and execute them under the same rules, then use consensus to decide which ordered history is canonical.
In Ethereum, “ledger” is also an incomplete but useful introductory metaphor. It records more than ETH transfers: it maintains accounts, contract code, and contract storage. The official EVM documentation describes Ethereum as a state transition machine: given an old state and a set of valid transactions, the rules produce a new state.[1]
Ordered history
Blocks and transactions that have entered the canonical chain. It answers: “What happened, and in what order?”
B102 → B103 → B104Tx A before Tx B
Current state
The result of executing the canonical history. It answers: “What are the accounts, balances, and contract data now?”
Alice · 2 ETH · nonce 8Vault · locked = true
Public rules
The validity conditions for transactions, blocks, and state transitions. Nodes need not trust the sender; they can verify for themselves.
valid signaturecorrect nonce · valid gas / fee fields
“Distributed” describes deployment; “ledger” describes shared facts
Distributed means data and computation exist across multiple interconnected machines; it does not automatically imply decentralization. A company can run a hundred database servers around the world and still place them all under one administrator. A blockchain must additionally handle open participation, mutual distrust, adversarial behavior, and authority over rule changes.
A more precise definition is therefore: a distributed ledger is a record-keeping system whose replicas are held or verified by multiple independent participants, with a shared protocol determining valid updates and canonical history. Ethereum extends this record-keeping system into a programmable shared state machine.
Replication is easy. Staying consistent is hard.
A network is not a meeting room where everyone hears each speaker at once. Messages take time to propagate, machines go offline, and participants may deliberately send conflicting information.
Suppose Alice sends two conflicting requests at nearly the same time: one transfers the same funds to Bob, the other to Carol. A node in New York may see the first request before the second, while a node in Singapore may see the second first. Neither machine is broken; they simply have different views of the network.
Transaction A received; B not yet received.
Messages arrived in the opposite order from Node A.
Network delay: neither transaction is visible yet.
A malicious node broadcast a forged input.
Messages do not arrive instantly
Nodes may be far apart, with different bandwidth and routes. “I have not received it” cannot tell you whether a message does not exist or is still in transit.
Arrival order is not global order
If one node receives A before B, another need not receive them in that order. For balances, auctions, or contract state, order can change the outcome.
Machines fail and recover
A node may crash, disconnect, or fall thousands of blocks behind. The system cannot stop whenever one machine disappears, nor can it unconditionally trust that machine’s claims when it returns.
Some participants actively deceive
An open network must assume participants may forge signatures, propose invalid blocks, vote twice, or try to make different nodes accept different histories.
Consistency does not mean “every replica is identical every millisecond”
Distributed systems generally distinguish safety from liveness. Safety asks whether the system avoids finalizing conflicting histories; liveness asks whether it can continue making progress and eventually finalizing new checkpoints once network conditions return to normal. A design may temporarily halt finalization to avoid conflicting finalization, or accept weaker certainty in exchange for faster progress.
Ethereum allows nodes to see different candidate blocks near the chain head briefly, then converge through the fork-choice rule. For checkpoints that have reached finality, it offers a stronger guarantee against reversal. Thus “transaction seen,” “included in a block,” “on the current chain head,” and “finalized” are four distinct states.
How does a record go from “someone claims” to “the network accepts”?
Without a central bookkeeper, trustworthiness comes from an auditable processing chain: signing, propagation, independent validation, ordering, re-execution, and finality.
Imagine Alice’s wallet submitting a transfer. Any node may hear the request, but no node changes a balance simply because “the wallet said so.” Each receiving node first checks basic conditions such as encoding and signature. Once the transaction enters a candidate block, other fully validating nodes re-execute the entire block to verify the resulting state.
The wallet creates a signed transaction. A signature proves authorization; it does not prove that the transaction will succeed.
Execution clients forward the transaction to neighboring nodes, and the message spreads gradually.
Each node checks encoding, signatures, nonce, and fee conditions for itself, then maintains a local transaction pool.
A local execution client or external builder orders transactions into a candidate execution payload; the slot’s proposer incorporates the selected candidate into its Beacon-block proposal.
Other fully validating nodes recompute every transaction and reject any block that breaks protocol rules or produces an incorrect state root.
Validator attestations carry stake weight; fork choice uses the current latest-attestation set to select the head among valid branches.
A valid supermajority link from a justified source checkpoint justifies its target; later Casper FFG link conditions finalize an earlier justified checkpoint.
Does it obey the rules?
Signatures, transaction fields, balances, gas, EVM execution, and the state root must all satisfy the protocol. An invalid candidate does not become valid because many people support it.
Output: valid / invalidWhich chain should we follow now?
When multiple valid candidates appear near the chain head, nodes apply fork choice to validators’ latest stake-weighted attestations and select the current canonical head.
Output: current headWhen does reversal become extremely difficult?
A valid supermajority link from a justified source checkpoint justifies its target; later Casper FFG link conditions finalize an earlier justified checkpoint.
Output: justified → finalizedConsensus is not majority rule over computation
This boundary is crucial. If a block contains a forged signature or an incorrect state transition, your node can declare it invalid directly under the rules; even if many nodes claim it is valid, your node should not accept it. Fork choice uses attestation weight to select a current head among multiple valid candidates; it cannot vote 2 + 2 into equaling 5.
This is the engineering meaning of “don’t trust, verify”: a node relies on the public specification and the checks it performs itself, not on the reputation of an API, block explorer, block proposer, or neighboring node. One value of running a full node is precisely the ability to verify transactions and blocks yourself. [2]
Who handles each step in Ethereum today?
A full Ethereum node normally combines an execution client and a consensus client. To propose blocks and attest, it also connects validator software.
Since The Merge, Ethereum has split transaction and state computation from proof-of-stake consensus across two tightly coordinated clients. These layers are not two separate chains; they divide responsibilities inside one Ethereum node. The official node documentation is explicit: a node needs both an execution client and a consensus client.[2]
Execution client
Answers “is this transaction valid, and what state results from executing it?” It maintains the EVM, execution state, receipts, and a local transaction pool.
- 01Receives and propagates transactions over the execution-layer P2P network
- 02Checks transactions and maintains a local transaction pool
- 03Executes or re-executes transactions to validate state changes
- 04Builds candidate execution payloads locally; an external builder may also supply a candidate through the Builder API
Consensus client
Answers “which block is the current head, and which checkpoints are justified or finalized?” It maintains the Beacon state.
- 01Propagates blocks and attestations over the consensus-layer P2P network
- 02Runs fork choice and tracks the canonical head
- 03Processes attestations, rewards, penalties, and slashing rules
- 04Tracks justified and finalized checkpoints
The proposer supplies a candidate; other nodes still recompute it
Each slot selects one validator as block proposer. A local execution client or an external builder through the Builder API may assemble a candidate execution payload; the proposer incorporates the selected candidate into its Beacon-block proposal. When other full Ethereum nodes receive the resulting block, they pass its execution payload to their own execution clients for re-execution. Only after it passes do they treat it as a valid candidate. Of these nodes, only validators running validator software and assigned a duty for that slot publish attestations.
A validator is therefore not a “central bookkeeper” in the traditional sense. It may propose what goes on the next page, but it cannot rewrite the validation rules unilaterally. If it includes an invalid transaction or incorrect state root, protocol-compliant nodes reject the block.
Gasper: chain-head selection plus checkpoint finality
Ethereum’s consensus mechanism today is commonly called Gasper. It combines LMD-GHOST for chain-head selection with Casper FFG for checkpoint finality. When several valid branches exist near the head, fork choice considers the stake weight represented by validators’ latest attestations. When a valid source → target checkpoint link from a justified source receives attestation weight from at least two-thirds of active validators’ total effective balance, the target becomes justified. Only after a later link satisfies Casper FFG’s conditions does an earlier justified checkpoint become finalized. [4]
12s slot
32 slots = 1 epoch
Ethereum mainnet currently uses a protocol parameter of 12 seconds per slot. Exactly 32 slots form one epoch: 384 seconds, or 6.4 minutes. A slot is an opportunity to propose a block, not a guarantee that a block will exist; finality forms through checkpoints and epochs. These are current protocol parameters, not timeless properties of the concept “blockchain.” [5]
“Two-thirds” means effective-balance weight, not node count
Beginners often read “66% agreement” as 66% of computers on the internet clicking yes. The formal denominator is active validators’ total effective balance. Full nodes that do not operate validators do not produce stake-weighted attestations, but they still validate blocks independently. A validator is a role that adds proposing and attesting duties on top of full-node capabilities; the validator’s node must validate blocks too.
To create conflicting finalized histories, at least one-third of active effective balance must violate accountable-safety conditions by issuing slashable conflicting attestations. Those validators face slashing, and actually reverting history that clients have already finalized may also require social-layer coordination. This is “cryptoeconomic finality”: it does not claim that no failure is physically possible. It makes a finality violation provable, attributable, and extremely costly. [6]
Guide four nodes from divergence to agreement
Move through the stages in order. Observe why “seeing a message,” “accepting a candidate,” “following the head,” and “finalizing” are not the same event.
Multi-node agreement lab
This teaching model does not simulate real network speed; it preserves the essential causal relationships.
Physically: many different replicas
Nodes may differ in disks, software implementations, sync progress, peers, and local transaction pools. Some retain more history; others perform only light verification.
Logically: one canonical state
For the same canonical head, protocol-compliant execution clients should derive the same state. What agrees is the verifiable conclusion, not every byte inside every machine.
Why can different teams implement clients in different languages?
Ethereum has multiple execution-client and consensus-client implementations. Their internal database structures, performance strategies, and programming languages may differ, but every implementation must follow the same protocol specification. Multiple implementations reduce the risk of the entire network depending on one codebase. They also impose a stricter requirement: the specification must be precise, and different implementations must reach the same result at consensus boundaries.
If one client produces an incorrect result because of a bug, independent implementations do not accept it merely because it is “well-known software.” Client diversity is therefore both an engineering ecosystem and part of removing single points of failure.
Why must everyone agree on more than which transactions exist?
State transitions are not freely reorderable. The same set of transactions can produce different final states in different orders.
Suppose Alice has 3 ETH and her account nonce is 7. She signs two conflicting transactions that both use nonce 7: X sends 2 ETH to Bob; Y sends 2 ETH to Carol. To isolate the nonce conflict, this example omits transaction fees.
Both signatures may be genuine authorization, and either transaction may satisfy the balance requirement on its own; but an account can use a given nonce only once in canonical history. Whichever transaction is included in the valid block that becomes canonical updates Alice’s nonce from 7 to 8. The other has a stale nonce on descendants of that branch and cannot be included there. If both are forced into one execution sequence, the block becomes invalid at the second transaction. The network must therefore agree on both the set of valid transactions and their deterministic order.
Conflicting-transaction selection lab
Switch between two valid candidate blocks to see why only one transaction from the conflicting pair can enter canonical history.
Candidate block A: includes X and updates Alice’s nonce to 8. Y is not included and would be stale against this candidate’s post-state.
A block provides a “batch”; the chain orders the batches
A block organizes transactions and metadata into a verifiable unit. Each block points to its parent, creating an ordered history. The next lesson will unpack block headers, timestamps, transaction data, and hashes. For now, hold on to the most important point: blocks are not file-compression bundles; they let a distributed network share a reference for the boundary and order of a batch of state transitions.
Near the chain head, a proposer may make two proposals, or proposers in different slots may build on different parents because of network delay, creating a temporary fork. Nodes use fork choice to select the current head, while additional attestations and eventual finality strengthen certainty over time. Applications therefore distinguish “broadcast,” “included,” “confirmed,” and “finalized.”
How does it differ from an ordinary distributed database?
Both can replicate data and tolerate machine failures. The essential difference is not whether many servers exist, but who may write, who defines the rules, and whom participants must trust.
A company’s distributed database normally knows the identities of its servers and has administrators, access controls, and a legal chain of responsibility. A public blockchain operates in an open environment: anyone may submit a transaction, while nodes and validators are run by unrelated parties. The system cannot treat one administrator’s word as the final answer.
Keep three terms distinct: a distributed database emphasizes storing and coordinating data across multiple machines; a distributed ledger emphasizes multiple parties maintaining a verifiable record under a shared protocol; a blockchain is one distributed-ledger structure that organizes records into blocks and links them in a chain. Not every distributed database is decentralized, and not every distributed ledger must be a blockchain. Ethereum has features of all three, but its trust model is that of an open public blockchain.
| Dimension | Ordinary distributed database | Public blockchain / Ethereum |
|---|---|---|
| Control boundary | Usually managed by one organization or a defined consortium. | Nodes, validators, and users may be operated by unrelated parties. |
| Write access | Accounts, roles, and server permissions determine who may write. | Anyone may submit a request; protocol rules, authorization signatures, and state determine whether it is valid. |
| Authoritative answer | A primary database, administrator, or organizational governance can issue a final decision. | Public rules determine validity; consensus establishes canonical order. |
| Failure model | Primarily addresses machine outages, network partitions, and operational errors. | Must also address economically motivated adversaries and conflicting messages. |
| Audit model | Relies on organizational logs, permissions, and external audits. | Independent nodes can inspect and verify protocol data and state commitments. |
| Performance priority | Can prioritize throughput, low latency, and internal efficiency. | Trades repeated propagation, execution, and validation for verifiable agreement in an open environment. |
Why does a blockchain look “redundant and expensive”?
Because redundancy is part of the security model. Many nodes propagating the same data, re-executing the same transactions, and retaining verifiable commitments is slower and more resource-intensive than letting one trusted server write directly to a database. Ethereum does not optimize for single-machine efficiency; it optimizes for any participant being able to verify the result without a shared administrator.
This also explains the enduring trade-offs among decentralization, security, and throughput, and why Ethereum needs Layer 2. Later scaling chapters will examine how much execution can move off-chain or to Layer 2 while settlement and data-availability security remain anchored to Ethereum.
Different nodes need not store the same amount of data
Full nodes validate blocks and transactions but may prune older state data to save disk space. Archive nodes retain queryable historical states; light clients verify key commitments with less data. It is therefore inaccurate to say that “every node permanently stores every detail since genesis.” What matters is that each node type reaches protocol-based, verifiable conclusions appropriate to its security model. [2]
Six common misconceptions, corrected
Defining the boundaries precisely matters more than memorizing the phrase “decentralized ledger.”
“Distributed always means decentralized”
One company’s servers can be distributed around the world. Decentralization also depends on whether control, validation, participation, and authority to change the rules are concentrated.
“All nodes are always identical”
Local transaction pools, sync progress, and retained data may differ. After executing canonical history, nodes should converge on the same valid state—not match every byte at every instant.
“Consensus means unanimous agreement”
The network does not wait for every participant to respond. Under explicit failure assumptions, the protocol uses stake weight, fork choice, and finality to form sufficiently strong agreement.
“A majority vote can make an invalid transaction valid”
Nodes first validate independently under the protocol. Votes choose among valid candidate histories; forged authorization signatures and incorrect state transitions should be rejected outright.
“An on-chain record is real-world truth”
Consensus can determine on-chain inputs and order; it cannot know whether weather reports, property claims, or identities are true. Off-chain facts still require oracles, law, or other trust mechanisms.
“Finality means change is mathematically impossible”
Ethereum provides cryptoeconomic finality. A conflicting reversion would require large-scale punishable violations and may trigger social-layer coordination; the guarantee comes from cost and accountability.
Consensus cannot decide whether something is worthwhile
The network can agree that a contract executed successfully, but that says nothing about whether the contract is well designed, a token has value, lending risk is manageable, or you understood an authorization when you signed it. A distributed ledger guarantees verifiable agreement within the protocol’s scope, not investment quality, legal validity, or real-world truth.
The entire lesson in a seven-layer mental model
If you can explain these seven layers in order, you genuinely understand how independent nodes maintain a consistent record.
Now check your understanding
Each question tests a boundary that is easy to blur. Answer first, then read the explanation.
1. What is the most important difference between a distributed ledger and “copying one spreadsheet onto four computers”?
Answer: B. Copying creates replicas, but the protocol must also define valid updates, determine order, and select which history to follow when a fork appears.
2. What does it mean when two honest nodes briefly see different transaction pools?
Answer: C. A transaction pool is not the canonical ledger. The protocol makes honest nodes converge after they obtain the data, validate blocks, and apply fork choice.
3. If many validators vote for a block containing a forged authorization signature, what should your full node do?
Answer: A. Nodes check validity independently first. Fork choice selects the current canonical head only among valid candidates.
4. Which statement best describes the division of work between execution and consensus clients?
Answer: C. The execution client maintains the EVM, state, and transaction pool; the consensus client handles blocks, attestations, fork choice, and checkpoint finality.
5. What does the “two-thirds” required for Ethereum finality primarily refer to?
Answer: B. Finality depends on supermajority links weighted by active validators’ total effective balance, not one vote per IP address or computer.
6. Why must the network agree on both the set of valid transactions and their order?
Answer: A. Contention over shared contract state or balances makes order affect the result; with a same-nonce conflict, at most one transaction can enter a valid block. Both selection and order are necessary inputs to shared state.
Print note: each answer and explanation appears directly below its options.
Terms and primary sources
The definitions below make this lesson’s vocabulary precise enough to restate, followed by official sources for checking Ethereum’s current mechanisms.
Node NODE
An instance of client software connected to Ethereum’s peer-to-peer networks. A full Ethereum node normally runs both an execution client and a consensus client; validator software adds the separate role of participating in PoS proposals and attestations.
Replica REPLICA
Protocol data and derived state held locally by a node. Different node types may retain different ranges of data, but each evaluates canonical chain and state under its validation model.
Transaction pool TRANSACTION POOL
A local, policy-dependent set of candidate transactions maintained by an execution client. Pools may differ across nodes because of propagation, fee policy, and local configuration; pool admission does not mean block inclusion.
Canonical chain CANONICAL CHAIN
The block history a node currently recognizes under validity and fork-choice rules. The region near the head may change temporarily; finalized checkpoints provide stronger stability.
Fork choice FORK CHOICE
The rule that determines the current head when multiple valid candidate branches exist. Ethereum PoS head selection uses the stake weight represented by validators’ latest attestations; it does not itself provide finality.
Attestation ATTESTATION
A validator’s signed attestation containing consensus information such as the head it sees and source / target checkpoints. Attestations are aggregated and affect both fork choice and finality.
Finality FINALITY
The guarantee that a block has entered the portion of canonical history that is extraordinarily difficult to revert. In Ethereum, a valid supermajority link from a justified source to a target, carrying at least two-thirds of active validators’ total effective balance, justifies the target. Later Casper FFG link conditions finalize an earlier justified checkpoint. Conflicting finalized histories require large-scale, attributable, slashable violations.
Safety and liveness SAFETY / LIVENESS
Safety requires the system not to finalize conflicting histories; liveness requires it to continue making progress and eventually finalizing new checkpoints under reasonable network and participation conditions.
Continue reading
-
01
ethereum.org — Ethereum Virtual MachineOfficial technical introduction to Ethereum state, the state-transition function, and the EVM.
-
02
ethereum.org — Nodes and clientsResponsibilities and differences among nodes, execution clients, consensus clients, full nodes, and archive nodes.
-
03
ethereum.org — Node architectureExecution- and consensus-layer P2P networks, the Engine API, transaction propagation, block proposal, and re-execution.
-
04
ethereum.org — Consensus mechanismsOfficial overview of consensus mechanisms, validator attestations, fork choice, and Gasper.
-
05
ethereum.org — Proof-of-stakeSlots, epochs, block proposals, attestations, checkpoints, supermajority links, and finality.
-
06
ethereum.org — Proof-of-stake FAQ: finalityThe two-thirds active-effective-balance threshold and the cryptoeconomic cost of conflicting finalized histories.
-
07
ethereum.org — Networking layerDiscovery, connection, and message-propagation networks for the execution and consensus layers.
-
08
Ethereum Consensus Specs — Beacon Chain fork choiceFormal specification of LMD-GHOST store, justified / finalized checkpoints, and canonical fork choice.
-
09
Ethereum Execution SpecsExecutable Python specifications for execution-layer blocks, transactions, and state-transition rules.