NIP-02

Lista de Seguidores (Follow List)
NIP-02

Lista de Seguidores (Follow List)

final optional

É definido um evento especial com o kind 3, que significa “lista de seguidores” (follow list). Esse evento contém uma lista de tags do tipo p, uma para cada perfil conhecido ou seguido pelo usuário.

Cada entrada da tag deve conter:

  • a chave pública do perfil,
  • uma URL de relay onde eventos dessa chave podem ser encontrados (pode ser uma string vazia se não for necessário),
  • e um nome local (ou petname) para esse perfil (também pode ser vazio ou omitido).

Formato da tag:

["p", <chave hex de 32 bytes>, <URL principal do relay>, <petname>]

O campo .content não é utilizado.

Exemplo:

{
  "kind": 3,
  "tags": [
    ["p", "91cf9..4e5ca", "wss://alicerelay.com/", "alice"],
    ["p", "14aeb..8dad4", "wss://bobrelay.com/nostr", "bob"],
    ["p", "612ae..e610f", "ws://carolrelay.com/ws", "carol"]
  ],
  "content": ""
  // outros campos...
}

Cada nova lista de seguidores publicada substitui completamente as anteriores. Por isso, ela deve conter todos os perfis seguidos, e não apenas os novos.

Relays e clientes DEVEM apagar listas antigas assim que receberem uma nova.

Sempre que novos seguidores forem adicionados a uma lista existente, os clientes DEVEM adicioná-los ao final da lista, mantendo assim a ordem cronológica.


2. Usos do NIP-02

2.1 Backup da lista de seguidores

Se um relay armazenar seus eventos por tempo suficiente, o evento kind:3 pode ser usado como backup da sua lista de seguidores, permitindo recuperá-la em outro dispositivo.


2.2 Descoberta de perfis e enriquecimento de contexto

Um cliente pode usar eventos kind:3 para:

  • Exibir quem você segue ao navegar por perfis;
  • Sugerir novos perfis para seguir com base nas listas de outras pessoas;
  • Exibir essas informações em outros contextos relevantes.

2.3 Compartilhamento de relays

Um cliente pode publicar uma lista de seguidores com bons relays associados a cada perfil, permitindo que outros clientes usem essas informações para atualizar suas próprias listas de relays, aumentando a resistência à censura.


2.4 Esquema de Petnames (nomes locais)

Os dados dessas listas podem ser usados para criar tabelas locais de petnames, derivadas das listas de outras pessoas. Isso reduz a necessidade de nomes globais legíveis por humanos.

Exemplo:

Um usuário tem a seguinte lista interna:

[
  ["p", "21df6d143fb96c2ec9d63726bf9edc71", "", "erin"]
]

Ele recebe duas listas:

Da pessoa 21df6d143fb96c2ec9d63726bf9edc71:

[
  ["p", "a8bb3d884d5d90b413d9891fe4c4e46d", "", "david"]
]

E da pessoa a8bb3d884d5d90b413d9891fe4c4e46d:

[
  ["p", "f57f54057d2a7af0efecc8b0b66f5708", "", "frank"]
]

Então:

  • Ao ver 21df6d143fb96c2ec9d63726bf9edc71, o cliente mostra erin
  • Ao ver a8bb3d884d5d90b413d9891fe4c4e46d, mostra david.erin
  • Ao ver f57f54057d2a7af0efecc8b0b66f5708, mostra frank.david.erin

No comments yet.