# `Onchain.RPC.Proof`
[🔗](https://github.com/ZenHive/onchain-stack/blob/onchain-v0.16.0/packages/onchain/lib/onchain/rpc/proof.ex#L1)

EIP-1186 account proof. Quantities are integers; addresses, hashes and RLP
proof nodes are raw bytes. Storage keys are integers, accepting either padded
DATA or QUANTITY encodings from clients. Proofs are not verified locally.

# `raw`

```elixir
@type raw() :: %{required(String.t()) =&gt; String.t() | [String.t()] | [raw_storage()]}
```

An `eth_getProof` result as the node returns it: hex strings under
`"address"`, `"balance"`, `"nonce"`, `"codeHash"`, `"storageHash"`, a hex list
under `"accountProof"`, and `"storageProof"` entries.

# `raw_storage`

```elixir
@type raw_storage() :: %{required(String.t()) =&gt; String.t() | [String.t()]}
```

One `storageProof` entry: hex `"key"` and `"value"`, hex list `"proof"`.

# `t`

```elixir
@type t() :: %Onchain.RPC.Proof{
  account_proof: [binary()],
  address: &lt;&lt;_::160&gt;&gt;,
  balance: non_neg_integer(),
  code_hash: &lt;&lt;_::256&gt;&gt;,
  nonce: non_neg_integer(),
  storage_hash: &lt;&lt;_::256&gt;&gt;,
  storage_proof: [Onchain.RPC.Proof.StorageProof.t()]
}
```

# `deserialize`

```elixir
@spec deserialize(raw()) :: t()
```

Decodes all required EIP-1186 fields, raising on missing or malformed data.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
