如何在 BuildBear Sandbox 上使用 Gelato Web3 函数

  • BuildBear
  • 发布于 2024-05-31 16:55
  • 阅读 39

本文详细介绍了如何在 BuildBear Sandbox 中创建和部署 Web3 函数,包括选择触发类型、任务类型以及连接智能合约的过程,还对如何创建私有沙箱和安装 Gelato 插件进行了详细指南。最后,文章展示了如何测试 Web3 函数,并创建定时执行任务,涵盖了实现细节及代码示例,适合希望深入了解 Web3 自动化的开发者。

在本教程中,我们将逐步介绍在 BuildBear Sandbox 上部署 Web3 函数、创建自动化任务并执行自动化操作的过程。在教程结束时,你将清楚了解如何创建 web3 函数以及执行自动化任务。

创建 Web3 函数的实施路径

  • 选择触发器类型: 选择触发器类型可以让你选择基于时间、基于事件或每个区块的触发器。在本教程中,我们将使用每分钟执行一次的基于时间触发器。
  • 选择任务类型: 此选项会让你选择 TypeScript 函数、Solidity 函数或交易类型。TypeScript 函数适用于需要链下数据或计算的任务。本教程包含基于 TypeScript 的函数,我们将看到如何从 API 获取数据以执行任务。
  • 创建 Web3 函数任务: 该任务将你的 Web3 函数连接到目标智能合约进行执行。这里设置每一分钟触发一次 web3 函数。
  • 完成和监控任务: 为确保任务完成,可以在资源管理器中监控它们的结果。当任务被执行时,它提供已部署 Web3Function 的 IPFS CID,这使得任何拥有该 CID 的人都可以使用。

开发设置

要开始,我们已经设置了所需函数的 repo。使用下面显示的命令克隆此存储库:

git clone https://github.com/BuildBearLabs/Gelato-Web3-Functions.git
 cd Gelato-Web3-Functions
 yarn install

打开代码编辑器如 VS Code,并浏览文件夹结构。该结构包括三个主要文件夹:

  • script 文件夹包含任务执行脚本。
  • test 文件夹具有测试功能。
  • web3-function 文件夹包含所有 web3 函数。

创建你的私有 Sandbox 并安装 Gelato 插件

访问 BuildBear Home 创建一个新的 Sandbox。如果你是 BuildBear 新用户,请参阅我们的全面文档以注册并创建你的沙盒 这里

点击沙盒仪表板中的插件选项。在所有插件选项卡中,选择并安装 Gelato 插件,安装后它将显示在已安装的插件下。

通过创建一个 .env 文件配置你的本地环境,该文件包含私钥和 RPC URL,格式如下:

### 示例私钥和 RPC
PRIVATE_KEY=670e8f5f57a3bc4bd1869d473591ff10f6cf0d69a254257b61eca3f244ef188
PROVIDER_URLS= https://rpc.buildbear.io/sanam

创建 Web3 函数

现在,我们将看看如何通过创建 Web3 函数自动化其功能的执行。在 web3-functions 文件夹中,有多个文件夹包含各种 Web3 函数。在本教程中,我们将看到如何实现 “advertising-board” 函数。在 web3 函数内,核心功能在 index.ts 中定义。

该脚本定义了一个 Web3Function,它根据链下数据执行链上交易。让我们分解一下脚本:

Web3Function.onRun

  • 当 Web3Function 被触发运行时,会调用此函数。它接受一个带有 context 参数的回调函数,参数类型为 Web3FunctionContext
  • 在此回调函数内部,上下文对象提供对用户参数( userArgs)、存储( storage)和多链提供者( multiChainProvider)的访问。

提供者和广告板合同初始化

  • 默认提供者从多链提供者中获得。
  • 广告板合约的地址从用户参数( userArgs.adBoard)中获取,或者设置为默认值。
  • 从存储中获取最后发布的时间戳,如果不存在,则默认为 0。
  • 使用地址和 ABI 创建广告板合约的实例。

发布消息逻辑

  • 通过在最后发布的时间戳上加 1 小时来计算下一个允许发布的时间。
  • 使用提供者从最新区块中获取当前时间戳。
  • 如果当前时间戳小于下一个发布的时间,则返回一个对象指示执行尚未被允许。
  • 尝试从 ZenQuotes API 中获取随机引用。如果成功,它将使用引用的作者和内容构建消息字符串。
  • 如果引用获取失败,返回一个指示失败的对象。
  • 将当前时间戳存储为存储中的最后发布时间戳。

