解锁实时事件驱动的Web3函数执行

  • gelato
  • 发布于 2023-11-02 22:24
  • 阅读 25

Gelato推出了Web3 Functions的更新,允许开发者通过链上事件触发来执行相应的操作,而无需像以前那样定期检查链上事件。这种新方法可以实现更低的延迟、更高的吞吐量和更强的鲁棒性,适用于Perpetual Protocol、Dynamic NFTs、Off-chain Data和On-chain Alerts等应用场景。

解锁实时事件驱动的 Web3 函数执行

概要

永远不要错过链上的任何事件!

通过这个新的 Web3 函数更新,开发者可以轻松地实时响应链上事件;

  • Gelato 的 Web3 函数 现在能够立即响应链上事件,优于事件轮询所需的持续检查。
  • 低延迟与并行运行、强大的事件监听器、快速响应时间和通过链上事件发出时触发函数的高效资源使用。
  • 通过实时警报优化永续交易,为智能合约启用链下数据查询,并提供即时链上警报和通知。
  • 使用 Web3FunctionEventContext 简化了链上事件处理的实现,从而可以快速进行事件日志解析和处理。

事件触发器介绍

事件驱动的 Web3 函数检测智能合约事件的发生并立即响应以执行相应的操作。

以前,使用事件轮询的 Web3 函数以预定的间隔检查链上事件。 虽然这种方法具有一定的有效性,但效率低下,并且通常导致响应缓慢。 即使没有发出相关事件,系统也会不断检查。

随着最近在 Gelato 的 Web3 函数中引入了事件触发器,情况发生了重大变化。 系统不再依赖定期检查,而是在区块链上检测到特定事件后立即响应。

让我们比较一下这两种方法:

主要优势

高吞吐量:

默认情况下,Gelato 的 Web3 函数以并行模式运行。 它们可以同时监听多个事件,并且每个检测到的事件都会触发一个单独的 Web3 函数运行。 专为链上活动激增而设计,它们每秒最多可处理 15 次运行。

鲁棒性:

事件触发的 Web3 函数带有强大的内置事件监听器。 这使开发者可以专注于应用程序开发,而不必担心错过事件、区块确认或重组。

低延迟:

借助这种新方法,Gelato 的 Web3 函数会在检测到事件后立即执行,从而消除了之前事件轮询中出现的延迟。

资源优化: Web3 函数仅在发生事件时运行,从而减少了不必要的运行并优化了计算成本。

用例

永续协议:

具有事件触发器的 Gelato 的 Web3 函数为永续合约交易带来了变革性的变化。 现在可以即时响应诸如清算警报和保证金维护之类的关键事件。 交易员使用这些触发器来增强他们的策略,以获取实时价格警报并利用套利机会。

动态 NFT:

通过配置 Web3 函数以触发 NFT Mint 事件来启动具有 AI 生成艺术的动态 NFT。 之后,调用 AI 生成器并在链上显示 NFT。

链下数据的请求/响应:

通过配置 Web3 函数以触发智能合约请求事件,为你的智能合约查询链下数据。 然后,调用外部 API 并在链上中继获取的数据。

链上警报和通知:

通过设置你的 Web3 函数以触发所需的智能合约事件来监视特定的链上操作。 通过 Webhooks 将通知发送到 Slack、Discord 甚至电子邮件之类的平台,并与 PagerDuty 或 OpsGenie 之类的警报系统集成。

实施

通过 2 个简单的步骤实现事件驱动的 Web3 函数:

1. Web3 函数任务中的更改

要启用事件驱动的 Web3 函数,请使用新的 Web3FunctionEventContext 替换传统的 Web3FunctionContext。 这个新的上下文包含一个日志属性,该属性包含完整的事件日志,你可以对其进行解析和处理。

import { Interface } from "@ethersproject/abi";
import { Web3Function, Web3FunctionEventContext } from "@gelatonetwork/web3-functions-sdk";

const NFT_ABI = [\
  "event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)",\
];

Web3Function.onRun(async (context: Web3FunctionEventContext) => {
  // Get event log from Web3FunctionEventContext
  const { log } = context;

  // Parse your event from ABI
  const nft = new Interface(NFT_ABI);
  const event = nft.parseLog(log);

  // Handle event data
  const { from, to, tokenId } = event.args;
  console.log(`Transfer of NFT #${tokenId} from ${from} to ${to}`);

  return { canExec: false, message: `Event processed ${log.transactionHash}` };
});
2. 创建任务
  1. 前往 https://beta.app.gelato.network/
  2. 选择“事件触发器”选项。
  3. 输入负责发出要监听的事件的合约地址。
  4. 从预填充的 ABI 列表中选择你希望监视的特定事件。 如果你的合约未经过验证,你也可以使用自定义 ABI。
  5. (可选)设置你自己的区块确认延迟,或者将其留空,以便 Web3 函数在事件发生后立即触发。

查看事件日志

瞧! 设置好任务后,你可以通过检查任务日志来监视其执行情况。 这些日志仅在发出你选择的链上事件时才会显示新的运行记录。

关于 Gelato

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

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

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

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

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

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

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

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

0 条评论

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