Execution Service

WIP

Overview

The Execution Service is a container with the task execution logic. It acts as a micro-service for task execution and can be written in any code language.

When a task is performed in an AVS, it needs to be executed by the Task Performer and then proposed to the p2p network using an RPC call. The performer is responsible for executing a valid task else it can get slashed.

The RPC call that the Task Performer sends to the Othentic Client:

{
    "jsonrpc": "2.0",
    "method": "sendTask",
    "params": [<proofOfTask>, <data>, <taskDefinitionId>,  <performerAddress>, <signature>]
}
ParameterTypeDescription

string

Any string that the Attesters can use to verify that the Performer has executed its task as expected

data

bytes

Additional data to be added to the consensus

taskDefinitionId

uint16

The ID of specific Task definition

performerAddress

address

The address of the Task Performer

signature

bytes

Task Performer ECDSA signature

Example

You can check the Execution Service example of the Price Oracle repo.

A Price Oracle AVS can, for example, perform a task after every set number of blocks (or for each block). When the task is triggered by its scheduler, the performer node makes a call to the Execution Service, which fetches the price of the requested assets. It will then return a proof of task, which the performer node can gossip in the p2p network until it is attested and submitted as a valid task on-chain.

Last updated