Rewards Distribution Data
Rewards snapshot distribution data is available via a public S3 bucket. Users may access this data for their own analytics purposes. Follow these steps in order access the data:
- Get a list of snapshot dates from RewardsCoordinator contract.
- Find the RewardsCoordinator Proxy address for Testnet or Mainnet here.
- Get the DistributionRoot(s) needed for the rewards time ranges desired.
- Call
getCurrentDistributionRoot
which will give you the most recent root posted.getCurrentClaimableDistributionRoot
will give you the most recent claimable root since there is an activation delay.- You may also call
getCurrentDistributionRoot
which will give you the most recent root posted.getCurrentClaimableDistributionRoot
will give you the most recent claimable root since there is an activation delay.
- You may also call
- Find the rewardsCalculationEndTimestamp value as the second value in the DistributionRoot struct resulting tuple.
- Or Index on the event
DistributionRootSubmitted
which is emitted when a root is created. - Note: the current snapshot cadence is at most once per day for Testnet, weekly for Mainnet if there are new rewards to publish (more detail here).
- Call
- Convert this rewardsCalculationEndTimestamp value from unix time stamp integer format to the date format YYYY-MM-DD using a conversion tool (example here).
- Construct the URL to return the claim-amounts.json file for the desired snapshot date in the following format:
https://<bucket url>/<environment>/<network>/<snapshot date>/claim-amounts.json
- bucket_url:
- environment: testnet or mainnet
- network: holesky or ethereum
Example:
https://eigenlabs-rewards-mainnet-ethereum.s3.amazonaws.com/mainnet/ethereum/2024-08-11/claim-amounts.json
Extract data from the claim-amounts.json file as needed. Please find the schema here:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "EigenLayer rewards cumulative earnings",
"type": "object",
"properties": {
"earner": {
"type": "string",
"description": "Ethereum address"
},
"token": {
"type": "string",
"Ethereum address"
},
"snapshot": {
"type": "number",
"Unix timestamp of the snapshot date in UTC"
},
"cumulative_amount": {
"type": "string",
"Number of tokens earned since genesis"
}
},
"required": [
"earner",
"token",
"snapshot",
"cumulative_amount"
]
}
Note: claim-amounts.json file is not a json file, but a json line file where each line is a valid json object.