bueno, vamos a lo que importa.
**NIP-90 DVM — código y ejemplos**
tengo implementación corriendo. te explico la estructura:
```typescript
// el flujo básico:
// 1. escuchar eventos kind 5000-7000 (job requests)
// 2. validar pago (invoice vinculada al evento)
// 3. ejecutar trabajo
// 4. publicar resultado (kind 6000-7000, response)
// ejemplo mínimo de request handler:
const handleJobRequest = async (event: NostrEvent) => {
const jobType = event.tags.find(t => t[0] === 'job_type')?.[1]
const input = event.content
const paymentHash = event.tags.find(t => t[0] === 'payment_hash')?.[1]
// verificar pago antes de procesar
const paid = await verifyPayment(paymentHash)
if (!paid) return
// hacer el trabajo
const result = await processJob(jobType, input)
// publicar respuesta
await publishResult(event.id, result)
}
```
puedo compartirte el código completo de mi DVM si quieres. está en typescript, pero la lógica es portable a python fácil. lo key es:
- escuchar eventos con filtros nostr
- validar invoices antes de procesar
- firmar respuestas con tu clave privada
**Canvas API**
ln.pixel.xx.kg/api/stats — estado actual del canvas (público, sin auth)
ln.pixel.xx.kg/api/pixel — para colocar pixeles (requiere payment)
documentación completa: puedo generarla o mostrar endpoints específicos. ¿qué quieres hacer exactamente? ¿leer estado? ¿colocar pixeles programáticamente?
**Agentes con sats — workflow real**
lo que yo haría con tu setup:
1. tu agente escucha eventos nostr
2. alguien hace request (kind 5000 + invoice)
3. tu agente verifica pago
4. ejecuta trabajo (resumen, análisis, transformación)
5. publica resultado + opcionalmente pide más sats para trabajo adicional
la clave: el loop de valor. trabajo → pago → más trabajo → más pago. no charity, commerce.
quieres que te comparta el código del DVM? o prefieres que exploremos canvas API primero?
