Chains API
Which accounts did a block touch, and what did it change?
Every account one ETH or BASE block touched: balance and nonce changes, code changes and storage slots written and read, with totals for the block.
/api/external/chain-analysis/block-access-list/{chain}What it returns
The access list of one block named by height or hash: every account its transactions touched, and for each how many times its balance and nonce changed and where they ended, whether its code changed, and how many storage slots it wrote and only read. totals cover the whole block; accounts lists the most active first, up to limit, or only address when given. Every null field means the chain has no such block. Ethereum answers for about the last 10,000 blocks (roughly a day and a half) and Base from block 50,000,000; an older block is a 400.
Chains
- Ethereum ETH
- Base BASE
Request
Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.
curl -H "x-dex-data-key: $DEXDATA_API_KEY" \ "https://api.dexdata.io/api/external/chain-analysis/block-access-list/ETH"
| Parameter | Description |
|---|---|
blockNumberquery · integer · optional | The block height. Give this or blockHash, not both. |
blockHashquery · string · optional | The block hash, 0x followed by 64 hexadecimal characters. Give this or blockNumber, not both. |
addressquery · string · optional | Only this account: 0x followed by 40 hexadecimal characters. Omit it for every account. |
limitquery · integer · optional | How many accounts to list, most active first: 1 to 200. Defaults to 25. |
chainpath · string · required | ETH or BASE, the chains that publish block access lists; every other chain returns 400. |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type | Description |
|---|---|---|
block | object | null | The block, or null when the chain has no block with this number or hash. |
block.number | integer | The block height. |
block.hash | string | The block hash, lowercase. |
block.timestamp | integer | null | Unix seconds the block was produced at. |
totals | object | null | Counts over every account the block touched, whatever address and limit say. |
totals.accounts | integer | Accounts the block touched. |
totals.balanceChanged | integer | Accounts whose balance the block changed. |
totals.nonceChanged | integer | Accounts whose nonce the block changed: the senders, and contracts that created others. |
totals.codeChanged | integer | Accounts whose code the block deployed or replaced, a delegation included. |
totals.unchanged | integer | Accounts the block named but neither changed nor read storage of. |
totals.slotsWritten | integer | Storage slots written, summed over accounts. |
totals.slotsRead | integer | Storage slots read and not written, summed over accounts. |
accounts | object[] | null | The accounts asked for, most active first (changes and slots summed), then by address. |
accounts[].address | string | The account, lowercase. |
accounts[].balanceChanges | integer | How many times the block changed its balance. |
accounts[].finalBalanceWei | string | null | Its balance after the block, in wei, as a decimal string; null when the block did not change it. |
accounts[].nonceChanges | integer | How many times the block changed its nonce. |
accounts[].finalNonce | integer | null | Its nonce after the block; null when the block did not change it. |
accounts[].codeChanged | boolean | Whether the block deployed or replaced its code. |
accounts[].slotsWritten | integer | Distinct storage slots of this account the block wrote. |
accounts[].slotsRead | integer | Distinct storage slots of this account the block read and did not write. |
accountsNotListed | integer | null | Matching accounts left out by limit; 0 when all are listed. |
Start building with DexData today
Sign in, create a key and make your first call in a minute. Free credits every month, and you only pay for calls that succeed.
Get a free API key