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:
[Limitar asignaciones](Ver documentación#limit-assignments)
[Firma del beneficiario](Ver documentación#beneficiary-signature)
[Protección captcha](Ver documentación#captcha-protection)
[Conectado a Decentraland](Ver documentación#connected-to-decentraland)
[Posición dentro de Decentraland](Ver documentación#position-inside-decentraland) (si aplica a tu caso de uso)
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:
[Limitar asignaciones](Ver documentación#limit-assignments) (si aplica a tu caso de uso)
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:
[Limitar asignaciones](Ver documentación#limit-assignments) (si aplica a tu caso de uso)
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