Block
The block is the fundamental object on the blockchain. Every 2s or so, a new block is created that may contain account transactions, update transactions or account creations.
Blocks are stored in the collection blocks in MongoDB and represented as:
Information about a block.
GRPC documentation: concordium.v2.BlockInfo
Attributes:
| Name | Type | Description |
|---|---|---|
arrive_time |
Optional[CCD_TimeStamp]
|
Time the block was verified. |
validator |
Optional[int]
|
ID of the validator of this block. |
hash |
CCD_BlockHash
|
Hash of the block. |
height |
int
|
Absolute height of the block. |
last_finalized_block |
CCD_BlockHash
|
The last finalized block when this block was baked. |
parent_block |
CCD_BlockHash
|
The parent block hash. |
receive_time |
Optional[CCD_TimeStamp]
|
Time the block was received. |
slot_number |
Optional[int]
|
The slot number in which the block was baked. |
slot_time |
CCD_TimeStamp
|
Time of the slot in which the block was baked. |
era_block_height |
int
|
The height relative to genesis. |
finalized |
bool
|
Whether the block is finalized. |
genesis_index |
int
|
The genesis index for this block. |
transaction_count |
int
|
The number of transactions in the block. |
transactions_energy_cost |
int
|
The total energy cost of the transactions in the block. |
transactions_size |
int
|
The total size of the transactions in the block. |
transaction_hashes |
Optional[list[CCD_TransactionHash]]
|
The hashes of the transactions in the block. |
state_hash |
Optional[CCD_StateHash]
|
The state hash of the block. |
protocol_version |
Optional[str]
|
The protocol version of the block. |
round |
Optional[CCD_Round]
|
The round in which the block was created. |
epoch |
Optional[CCD_Epoch]
|
The epoch in which the block was created. |
Source code in .venv/lib/python3.13/site-packages/ccdexplorer/grpc_client/CCD_Types/__init__.py
1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 | |
Key augmentations:
- transaction_hashes – inserted by CCDExplorer so downstream jobs can jump from block metadata to transaction details without a secondary lookup.
- finalized_time and consensus info from CCD_BlockInfo to drive explorer charts such as TPS and block time stability.
When a finalized block arrives, we persist the block, the transactions and the special events.
How is a block stored in the system?¶
heartbeatstreams finalized blocks via gRPC and upserts them into MongoDB.ms_block_analyserconsumes those inserts and emits Celery tasks so other services (indexers, events, metadata, etc.) can react per block.- Dagster jobs (e.g.
dagster_nightrunner) read theblockscollection to build time-series such as block production per validator.***