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

Integraciones

Conecta una campaña de Rewards a una escena de Decentraland o a un servidor externo para conceder wearables y emotes automáticamente.

Después de crear y configurar una campaña y asegurarte de que tenga stock suficiente para entregar recompensas, el siguiente paso es conectar la campaña a un trigger de recompensas. Este trigger puede ser una Scene, una Quest o un servidor externo. Esta sección explica cómo se pueden realizar diferentes integraciones con Rewards.

Otorgar recompensas desde una escena

Las recompensas se pueden integrar directamente en las scenes de Decentraland, pero este enfoque conlleva algunos riesgos. Dado que la lógica está incrustada en el código de la scene al que los usuarios pueden acceder, no se recomienda para mintear ítems con una rareza inferior a [EPIC](Ver documentación#rarity).

Ten en cuenta que los usuarios determinados con suficientes conocimientos técnicos podrían eludir medidas de seguridad como los captchas, cambiar sus direcciones IP y mintear todos los ítems disponibles, que luego podrían vender en el Marketplace. La principal protección contra esto es asegurar un suministro suficiente de ítems, de modo que todo el mundo tenga una oportunidad justa de recibir una recompensa.

Flags recomendadas del dispenser

Las siguientes configuraciones del dispenser se recomiendan para reducir el riesgo de exploits en este escenario:

Ejemplo

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

export function main() {
  // 1. Obtener el desafío captcha para mostrárselo al usuario
  const request = await fetch(`https://rewards.decentraland.org/api/captcha`, {
    method: 'POST',
  })
  const captcha = await request.json()

  // 2. Mostrar el captcha para que el jugador lo complete - Ver ejemplo en studios.decentraland.org/resources

  // 3. Obtener datos del usuario
  const user = getPlayer()

  // 4. Obtener el realm actual
  const realmInfo = await getRealm({})

  // 5. Enviar la solicitud para asignar un 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]', // clave del dispenser
      beneficiary: user.userId, // dirección de Ethereum
      catalyst: realmInfo.baseUrl, // dominio del catalyst
      captcha_id: captcha.data.id, // "9e6b2d07-b47b-4204-ae87-9c4dea48f9b7"
      captcha_value: '[CAPTCHA_VALUE]', // "123456"
    }),
  })

  const reward = await assignRequest.json()

Otorgar recompensas desde Decentraland Quests

Puedes integrar fácilmente Rewards con Decentraland Quests, esto es ideal si quieres recompensar a los usuarios por completar una quest.

Flags recomendadas del dispenser

Las siguientes configuraciones del dispenser se recomiendan para reducir el riesgo de exploits en este escenario:

Cualquiera de las demás flags hará que tu integración falle; evita usarlas.

Ejemplo

Para integrar tu Quest con el servicio Rewards, solo necesitas una clave del dispenser y configurar un webhook para otorgar recompensas.

Otorgar recompensas desde un servidor personalizado

Puedes integrar Rewards directamente desde tu servidor, lo cual es ideal para realizar comprobaciones adicionales antes de mintear ítems. Una ventaja adicional es que, a diferencia del código de una scene, el código de tu servidor podría no ser público, lo que hace más difícil que los usuarios descubran y exploten vulnerabilidades.

Flags recomendadas del dispenser

Las siguientes configuraciones del dispenser se recomiendan para reducir el riesgo de exploits en este escenario:

Habilitar cualquiera de las demás flags podría complicar tu integración o, según tu caso de uso, incluso hacer que falle. Por lo tanto, no se recomienda usarlas a menos que exista una necesidad específica. Sin embargo, quizá quieras explorar sus posibles beneficios.

Ejemplo

Última actualización