Othentic Registry

Overview

The Othentic Registry is a singleton smart contract on L1 that facilitates the integration with shared security protocols and AVSs. The contract manages the registration and interacts with key components such as the Slasher, Delegation Manager, and Strategy Manager.

Contract Addresses

The Othentic registry contract is deployed on the following L1 chains.

Features

Integration with shared security protocol (EigenLayer) interfaces The contract uses IOthenticRegistry interface to manage staking, delegation, and tracking shares for operators and strategies.

Staking Contract Lookup A multi-chain-aware strategy lookup system is built in, supporting Ethereum mainnet and specific testnets.

Dynamic Voting Power Consensus In the shared security environment, the Operator's voting power is dynamic and proportional to the amount of re-stake assets locked on Layer 1. The Othentic Registry contract calculates each operator's voting power across multiple shared security protocols, such as EigenLayer and Babylon.

Core Functions

1. Governance Management

registerAvs: Registers an AVS governance.

Parameter
type
description

_avsName

string (memory)

Name of the AVS

2. Default Strategies Lookup

getDefaultStrategies: Returns default strategies based on the chain ID (Mainnet, EigenLayer testnet, or Hardhat testnet).

Parameter
Type
Description

_chainid

uint256

Chain Id

3. Operator Share & Voting Power Calculations

The Othentic registry relies on the DelegationManager contract to manage operator shares and voting power. Here’s a detailed explanation of the relevant functions:

getVotingPower

Calculates voting power based on assigned shares and multipliers.

Parameter
Type
Description

_operator

address

Operator address

_votingPowerMultipliers

VotingPowerMultiplier[]

Array of multipliers and stake weights per staking contract

_stakingContractDetails

StakingContractDetails[]

Array of minimum stake thresholds per staking contract,

_avsGovernance

address

The AVS Governance contract address

_ignoreMultipliers

bool

If true, all multipliers are treated as 1×, skipping weighting logic.

_revertIfZero

bool

If true, the function reverts if any individual staking contract check returns 0 voting power due to insufficient stake

struct VotingPowerMultiplier {
    address stakingContract;
    uint256 multiplier;
    uint256 slashableStakeWeight;
    SharedSecurityProvider sharedSecurityProvider;
}

struct StakingContractDetails {
    address stakingContract;
    uint256 minStake;
    uint256 minSlashableStake;
    SharedSecurityProvider sharedSecurityProvider;
}

isValidStakeAmount:

Verifies if an operator has the required minimum shares for given strategies.

Parameter
Type
Description

_operator

address

Operator address

_minStakePerStakingContracts

StrategyShares[]

Strategy shares

_avsGovernance

address

AVS governance address

getOperatorRestakedStrategies

This function returns Operator shares for specific strategies.

Parameter
Type
Description

_operator

address

Operator address

_allStrategies

address[]

Strategy addresses

_avsGovernance

address

AVS governance address

_getEigenLayerStakes

Fetches the total stake and the slashable portion of stake for an Operator on EigenLayer, based on their allocation status.

function _getEigenLayerStakes(
    address _avsGovernance,
    address _operator,
    address _stakingContract,
    OperatorSet memory _operatorSet
) internal view returns (uint256 slashableStake, uint256 nonSlashableStake)
Parameter
Type
Description

_avsGovernance

address

The address of the AVS Governance contract.

_operator

address

Operator address

_stakingContract

address

The EigenLayer staking contract

_operatorSet

OperatorSet

Set of AVS governance address and Operator Set Id

Returns

  • slashableStake: Amount of stake currently slashable for the Operator.

  • nonSlashableStake: Remainder of the total stake that is not currently slashable.

Last updated