执行结果

  • 如果允许执行( canExec: true),它将构建调用数据对象的数组。
  • 每个调用数据对象指定合约地址( to)和编码的函数调用数据( data),用于 postMessage 函数,并将生成的消息作为参数。

返回值

  • 该函数返回一个对象,其中 canExec 指示是否允许执行,callData 包含合同函数调用的交易数据。如果不允许执行,它还包括带有解释的 message 字段。

该脚本基本上定义了一个 Web3Function 的逻辑,它定期向广告板智能合约发布随机引用消息,利用链下数据和链上交易。

使用 Web3 Function 命令测试 Web3 函数

快速查看 Web3 函数结果,你可以使用 W3f 命令,而不需要设置测试环境;你需要传递 Web3 函数的路径、我们正在测试的链 ID 以及任何用户参数和存储。

npx w3f test web3-functions/advertising-board/index.ts --logs --chain-id=1

创建和执行任务

我们已经设置了 Web3 函数,现在要执行任务,需要创建在脚本文件夹中定义的 create-task-ad-board.ts 的脚本。

注意:如果 Web3 函数需要任何参数,则应在 web3FunctionArgs 下传递它们。在这种情况下,从广告板 web3 函数的 userArgs.json 文件中复制并粘贴值。

该脚本使用 Automate SDK 和其他库执行以下操作:

实例化提供者和签名者:

  • 使用指定的提供者 URL 创建 JSON-RPC 提供者。
  • 使用提供者查询网络获取链 ID。
  • 使用指定的私钥和提供者创建钱包实例。
  • 用获得的链 ID 和钱包实例化 Automate SDK。

在 IPFS 上部署 Web3Function:

  • 指定包含 Web3Function 代码的 TypeScript 文件的路径(在 “web3-functions/simple” 目录中的 index.ts)。
  • 使用 Web3FunctionBuilder.deploy 方法将 Web3Function 部署到 IPFS。
  • 打印已部署 Web3Function 的 IPFS CID(内容 ID)。

创建 Automate 任务:

  • 使用 automate.createBatchExecTask 方法创建 Automate 任务(批量执行任务)。
  • 提供任务名称、Web3Function 哈希(CID)、Web3Function 参数和触发器设置等详细信息。
  • 该触发器设置为在定期间隔内执行(在这种情况下每 60 秒执行一次)。
  • 等待交易被挖掘并打印任务 ID 及交易哈希。
  • 提供链接以在 Gelato Network 测试应用程序中查看该任务。

该脚本基本上将 Web3Function 部署到 IPFS,并创建一个 Automate 任务,该任务以指定的间隔执行此函数。

要执行脚本,请确保账户中有足够的余额以在网络上执行交易。要为你的账户提供资金,导航到你的沙盒仪表板并使用水龙头转移代币。

使用以下命令运行脚本:

ts-node scripts/create-task-ad-board.ts

该命令将 Web3Function 存储在 IPFS 上,并生成如上所示的任务 ID。

现在,导航至我们的沙盒资源管理器以检查交易。

要取消一个任务,请在脚本文件夹中创建一个名为 'cancel-task.ts' 的新文件,并使用以下脚本取消刚刚执行的任务,通过在 cancelTask 方法中传递你的 TaskID 作为字符串。

要执行上述取消任务,请运行以下命令:

ts-node scripts/cancel-task.ts

结论

祝贺你完成本教程,并在 BuildBear Sandbox 上使用 Gelato Web3 函数探索智能合约自动化的力量! 在模板中探索所有其他 Web3 函数,体验智能合约中自动化的力量,以增强 DApp 能力。利用 BuildBear 沙箱使用 Gelato Web3 函数,使开发人员能够有效地自动化 DApp 上的任务,并在将应用程序部署到生产环境之前识别任何潜在问题或优化需求。

使用 BuildBear 简化 DApp 开发和测试!

BuildBear 赋予你:

  • 即时沙盒与主网状态的复制: 创建即时定制沙盒,复制主网体验,以进行全面测试和模拟实际场景。
  • 专用水龙头: 每个沙盒都有内置水龙头,确保你永远不会缺少测试资金。
  • 飞快的交易速度: 享受闪电般的交易速度,实现顺畅的开发和测试。
  • 用户友好的资源管理器: 使用清晰直观的区块链资源管理器轻松调试。
  • 还有更多功能: 探索全面的工具和插件功能,以简化你的 DApp 开发工作流程。

与我们联系: Twitter | LinkedIn | Telegram | GitHub

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

0 条评论

请先 登录 后评论
BuildBear
BuildBear
https://medium.com/buildbear