> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.whalehunt.net/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.whalehunt.net/_mcp/server.

# Wallets and identities

A transaction hash does not identify an individual fill. A transaction can contain several participations and executions; after a reorg it can occur in another block.

## Wallet roles

`owner` is the order owner, `signer` signs the order, and the transaction sender submits the transaction. They can differ. The `owners` filter selects order owners; it is not a signer or transaction-sender filter. Never fill in an unknown identity by assuming these roles share an address.

| Identity               | Distinguishes                                                   |
| ---------------------- | --------------------------------------------------------------- |
| Transaction            | Transaction in a particular network                             |
| Invocation             | Supported call occurrence within the transaction                |
| Intent                 | Participation role and order position in that invocation        |
| Order hash             | Signed order; can recur across partial fills and participations |
| Inclusion / occurrence | Transaction included in one particular block                    |
| Execution              | One normalized receipt execution                                |
| Economic resource      | Shared resource referenced by economic perspectives             |
| Event                  | Persisted notification about an entity                          |

An intent identity does not prove execution. An inclusion identity changes on reinclusion; the transaction identity can stay the same. Exact intent-to-execution correlation requires more evidence than a shared transaction hash.

## What to save

Keep `eventId`, `entityId`, `assessmentRevision`, `correctionOf`, transaction/intent/occurrence relations and the permitted payload. Save the subscription binding and checkpoint separately, in the same transaction as effects when accepting a checkpoint.

Deduplicate by `eventId`; use entity and revision to update state. The same event ID with different contents is a conflict: stop applying and retain safe diagnostics.

## Transport identities

`frameSequence` orders this connection's frames. `position` is a journal batch boundary. `eventOrdinal` is the index in the original batch before filtering. Positions and ordinals can have gaps; connection frame sequences cannot.

`connectionId` and subscription `generation` fence ACKs; `historyGeneration` identifies retained history. Reconnect starts a new frame sequence. See [frames](/polymarket/reference/frames) and [versions](/polymarket/reference/versions).