# eip712\_signing\_hash

Compute the digest signed in EIP-712 mode.

## Signature

```python
def eip712_signing_hash(tx: UnsignedSeismicTx) -> bytes
```

## Parameters

| Parameter | Type                                                                                                                   | Required | Description                      |
| --------- | ---------------------------------------------------------------------------------------------------------------------- | -------- | -------------------------------- |
| `tx`      | [`UnsignedSeismicTx`](https://docs.seismic.systems/clients/python/api-reference/transaction-types/unsigned-seismic-tx) | Yes      | The unsigned Seismic transaction |

## Returns

| Type    | Description                                 |
| ------- | ------------------------------------------- |
| `bytes` | 32-byte keccak256 digest to be ECDSA-signed |

## How it works

```
keccak256("\x19\x01" ‖ domainSeparator ‖ structHash)
```

Where:

* `\x19\x01` — EIP-712 magic bytes
* `domainSeparator` — from [`domain_separator(chain_id)`](https://docs.seismic.systems/clients/python/api-reference/eip712/domain-separator)
* `structHash` — from [`struct_hash(tx)`](https://docs.seismic.systems/clients/python/api-reference/eip712/struct-hash)

## Example

```python
digest = eip712_signing_hash(unsigned_tx)
print(len(digest))  # 32
```

## See Also

* [sign\_seismic\_tx\_eip712](https://docs.seismic.systems/clients/python/api-reference/eip712/sign-seismic-tx-eip712) — uses this hash to sign
* [domain\_separator](https://docs.seismic.systems/clients/python/api-reference/eip712/domain-separator) — computes domain separator
* [struct\_hash](https://docs.seismic.systems/clients/python/api-reference/eip712/struct-hash) — computes struct hash
* [build\_seismic\_typed\_data](https://docs.seismic.systems/clients/python/api-reference/eip712/build-seismic-typed-data) — build full typed data
