We developed an Unlock protocol plugin for Discourse. It let you lock topics behind a “crypto” paywall.
People have to buy your NFT with their crypto wallet (Mestamask, Wallet connect) to access topics. You can configure it with any ERC20 on Ethereum, xDai, Polygon…Since last week, you can also unlock with credit card payment.
Interesting, I wonder if there is a financial vehicle that could be engineered in the Ethereum (or other crypto engines) for repeat transactions. Would be kind of cool to offer a subscription service where you opt to pay X every month.
Can we setup unlock for comment? Only comment first or comment second not topic title and content main?
And, can we add charge by dollar via Visa or paypal not Crypto?
The core mechanism is to use the “approval” mechanism that the ERC20 contracts provide.
The core idea is to approve a 3rd party contract, called the “purchaser” whose single job is to purchase memberships on behalf of users when they are either expired (or soon to be expired). So basically a membership can only be “renewed” when it is either nearly expired, or fully expired.
One of the challenges that we’re trying to solve is to find who will trigger the transaction on that purchaser contract. Rigth now, the approach is to make the purchase “pay back” the person triggering the transaction so that this covers the gas fees. I think we can leverage the “flashbots” who have been doing arbitrage to do that!
It is definitely one of the things we’re trying to work on!
Amazing, I find some of the financial vehicles smart contracts have on offer to be fascinating. I think this could be extremely powerful as a way of funding the right community.
In particular we already have Discourse Subscriptions so perhaps a PR to allow for a “Unlock” mode vs “Stripe” may be an interesting path to take.
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).