> For the complete documentation index, see [llms.txt](https://docs.seismic.systems/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.seismic.systems/reference/seismic-transaction/signed-reads.md).

# Signed Reads

A signed read is a Seismic transaction (type `0x4a`) sent to `eth_call` instead of `eth_sendRawTransaction`. It lets contracts authenticate the reader's `msg.sender` for read-only queries — e.g., "only the owner can view their balance."

## Why signed reads exist

In the EVM, anyone can set the `from` field of an `eth_call` to spoof any address. Seismic closes this in two parts:

1. Vanilla `eth_call` has its `from` field **zeroed out** by the node — `msg.sender == 0` inside contract code
2. A signed read is a Seismic tx where the validator recovers the signer from the signature and uses *that* address as `msg.sender`

## How signed reads differ from write txs

A signed read is built exactly like a write tx (same `SeismicElements`, same encryption flow — see [Tx Lifecycle](/reference/seismic-transaction/tx-lifecycle.md) and [Cryptography](/reference/seismic-transaction/cryptography.md)). The differences are:

* **Sent to `eth_call`**, not `eth_sendRawTransaction`. Either a raw tx or an EIP-712 envelope (`message_version = 2`)
* The **`signed_read`** field should be set to `true` (default in our clients). The tx-pool rejects `signed_read = true` at write submission, so an intercepted signed read can't be replayed as a write tx
* The validator decrypts the calldata, runs the call inside the EVM, and returns the result **encrypted to the client's `encryption_pubkey`** — an on-path interceptor can't read the response either
* `signed_read = false` is also valid for `eth_call` — the same tx body can be passed to either endpoint. This is intentional so that `eth_estimateGas` works on **write** txs: gas estimation simulates the tx via the same `eth_call` path internally, so if `eth_call` rejected `signed_read = false`, clients couldn't estimate gas on a normal write tx without building a separate tx variant. Safety still holds: decrypting the response requires the client's `eph_sk`, and once the account's tx nonce increments, a captured `eth_call` payload can no longer execute as a write


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.seismic.systems/reference/seismic-transaction/signed-reads.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
