> Aztec.nr API reference, v6.0.0 (mainnet and testnet). Index: https://docs.aztec.network/aztec-nr-api/v6.0.0/llms.txt

# Struct BlockHeader

Module: `noir_aztec::protocol::abis::block_header`

```rust
pub struct BlockHeader {
    pub last_archive: AppendOnlyTreeSnapshot,
    pub state: StateReference,
    pub sponge_blob_hash: Field,
    pub tx_effects_tree_root: Field,
    pub global_variables: GlobalVariables,
    pub total_fees: Field,
    pub total_mana_used: Field,
}
```

## Fields

```rust
last_archive: AppendOnlyTreeSnapshot
```

```rust
state: StateReference
```

```rust
sponge_blob_hash: Field
```

```rust
tx_effects_tree_root: Field
```

```rust
global_variables: GlobalVariables
```

```rust
total_fees: Field
```

```rust
total_mana_used: Field
```

## Implementations

```rust
impl BlockHeader
```

```rust
pub fn chain_id(self) -> Field
```

```rust
pub fn version(self) -> Field
```

```rust
pub fn block_number(self) -> u32
```

```rust
pub fn timestamp(self) -> u64
```

## Trait implementations

```rust
impl Deserialize for BlockHeader
```

```rust
pub fn deserialize(fields: [Field; 23]) -> Self
```

```rust
pub fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self
```

```rust
impl Empty for BlockHeader
```

```rust
pub fn empty() -> Self
```

```rust
pub fn is_empty(self: Self) -> bool
where
    Self: Eq
```

```rust
pub fn assert_empty<let S: u32>(self: Self, msg: str<S>)
where
    Self: Eq
```

```rust
impl Eq for BlockHeader
```

```rust
pub fn eq(_self: Self, _other: Self) -> bool
```

```rust
impl Hash for BlockHeader
```

```rust
pub fn hash(self) -> Field
```

```rust
impl Serialize for BlockHeader
```

```rust
pub fn serialize(self) -> [Field; 23]
```

```rust
pub fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>)
```
