Onboard to AVS Dashboard
The AVS Dashboard (also known as AVS Marketplace) lists registered AVSs.

While the Holesky network instability continues, AVS developers can use Sepolia for development and testing.
Initially, the AVS Marketplace will not be available on Sepolia. For more information, refer to the EigenLayer blog.
Adding a listing
To display an AVS on the AVS Marketplace, invoke updateAVSMetadataURI
on the AllocationManager core contract.
The expected format fo the metadataURI is:
{
"name": "EigenLabs AVS 1",
"website": "https://www.eigenlayer.xyz/",
"description": "This is my 1st AVS",
"logo": "https://raw.githubusercontent.com/layr-labs/eigendata/master/avs/eigenlabs/logo.png",
"twitter": "https://twitter.com/eigenlayer"
}
The logo must be in PNG format.
Once invoked, the data is indexed within about 20 minutes, and the metadata is displayed on the AVS Dashboard for Holesky. The EigenLayer Mainnet Dashboard Onboarding Form is required to display on the AVS Dashboard for mainnet.
Updating a listing
If you deploy a new contract for your AVS, remove the previous listing by invoking updateAVSMetadataURI
on the AllocationManager core contract
value of null. For example, updateAVSMetadataURI("")
.
The listing will be removed from the AVS Marketplace cache within one hour.
getOperatorRestakedStrategies
To provide the list of Strategies that an Operator has restaked with a AVS, the getOperatorRestakedStrategies
function must
be implemented. Implementing getOperatorRestakedStrategies
enables the AVS to have its total restaked value displayed on the UI.
Given an operator, the function:
- Retrieve the Operator's quorum bitmap from the
RegistryCoordinator.sol
contract. - Retrieve the addresses of the strategies for each quorum in the quorum bitmap
getOperatorRestakedStrategies
makes no guarantee on whether the Operator has shares for a strategy in an Operator Set
or the uniqueness of each element in the returned array. The offchain service is responsible for that validation.
function getOperatorRestakedStrategies(address operator) external view returns (address[] memory) {
bytes32 operatorId = registryCoordinator.getOperatorId(operator);
uint192 operatorBitmap = registryCoordinator.getCurrentQuorumBitmap(operatorId);
if (operatorBitmap == 0 || registryCoordinator.quorumCount() == 0) {
return new address[](0);
}
// Get number of strategies for each quorum in operator bitmap
bytes memory operatorRestakedQuorums = BitmapUtils.bitmapToBytesArray(operatorBitmap);
uint256 strategyCount;
for(uint256 i = 0; i < operatorRestakedQuorums.length; i++) {
strategyCount += stakeRegistry.strategyParamsLength(uint8(operatorRestakedQuorums[i]));
}
// Get strategies for each quorum in operator bitmap
address[] memory restakedStrategies = new address[](strategyCount);
uint256 index = 0;
for(uint256 i = 0; i < operatorRestakedQuorums.length; i++) {
uint8 quorum = uint8(operatorRestakedQuorums[i]);
uint256 strategyParamsLength = stakeRegistry.strategyParamsLength(quorum);
for (uint256 j = 0; j < strategyParamsLength; j++) {
restakedStrategies[index] = address(stakeRegistry.strategyParamsByIndex(quorum, j).strategy);
index++;
}
}
return restakedStrategies;
}
getRestakeableStrategies
To list all supported restakeable Strategies for the AVS on the UI, the getRestakeableStrategies
function must be implemented.
function getRestakeableStrategies() external view returns (address[] memory) {
uint256 quorumCount = registryCoordinator.quorumCount();
if (quorumCount == 0) {
return new address[](0);
}
uint256 strategyCount;
for(uint256 i = 0; i < quorumCount; i++) {
strategyCount += stakeRegistry.strategyParamsLength(uint8(i));
}
address[] memory restakedStrategies = new address[](strategyCount);
uint256 index = 0;
for(uint256 i = 0; i < _registryCoordinator.quorumCount(); i++) {
uint256 strategyParamsLength = _stakeRegistry.strategyParamsLength(uint8(i));
for (uint256 j = 0; j < strategyParamsLength; j++) {
restakedStrategies[index] = address(_stakeRegistry.strategyParamsByIndex(uint8(i), j).strategy);
index++;
}
}
return restakedStrategies;
}
For a reference implemetation, refer to ServiceManagerBase.sol.
Rendering Logo
For proper rendering of the AVS logo on the UI, the logo must be hosted on GitHub and its reference must point to the raw
file as the example above shows. If you need a repository for your logo to be hosted publicly, make a PR to the eigendata
repository to add your logo.
Mainnet Dashboard onboarding
To complete the process of onboarding your AVS to mainnet AVS Marketplace Dashboard, submit the EigenLayer Mainnet Dashboard Onboarding Form.