DeHubAbrir DeHub

DeHub › Documentación

Crea una mini app de DeHub — SDK y manifiesto

Una mini app es una web normal que funciona dentro de DeHub. DeHub dibuja la cabecera con el nombre y el dominio real de tu app, y tu app habla con DeHub mediante un pequeño SDK. La misma app funciona en dehub.io y en la app móvil de DeHub sin cambios.

Añade el SDK

<script src="https://riftn.com/sdk/miniapp.js"></script>
<script>
  // Hide the splash screen once your first screen is on.
  dehub.ready();

  const { user, client } = await dehub.context;
  if (user) console.log('Hi', user.handle);
</script>

El SDK añade una variable global, dehub. Cada llamada devuelve una promesa. Fuera de DeHub, dehub.isInDehub() es false y las llamadas fallan, así que puedes usar la misma página por separado.

Métodos del SDK

MétodoQué hace
dehub.ready()Oculta la pantalla de bienvenida.
dehub.close()Cierra tu app.
dehub.contextSe resuelve en { user, location, client }. user es { wallet, handle, displayName, avatarUrl } o null si no hay sesión. client tiene platform (web o mobile), added, locale, theme y el safeAreaInsets.
dehub.getCapabilities()Los métodos que admite este anfitrión.
dehub.auth.getToken()Un token firmado que demuestra quién es el usuario, para tu servidor. La primera llamada pide al usuario que comparta su identidad. Consulta Iniciar sesión con DeHub.
dehub.actions.composePost({ text, embedUrl })Abre el editor de DeHub con tu texto y un enlace opcional de vuelta a tu app (hasta 500 caracteres).
dehub.actions.viewProfile({ handle })Abre un perfil de DeHub.
dehub.actions.viewPost({ id })Abre una publicación de DeHub por su id numérico.
dehub.actions.openUrl(url)Abre un enlace https fuera de tu app.
dehub.actions.addApp()Pide al usuario que añada tu app, lo que también permite notificaciones.
dehub.actions.pay({ amount, memo })Pide al usuario que te pague en DHB. Consulta Pagos.
dehub.haptics.impact(style)Una vibración corta en móviles: light, medium o heavy.
dehub.on(event, fn)Escucha eventos del anfitrión. Devuelve una función que deja de escuchar.

Cuando DeHub rechaza una petición, la promesa falla con un error que tiene un code: signin (el usuario no ha iniciado sesión), rejected (el usuario dijo que no), invalid (parámetros incorrectos), rate_limited, busy (ya hay otra petición abierta), unsupported o failed.

El manifiesto: dehub.json

Publica este archivo en https://your-domain/.well-known/dehub.json. Le dice a la tienda cómo se llama tu app, qué icono mostrar y quién es su dueño.

{
  "app": {
    "name": "Tip Jar",
    "homeUrl": "https://tipjar.example.com/",
    "iconUrl": "https://tipjar.example.com/icon-1024.png",
    "subtitle": "Say thanks in DHB",
    "description": "A tip jar for creators. One tap, paid straight to the creator's wallet.",
    "category": "finance",
    "tags": ["tips", "creators"],
    "splashBackgroundColor": "#0B0B0B",
    "screenshotUrls": ["https://tipjar.example.com/shot-1.png"],
    "webhookUrl": "https://tipjar.example.com/api/dehub-webhook",
    "permissions": ["wallet", "notifications"]
  },
  "ownership": {
    "address": "0xYourDehubWallet",
    "domain": "tipjar.example.com",
    "signature": "0x…"
  }
}
CampoReglas
nameObligatorio. 32 caracteres como máximo.
homeUrlObligatorio. https, en el mismo dominio que el manifiesto.
iconUrlObligatorio. https. Un PNG de 1024×1024 sin transparencia.
subtitle30 caracteres como máximo.
descriptionRecomendado. 170 caracteres como máximo.
categoryRecomendado. Uno de: games, social, finance, utility, productivity, health-fitness, news-media, music, shopping, education, developer-tools, entertainment, art-creativity.
tagsHasta 5. Minúsculas, números o guiones, 20 caracteres cada una.
screenshotUrlsHasta 3 imágenes https.
splashBackgroundColorUn color hexadecimal como #0B0B0B.
webhookUrlhttps. Recibe eventos de webhook.
webhookEventsOpcional. Cualquiera de: tip, follow, mention. Eventos de cuenta de la cartera propietaria, enviados a webhookUrl.
permissionsCualquiera de: wallet, compose, notifications, camera.

Demuestra que el dominio es tuyo

El bloque ownership es la firma de tu billetera de DeHub de este mensaje exacto, donde la segunda línea es tu dominio:

dehub mini app ownership
tipjar.example.com

No tienes que firmarlo a mano. En dehub.io/apps/dev, revisa tu enlace y pulsa Firmar para obtener un bloque listo para pegar. Los pagos van a la billetera que firmó, y solo esa billetera puede actualizar la ficha o crear una clave de notificaciones.

Tarjetas enriquecidas en el feed

Cuando alguien publica tu enlace, DeHub muestra una tarjeta con un botón que abre tu app. Añade esta etiqueta al <head> de la página (también se lee la etiqueta fc:miniapp ):

<meta name="dehub:miniapp" content='{"version":"1","imageUrl":"https://tipjar.example.com/card-3x2.png","button":{"title":"Open Tip Jar","action":{"url":"https://tipjar.example.com/"}}}'>

Pagos en DHB

const { txHash, chainId, amount, receipt } = await dehub.actions.pay({
  amount: 50,          // DHB, whole numbers, up to 1,000,000
  memo: 'Order #1042', // optional, 140 characters
});

// Send `receipt` to your server and verify it there.
await fetch('/api/orders/1042/paid', { method: 'POST', body: receipt });

DeHub muestra la cantidad, tu app y tu billetera, el usuario confirma en su billetera y DeHub comprueba la transferencia en la cadena (Base o BNB Chain) antes de responder. El receipt es un token firmado con typ: "payment", sub (la billetera de quien paga), aud (tu dominio), amount, token, chainId, txHash y el memo. Verifícalo igual que un token de inicio de sesión. Solo las apps registradas con un manifiesto firmado pueden cobrar.

Modo de prueba. Cuando abres tu propia app en DeHub con la cartera propietaria, los pagos son simulados: nada se mueve en cadena, y el recibo y el payment webhook llevan test: true, chainId: 0 y un txHash que empieza por test_. Nunca entregues bienes pagados por un recibo de prueba en producción.

Envío y revisión

Los revisores comprueban que la app carga, funciona en un móvil, coincide con su ficha y no imita a DeHub. Si actualizas el manifiesto y la envías de nuevo, la ficha se actualiza.

Recompensas semanales

Cada noche DeHub clasifica las apps listadas según su uso real: personas con sesión iniciada que vuelven (55%), usuarios semanales (35%), más un impulso en los primeros 14 días de una app. Cada lunes, la parte semanal del fondo mensual de recompensas en DHB se reparte según la puntuación. Para participar, una app necesita una billetera de propietario verificada y al menos 3 usuarios que vuelvan. La clasificación y las recompensas anteriores están en dehub.io/apps/dev.

Blog de DeHub · Inicio de dehub.io