Интеграция с Gelato Network (автоматизация)
Блокчейн не запускает функции по расписанию. Если контракту нужно каждые 24 часа rebalance пул, начислять стейкинг-награды или ликвидировать позиции — кто-то должен вызывать эти функции извне. Gelato Network — децентрализованная сеть ботов (executors), которые мониторят условия и отправляют транзакции автоматически.
Два режима работы
Gelato Automate (старый подход, Ops). Задача создаётся через UI или SDK, executor вызывает указанную функцию по расписанию или условию. Оплата в GELATO (нативный токен) или ETH из баланса контракта.
Web3 Functions (текущий стандарт). Off-chain JavaScript/TypeScript функция, которая запускается на ноде Gelato, может делать HTTP запросы, читать off-chain данные и возвращает calldata для on-chain транзакции. Это решает проблему, когда для принятия решения нужны данные вне чейна — цена на CEX, результат API запроса, данные из The Graph.
Интеграция через AutomateTaskCreator
Наследование от AutomateTaskCreator даёт контракту возможность создавать задачи Gelato программно:
import {AutomateTaskCreator} from "@gelatonetwork/automate-sdk/contracts/AutomateTaskCreator.sol";
contract MyVault is AutomateTaskCreator {
bytes32 public rebalanceTaskId;
constructor(address _automate, address _taskCreatorProxy)
AutomateTaskCreator(_automate, _taskCreatorProxy) {}
function startRebalancing() external onlyOwner {
ModuleData memory moduleData = ModuleData({
modules: new Module[](2),
args: new bytes[](2)
});
moduleData.modules[0] = Module.TIME;
moduleData.modules[1] = Module.PROXY;
moduleData.args[0] = _timeModuleArg(block.timestamp, 1 days);
moduleData.args[1] = _proxyModuleArg();
rebalanceTaskId = _createTask(
address(this),
abi.encodeCall(this.rebalance, ()),
moduleData,
address(0) // платим в ETH из контракта
);
}
function rebalance() external onlyDedicatedMsgSender {
// логика ребаланса
}
}
onlyDedicatedMsgSender — важный modifier: только Gelato может вызвать эту функцию, не произвольный адрес.
Gasless выполнение (Relay)
Gelato Relay позволяет пользователям отправлять транзакции без ETH — Gelato оплачивает газ, а контракт компенсирует это в ERC-20 токенах через _transferRelayFee():
import {GelatoRelayContextERC2771} from "@gelatonetwork/relay-sdk/contracts/GelatoRelayContextERC2771.sol";
contract GaslessNFT is GelatoRelayContextERC2771 {
function safeMint(address to) external onlyGelatoRelayERC2771 {
_mint(to, tokenId++);
_transferRelayFee(); // оплачиваем Gelato из баланса контракта
}
}
ERC2771 часть: пользователь подписывает транзакцию off-chain, Gelato пересылает её через trusted forwarder, контракт видит реального _msgSender() через ERC-2771 контекст.
Web3 Functions для off-chain логики
Скрипт на TypeScript запускается на нодах Gelato и может:
import { Web3Function, Web3FunctionContext } from "@gelatonetwork/web3-functions-sdk";
Web3Function.onRun(async (context: Web3FunctionContext) => {
const { multiChainProvider, secrets } = context;
const provider = multiChainProvider.default();
// Получаем данные с внешнего API
const response = await fetch("https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd");
const { ethereum } = await response.json();
if (ethereum.usd < 2000) {
const contract = new ethers.Contract(VAULT_ADDRESS, VAULT_ABI, provider);
const callData = contract.interface.encodeFunctionData("triggerEmergency", []);
return { canExec: true, callData: [{ to: VAULT_ADDRESS, data: callData }] };
}
return { canExec: false, message: "Price above threshold" };
});
Оплата и экономика
Gelato берёт комиссию поверх стоимости газа. Для Automate: баланс пополняется в ETH на контракте или в Gelato Treasury. Для Relay: комиссия ~10% от gas cost. Для Web3 Functions: дополнительная плата за вычисления.
На высоконагруженных задачах (ликвидации, арбитраж) Gelato конкурирует с Chainlink Automation и кастомными keeper-ботами. Для задач с умеренной частотой (раз в час — раз в день) Gelato оптимален по соотношению простоты интеграции и стоимости.
Сроки
Базовая интеграция Automate с time-based задачей: 1 день. Web3 Function с off-chain логикой и Relay: 2-3 дня. Тестирование на testnet (Gelato поддерживает Sepolia, Mumbai/Amoy, Arbitrum Goerli) включено в оценку.
Стоимость рассчитывается после уточнения частоты задач и сложности off-chain логики.







