Attestation Center
Overview
The Attestation Center is a critical system designed to ensure the integrity and efficiency of AVS operations by bridging off-chain execution with on-chain verification and maintaining a transparent history of all activities involved.
AVS Operators attest to the execution and validity of tasks through the consensus process. Operators claims are being recorded when the network comes to a consensus on arbitrary compute and auxiliary datasets, which allows the AVS to perform various functionalities on top of the verified results.
Contract Address
Run the othentic-cli network contracts
command in your project folder to get the deployed Attestation Center contract address. The same address can also be obtained from the AttestationCenterDeployed
event, emitted in the contracts deployment transaction on L2.
Features
Task submission and verification - allows AVS Operators to submit their off-chain tasks and verify them on-chain, ensuring that the tasks lifecycle can be tracked, recorded, and validated.
Rewards and penalties distribution - stores detailed information about individual Operator work, which allows the AVS protocol to calculate and distribute rewards, slashing, and penalties.
Aggregated view of AVS activities - maintains a comprehensive view and historical data of the AVS footprint, including all activities and tasks performed by the AVS.
Verified auxiliary datasets - As part of the task submission, Operators also agree on auxiliary info about the task and make it available on-chain (via the TaskInfo.data
property). These datasets could be used to trigger AVS logic and complex mechanisms.
For example, zk proofs can use the proofOfTask field for SNARK proofs while using the
TaskInfo.data
for public inputs and outputs to the circuit.For example, price oracle can be used
TaskInfo.data
as a timestamp for fetched data feeds.
Creation of new Tasks - configure diverse types of tasks with different corresponding rewards and penalties. You can also define a policy of bare requirements for specific clusters of operators.
Operator interface - interface for AVS Operators, facilitating their interaction with the system and allowing Operators to manage tasks, view history, and interact efficiently with the AVS.
Core Functions
Task Submission
Pre-Processing (Optional): If an
avsLogic
hook is set, it callsbeforeTaskSubmission
for pre-processing.Task Validation: Validates the task's signature and checks if the task has already been signed.
Signature Verification: Verifies the
taskPerformer
's signature and checks the aggregated signature.Task Definition validation: Validates the task definition and checks for any restrictions.
State Update: Marks the task as "signed" and optionally calls
afterTaskSubmission
for post-processing.
For Performer BLS
signature type
BLS
signature typeTaskInfo.taskDefinitionId
uint16
The ID of specific Task definition
TaskInfo.proofOfTask
string
TaskInfo.data
bytes
Any auxiliary/metadata required by the AVS or the service consumer to be verified
TaskInfo.taskPerformer
address
The address of the Task Performer
TaskSubmissionDetails._isApproved
bool
Indicate if a task has been approved or rejected by the Attesters
TaskSubmissionDetails._tpSignature
uint256[2]
Task Performer BLS signature
TaskSubmissionDetails._taSignature
uint256[2]
Task Attesters BLS aggregated signature
TaskSubmissionDetails._operatorIds
uint256[]
Task Attesters IDs
For Performer ECDSA
signature type
ECDSA
signature typeTaskInfo.taskDefinitionId
uint16
The ID of specific Task definition
TaskInfo.proofOfTask
string
TaskInfo.data
bytes
Any auxiliary/metadata required by the AVS or the service consumer to be verified
TaskInfo.taskPerformer
address
The address of the Task Performer
TaskSubmissionDetails._isApproved
bool
Indicate if a task has been approved or rejected by the Attesters
TaskSubmissionDetails._tpSignature
bytes
Task Performer ECDSA signature
TaskSubmissionDetails._taSignature
uint256[2]
Task Attesters BLS aggregated signature
TaskSubmissionDetails._operatorIds
uint256[]
Task Attesters IDs
Task Definitions
Othentic Stack enables AVS developers to configure tasks for operators to execute, each with customizable parameters, rewards, security levels, number of operators, and operator clusters.
Hooks Configuration
setAvsLogic(IAVSLogic)
_avsLogic
IAvsLogic
AVS Logic Hook contract address
setFeeCalculator
_feeCalculator
IFeeCalculator
The fee calculator contract to be set
updateBLSKey
_blsKey
uint256[]
The new BLS key to be set for the operator
_authSignature
BLSAuthLibrary.Signature
The authentication signature used to verify the update request
setOblsSharesSyncer(address)
Set OBLS shares syncer address.
_oblsSharesSyncer
address
Syncer Address
View Functions
AVS Contracts
internalTaskHandler()
Returns the address of the internal task handler contract
obls()
Returns the address of the on-chain BLS contract
avsTreasury()
Returns the address of the AVS treasury
Tasks
taskNumber()
Returns the total number of tasks
numOfTaskDefinitions()
Returns the total number of task definitions
getTaskDefinitionMinimumVotingPower()
Returns the minimum voting power required for a given task definition
getTaskDefinitionRestrictedAttesters()
Returns the list of restricted attester IDs for a given task definition
getTaskDefinitionMaximumNumberOfAttesters()
Returns the maximum number of attesters allowed for a given task definition
Hooks
avsLogic()
Returns the address of the AVS logic contract
beforePaymentsLogic()
Returns the address of the before-payments logic contract
Operators
numOfTotalOperators
Returns the total number of operators, including unregistered ones
numOfActiveOperators
Returns the number of currently active operators
getActiveOperatorsDetails
Returns an array containing details of all active operators, including their address, ID, and voting power
operatorsIdsByAddress
Returns the operator ID associated with the given operator address
getOperatorPaymentDetail
Returns the payment details for a given operator ID
votingPower(address)
verifyOperatorValidForTaskDefinition
Verifies whether an operator meets the requirements for a given task definition, including minimum voting power.
_operator
address
The address of the operator
_taskDefinitionId
uint16
The ID of the task definition to validate against
Last updated