<!-- source: https://secondlayer.tools/docs/api-reference#state-write-object -->

## The State write object

One MARF write a block committed, as the node's `state_writes` observer key delivered it.

| Field | Type | Description |
| --- | --- | --- |
| `cursor` | string | `<block_height>:<ordinal>`. Pass as `cursor`. |
| `block_height` | integer | Stacks block height. |
| `ordinal` | integer | Position in the block's write order, from 0. A separate clock from event_index. |
| `tx_index` | integer · nullable | The writing transaction's index in the block; null for block-level writes. |
| `key` | string | The full MARF key, e.g. `vm::<contract>::0::map::<hex>` or `vm-account::<address>::19`. |
| `value_hex` | string | The value written, hex as the node sent it. |
| `tx_id` | string · nullable | Writing transaction's id. Only with `tx_context=true`; null for block-level writes. |
| `tx_sender` | string · nullable | Writing transaction's sender. Only with `tx_context=true`. |
| `tx_type` | string · nullable | Writing transaction's type. Only with `tx_context=true`. |
| `tx_status` | string · nullable | Writing transaction's status. Only with `tx_context=true`. |
| `tx_contract_id` | string · nullable | Contract the writing transaction called or deployed. Only with `tx_context=true`. |
| `tx_function_name` | string · nullable | Function the writing transaction called. Only with `tx_context=true`. |

```json
{
  "cursor": "100:1",
  "block_height": 100,
  "ordinal": 1,
  "tx_index": 0,
  "key": "vm::ST3FEXKRAY93SR2MERXNSAXWGV9XSDNM1MVEFY5TH.store::0::map::0d0000000568656c6c6f",
  "value_hex": "30313030303030303030303030303030303030303030303030303030303030303031"
}
```
