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.
_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).
_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.
_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.
_operator
address
Operator address
_minStakePerStakingContracts
StrategyShares[]
Strategy shares
_avsGovernance
address
AVS governance address
getOperatorRestakedStrategies
This function returns Operator shares for specific strategies.
_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)
_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