Integraciones
Después de crear y configurar una campaña y asegurarte de que tiene suficiente stock para otorgar 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 pueden integrarse 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 mintear ítems con una rareza menor que [EPIC](Ver documentación#rarity).
Ten en cuenta que usuarios determinados con suficiente conocimiento técnico podrían potencialmente eludir medidas de seguridad como captchas, cambiar sus direcciones IP y mintear todos los ítems disponibles, que luego podrían vender en el Marketplace. La salvaguarda principal contra esto es asegurar una oferta suficiente de ítems, para que todos tengan una oportunidad justa de recibir una recompensa.
Flags recomendadas para el dispenser
Se recomiendan las siguientes configuraciones del dispenser para reducir el riesgo de exploits en este escenario:
[Limit Assignments](Ver documentación#limit-assignments)
[Beneficiary Signature](Ver documentación#beneficiary-signature)
[Captcha Protection](Ver documentación#captcha-protection)
[Connected to Decentraland](Ver documentación#connected-to-decentraland)
[Position inside 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 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]', // clave del dispenser
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()Otorgar recompensas desde una Decentraland Quests
Puedes integrar fácilmente Rewards con la Decentraland Quests, esto es ideal si quieres recompensar a los usuarios por completar una quest.
Flags recomendadas para el dispenser
Se recomiendan las siguientes configuraciones del dispenser para reducir el riesgo de exploits en este escenario:
[Limit Assignments](Ver documentación#limit-assignments) (si aplica a tu caso de uso)
Cualquiera de las otras flags hará que tu integración falle, evita usarlas.
⚠️ La clave del dispenser debe mantenerse en secreto, por lo que nunca debes exponerla al usuario en ningún momento.
Ejemplo
Para integrar tu Quest con el servicio Rewards, solo necesitas una clave de 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 verificaciones adicionales antes de mintear ítems. 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.
Flags recomendadas para el dispenser
Se recomiendan las siguientes configuraciones del dispenser para reducir el riesgo de exploits en este escenario:
[Limit Assignments](Ver documentación#limit-assignments) (si aplica a tu caso de uso)
Habilitar cualquiera de las otras flags 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, es posible que desees explorar sus beneficios potenciales.
⚠️ La clave del dispenser debe mantenerse en secreto, por lo que nunca debes exponerla al usuario en ningún momento.
Ejemplo
Última actualización