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

# Function create_tx_start_marker

Module: `noir_aztec::protocol::blob_data`

```rust
pub fn create_tx_start_marker(
    num_blob_fields: u32,
    array_lengths: TxEffectArrayLengths,
    private_logs_length: u32,
    public_logs_length: u32,
    contract_class_log_length: u32,
    revert_code: u8,
) -> Field
```

Create the first field that marks the start of a tx. It's a concatenation of: `TX_START_PREFIX` | `num_note_hashes` | `num_nullifiers` | `num_l2_to_l1_msgs` | `num_public_data_writes` | `num_private_logs` | `private_logs_length` | `public_logs_length` | `contract_class_log_length` | `revert_code` | `num_blob_fields`

`TX_START_PREFIX` occupies the bytes up to the point where `num_note_hashes` begins. `num_blob_fields` occupies 4 bytes, allowing a maximum of 2 \*\* 32 fields. `public_logs_length` occupies 4 bytes, allowing a maximum of 2 \*\* 32 fields. `revert_code` occupies 1 byte. Each of the remaining values occupies 2 bytes, allowing a maximum of 2 \*\* 16 elements each. A test below ensures they do not exceed these limits.
