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:
Vídeos da comunidade
Sincronização Offline
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:

-
A Alice inicia uma nova sessão com Samiz e cria a nota no Nostr com seu client favorito.
-
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.
-
O Samiz detecta a nota através do relay local e a armazena na sessão em execução.
-
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.
-
Enquanto o Bob se senta perto de Carlos no metrô, que também está executando a sessão no Samiz.
-
Seus aplicativos sincronizam e acabam automaticamente no dispositivo de Carlos, agora armazenando e podendo acessar a nota da Alice.

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:

-
A Alice inicia uma nova sessão com o Samiz e cria a nota no Nostr em seu client favorito.
-
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.
-
O Samiz detecta a nota através do relay local e a armazena na sessão em execução.
-
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.
-
Francisco e Eva, que também estão executando sessões no Samiz, estão longe de Alice, mas em certa proximidade com Bob.
-
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.

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.

-
A Felícia está abrindo uma sessão no Samiz.
-
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.
-
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.
-
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.

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.

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:

-
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
