Get Started
Requirements
Solvers looking at bidding for this module's user operations must have some bonded atlETH on Atlas, and have their smart contracts ready.
Connect to the operations relay
Find here a complete guide to connect to the operations-relay.
Send solver operations
Once connected to the operations-relay, you will start receiving partial user operations. Filter the incoming operations to the chain ID this module is deployed on, and to the module's contract address, via the partialUserOperation.chainId
and partialUserOperation.control
properties.
In this module, the data
field of user operations is concealed. It provides hints
instead, via the partialUserOperation.hints
field, with the following format.
{
"pools": [
"0x01",
"0x02",
...
]
}
The pools
property holds an array of addresses. These addresses are the liquidity pools where the user's swap will be routed. These are randomized, meaning the first address is not necessarily the first pool that will be hit by the swap.
At that stage, the solver is unable to calculate/simulate the user's swap and decide if it will result in an interesting arbitrage, or not. Not knowing the direction and the amount of the user's swap, the solver is forced to solve this (maybe) opportunity on-chain. This means the solver's contract must be ready to take the provided hints as input, and make the necessary computation to find out if an arbitrage opportunity exists, and in such case, make a profit from it.
Find here an example on how to build a solver operation.