如何使用 Gelato 自动化智能合约执行

  • gelato
  • 发布于 2023-04-25 11:14
  • 阅读 20

本文介绍了如何使用 Gelato 平台自动化智能合约的执行。用户可以通过部署一个 resolver 合约来定义执行条件,当条件满足时,Gelato 会自动调用目标合约的特定函数。文章还详细说明了如何在 Gelato Automate UI 上创建任务,配置 resolver 地址和执行参数,并存入资金。

如果你曾经尝试创建智能合约,那么你就知道无法对其进行编程,使其基于特定条件自行执行特定功能,例如在以太坊价格飙升时启动卖单。

要实现这一点,你需要 BYOB(构建你自己的机器人)来跟踪链上活动,然后相应地传输交易。但这需要大量的精力和开发者资源,这些资源可以更好地用于增强你的智能合约。你还必须在服务器上运行你的机器人并每天进行监督,这不是最有趣的体验。

幸运的是,如果你是 Gelato 的用户,那么以上所有内容都不需要你担心!

让我们开始

假设你已经部署了一个智能合约,并且你希望 Gelato 在特定时间调用它。你所需要做的就是部署一个解析器(resolver)合约,它会告诉 Gelato。

“嘿,每小时调用这里的这个函数”

这是一个函数 buy() 的例子,我希望 Gelato 来调用它。这个函数通过 Uniswap V2 购买 ETH。

uint256 public lastBought;
function buy(
    uint256 amountIn,
    uint256 amountOutMin,
    address[] calldata path,
    address to,
    uint256 deadline
  ) external {
    require(block.timestamp >= lastBought + 1 hours);
    IERC20(path[0]).approve(address(router), amountIn);
    router.swapExactTokensForETH(
           amountIn,
           amountOutMin,
           path,
           to,
           deadline
    );
    lastBought = block.timestamp;
  }

下面是一个解析器合约的例子,当超过 lastBought 至少一个小时后,checker() 返回 true。这会提示 Gelato 调用上面提到的 buy() 函数。

contract Resolver {
  address public immutable owner;
  ISwap public immutable swap;
  address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
  address USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7;
constructor(address _swap) public {
    owner = msg.sender;
    swap = ISwap(_swap);
  }
function checker()
    external
    view
    returns (bool canExec, bytes memory execPayload)
  {
    address[] memory path = new address[](2);
    path[0] = USDT;
    path[1] = WETH;
    uint256 deadline = block.timestamp + 10 minutes;
    uint256 lastBought = swap.lastBought();
    if (lastBought >= 1 hours) {
       bytes4 selector =
       bytes4(keccak256(
           "buy(uint256,uint256,address[],address,uint256"));
       execPayload = abi.encodeWithSelector(
         selector,
         1000 ether,
         0,
         path,
         owner,
         deadline
       );
     canExec = true;
     return (canExec, execPayload);
    }
  }
}

Gelato 在每个区块(block)离线调用此 checker()。如果 canExec 返回 true,执行者(executor)将发送一个带有 execPayload 的交易。

点击这里获取关于如何编写解析器合约的更多信息

任务创建

一旦你部署了你的解析器合约,你就已经完成了一半!现在你需要提交一个任务。Gelato 通过 Gelato Automate UI 使提交任务变得非常容易。

  1. 访问 Gelato Automate 网页

  2. 填写你的执行地址

  • 填写包含你要 Gelato 调用的函数的智能合约地址。
  • 选择要自动化的函数
  • 选择 “Dynamic inputs via Resolver”
  1. 填写解析器地址
  • 填写之前部署的你的解析器的地址。
  • 选择 Gelato 应该调用的函数来检查是否应该执行该任务。
  1. 存入资金
  • 选择使用 “Gelato Balance” 支付
  • 存入一些资金,这些资金将用于支付执行者(executor)来执行你的交易。
  1. 命名你的任务

  2. 创建任务 然后你将被重定向到你的任务页面。

在这里你可以找到你的任务的详细信息。 所有的 Gelato 执行也会出现在这里。

全部完成!

Gelato 现在将监控你的智能合约并在满足你指定的条件时执行。

这里是每个支持的网络的合约地址,因此你可以直接开始使用!

关于 Gelato

Gelato 是一个 Web3 云平台,使开发者能够创建自动化的、无 gas 的、以及能感知链下的 Layer 2 链和智能合约。超过 400 个 web3 项目多年来依赖 Gelato 来促进 DeFi、NFT 和游戏中的数百万笔交易。

  • Gelato RaaS: 一键部署你自己的定制 ZK 或 OP L2 链,内置原生账户抽象和所有 Gelato 中间件。

  • Web3 Functions: 通过运行去中心化的云函数,将你的智能合约连接到链下数据和计算。

  • Automate: 通过以可靠、开发者友好和去中心化的方式自动执行交易来自动化你的智能合约。

  • Relay: 通过一个易于使用的 API,让你的用户可以访问可靠、强大且可扩展的无 gas 交易。

  • Account Abstraction SDK: Gelato 已与 Safe 合作,构建一个完善的账户抽象 SDK,结合了 Gelato 行业最佳的无 gas 交易能力和行业最安全的智能合约钱包。

订阅我们的新闻通讯并打开你的 Twitter 通知,以获取关于 Gelato 生态系统的最新更新! 如果你有兴趣成为 Gelato 团队的一员并共同构建互联网的未来,请浏览空缺职位并在此处申请 here

  • 原文链接: gelato.cloud/blog/automa...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
gelato
gelato
The Web3 Developer Cloud. Launch your own chain via our #1 Rollup-As-A-Service platform.