Legacy Automate Migration Guide

Deprecation Notice: Gelato Functions is set to replace Automate, providing enhanced automation capabilities, access to off-chain data, unified payments across networks, and a performance boost. Migrate your tasks to Gelato Functions before Legacy Automate's end of life on June 30th, 2024 for uninterrupted service.

Gelato Functions replacing Automate

With the launch of Gelato Functions we are deprecating our Automate service. The key benefits of Gelato Functions include:

  • Access off-chain data & computation via Typescript Functions

  • Unified payments across all networks via 1Balance

  • Listen to on-chain Events to trigger your Functions

  • Support for many more networks

  • Much higher performance and lower latencies

  • Enhanced UX, DevX and analytics

To get these benefits users need to migrate their tasks from Automate (now Legacy Automate) to Gelato Functions.

When should I migrate?

Legacy Automate will be deprecated 30th June 2024 so users should plan to migrate to Functions before this date.

Legacy Automate: Key Changes

Cost changes

Gelato Functions unifies your transaction costs across all networks using our 1Balance system. For each execution of your target contract you will be billed the USDC equivalent of your gas costs plus a fee - the fee varies depending on the network and your subscription plan. Fees will be applied to all Automate Legacy transactions from 1st January 2024. These fees will be 50% higher than those on Gelato Functions.

Task Expiries

As part of the migration we are going to introduce task expiries from 1st December 2023 - any Legacy Automate tasks that meet the following conditions will be automatically cancelled.

Testnets

Tasks expire after 30 days without any execution

Mainnets

Tasks expire after 120 days without any execution

If you have any concerns about these limits please do not hesitate to reach out to us.

Naming Updates

We have updated what some things are called in Functions, but they are directly equivalent. The most notable one is that Resolvers are now called Solidity Functions - the smart contract code that determines if your target contract can be executed and with what payload. The flow for creating a new task has been changed to follow more of an “if this then that” pattern and allows you to also use Typescript functions that tap into off-chain APIs to also determine when target contracts should be executed and with what payloads.

How do I migrate a task from Legacy Automate to Functions?

The exact steps you need to go through will depend on the precise characteristics of your existing tasks. Here is some general guidance - if you have any questions or require further support please contact us for assistance.

1. Smart contract changes (optional)

  • If you are inheriting AutomateReady or OpsReady in your target contracts, upgrade them to use the new version of AutomateReady

  • If you are whitelisting Gelato as an restricted msg.sender, update your whitelisting to use your new dedicated msg.sender:

🔐Security Considerations

2. Create your new tasks on app.gelato.network

  • Connect to app.gelato.network to create your new tasks

  • If you were using “Resolver”, they are now called “Solidity functions”

  • if you were using "Predefined Inputs", they are now called "Automated Transactions"

3. Deposit into 1Balance

  • Deposit $USDC into your 1Balance to pay for your transactions across all networks

  • Set up low balance e-mail alert

  • Your tasks are now up and running on the new Gelato Functions

4. Cancel old tasks & withdraw remaining balance

  • Connect to Automate Legacy app and check the modal listing all your current active tasks

  • Manually "Pause" all your old tasks

  • Withdraw your assets on each network where you still hold any balance on Gelato TaskTreasury

Advanced user migration

Creating tasks via Smart Contract

  • Upgrade your Smart Contracts to use the latest version AutomateTaskCreator

  • If you were relying on Time Module, it has been replaced by Trigger Module, which allows similar configurations

function _timeTriggerModuleArg(uint128 _start, uint128 _interval)
  • Note that it’s now required to use the Proxy Module on all your task creations, to enforce stricter security

Creating tasks via SDK

  • Make sure to upgrade to use the latest version of the automate-sdk:

    • yarn add @gelatonetwork/automate-sdk

  • You can create task using the same createTask method

  • if you were using startTime & interval, these options are now available inside the trigger configuration:

trigger: {
  type: TriggerType.TIME; // time interval trigger
  interval: number; // task interval in ms
  start: number; // task start timestamp, task will start immediately if undefined or 0
}

Last updated