Perfiles verificables con badges de reputación sobre Nostr. Nunca más un come empanadas se hace pasar por alguien de la comunidad.
En nuestra comunidad pasan scams reales. Los frenamos con identidad Nostr verificable.
Ganá badges con participación real. Construí confianza un evento a la vez.
Prueba de asistencia a eventos de La Crypta. Vinculada al sistema POA-HDMP vía NIP-58.
Dio una charla o taller. Verificado por los organizadores del evento con emisión de badge.
Construyó algo para la comunidad. Código, contenido, herramientas o infraestructura.
Apoyó a La Crypta con zaps de Lightning. Verificado con recibos NIP-57.
Identidad confirmada por verificación DNS NIP-05. La base de la confianza.
Contribuyente de largo plazo con varios badges. Los verdaderos animales cypherpunk de la jungla.
Miembros de la comunidad con distintos niveles de reputación. Detectá al scammer.
Extendé la verificación de identidad y los badges de reputación a Discord. Tres módulos listos para instalar — hacé click en cualquier tarjeta para ver la integración de un solo paso.
Autoverificá usuarios con identidad Nostr. Comandos para revisar perfiles y badges en tiempo real.
Los cambios de badges se sincronizan con Discord al instante. El usuario gana un badge → el bot actualiza los roles automáticamente.
Los nuevos miembros deben verificar su identidad Nostr para acceder al servidor. Control de acceso contra scammers.
La infraestructura de identidad es tan confiable como su endpoint más débil. Auditamos este proyecto antes de entregarlo — cada hallazgo CRITICAL y HIGH fue cerrado.
| # | Ataque | Resultado | Estado |
|---|---|---|---|
| A1 | Registrar sin cabecera Authorization | 401 | ✓ bloqueado |
| A2 | Suplantación de identidad (auth pubkey ≠ body.pubkey) | 403 | ✓ bloqueado |
| A3 | Manipular el body después de firmar | 401 | ✓ bloqueado |
| A4 | Replay (evento con más de 60s) | 401 | ✓ bloqueado |
| A5 | Reclamar nombre reservado (“admin”) | 403 | ✓ bloqueado |
| A6 | displayName demasiado largo (200 chars) | 400 | ✓ bloqueado |
| A7 | CSRF form-encoded (simple request) | 415 | ✓ bloqueado |
| A8 | Flood de IP (12 requests rápidos) | 429 | ✓ throttle aplicado |
| A9 | Nombre empieza con “.” (bypass de regex) | 400 | ✓ bloqueado |
| A10 | pubkey mal formada (no es hex-64) | 400 | ✓ bloqueado |
Se requiere un evento firmado kind 27235 en POST /api/register. El servidor valida la firma, la coincidencia de URL, la coincidencia de método, el hash del body, la ventana de replay de ±60s y que event.pubkey === body.pubkey.
Ventana deslizante: 10 reqs / 10 min por IP y 3 registros / hora por pubkey. Mata el squatting automatizado.
24 handles protegidos: admin, root, lacrypta, satoshi, support, api… lista completa en SECURITY.md.
Regex estricta en el nombre, pubkey hex de 64 chars, displayName ≤ 64 chars, body ≤ 2 KB. Content-Type debe ser application/json.
CSP, HSTS (preload de 2 años), X-Frame-Options DENY, X-Content-Type-Options nosniff, Referrer-Policy, Permissions-Policy. Cache-Control: no-store en todas las respuestas de la API.
nostr-tools fijado a la versión exacta 2.7.2 (sin caret). ADMIN_KEY comparada con crypto.timingSafeEqual. Planeado: bundlear las dependencias cripto con Vite.
Conectá tu identidad Nostr y empezá a construir reputación.
2-32 caracteres, minúscula. Este será tu handle verificable.
Tu NIP-05 se sirve desde /.well-known/nostr.json para que cualquier cliente Nostr te pueda verificar.
Miembros verificados de La Crypta con sus badges de reputación.
Cargando miembros verificados desde los relays de Nostr...
Comprobá si alguien es realmente quien dice ser.