Desbloquear Discourse

Olá a todos,

Desenvolvemos um plugin do protocolo Unlock para o Discourse. Ele permite bloquear tópicos atrás de um paywall “cripto”.

Os usuários precisam comprar seu NFT com sua carteira cripto (Metamask, Wallet Connect) para acessar os tópicos. Você pode configurá-lo com qualquer ERC20 na Ethereum, xDai, Polygon… Desde a semana passada, também é possível desbloquear com pagamento por cartão de crédito.

ezgif-3-eda9d8c4547d

Você pode testá-lo no fórum da comunidade do protocolo Unlock: https://unlock.community. Por exemplo, este tópico está bloqueado: https://unlock.community/t/introducing-the-dao/68 (na xDai).

Você também pode usar o mesmo bloqueio para conceder acesso aos seus usuários a canais privados do Discord com https://swordybot.com/.

Repositório do plugin: GitHub - discourse/discourse-unlock · GitHub
Documentação: https://unlock.community/t/unlock-discourse-plugin/64

Não hesite em entrar em contato se tiver alguma dúvida.

32 curtidas

Interessante. Será que existe algum veículo financeiro que possa ser desenvolvido no Ethereum (ou em outras plataformas de criptomoedas) para transações recorrentes? Seria bem legal oferecer um serviço de assinatura onde você opta por pagar X a cada mês.

9 curtidas

Podemos configurar o desbloqueio para comentários? Apenas o primeiro ou segundo comentário, não o título do tópico nem o conteúdo principal?
E podemos adicionar cobrança em dólar via Visa ou PayPal, em vez de criptomoedas?

1 curtida

Olá @sam,

É possível com o Unlock Protocol: Recurring Memberships

Mas, por enquanto, não está implementado no plugin. Adicionaremos na próxima versão.

7 curtidas

Não tenho certeza se entendi essa parte.

Sim, também é possível pagar com cartão de crédito: Credit Card Support

2 curtidas

Significa desbloquear o comentário, mas o tópico ainda aparece.

2 curtidas

Olá, Sam! Sou Julien, fundador do Unlock Protocol!

De fato, é possível, como o @kam44 mencionou.

O mecanismo central é utilizar o recurso de “aprovação” oferecido pelos contratos ERC20.
A ideia principal é aprovar um contrato de terceiros, chamado de “comprador”, cuja única função é adquirir assinaturas em nome dos usuários quando elas estiverem expiradas ou prestes a expirar. Basicamente, uma assinatura só pode ser “renovada” quando estiver quase expirada ou já totalmente expirada.

Um dos desafios que estamos tentando resolver é descobrir quem irá acionar a transação nesse contrato de comprador. No momento, a abordagem é fazer com que a compra “reembolse” a pessoa que acionou a transação, de modo a cobrir as taxas de gás. Acredito que podemos aproveitar os “flashbots”, que já realizam arbitragem, para fazer isso!

Definitivamente, é uma das coisas em que estamos trabalhando!

3 curtidas

Incrível! Acho fascinantes alguns dos veículos financeiros que os contratos inteligentes oferecem. Acredito que isso pode ser extremamente poderoso como uma forma de financiar a comunidade certa.

Em particular, já temos Discourse Subscriptions Plugin, então talvez uma PR para permitir um modo “Desbloquear” em vez de “Stripe” possa ser um caminho interessante a seguir.

8 curtidas

@kam44
Alguma novidade sobre “desbloquear comentários”?

3 curtidas

Alguma atualização?
Esse plugin parece interessante.

Ótimo trabalho, cara!

1 curtida

Criei 2 contratos de bloqueio no painel do Unlock
A. Bloqueio para usuários que possuem tokens (1000 < quantidade < 5000)
B. Bloqueio para usuários que possuem mais de 5000 tokens

Para A, gostaria de adicioná-los ao grupo A no Discourse
Para B, gostaria de adicioná-los ao grupo B no Discourse

Atualmente, o plugin Unlock suporta apenas um contrato de bloqueio no Discourse. Existe algum truque para atingir o objetivo?

2 curtidas

Você já descobriu uma solução para usar mais de um contrato?

Estou tentando baixar o plugin Unlock Protocol. Estou recebendo as seguintes páginas/erros. Por favor, me diga como posso resolver isso:


1 curtida

Olá e bem-vindo @thesidsridhar :slightly_smiling_face:

Como este é um plugin não oficial, movi sua postagem para o tópico do plugin Unlock, pois acho que seria um lugar melhor para obter suporte de pessoas que sabem mais sobre ele. :+1:

1 curtida

Na verdade, o plugin agora é gerenciado pela equipe do Discourse, como você pode ver aqui: https://github.com/discourse/discourse-unlock

cc @zogstrip

5 curtidas

Oh, minhas desculpas. :pray: Eu perdi essa troca. Obrigado por apontar. :+1:

4 curtidas

Não se preocupe, não mencionamos isso em lugar nenhum.

2 curtidas

Olá @zogstrip, queria verificar novamente sobre o assunto acima. Como resolvo o erro HasCustomFields:NotPreloadedError?

3 curtidas

Receio que o suporte para este plugin seja um pouco escasso devido à temporada de festas, mas (para que conste) acabei de instalá-lo no meu site de teste e também estou sendo bloqueado com um ‘Oops - Error 500’ com o mesmo erro registrado:

Message

HasCustomFields::NotPreloadedError (Tentativa de acessar o campo personalizado não pré-carregado 'unlock-lock' na classe 'Category'. Isso é proibido para evitar consultas N+1.)
app/models/concerns/has_custom_fields.rb:175:in `[]'
(eval):37:in `_fast_attributes'
(eval):6:in `_fast_attributes'
app/controllers/application_controller.rb:637:in `preload_current_user_data'
app/controllers/application_controller.rb:437:in `preload_json'
app/controllers/application_controller.rb:413:in `block in with_resolved_locale'
app/controllers/application_controller.rb:413:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/middleware/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:368:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:209:in `call'

Backtrace

app/models/concerns/has_custom_fields.rb:175:in `[]'
plugins/discourse-unlock/plugin.rb:63:in `block (2 levels) in activate!'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:375:in `include?'
(eval):37:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:456:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:347:in `as_json'
plugins/chat/app/serializers/chat_channel_serializer.rb:51:in `chatable'
(eval):6:in `_fast_attributes'

Acho que há um conflito com o plugin Chat de alguma forma. Se eu desativar o Chat através do console Rails, consigo acessar meu site normalmente (incluindo a página /admin/plugins/discourse-unlock).

6 curtidas

Incrível! Como eu desativaria o chat via console do Rails?

2 curtidas