DEFI - Web3函数 - Gelato

  • gelato
  • 发布于 2023-03-02 14:47
  • 阅读 33

Web3 Functions 是 Gelato 推出的一种新的范例,它使开发人员能够构建完全无服务器的 web3 应用程序。通过 Web3 Functions,开发人员能够使用强大、可扩展且信任最小化的基础设施来增强他们的智能合约,该基础设施可以为他们的所有链下服务器组件提供支持,而不会牺牲去中心化。

博客 — 更新

Web3 函数介绍:构建 Serverless Web3 应用

Web3 函数 是一种新的范例,使开发者能够构建完全 serverless 的 web3 应用,而无需创建单点故障,也无需信任中心化方来运行正确的计算。

可以将它们视为去中心化的云函数,使 web3 开发者能够:

  • 将他们的智能合约连接到链下数据
  • 确保这些数据准确且经过多方签署
  • 运行链下计算
  • 在所有主要区块链上执行交易
  • 发送由事件或状态更改触发的通知
  • 索引和存储数据,例如事件和交易收据

我们推出 Web3 函数的目标是为开发者提供一种 web3 原生的替代方案,以在 AWS 或 Google Cloud 等中心化平台上运行其服务器端逻辑。使用 Web3 函数,开发者能够使用强大、可扩展且信任最小化的基础设施来增强他们的智能合约,该基础设施可以支持他们所有的链下服务器组件,而不会牺牲去中心化。

Web3 函数如何工作

编写 Web3 函数与编写传统的云函数非常相似,只是代码存储在 IPFS 上而不是中心化服务器上,并由 Gelato 节点而不是中心化云提供商运行。

要创建 Web3 函数,开发者可以使用此模板以 Typescript 代码编写他们的逻辑(例如,调用任意 API 并在结果上运行计算)。开发者可以在本地运行他们的 Web3 函数,并在测试后将其部署到 IPFS 并接收一个 IPFS ID。然后,可以指示 Gelato 节点根据某些触发器代表他们运行 Web3 函数,该函数可以通过该 ID 识别。Web3 函数可以在设定的时间间隔、当某个链上事件已发出或通过 Webhook 触发。

一旦调用 Web3 函数(例如,每分钟一次),Gelato 节点运营商将运行其逻辑并就应用于执行链上交易的数据达成一致。在执行交易之前必须签署数据的 Gelato 节点的数量可以由 Web3 函数创建者定义。某些非确定性数据(例如,价格数据)必须以不同于确定性数据(例如,块 n 处的某个子图)的方式进行聚合和签署。

因此,Web3 函数提供了一种更强大和灵活的方法来使用预言机,将其用途从简单地推送价格提要扩展到以去中心化和可扩展的方式运行 web3 应用程序的整个后端。

Web3 函数的技术特性:

  • 使用 Deno 运行时完全支持 Typescript
  • RPC 提供程序抽象
  • 访问环境变量
  • Web3 函数可以是私有的或公共的(在 IPFS 上)
  • 访问函数内状态管理
  • 灵活的按使用付费定价
  • 高可扩展性
  • 使用链上交易生成 Web3 函数

有关创建 Web3 函数的开发者教程,请查看我们的博客文章此处

Web3 函数的实际应用示例

假设你正在构建一个体育博彩平台,并且你想在某个团队获胜时触发链上反应,以便所有下注获胜的人都能获得报酬。

你无法在智能合约中访问该信息——你需要调用一些 API 来检索该数据,并且根据结果,它将触发在任何 EVM 链上执行交易。Web3 函数允许你将你的应用程序连接到相关的现实世界数据,从而丰富用户体验,并使开发者能够灵活地创建一整类新的 web3 用例。

import { Web3Function, Web3FunctionContext } from "@gelatonetwork/web3-functions-sdk";
import { utils } from "ethers";
import axios from "axios";

Web3Function.onRun(async (context: Web3FunctionContext) => {
  // Call SportsDB API to get game status & score
  // 调用 SportsDB API 获取比赛状态和比分
  const gameId = (context.userArgs.gameId as string) ?? "Argentina_vs_France";
  let gameEvent;
  try {
    const api = `https://www.thesportsdb.com/api/v1/json/3/searchevents.php?e=${gameId}`;
    const res = await axios.get(api);
    gameEvent = res.data.event[0];
  } catch (err) {
    return { canExec: false, message: `SportDb API call failed` };
  }

  // Wait for match to be finished
  // 等待比赛结束
  console.log("Game details:", gameEvent);
  if (gameEvent.strStatus !== "Match Finished") {
    return { canExec: false, message: `Match not finished yet` };
  }

// Prepare the CallData to be executed
  // 准备要执行的 CallData
  const BETTING_CONTRACT_ABI = ["function updateGameScore(string, uint16, uint16)"];
  const bettingInterface = new utils.Interface(BETTING_CONTRACT_ABI);

// Pushing the callData to the callData Array
  // 将 callData 推送到 callData 数组
  const callData = []
  callData.push({
    to: targetContract,
    data:bettingInterface.encodeFunctionData("updateGameScore",[\
      gameId,\
      parseInt(gameEvent.intHomeScore),\
      parseInt(gameEvent.intAwayScore),\
       ])
})
// Publish final score on-chain
  // 在链上发布最终比分

  return {
    canExec: true,
    callData: callData
    };
 });

更多示例:

  • 基于歌曲在 Spotify 等流媒体平台上播放频率的链上音乐版税支付
  • 需要访问 DEX 聚合器端点的自动化交易策略(例如,1inchParaswap
  • 使用真实世界数据解决预测市场结果
  • 推送自定义创建的价格提要,例如 NFT 底价
  • 需要复杂的 AI 算法和链下价格相关数据的流动性管理策略
  • 需要检查大量债务头寸以进行潜在清算的清算系统

关于 Gelato

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

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

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

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

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

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

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

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

0 条评论

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