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
1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 | |
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.***