Samiz - Nostr por Bluetooth

Permita o seu client Nostr trocar mensagem sem internet

Dante

23. Juni 2025June 23, 2025 · 6 Min. Lesezeit6 min read

⁠Samiz

Crie uma rede mesh Bluetooth com seu dispositivo Android e use o Nostr sem acessar a internet.


Tradução aproximada do texto original:

https://github.com/KoalaSat/samiz

[Me avise se notar algum problema de tradução]

Eu @⁠Dante, entendo que esse client é importante por contornar problemas em regiões de baixo acesso a internet, e também em situações de risco ou conflito.

Em notícias dos últimos anos vimos casos de países sofrerem desligamento da internet (Austrália, África e outros) e também o caso da Europa (principalmente Portugal e Espanha, na Península Ibérica) ficarem também sem energia elétrica.

Assim, esse client pode ser um meio mais direto, barato e simples de ter comunicação direta, sem precisar de hardwares adicionais.


Download disponível para:


Discussão:


Vídeos da comunidade#

Sincronização Offline

Quoted note


Casos de uso#

Caso A

Alice se senta em seu jardim e quer postar uma atualização sobre seus pensamentos usando uma nota Nostr. Porém, a conexão de internet de Alice está atualmente inativa, então ela é incapaz de compartilhar seus pensamentos na sua rede:

image
  1. A Alice inicia uma nova sessão com Samiz e cria a nota no Nostr com seu client favorito.

  2. O client Nostr compartilha a nota com todos os aplicativos que a acessam em seu dispositivo e também a registra em um relay local.

  3. O Samiz detecta a nota através do relay local e a armazena na sessão em execução.

  4. O Bob está perto da casa da Alice. Ele também está com a sessão aberta no Samiz, então seus dispositivos se conectam e sincronizam automaticamente, permitindo que o dispositivo de Bob armazene e acesse a nota de Alice.

  5. Enquanto o Bob se senta perto de Carlos no metrô, que também está executando a sessão no Samiz.

  6. Seus aplicativos sincronizam e acabam automaticamente no dispositivo de Carlos, agora armazenando e podendo acessar a nota da Alice.

image

Caso B

A cidade está no meio de um festival animado, com todos nas ruas. No entanto, um problema técnico causou uma interrupção da internet em toda a cidade. Alice, tendo acabado de assar uma porção de biscoitos, quer espalhar a palavra para os festeiros o mais rápido possível:

image
  1. A Alice inicia uma nova sessão com o Samiz e cria a nota no Nostr em seu client favorito.

  2. O client do Nostr compartilha a nota com todos os aplicativos que acessam em seu dispositivo e também a registra em um relay local.

  3. O Samiz detecta a nota através do relay local e a armazena na sessão em execução.

  4. Bob e Carlos, que também estão executando sessões no Samiz, estão perto de Alice, então seus dispositivos sincronizam automaticamente e recebem o evento dela.

  5. Francisco e Eva, que também estão executando sessões no Samiz, estão longe de Alice, mas em certa proximidade com Bob.

  6. Depois de sincronizar com Alice, a sessão do Bob compartilha automaticamente a nota com as sessões do Francisco e da Eva, permitindo que eles recebam e leiam a nota de Alice.

image

Caso C

À medida que o festival continua, todos estão se divertindo e começando a capturar o momento. Eles estão usando o Samiz para compartilhar atualizações e notas uns com os outros em segundo plano. No entanto, a conexão de internet da cidade permanece em baixa devido a problemas técnicos, o que significa que as notícias do evento não estão chegando a ninguém fora da cidade.

Francisco então decide deixar a festa um pouco mais cedo para fazer uma visita a Felícia, uma pessoa experiente em tecnologia e que tem uma conexão de internet via satélite confiável.

image
  1. A Felícia está abrindo uma sessão no Samiz.

  2. Assim que o Francisco chega à casa, seus dispositivos sincronizam automaticamente e a Felícia recebe todas as notas do Nostr coletadas pelo Bob enquanto ele estava na festa.

  3. Uma vez que a sincronização é concluída, já que a Felícia está conectada à internet, seu aplicativo Samiz começa a publicar as notas para seus relays Nostr preferidos.

  4. Marcos, que mora em outro país, agora pode acessar todas as notas sobre a festa publicadas por Felícia através dos relays do Nostr.

image

Docs#

Fluxo dos Events

Samiz é apenas a camada de comunicação entre relays locais, o que significa que, para ter uma experiência completa, você precisará instalar seu próprio relay local e o usar no seu próprio client Nostr.

image

Mensagens BLE

Samiz utiliza tecnologia BLE para garantir baixo consumo de bateria.

O BLE opera em um modelo client-server, portanto, o primeiro passo para os dois dispositivos emparelhados é estabelecer suas funções. Para fazer isso, cada dispositivo gera um UUID aleatório e o compartilha como parte dos dados do serviço.


SERVER UUID > CLIENT UUID

Devido às limitações dessa tecnologia, alcançar um comportamento semelhante ao HTTP requer várias considerações importantes:

image

[chunk index (int)][chunk][is last chunk (boolean)]

Esses metadados incluem o índice do pedaço na mensagem original e um booleano indicando se é o pedaço final. juntar-se a Chunks: Uma vez que todos os pedaços são recebidos, a mensagem é remontada.

O mesmo comportamento também se aplica à escrita.

Negentropy

Samiz usa a tecnologia BLE e Negentropy para conseguir um consumo mais baixo da bateria e uma eficiência máxima para a sincronização do dispositivo.

Mesh Spread - Espalhamento em malha

Embora dois dispositivos estejam totalmente sincronizados e conectados, eles continuarão a transmitir novos eventos, sejam gerados pelo próprio dispositivo ou recebidos por outras conexões.

Transmissão nos clients

Os clients enviarão eventos como mensagens de gravação, semelhante ao processo usado durante a sincronização Negentropy.

Transmissão nos Servidores

Os servidores enviarão uma notificação vazia para todos os clients conectados.

Uma vez que um client recebe a notificação, ele continuará a receber o event como uma mensagem de leitura.


Patrocinadores#

OpenSats

Written by

Comments

No comments yet. Start the conversation.

Contents

4 sections

  1. Vídeos da comunidade
  2. Casos de uso
  3. Docs
  4. Patrocinadores