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.
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.
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?
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!
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.
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?
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.
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).