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.

GET/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"
Parameters
ParameterDescription
blockNumber

query · integer · optional

The block height. Give this or blockHash, not both.
blockHash

query · string · optional

The block hash, 0x followed by 64 hexadecimal characters. Give this or blockNumber, not both.
address

query · string · optional

Only this account: 0x followed by 40 hexadecimal characters. Omit it for every account.
limit

query · integer · optional

How many accounts to list, most active first: 1 to 200. Defaults to 25.
chain

path · 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.

Response fields of Which accounts did a block touch, and what did it change?
FieldTypeDescription
blockobject | nullThe block, or null when the chain has no block with this number or hash.
block.numberintegerThe block height.
block.hashstringThe block hash, lowercase.
block.timestampinteger | nullUnix seconds the block was produced at.
totalsobject | nullCounts over every account the block touched, whatever address and limit say.
totals.accountsintegerAccounts the block touched.
totals.balanceChangedintegerAccounts whose balance the block changed.
totals.nonceChangedintegerAccounts whose nonce the block changed: the senders, and contracts that created others.
totals.codeChangedintegerAccounts whose code the block deployed or replaced, a delegation included.
totals.unchangedintegerAccounts the block named but neither changed nor read storage of.
totals.slotsWrittenintegerStorage slots written, summed over accounts.
totals.slotsReadintegerStorage slots read and not written, summed over accounts.
accountsobject[] | nullThe accounts asked for, most active first (changes and slots summed), then by address.
accounts[].addressstringThe account, lowercase.
accounts[].balanceChangesintegerHow many times the block changed its balance.
accounts[].finalBalanceWeistring | nullIts balance after the block, in wei, as a decimal string; null when the block did not change it.
accounts[].nonceChangesintegerHow many times the block changed its nonce.
accounts[].finalNonceinteger | nullIts nonce after the block; null when the block did not change it.
accounts[].codeChangedbooleanWhether the block deployed or replaced its code.
accounts[].slotsWrittenintegerDistinct storage slots of this account the block wrote.
accounts[].slotsReadintegerDistinct storage slots of this account the block read and did not write.
accountsNotListedinteger | nullMatching 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