Mimicry x Gelato:利用实时数据源的去中心化预测游戏

  • gelato
  • 发布于 2023-05-24 15:28
  • 阅读 27

Mimicry 协议是一个去中心化的预测游戏平台,它使用 Gelato 的 Web3 Functions 自动化数据源更新过程,确保参与者可以访问最新的市场信息。Web3 Functions 通过从 NFTGo、Center 和 CoinGecko 等数据源获取数据,并使用共识机制来达成一致的值,从而实现预言机智能合约的自动化更新。

博客 — 用例

Mimicry x Gelato:自动化数据源,实现实时准确性

Mimicry Protocol 是一个去中心化平台,用于创建和参与基于各种市场赔率的预测游戏。

参与者可以押注 NFT 系列的未来价值,该平台利用预言机系统为市场定价提供准确和最新的数据。 通过利用 Gelato 的 Web3 Functions,Mimicry 自动化了数据源更新过程,以确保参与者可以访问当前信息。

Mimicry 如何使用 Web3 Functions?

更新数据源

Mimicry 使用 OpenMarketsOracle 智能合约作为可靠的数据来源。 智能合约中的 updateValue 函数负责更新数据源的存储值。 如果满足特定条件,Gelato Web3 Function 准备调用数据以使用 updateValue 函数更新 OpenMarketsOracle 合约的新值。

跨链克隆器

Mimicry 通过在链之间克隆 OpenMarketsOracle 值来保持其测试网和主网用户界面的同步。 这是通过一个 Web3 Function 实现的,该函数持续监控主网上的“真实来源”智能合约。 每次更新真实来源时,该函数都会将更新后的值克隆到测试网上的 OpenMarketsOracle 智能合约实例。 这种机制可以始终保持数据同步。

集成

此集成的核心在于自动化预言机智能合约,该合约负责获取和更新必要的数据。 这种自动化使 Mimicry 能够专注于为参与者提供公平的预测游戏体验。

为了实现这一点,Gelato 的 Web3 Functions 负责从各种来源获取数据、处理数据并确定是否需要更新。 Gelato Web3 Function 从不同的提供商收集数据,例如 NFTGoCenterCoinGecko,它们都提供有关 NFT 系列、代币和其他相关数据点的信息。

对于 NftGo 提供商:

case "NftGo" /* NFTGO */: {
  const apiKey = await context.secrets.get("NFTGO_API_KEY");
  const newValue2 = await nftCollectionRunner(
    "NftGo" /* NFTGO */,
    apiKey,
    nftCollections,
    currency,
    metric
  );
  nftProviderValues.push(newValue2);
  break;
}

对于 Center 提供商:

case "Center" /* CENTER */: {
  const apiKey = await context.secrets.get("CENTER_API_KEY");
  if (!apiKey)
    throw new Error("CENTER_API_KEY not set in secrets");
  const newValue2 = await nftCollectionRunner(
    "Center" /* CENTER */,
    apiKey,
    nftCollections,
    currency,
    metric
  );
  nftProviderValues.push(newValue2);
  break;
}

对于 CoinGecko 提供商:

case "CoinGecko" /* COINGECKO */: {
  const apiKey = await context.secrets.get("COINGECKO_API_KEY");
  if (!apiKey)
    throw new Error("COINGECKO_API_KEY not set in secrets");
  const newValue2 = await tokenRunner(
    "CoinGecko" /* COINGECKO */,
    apiKey,
    tokens,
    currency
  );
  tokenProviderValues.push(newValue2);
  break;
}

收集数据后,共识机制有助于从不同的数据源中达成一致的值。

const newValue = reachConsensus(nftProviderValues, consensusMechanism).add(reachConsensus(tokenProviderValues, consensusMechanism));

共识机制的目的是减少任何单个数据源的影响,并确保更可靠的值。

计算出新值后,Gelato Web3 Function 会检查它是否与预言机智能合约中存储的当前值不同。

if (newValue.eq(lastOracleValue)) {
  return { canExec: false, message: `The oracle value has not changed` };
}

如果新值不同并且满足某些预定义的条件,则脚本会启动一个更新,将新值更新到预言机智能合约。

return {
  canExec: true,
  callData: destinationOracle.interface.encodeFunctionData("updateValue", [\
    dataFeedId,\
    newValue\
  ])
};

预定义的条件包括 0.25% 的最小加粗值差异阈值和自上次更新以来的 1 小时的最短时间。

if (valueDiffPercent.lte(deviation) && timeDiff.lte(heartbeat)) {
  return { canExec: false, message: `Value difference is less than ${deviation / 100}% and the last update was less than ${heartbeat / 60} minutes ago` };
}

这些条件确保仅在数据发生重大变化且经过合理的时间后才进行更新。 这种自动化流程确保了 Mimicry 预测游戏中用到的数据对参与者来说是最新的和相关的。

通过自动化预言机智能合约更新,Gelato 的 Web3 Functions 和 Mimicry 之间的集成使该平台能够为用户提供无缝和准确的预测游戏体验。

关于 Gelato 的 Web3 Functions

Web3 Functions 为开发者提供了一种创新的解决方案,可以轻松创建无服务器、去中心化的应用程序。 它们实现了智能合约与链下数据的无缝集成,弥合了链上和链下世界之间的差距。

通过利用 Web3 Functions,开发者可以构建稳健、可扩展和去中心化的 web3 应用程序,并由可靠且有弹性的基础设施提供支持。

开始吧!

加入我们的社区并在 Discord 上进行开发者讨论。

Web3 Functions 现在可以在 private beta 中使用。 有关更多信息,请查看 Web3 Functions documentation。 要了解如何编写、测试和部署你自己的 Web3 Functions,请使用此 Hardhat template

请在此处申请,成为第一批测试 Web3 Functions 的人之一!

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

0 条评论

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