Where can I find a description (preferably a diagram like below) showing the block structure in an Ethereum blockchain?

Diagram showing how Bitcoin transactions can be verified

Credits: Wikipedia

  • Correct me if I am wrong but this is not only relevant to Proof of Work, the Proof of stake will still use the same Merkle Tree right? – Cyberience Jun 27 at 7:03

Here's my interpretation, based on the yellow paper:

enter image description here

...the Tries should look more like this:

enter image description here

  • 3
    This is phenomenal, thanks! – FloatingRock Jul 13 '17 at 3:13
  • Hi @atomh33ls, do you mind sharing the source file for the illustrations (in whatever software format you used to create them). I would like to create an illustration for transactions trie. It will look almost the same as state trie except some details will be changed. Thank you! – medvedev1088 Oct 26 '17 at 10:29
  • Explain them to us in simple english – siva Nov 27 '17 at 12:36
up vote 55 down vote accepted
+50

Lets first start with my adaptation of this figure illustrating the Bitcoin block structure:

Boitcoin Blockchain architecture

So far so good. All fairly basic.

Enter Ethereum and things get a wee bit more complex. After reading through this and this, and as per @eth 's recommendation this, my best interpretation is the figure below:

![Ethereum Blockchain Architecture

The header field definitions are available in section 4.3 of the yellow paper.

  • 2
    Uncles is a hash (of a list of uncles), Yellow Paper has: "The Keccak 256-bit hash of the ommers list portion of this block". Codehash is just a hash since contracts are immutable. The pointers point to "hash of whole block header" (the Keccak-256 hash of all the bytes in the block header). To have a full diagram, should really consult the Yellow Paper... – eth Jan 29 '16 at 22:53
  • Updated response after consulting the YP. Starting to get clearer now. Thanks! – zanzu Feb 1 '16 at 12:34
  • Why are the transactions from block N linked to those of block N+1? – Sebi Jun 10 '16 at 8:31
  • 3
    These links correspond to contract state that has not changed in between blocks. Referencing the state from the previous blocks instead of replicating is more efficient from a block size perspective. – zanzu Jun 10 '16 at 9:49
  • You forgot the difficulty in bitcoin headers. – Jus12 Sep 23 '16 at 16:52

The description can be found in the Yellow Paper which is the formal specification of the Ethereum protocol.

Here are the main pieces of a block:

4.3. The Block. The block in Ethereum is the collection of relevant pieces of information (known as the block header), H, together with information corresponding to the comprised transactions, T, and a set of other block headers U that are known to have a parent equal to the present block’s parent’s parent.

No diagram though (an opportunity for the community).

  • ComeonI though you guys would do better at this explanation – siva Nov 27 '17 at 12:37

Here is a complete structure of a block and where it plays its role in Ethereum's blockchain.

Ethereum Block Structure

You asked for a diagram but i think this would be more explanatory.

Here's a picture from V's article regarding data structures for light clients:

https://blog.ethereum.org/2014/02/18/ethereum-scalability-and-decentralization-updates/

enter image description here

  • 4
    The above is an abstraction of a Merkle tree. I'm rather looking for the Ethereum block structure (including all the actual header fields). – zanzu Jan 22 '16 at 8:57

Vitalik Buterin gives a compact answer:

Every block header in Ethereum contains 3 trees for three kinds of objects: Transactions, Receipts (essentially, pieces of data showing the effect of each transaction), State.

You can read a longer version with pictures here.

Your Answer

 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.