Build an executor bot

This page will go over some concepts which are important when building an EES executor bot, whether it be for profit or to ensure processing of jobs related to your own application. A comprehensive guide is in the works.

Execution module specific logic

Execution modules determine crucial information such as:

  • when the job can be executed

  • who can execute the job

  • how much the execution fee will be

  • the execution fee token

All of these are necessary to avoid failed or unprofitable transactions. Since each execution module contains its own rules, it is important to implement custom logic to each of those you wish to support.

Off-chain computation

All information necessary to determine if a job is profitable and can be executed is stored inside the job's execution module. Execution module data is stored as Param structs inside the params mapping. To avoid unnecessary RPC calls it can be advantageous to query the state once and update it locally by listening for events.

Listen for events

Events emitted from the JobRegistry contract will tell when a job is created, executed or deleted. It is also beneficial to listen for execution module specific events such as if the fee function has changed.

Parallelisation

Since all jobs are stored in the public jobs array, execution can easy be parallelised. The array can simply be split into even sections that each executor bot takes care of.

Executing in batches

The executeBatch function of the Coordinator contract enables you to execute multiple jobs in a single transaction. The transaction will not revert even if one or more single job executions revert. This protects you from having your whole batch reverted because someone executed a single job from that batch faster than you. It also helps you save gas fees and makes transaction nonce management easier.

Correct for execution tax

An executor always has to pay execution tax per execution. It is therefore crucial to implement into your calculations to know when a job is profitable to execute or not. The specific amount is stored on-chain and should be queried in intervals or listen for events to see if this changes.

Strict gas price monitoring

Strict gas price monitoring is crucial to implementing a profitable executor bot. The profit you can make on executing a specific job is primarily depending on the current gas price together with how large the received execution fee is. Having live gas monitoring will give you an edge over other executor bots.

Stay online

As an active executor, you will be designated for rounds once in a while. It is important to stay online and look out for when this happens, since failing to check-in via the executeBatch function on the Coordinator contract will result in slashing.

Last updated