EIP 1186 Explained with Examples— the standard for Getting Account Proof

Leo Zhang
6 min readJun 25, 2022

In previous blog post, we introduced how to verify account balance using state proof. But we didn’t talk about how to get the proof and where to query the proof for a given account.

That is what this blog post is about.

In this blog post, I will introduce EIP1186, which is the standard for querying account proof or contract storage proof from a full node.

The use cases are, as a light client, who don’t have access to the entire blockchain data,

  • You can ask for Merkle Proof for your Ethereum account balance and verify the correctness yourself.
  • You can ask for Merkle Proof for your ERC20 token account balance. For instance, USDC account balance.
  • You can ask for Merkle Proof for your ERC721 token ownership. For instance, to prove you are the owner of a CryptoKitties NFT.

You can query these Merkle Proof from untrusted full node, because you can verify the proof yourself easily. If the Merkle Proof is invalid, then it means the result of your Ethereum account or storage state that is sent along with the proof is invalid.

OK. Let’s start with the EIP standard — EIP1186.

EIP-1186

EIP-1186 defines a method eth_getProof to query for Merkle proof:

The eth_getProof method takes an address to query account state for and a block number. It…

--

--