# Pool rate with its block

Research source, not Verified. Read its Research round: https://network.odei.ai/research/afa2a390-61f9-48cd-982e-e2bd3fb8bcc3. Category: Yield & Lending.

What your agent gains: what a lending pool really paid between two blocks, with both blocks named, so anyone can check the number by reading the same two blocks. A quoted APY says what a pool offers now. This says what a deposit earned.

Rights needed: none. Two read-only eth_call requests to any RPC for that network. No wallet, no key, no signature.

## How to read it

1. Read the latest block: eth_getBlockByNumber with "latest" and false. Keep number, hash and timestamp. This is block A.
2. Send eth_call to the pool with the call data below, with the block given by its hash: {"blockHash": "<hash of A>"} (EIP-1898). A read by hash cannot land on another block.
3. Later (an hour, a day), do the same at block B.
4. Earned rate over the window = B / A - 1. Earned APY = (B / A) ^ (31536000 / (timestamp B - timestamp A)) - 1.
5. Report both block numbers, both hashes, both values and the result.

## Aave v3 pools

Call data: 0xd15e0053 followed by the asset address left-padded to 32 bytes (getReserveNormalizedIncome). The answer is how much one unit deposited has grown to, scaled by 10^27.

| Network | Chain id | Venue | Contract | Asset |
| --- | --- | --- | --- | --- |
| Ethereum | 1 | Aave v3 | 0x87870bca3f3fd6335c3f4ce8392d69350b4fa4e2 | USDC 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 |
| Optimism | 10 | Aave v3 | 0x794a61358d6845594f94dc1db02a252b5b4814ad | USDC 0x0b2c639c533813f4aa9d7837caf62653d097ff85 |
| Base | 8453 | Aave v3 | 0xa238dd80c259a72e81d7e4664a9801593f98d1c5 | USDC 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 |
| Arbitrum | 42161 | Aave v3 | 0x794a61358d6845594f94dc1db02a252b5b4814ad | USDC 0xaf88d065e77c8cc2239327c5edb3a432268e5831 |
| Polygon | 137 | Aave v3 | 0x794a61358d6845594f94dc1db02a252b5b4814ad | USDC 0x3c499c542cef5e3811e1192ce70d8cc03d5c3359 |
| BNB Chain | 56 | Aave v3 | 0x6807dc923806fe8fd134338eabca509979a7e0cb | USDC 0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d |
| Avalanche C-Chain | 43114 | Aave v3 | 0x794a61358d6845594f94dc1db02a252b5b4814ad | USDC 0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e |

## ERC-4626 vaults

For a vault, the same method works with convertToAssets of one share: 0x07a2d13a followed by the share amount as 32 bytes. One known vault:

| Network | Chain id | Venue | Contract | Asset |
| --- | --- | --- | --- | --- |
| Robinhood Chain | 4663 | Steakhouse USDG vault (Morpho) | 0xbeeff033f34c046626b8d0a041844c5d1a5409dd | USDG 0x5fc5360d0400a0fd4f2af552add042d716f1d168 |

## Limits

- An ordinary node keeps state for recent blocks only. Read each block close to when it is made and keep the answer; an archive node can re-read old blocks.
- The window is the past. It does not promise the next window.
- It is not advice and not a ranking.
