> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chainstack.com/llms.txt
> Use this file to discover all available pages before exploring further.

<AgentInstructions>

## Submitting Feedback

If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback:

POST https://docs.chainstack.com/feedback

```json
{
  "path": "/reference/hyperliquid-evm-eth-get-proof",
  "feedback": "Description of the issue"
}
```

Only submit feedback when you have something specific and actionable to report.

</AgentInstructions>

# eth_getProof | Hyperliquid EVM

> Returns the Merkle proof for an account and optionally some storage keys.

<Info>
  This method is available on Chainstack. Not all Hyperliquid methods are available on Chainstack, as the open-source node implementation does not support them yet — see [Hyperliquid methods](/docs/hyperliquid-methods) for the full availability breakdown.
</Info>

The `eth_getProof` JSON-RPC method returns the Merkle proof for an account and optionally some storage keys. This method is essential for verifying account states and storage values without trusting the node, enabling light clients and cross-chain verification systems.

<Check>
  **Get your own node endpoint today**

  [Start for free](https://console.chainstack.com/) and get your app to production levels immediately. No credit card required.

  You can sign up with your GitHub, X, Google, or Microsoft account.
</Check>

## Parameters

The method takes three parameters:

1. **Address** — The account address to get the proof for
2. **Storage keys** — Array of storage keys to get proofs for (optional)
3. **Block parameter** — The block at which to get the proof

### Parameter details

* `address` (string, required) — The 20-byte account address to get the proof for
* `storageKeys` (array, optional) — Array of 32-byte storage keys to include in the proof
* `block` (string, required) — Block identifier: `"latest"` (only the latest block is supported on Hyperliquid)

## Response

The method returns the account proof and storage proofs if requested.

### Response structure

**Account proof object:**

* `address` — The account address
* `accountProof` — Array of RLP-encoded Merkle tree nodes for the account proof
* `balance` — The account balance in wei as a hexadecimal string
* `codeHash` — The hash of the account code
* `nonce` — The account nonce as a hexadecimal string
* `storageHash` — The hash of the storage trie root
* `storageProof` — Array of storage proof objects for requested keys

**Storage proof object:**

* `key` — The storage key
* `value` — The storage value at the key
* `proof` — Array of RLP-encoded Merkle tree nodes for the storage proof

### Proof verification

**Merkle proof structure:**

* Account proofs verify against the state root
* Storage proofs verify against the storage hash
* Each proof consists of RLP-encoded nodes
* Verification requires reconstructing the Merkle path

**Use in light clients:**

* Enables stateless verification of account data
* Reduces trust requirements for off-chain systems
* Supports cross-chain state verification
* Essential for fraud proofs and optimistic rollups

## Hyperliquid-specific considerations

### Proof limitations

**Latest block only:**

* Only the `"latest"` block parameter is supported
* Historical proofs are not available
* All proofs reflect the current state
* For historical data, consider using archive node implementations

### Storage key handling

**Efficient proof requests:**

* Request only necessary storage keys to minimize response size
* Empty storage keys array returns only account proof
* Large storage key arrays may impact performance
* Consider batching proof requests for multiple accounts

## Example request

```shell Shell theme={"system"}
curl -X POST https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_getProof",
    "params": [
      "0x69835D480110e4919B7899f465aAB101e21c8A87",
      [],
      "latest"
    ],
    "id": 1
  }'
```

## Use cases

The `eth_getProof` method is essential for applications that need to:

* **Light clients**: Verify account states without full node synchronization
* **Cross-chain bridges**: Prove account states across different chains
* **State verification**: Validate account balances and storage values
* **Fraud proofs**: Generate proofs for optimistic rollup challenges
* **Merkle proof systems**: Build trustless verification systems
* **Audit tools**: Verify on-chain data independently
* **Decentralized oracles**: Prove on-chain states to off-chain systems
* **Layer 2 solutions**: Generate state proofs for settlement layers
* **Snapshot verification**: Validate state snapshots cryptographically
* **Smart contract verification**: Prove contract storage values
* **Compliance systems**: Generate cryptographic proofs for regulatory requirements
* **Security monitoring**: Verify account states for security analysis
* **Wallet applications**: Verify balances without trusting nodes
* **DeFi protocols**: Prove collateral positions and liquidation states
* **State channels**: Generate proofs for channel dispute resolution
* **Governance systems**: Prove voting power and delegation states
* **Insurance protocols**: Verify claim conditions cryptographically
* **Data availability**: Prove data existence on-chain
* **Research tools**: Analyze state tree structures and proofs
* **Testing frameworks**: Verify state transitions in test environments
* **Backup systems**: Validate state backups cryptographically
* **Migration tools**: Prove account states during chain migrations
* **Analytics platforms**: Verify on-chain metrics independently
* **Integration services**: Provide proof-based APIs for external systems
* **Educational tools**: Demonstrate Merkle proof concepts
* **Development tools**: Debug state verification issues

This method provides cryptographic proof of account and storage states, enabling trustless verification and cross-chain interoperability on the Hyperliquid EVM platform.

<Note>
  On Hyperliquid, `eth_getProof` only supports the latest block. The proof returned can be used to cryptographically verify the account state and any requested storage values against the current state root.
</Note>


## OpenAPI

````yaml /openapi/hyperliquid_node_api/evm_eth_get_proof.json post /evm
openapi: 3.0.0
info:
  title: Hyperliquid EVM API - eth_getProof
  version: 1.0.0
servers:
  - url: >-
      https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274
security: []
paths:
  /evm:
    post:
      summary: eth_getProof
      description: >-
        Returns the Merkle proof for an account and optionally some storage
        keys.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - jsonrpc
                - method
                - params
                - id
              properties:
                jsonrpc:
                  type: string
                  enum:
                    - '2.0'
                  default: '2.0'
                  description: JSON-RPC version
                method:
                  type: string
                  enum:
                    - eth_getProof
                  default: eth_getProof
                  description: The RPC method name
                params:
                  type: array
                  description: 'Parameters: [address, storageKeys, block]'
                  default:
                    - '0x69835D480110e4919B7899f465aAB101e21c8A87'
                    - []
                    - latest
                id:
                  type: integer
                  default: 1
                  description: Request identifier
            example:
              jsonrpc: '2.0'
              method: eth_getProof
              params:
                - '0x69835D480110e4919B7899f465aAB101e21c8A87'
                - []
                - latest
              id: 1
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                    example: '2.0'
                  id:
                    type: integer
                    example: 1
                  result:
                    type: object
                    description: The account and storage proofs
                    properties:
                      address:
                        type: string
                        description: The account address
                        example: '0x69835D480110e4919B7899f465aAB101e21c8A87'
                      accountProof:
                        type: array
                        description: Array of RLP-encoded Merkle tree nodes
                        items:
                          type: string
                      balance:
                        type: string
                        description: The account balance in wei
                        example: '0x0'
                      codeHash:
                        type: string
                        description: The hash of the account code
                        example: >-
                          0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
                      nonce:
                        type: string
                        description: The account nonce
                        example: '0x0'
                      storageHash:
                        type: string
                        description: The hash of the storage trie root
                        example: >-
                          0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421
                      storageProof:
                        type: array
                        description: Array of storage proof objects
                        items:
                          type: object
                          properties:
                            key:
                              type: string
                              description: The storage key
                            value:
                              type: string
                              description: The storage value
                            proof:
                              type: array
                              description: Array of RLP-encoded nodes
                              items:
                                type: string
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                    example: '2.0'
                  id:
                    type: integer
                    example: 1
                  error:
                    type: object
                    properties:
                      code:
                        type: integer
                        example: -32602
                      message:
                        type: string
                        example: Invalid params

````