Integraciones

Después de crear y configurar una campaña y asegurarte de que tiene suficiente stock para proporcionar 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.

Conceder recompensas desde una escena

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

Ten en cuenta que usuarios decididos con suficiente conocimiento técnico podrían potencialmente eludir medidas de seguridad como captchas, cambiar sus direcciones IP y acuñar todos los artículos disponibles, que luego podrían vender en el Marketplace. La salvaguarda principal contra esto es asegurar un suministro suficiente de artículos, para que todos tengan una oportunidad justa de recibir una recompensa.

Banderas de dispenser recomendadas

Se recomiendan las siguientes configuraciones de dispenser 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 mostrar 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 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]', // dispenser key
      beneficiary: user.userId, // ethereum address
      catalyst: realmInfo.baseUrl, // catalyst domain
      captcha_id: captcha.data.id, // "9e6b2d07-b47b-4204-ae87-9c4dea48f9b7"
      captcha_value: '[CAPTCHA_VALUE]', // "123456"
    }),
  })

  const reward = await assignRequest.json()

Conceder recompensas desde Decentraland Quests

Puedes integrar Rewards fácilmente con el Decentraland Questsarrow-up-right, esto es ideal si quieres recompensar a los usuarios por completar una quest.

Banderas de dispenser recomendadas

Se recomiendan las siguientes configuraciones de dispenser para reducir el riesgo de exploits en este escenario:

Cualquiera de las otras banderas hará que tu integración falle; evita usarlas.

circle-exclamation

Ejemplo

Para integrar tu Quest con el servicio Rewards, solo necesitas una dispenser key y configurar un webhookarrow-up-right para conceder recompensas.

Conceder recompensas desde un servidor personalizado

Puedes integrar Rewards directamente desde tu servidor, lo cual es ideal para realizar comprobaciones adicionales antes de acuñar (mint) artículos. Una ventaja adicional es que, a diferencia del código de la escena, 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.

Banderas de dispenser recomendadas

Se recomiendan las siguientes configuraciones de dispenser para reducir el riesgo de exploits en este escenario:

Habilitar cualquiera de las otras banderas podría complicar tu integración o, dependiendo de tu caso de uso, potencialmente hacer que falle. Por lo tanto, no se recomienda usarlas a menos que exista una necesidad específica. Sin embargo, podrías querer explorar sus posibles beneficios.

circle-exclamation

Ejemplo

Última actualización