Recipe 12 of 32
Who are the biggest users of a contract or protocol, and what are they worth?
Call /wallets/{contract}/counterparties for the addresses that moved the most USD to and from the contract, label them with /labels/batch, then read each one's holdings with /wallets/{address}/balances.
A contract is an address, so GET /v1/onchain/wallets/{contract}/counterparties ranks the addresses that sent
tokens to it or received tokens from it, by USD volume over a window, top 50 at most.
POST /labels/batch says who they are, and /wallets/{address}/balances reads what one of them
holds now, one call per wallet. The example uses the Chainlink community staking pool, where
stakers send LINK to the contract itself. The parameters are on Wallet counterparties, Batch wallet labels and Wallet token balances.
Quick answer
# the five addresses that moved the most USD to and from the Chainlink staking pool, all history
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/wallets/0xbc10f2e862ed4502144c7d632a3459f49dfcdb5e/counterparties?window=all&limit=5"Example response
Captured from the live API on 2026-10-24 at 17:19 UTC, trimmed to 3 of 5 rows.
sent_usd and received_usd are from the contract's side. The first row paid $322M into the pool
over 6,490 transfers and took nothing back, and when checked it held no ETH and no token worth
$1,000 on Ethereum. That is the shape of a contract passing other wallets' stakes through, not one user. The
next rows look like individual stakers: they put in about $332k and $229k and took out $235k and $337k.
[
{
"wallet": "0xedf03cd5075f93174614febf9c6789a3e7581d4c",
"total_volume_usd": 322349729.685494,
"sent_usd": 0.0,
"received_usd": 322349729.685494,
"tx_count": 6490,
"first_seen": "2023-11-28T16:58:23",
"last_seen": "2025-05-13T17:19:35",
"entity": "",
"wallet_type": ""
},
{
"wallet": "0xd031c0d7b7996899d4712d50f33d2a539794d985",
"total_volume_usd": 566890.386117,
"sent_usd": 235325.458404,
"received_usd": 331564.927713,
"tx_count": 4,
"first_seen": "2023-12-07T18:24:59",
"last_seen": "2025-11-17T01:36:11",
"entity": "",
"wallet_type": ""
},
{
"wallet": "0xaa6d57e15af3d58feb0ea3f02cbb5319046a26e5",
"total_volume_usd": 565531.809977,
"sent_usd": 336901.809977,
"received_usd": 228630.0,
"tx_count": 4,
"first_seen": "2023-12-07T20:01:23",
"last_seen": "2025-10-04T00:34:23",
"entity": "",
"wallet_type": ""
}
]Variations
Who they are. Label the ranking in one call, up to 100 addresses.
# entity, wallet type and risk flag for the top counterparties
curl -X POST -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/labels/batch?addresses=0xedf03cd5075f93174614febf9c6789a3e7581d4c,0xd031c0d7b7996899d4712d50f33d2a539794d985,0xaa6d57e15af3d58feb0ea3f02cbb5319046a26e5"What one of them is worth. Holdings are read from the chain at request time, one wallet per call. total_usd sums the priced
holdings only.
# what the second-ranked staker holds now, on all four chains, holdings of 1,000 USD and up
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/wallets/0xd031c0d7b7996899d4712d50f33d2a539794d985/balances?min_usd=1000"Drop pass-through rows. Keep the rows where one direction is more than 60% of the volume; flash loans and routers move the same amount both ways.
# the top 50, keeping rows where one direction carries more than 60% of the volume
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/wallets/0xbc10f2e862ed4502144c7d632a3459f49dfcdb5e/counterparties?window=all&limit=50" \
| jq '[.[] | select(.sent_usd > 0.6 * .total_volume_usd or .received_usd > 0.6 * .total_volume_usd)]'Before you rely on it
Volume through the contract, not deposits held
The ranking is USD moved to and from the contract address in the window, both ways summed. It is
not what a user has deposited now, and it only sees users whose tokens touch that address: a router
that never holds tokens shows few. On a lending pool flash loans dominate. On 2026-10-24 every one of
the top 50 counterparties of Morpho Blue (0xbbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb) over 30 days
failed that 60% test, and the two labelled ones in the top five were MEV
bots.
Ask your agent
Connected to the Vike MCP server (https://vike.io/mcp) in Claude, ChatGPT or Cursor, ask it in plain words.
The wallet_counterparties tool (2 credits) ranks them and wallet_token_balances (3 credits) values them.
Who are the biggest users of the contract 0xbc10f2e862ed4502144c7d632a3459f49dfcdb5e, and what do they hold now?