nostr:npub1atrrqav7xyur93xszyaeuyyzy70mpmax488grndfaz3kddyc3dyquawyga

Tou pensando num protocolo de "onlyfans" para nostr, e preciso da sua ajuda pra um brainstorm se é possível... (ignora a parte pornográfica do only fans, pensa mais na venda de conteúdo digital online).

A idéia era vc postar um conteúdo critografado, e a pessoa pagar para ter acesso a chave de criptografia do conteúdo. Só que não consegui pensar numa forma descentralizada de fornecer essa chave.

Na verdade não precisa ser a chave, pode ser um smartcontract ou algum recurso em blockchain que descriptografa pra vc, ou gera um novo evento "gift wrapped" pra vc, mas precisava de ser algo que não dependesse de confiar em um servidor.

Alguma idéia de como implementar isso?

(nesse meio tempo vou tentar trabalhar no "proxy" que falei no post anterior)

Tou marcando o nostr:npub1atrrqav7xyur93xszyaeuyyzy70mpmax488grndfaz3kddyc3dyquawyga aqui, mas quem mais tiver idéias e quiser ajudar, eu aceito... nostr:npub1a6we08n7zsv2na689whc9hykpq4q6sj3kaauk9c2dm8vj0adlajq7w0tyc , nostr:npub1uu8sdgm7geznwnaxhfgqs5wp6slhpm8tsdy6u852v72jawyk0faqc3hr2k nostr:npub1v22qyndskpawjnsjn8zce53nwldza5ejw67f8y33ntt8qlmpm5rq7ra0z2 , nostr:npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6

Reply to this note

Please Login to reply.

Discussion

Tem o onlybct agora

nostr:npub18lav8fkgt8424rxamvk8qq4xuy9n8mltjtgztv2w44hc5tt9vets0hcfsz estava pensando nisso esses dias, o gift wrapped funciona bem, mas depois de aberto é fácil vazar a chave ou o conteúdo.

Apesar que se guardar a chave do embrulho, se pode deletar posteriormente o evento.

Uma forma é usando bloqueio no relay. Confere as últimas postagens do nostr:npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6

mas aí é centralizado. o dono do relay "decide" se vc tem acesso ao conteúdo ou não. Queria algo totalmente descentralizado.

Talvez eu não tenha entendido a ideia, mas se haverá um bloqueio de conteúdo, alguém tem que decidir quem vai ter acesso.

Além disso, nada te impede de montar vários relays, mantendo a descentralização.

A não ser que o que vc queira seja usar o relay de terceiros, mas aí não acho muito confiável, principalmente pq seria trivial para qualquer um, com acesso, descriptografar e repostar.

Qualquer pessoa que pagar vai ter acesso ao conteúdo. A ideia é que isso seja feito sem intervenção de terceiros e sem ponto único de falha. Vários relays, você teria de pagar cada relay individualmente, não é descentralizado, só é redundante. Quero algo onde você faça uma transação na Blockchain, e o simples fato dessa transação existir já te dá acesso ao conteúdo, sem precisar de alguém ou alguma sistema liberar seu acesso. Ou, no limite, algo como atômic swap, onde se a pessoa não liberar seu acesso, ela não recebe a grana e vc consegue estornar.

Confere a ideia do nostr:npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6 pelo que entendi vc não paga cada relay.. alienação fica vinculada ao npub

procurei aqui, mas ele tem muito post sobre muita coisa em relação a relays, não sei de qual vc tá falando. tem como mandar um link pro post ou pra thread correta?

marketplace do nostr já resolve isso, não?

não, ele é só um local de anuncios, não distribui o conteudo.

Alguém pode pagar descriptografar copiar e respostar.

assim como alguem pode pagar o onlyfans, copiar e repostar. Não estou procurando formas de fazer proteção contra cópia, e sim de viabilizar a venda de arte digital, sem intermediários, e sem o vendedor precisar confiar no comprador ou vice versa.

Só assim para termos um pouco de interação. O que mais importa? Prover a liberdade ou profanar a libertinagem? Fiquem na Paz. E lembre-se: Se tudo está calmo, desconfie.

Oi Girino, sobre a idea... lol! Do ponto de vista técnico eu acho que a galera já comentou isso, mas do meu ponto de vista você não precisa fazer muito do ponto de vista de protocolo, o trabalho seria mais na camada de aplicacao mesmo. Tanto Blossom quanto NIP-96 já suportam autenticação. Cada cotent provider pode autorizar acesso a determinado conteúdo conforme o npub do usuário, inclusive essa autenticação pode ser dinamica (e.g., por tempo limitado).

De resto você pode user DMs (NIP-17 ou a experimental NIP-104) para mandar os links de acesso e até manter listas (NIP-51) com o conteúdo que o usuário está comprando e construir um Marketplace (NIP-15) para a compra e venda do conteúdo em si.

Não sei se ajudei, mas é como eu implementaria alfo assim no Nostr.

Boa sorte com o projeto!

Esse projeto éso teórico mesmo. O que eu vou tentar na prática agora é o proxy tunelado via nostr. Acho que tem mais utilidade do ponto de vista de liberdade de expressão.

Foi mal, vi agora.

Olha o que o deepseek falou. Tenho que estudar ainda PTLC então não consigo filtrar tão bem a resposta.

