Samiz - Nostr por Bluetooth

Permita o seu client Nostr trocar mensagem sem internet
Samiz - Nostr por Bluetooth

@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:

Samiz no Chachi Chat


Vídeos da comunidade

Sincronização Offline

@pktm…pxa6
Jun 22, 2025 12:06


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

  • compressByteArray: Para minimizar o tamanho da mensagem, a cadeia de caracteres é convertida em um ByteArray e, em seguida, compactada usando Deflater.

  • splitInChunks: BLE tem um limite de 512 bytes por mensagem. Para mensagens maiores, o texto é dividido em partes e enviado individualmente para o outro dispositivo. Para facilitar esse processo, cada trecho inclui metadados:


[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.

  • decompressByteArray: O ByteArray comprimido é então descompactado, permitindo que ele seja convertido de volta para uma String.

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

No comments yet.