For the complete documentation index, see llms.txt. This page is also available as Markdown.

集成

将 Rewards 活动连接到 Decentraland 场景或外部服务器,以自动发放可穿戴物品和表情动作。

在创建并配置活动并确保其拥有足够的库存以提供奖励之后,下一步是将该活动连接到一个奖励触发器。此触发器可以是场景、任务或外部服务器。本节将说明如何通过不同方式与 Rewards 集成。

从场景发放奖励

奖励可以直接集成到 Decentraland 场景中,但这种方式存在一些风险。由于逻辑嵌入在用户可访问的场景代码中,因此不建议用于铸造稀有度低于 [EPIC](查看文档#rarity)。

请记住,技术知识足够丰富且有决心的用户可能会绕过验证码等安全措施,修改他们的 IP 地址,并铸造所有可用物品,然后再将其出售到市场上。对此的主要防护措施是确保物品供应充足,这样每个人都有公平的机会获得奖励。

推荐的发放器标志

建议使用以下发放器配置,以降低在这种情况下被利用的风险:

  • [限制分配](查看文档#limit-assignments)

  • [受益人签名](查看文档#beneficiary-signature)

  • [验证码保护](查看文档#captcha-protection)

  • [已连接到 Decentraland](查看文档#connected-to-decentraland)

  • [Decentraland 内部位置](查看文档#position-inside-decentraland)(如果它适用于你的使用场景)

示例

import { getPlayer } from '@dcl/sdk/src/players'
import { signedFetch } from '@decentraland/SignedFetch'
import { getRealm } from '~system/Runtime'

export function main() {
  // 1. 获取验证码挑战以展示给用户
  const request = await fetch(`https://rewards.decentraland.org/api/captcha`, {
    method: 'POST',
  })
  const captcha = await request.json()

  // 2. 向玩家展示验证码以完成 - 参见 studios.decentraland.org/resources 中的示例

  // 3. 获取用户数据
  const user = getPlayer()

  // 4. 获取当前 realm
  const realmInfo = await getRealm({})

  // 5. 发送请求以分配一个 wearable/emote
  const assignRequest = await signedFetch('https://rewards.decentraland.org/api/rewards', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      campaign_key: '[DISPENSER_KEY]', // 发放器密钥
      beneficiary: user.userId, // 以太坊地址
      catalyst: realmInfo.baseUrl, // catalyst 域名
      captcha_id: captcha.data.id, // "9e6b2d07-b47b-4204-ae87-9c4dea48f9b7"
      captcha_value: '[CAPTCHA_VALUE]', // "123456"
    }),
  })

  const reward = await assignRequest.json()

从 Decentraland 任务发放奖励

你可以轻松将 Rewards 与 Decentraland 任务集成,如果你想在用户完成任务后奖励他们,这非常理想。

推荐的发放器标志

建议使用以下发放器配置,以降低在这种情况下被利用的风险:

  • [限制分配](查看文档#limit-assignments)(如果它适用于你的使用场景)

启用其他任何标志都会导致你的集成失败,请避免使用它们。

示例

要将你的任务与 Rewards 服务集成,你只需要一个发放器密钥并且 配置一个 webhook 来发放奖励。

从自定义服务器发放奖励

你可以直接从你的服务器集成 Rewards,这非常适合在铸造物品之前执行额外检查。另一个优势是,与场景代码不同,你的服务器代码可能不是公开的,这会让用户更难发现并利用漏洞。

推荐的发放器标志

建议使用以下发放器配置,以降低在这种情况下被利用的风险:

  • [限制分配](查看文档#limit-assignments)(如果它适用于你的使用场景)

启用其他任何标志都可能使你的集成变得复杂,或者根据你的使用场景,甚至可能导致其失败。因此,除非有明确需要,否则不建议使用它们。不过,你也许会想了解它们可能带来的好处。

示例

最后更新于