Para resolver o problema de **pagamentos atômicos sem revelar a preimagem publicamente**, podemos usar uma combinação de **criptografia assimétrica** e **mecanismos de compromisso (commitments) adaptados**, evitando os limites dos HTLCs (Hash Time-Locked Contracts) tradicionais. Aqui está uma proposta detalhada:

---

### **Solução: PTLCs (Point Time-Locked Contracts) com Criptografia Híbrida**

Os **PTLCs** são uma evolução dos HTLCs, usando assinaturas Schnorr e **adaptor signatures** para garantir atomicidade sem revelar a preimagem publicamente. Combinamos isso com criptografia assimétrica para entregar a chave de descriptografia apenas ao comprador.

---

#### **Passo a Passo do Protocolo**

1. **Geração de Chaves e Parâmetros:**

- **Comprador (Alice):** Gera um par de chaves pública/privada `(P_A, s_A)`.

- **Vendedor (Bob):** Gera um segredo `k` (preimagem) e um nonce `r`, e calcula `R = r*G` (ponto na curva elíptica).

- **Bob:** Deriva uma chave simétrica `s = H(k)` para criptografar a chave do produto.

2. **Commitment do Produto:**

- **Bob:** Criptografa a chave do produto `K` usando `s`, gerando `C = Enc(K, s)`.

- **Bob:** Compromete-se a `C` e `R` em um canal público (ex: DHT, IPFS) ou no próprio contrato.

3. **Configuração do PTLC:**

- **Bob:** Cria uma **adaptor signature** vinculada a `R` para uma transação que paga Alice se ela revelar `k`.

- O contrato inteligente verifica a assinatura e bloqueia os fundos com uma condição: para resgatar, Alice deve fornecer uma assinatura válida que inclua `k`.

4. **Pagamento e Revelação da Chave:**

- **Alice:** Envia o pagamento para o contrato, que só é concluído se Bob fornecer `C` e uma prova de que `C` está corretamente vinculada a `R`.

- **Bob:** Revela `C` e `R` para Alice via canal off-chain (ex: Lightning Network) ou on-chain (dependendo da privacidade desejada).

- **Alice:** Usa `k` (extraído da adaptor signature) para derivar `s = H(k)`, descriptografar `C` e obter `K`.

5. **Verificação Final:**

- **Alice:** Verifica se `K` descriptografa o produto corretamente. Se sim, o contrato libera os fundos para Bob. Caso contrário, Alice pode recuperar seu BTC após um timeout.

---

#### **Vantagens**

- **Privacidade da Preimagem:** A preimagem `k` nunca é exposta on-chain. Apenas Alice e Bob conhecem `k`.

- **Atomicidade:** O pagamento e a entrega de `K` são atômicos: ou ambos acontecem, ou nenhum.

- **Sem Confiança:** Nenhuma das partes precisa confiar na outra, apenas no código do contrato.

---

#### **Ferramentas e Tecnologias**

1. **Bitcoin Script:** Para criar PTLCs usando Schnorr/Taproot.

2. **Adaptor Signatures:** Permitem vincular a liberação de `k` à conclusão do pagamento.

3. **Criptografia Híbrida:** Combina criptografia simétrica (AES-GCM) para `K` e assimétrica (ECDH) para compartilhar `s`.

4. **Armazenamento Off-Chain:** Usar redes como Lightning Network ou sistemas P2P para entregar `C` e `R`.

---

#### **Exemplo de Implementação Simplificada**

```python

# Bob gera segredo k e nonce R

k = random()

R = k * G

# Criptografa a chave K

s = SHA256(k)

C = AES.encrypt(K, s)

# Contrato PTLC (Bitcoin Script com Taproot)

def redeem(alice_sig, bob_sig, k):

assert verify_adaptor(alice_sig, bob_sig, R, k)

return True

# Alice descriptografa K após obter k do PTLC

s_recovered = SHA256(k)

K = AES.decrypt(C, s_recovered)

```

---

#### **Considerações de Segurança**

- Use **canais confiáveis** para comunicação off-chain (ex: Lightning).

- Adicione **timeouts** para evitar bloqueio eterno de fundos.

- Valide sempre a integridade do produto após descriptografia (ex: via hash do conteúdo).

Essa abordagem mantém a preimagem privada, garante atomicidade e elimina a necessidade de confiança, resolvendo o problema original de forma elegante.

não entendi bem o protocolo, mas acho que ele precisa ser onchain para poder usar PTLC... Ou existe alguma forma de fazer PTLC com lightning?

Desculpe a demora... eu estava há muito tempo longe da rede aqui.

A forma mais descentralizada que eu conheço para a autenticação, seria através de NFTs. A posse do NFT seria o controle de acesso da pessoa ao conteúdo, podendo ter inclusive diferentes níveis. Então você controlaria o acesso em nível de aplicação.

Infelizmente vai depender de um ambiente privado para não expor a chave de criptografia ou o endereço do conteúdo. Acho que esse ponto não está totalmente resolvido ainda...

Esse projeto de "only fans" descentralizado vai ficar on hold ainda por alguns anos ;) mas quem sabe um dia eu não consiga! O projeto que eu tou trabalhando agora é esse daqui: nostr:naddr1qvzqqqr4gupzq0l6cwnvsk0242xdmkevwqp2dcgtx0h7hyksykc5att03gkk2ejhqqxnzde5xqenxwfj8yunzd3s3t9en6

Interessante isso hein Girino! Vou dar uma olhada logo mais!