Capítulo 1
¿Por qué Nostr?
Qué sale mal cuando una sola empresa es dueña del servidor, y cómo los relays cambian las reglas del juego.
¡Hola, soy Nos! Antes de tocar ninguna clave, vamos a romper algunos servidores. Por la ciencia.
La mañana en que Alice desapareció
Alice hornea los mejores rollos de canela del barrio. En cinco años reunió una audiencia de 20.000 personas en una gran red social. Ahí es donde sus clientes ven el menú del día, donde ella avisa cuando se agota todo y donde sus clientes de siempre la saludan.
Un martes abre la app y ve un recuadro gris: “Tu cuenta ha sido suspendida.” No hay ningún humano a quien llamar. No hay forma de exportar la lista de sus seguidores. Un filtro automático decidió algo, y cinco años de relaciones se quedaron en silencio con un solo clic.
Nadie tuvo que hackear a Alice. Nadie tuvo que discutir con ella. La empresa simplemente era dueña de la sala en la que ella hablaba, y le apagó el micrófono.
Ese mismo punto único de control también decide qué ves (el algoritmo), cuánto cuesta (comisiones, anuncios) y si el lugar sigue existiendo (cierres, adquisiciones, caídas). Un baneo es solo la versión más dramática del problema.
Cuatro formas de armar una red social
Tomemos a los mismos cinco amigos (Alice, Bob, Carol, Dave y Erin) y conectémoslos de cuatro formas distintas. Tu trabajo es ser el mono del caos: tumba servidores y luego pulsa Banear a Alice para ver a quién se le sigue escuchando.
- Centralizada: una empresa, un servidor, todo el mundo vive ahí.
- Federada: muchos servidores independientes que se reenvían publicaciones entre sí. Es el
modelo de
de Mastodon y del correo electrónico.federación Federación: Un diseño en el que muchos servidores interoperan pero cada cuenta pertenece a un servidor, como en el email o Mastodon. Nostr lo evita a propósito. - Nostr:
sencillos que guardan y reenvían notas, y personas que publican en varios relays a la vez.relays Relay: Un servidor que acepta eventos de los clientes, los guarda y los envía a quien se suscriba con un filtro que coincida. - Bluesky: un diseño más nuevo en el que tus datos viven en un servidor de datos personal (PDS), y grandes agregadores cosen las publicaciones de todos en líneas de tiempo.
Arenero de topologías
Cinco amigos, cuatro formas de armar una red social. Tumba servidores y relays, o banea a Alice, y mira quién todavía puede llegar a su audiencia.
Haz clic o pulsa Enter sobre un servidor o relay para dejarlo fuera de línea. Después prueba a banear a Alice.
Una empresa maneja el único servidor. Todo el mundo vive ahí.
Todos los servidores y relays están en línea. Todos pueden llegar a todos.
¿Quién todavía llega a su audiencia?
- Se le escucha por completo llega a 4 de 4 Cuenta en BigCo
- Se le escucha por completo llega a 4 de 4 Cuenta en BigCo
- Se le escucha por completo llega a 4 de 4 Cuenta en BigCo
- Se le escucha por completo llega a 4 de 4 Cuenta en BigCo
- Se le escucha por completo llega a 4 de 4 Cuenta en BigCo
Todos los servidores y relays están en línea. Todos pueden llegar a todos.
Prueba este orden: tumba BigCo en la red Centralizada, tea.social en la Federada, alpha en Nostr y el AppView en Bluesky. Después vuelve a cada una y pulsa Banear a Alice. ¿Notas el patrón?
¿Qué acaba de pasar?
La red Centralizada es un solo tronco: córtalo y cae el árbol entero. Si banean a Alice, simplemente desaparece, porque la empresa es la red.
La red Federada es mucho mejor. Perder una instancia solo afecta a quienes viven en ella.
Pero mira la fila de Alice en el marcador: “Cuenta perdida junto con tea.social.” En un mundo
federado tu nombre se ve como @alice@tea.social, y esa segunda mitad es el casero. Si la
instancia cierra, o el administrador te banea, tu cuenta y tu lista de seguidores se van con
ella. Puedes mudarte, pero solo mientras el antiguo casero siga abriendo la puerta.
Nostr ni se inmuta. La identidad de Alice no es una cuenta en el servidor de nadie: es un
Bluesky queda en un punto intermedio. Las cuentas pueden moverse entre servidores de datos, lo cual es genial. Pero en la práctica la mayoría lee a través de un gran relay y un gran AppView, así que tumbar cualquiera de los dos todavía deja a oscuras casi todo hoy en día.
| Modelo de red | Conversaciones que sobreviven |
|---|---|
| Centralizada | 0 % |
| Federada | 30 % |
| Nostr | 100 % |
| Bluesky | 0 % |
Por qué los relays son tontos a propósito
Este es el truco que hace funcionar a Nostr: los relays no hablan entre sí y no son
dueños de nadie. Un relay es un pequeño servidor que acepta notas firmadas (llamadas
Piensa en los relays como apartados de correos más que como una plaza pública. Alice alquila
un apartado en dos oficinas de correos y deja una copia de cada carta en ambos. Los carteros de
sus amigos (sus
Esa es toda la receta:
- Tú eres tus claves. Sin registro, sin nombre de usuario que te puedan confiscar. Tu clave
pública (
) es tu nombre.npub npub: Una clave pública codificada en bech32 para que las personas puedan copiarla con seguridad: npub1… en lugar de 64 caracteres hex. - Cada nota va firmada. Los relays no pueden falsificar ni editar en secreto lo que dijiste.
- Publica en todas partes. Eliges varios relays y puedes cambiarlos cuando quieras.
- Los lectores te siguen a ti. Los clientes usan tu lista de relays publicada para encontrar
tus notas: ese es el
.modelo outbox Modelo outbox: Una estrategia en la que los clientes leen las publicaciones de cada persona en los relays donde esa persona escribe, en vez de que todos compartan los mismos pocos relays.
Bajo el capó: lo que realmente recibe un relay Mostrar detalles
Todo en Nostr tiene una única forma de datos, definida en NIP-01.
Un cliente se la envía a un relay dentro de un mensaje EVENT a través de un WebSocket:
["EVENT", {
"id": "<sha256 de 32 bytes del evento serializado, en hex>",
"pubkey": "<clave pública de Alice de 32 bytes, en hex>",
"created_at": 1735689600,
"kind": 1,
"tags": [],
"content": "¡Los rollos de canela vuelven a las 8!",
"sig": "<firma Schnorr de 64 bytes del id, en hex>"
}]El relay responde con ["OK", "<event id>", true, ""] si guardó la nota, o con false
más un motivo (por ejemplo "blocked: ..." o "rate-limited: ...") si la rechaza. Fíjate en
lo que falta: no hay id de cuenta, ni contraseña, ni nombre de servidor en la identidad de
Alice. El pubkey y la sig son todo lo que un relay (o un lector) necesita para saber quién la escribió.
Bajo el capó: publicar en varios relays con nostr-tools Mostrar detalles
La redundancia es solo un bucle. Con nostr-tools:
import { finalizeEvent, generateSecretKey } from "nostr-tools/pure";
import { SimplePool } from "nostr-tools/pool";
const sk = generateSecretKey(); // tu identidad: 32 bytes aleatorios que nunca salen del dispositivo
const note = finalizeEvent(
{ kind: 1, created_at: Math.floor(Date.now() / 1000), tags: [], content: "¡hola, relays!" },
sk, // calcula el pubkey, el id y la firma
);
const pool = new SimplePool();
const relays = ["wss://relay.alpha.example", "wss://relay.beta.example"];
// Una promesa por relay: basta con que *algún* relay acepte la nota.
await Promise.any(pool.publish(relays, note));Un relay que rechaza la nota no puede modificarla ni hacerla pasar por suya; lo único que puede hacer es negarse a guardarla.
Bajo el capó: el modelo outbox (NIP-65) Mostrar detalles
¿Cómo se encuentran el cliente de Bob y los relays de Alice? Alice publica un pequeño
evento reemplazable de kind 10002 con la lista de sus relays, tal como describe
NIP-65:
{
"kind": 10002,
"tags": [
["r", "wss://relay.alpha.example"],
["r", "wss://relay.beta.example", "write"],
["r", "wss://relay.gamma.example", "read"]
],
"content": "",
"...": "pubkey, created_at, id y sig como siempre"
}Una etiqueta r sin marcador significa “lectura y escritura”. Para mostrar las notas de Alice,
el cliente de Bob obtiene su kind 10002 y abre suscripciones en sus relays de escritura
(write); para llegar a Alice (respuestas, menciones), publica en sus relays de lectura
(read). Por eso el arenero deja que cualquier lector consulte cualquier relay en el que Alice
escribe: el cliente va hacia el autor, y no al revés.
Bajo el capó: Mastodon y Bluesky, con un poco más de precisión Mostrar detalles
- Mastodon / ActivityPub. Tu identidad es
@nombre@instancia, que se resuelve a través del endpoint WebFinger de la instancia, y tus publicaciones se firman con claves que guarda la instancia. La migración de cuentas existe (una actividadMoveredirige a los seguidores), pero necesita que la instancia antigua siga en línea y colabore. - Bluesky / AT Protocol. Tu identidad es un DID (normalmente
did:plc) que apunta a tu PDS actual, y tus publicaciones viven ahí en un repositorio firmado. Las cuentas pueden migrar entre PDS, lo que es portabilidad real. Las líneas de tiempo, sin embargo, salen de relays que rastrean todos los PDS y de AppViews que los indexan; cualquiera puede montar uno, pero hoy la mayor parte del tráfico pasa por unos pocos muy grandes. - Nostr. La identidad es la clave de firma y cada evento lleva su propia firma, así que no hay nada que migrar: simplemente apuntas a otros relays.
La puntuación del arenero (mira sandbox.ts en los componentes de este capítulo) considera que
una conversación sigue viva cuando la publicación de un autor puede llegar a un lector a través
de infraestructura en línea que no lo banea, y las personas nunca hacen de relay entre sí.
¿Esto es simplemente “cero moderación”?
No, y es un matiz importante. Cada relay es libre de poner sus propias reglas: bloquear spam,
cobrar por el acceso (un
Lo que Nostr elimina es el único cuello de botella. La moderación pasa a ser una decisión de
muchos relays y muchas apps, en lugar del veredicto de una sola empresa que además tiene tu
identidad. Esa propiedad tiene nombre:
Ser dueño de tu identidad significa ser dueño del riesgo: si pierdes tu clave secreta no hay
botón de “olvidé mi contraseña” (más adelante veremos la
¿De dónde salió Nostr?
Nostr significa “Notes and Other Stuff Transmitted by Relays” (notas y otras cosas transmitidas
por relays). Lo propuso en 2020 un desarrollador conocido como fiatjaf, como un protocolo
deliberadamente diminuto: un formato de eventos en JSON, un puñado de mensajes por WebSocket y
firmas de clave pública. Todo lo demás se añade mediante propuestas opcionales y numeradas llamadas
El resto de este curso es un recorrido por esa receta. Lo siguiente: el par de claves que eres tú.
Comprobación rápida
Lo esencial
- En una plataforma centralizada, la empresa tiene tu cuenta, tu audiencia y el interruptor de apagado.
- La federación reparte los servidores, pero tu cuenta sigue viviendo en (y muriendo con) una sola instancia.
- En Nostr tu identidad es un par de claves que tú guardas, y publicas las mismas notas firmadas en varios relays a la vez.
- Los relays son simples y reemplazables: perder uno, o que uno te banee, no te cuesta la voz.
- Nostr es resistente a la censura, no libre de moderación: cada relay y cada cliente sigue eligiendo qué guarda y qué muestra.