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

Integrações

Depois de criar e configurar uma campanha e garantir que ela tenha stock suficiente para fornecer recompensas, o próximo passo é conectar a campanha a um trigger de recompensas. Esse trigger pode ser uma Scene, uma Quest ou um servidor externo. Esta seção explica como diferentes integrações com Rewards podem ser feitas.

Conceder recompensas a partir de uma scene

As Rewards podem ser integradas diretamente nas scenes do Decentraland, mas essa abordagem traz alguns riscos. Como a lógica está incorporada no código da scene ao qual os usuários podem ter acesso, não é recomendada para minting de itens com raridade inferior a [EPIC](Ver documentação#rarity).

Tenha em mente que usuários determinados com conhecimento técnico suficiente poderiam potencialmente contornar medidas de segurança como captchas, alterar seus endereços IP e mintar todos os itens disponíveis, que depois poderiam vender no marketplace. A principal proteção contra isso é garantir uma oferta suficiente de itens, para que todos tenham uma chance justa de receber uma recompensa.

Flags recomendadas do dispenser

As configurações de dispenser a seguir são recomendadas para reduzir o risco de exploits neste cenário:

Exemplo

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

export function main() {
  // 1. Obtenha o desafio de captcha para mostrar ao usuário
  const request = await fetch(`https://rewards.decentraland.org/api/captcha`, {
    method: 'POST',
  })
  const captcha = await request.json()

  // 2. Exiba o captcha para o player completar - Veja o exemplo em studios.decentraland.org/resources

  // 3. Obtenha os dados do usuário
  const user = getPlayer()

  // 4. Obtenha o realm atual
  const realmInfo = await getRealm({})

  // 5. Envie a request para atribuir um 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]', // chave do dispenser
      beneficiary: user.userId, // endereço Ethereum
      catalyst: realmInfo.baseUrl, // domínio do catalyst
      captcha_id: captcha.data.id, // "9e6b2d07-b47b-4204-ae87-9c4dea48f9b7"
      captcha_value: '[CAPTCHA_VALUE]', // "123456"
    }),
  })

  const reward = await assignRequest.json()

Conceder recompensas a partir de uma Quest do Decentraland

Você pode integrar facilmente Rewards com as Quests do Decentraland, isso é ideal se você quiser recompensar usuários por completar uma quest.

Flags recomendadas do dispenser

As configurações de dispenser a seguir são recomendadas para reduzir o risco de exploits neste cenário:

  • [Limitar Atribuições](Ver documentação#limit-assignments) (se isso se aplicar ao seu caso de uso)

Qualquer outra das flags fará com que sua integração falhe; evite usá-las.

Exemplo

Para integrar sua Quest com o serviço Rewards, você só precisa de uma chave de dispenser e de configurar um webhook para conceder recompensas.

Conceder recompensas a partir de um servidor personalizado

Você pode integrar Rewards diretamente a partir do seu servidor, o que é ideal para realizar verificações extras antes de mintar itens. Uma vantagem adicional é que, ao contrário do código da scene, o código do seu servidor pode não ser público, tornando mais difícil para os usuários descobrir e explorar vulnerabilidades.

Flags recomendadas do dispenser

As configurações de dispenser a seguir são recomendadas para reduzir o risco de exploits neste cenário:

  • [Limitar Atribuições](Ver documentação#limit-assignments) (se isso se aplicar ao seu caso de uso)

Habilitar qualquer uma das outras flags pode complicar sua integração ou, dependendo do seu caso de uso, potencialmente fazer com que ela falhe. Portanto, não é recomendável usá-las, a menos que haja uma necessidade específica. No entanto, talvez você queira explorar seus possíveis benefícios.

Exemplo

Atualizado