Defining function inputs

If the function you are automating accepts arguments you have two alternative ways that you can define the arguments.

Pre-define inputs (No resolver)

Pre-defining the function arguments would mean that every time Gelato calls the function, it would be using the same argument.

Dynamic inputs via Resolver

By using a resolver, you can dynamically encode the arguments of the function you are automating.

Here is an example:

This is the function we are automating. increaseCount increases a counter on the smart contract by amount which is the argument.

    function increaseCount(uint256 amount) external {
            ((block.timestamp - lastExecuted) > 300),
            "Counter: increaseCount: Time not elapsed"

        count += amount;
        lastExecuted = block.timestamp;

This resolver returns the data to the function call increaseCount.

    function checker()
        returns (bool canExec, bytes memory execData)
        uint256 lastExecuted = ICounter(COUNTER).lastExecuted();

        canExec = (block.timestamp - lastExecuted) > 300;
        uint256 countToIncrease = ICounter(COUNTER).count * 2

        execPayload = abi.encodeCall(

The increment on each execution is different every time as countToIncrease is different after every execution.

Last updated