Déverrouillage Discourse

Hi all,

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.

ezgif-3-eda9d8c4547d

You can test it on the unlock protocol community forum : https://unlock.community, for example this topic is locked : https://unlock.community/t/introducing-the-dao/68 (on xDai).

You could use the same lock to also give access your users to Discord private channels with https://swordybot.com/.

Plugin repo : GitHub - discourse/discourse-unlock
Documentation : Unlock Discourse plugin - 🧙‍♂️ Developers - Unlock

Don’t hesitate if you have any questions.

32 « J'aime »

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.

9 « J'aime »

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?

1 « J'aime »

Hello @sam,

It is possible with unlock protcol : Recurring Memberships | Unlock: The Web's new business model

But for the moment it’s not implanted in the plugin. Will add it in the next version.

7 « J'aime »

Not sure to understand that part.

Yes, it’s also possible to pay with credit card : Credit Card Support

2 « J'aime »

Mean Unlock comment but topic unstill display

2 « J'aime »

Hi Sam! I am Julien, the founder of Unlock Protocol!

Indeed, it is possible like @kam44 said.

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!

3 « J'aime »

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.

8 « J'aime »

@kam44
any news about “unlock comments” ?

3 « J'aime »

Any Update
This plugin seems interesting

Great Job Man !

1 « J'aime »

J’ai créé 2 contrats de verrouillage sur le tableau de bord Unlock
A. Verrouillage pour les utilisateurs qui ont des tokens (1000 < montant < 5000)
B. Verrouillage pour les utilisateurs qui ont plus de 5000 tokens

Pour A, je voudrais les ajouter au groupe A sur Discourse
Pour B, je voudrais les ajouter au groupe B sur Discourse

Actuellement, le plugin Unlock ne prend en charge qu’un seul contrat de verrouillage sur Discourse. Y a-t-il une astuce pour atteindre l’objectif ?

2 « J'aime »

Avez-vous trouvé une solution pour utiliser plus d’un contrat ?

J’essaie de télécharger le plugin Unlock Protocol. Je reçois les pages/erreurs suivantes. Veuillez me faire savoir comment je peux résoudre ce problème :


1 « J'aime »

Bonjour et bienvenue @thesidsridhar :slightly_smiling_face:

Comme il s’agit d’un plugin non officiel, j’ai déplacé votre message dans le sujet du plugin Unlock, car je pense que ce serait un meilleur endroit pour obtenir de l’aide de la part de personnes qui en savent plus à ce sujet. :+1:

1 « J'aime »

En fait, le plugin est maintenant géré par l’équipe Discourse, comme vous pouvez le voir ici : https://github.com/discourse/discourse-unlock

cc @zogstrip

5 « J'aime »

Oh, mes excuses. :pray: J’avais manqué ce changement. Merci de me l’avoir signalé. :+1:

4 « J'aime »

Oh non, ne vous inquiétez pas, nous ne l’avons mentionné nulle part.

2 « J'aime »

Salut @zogstrip Je voulais faire un nouveau point sur ce sujet. Comment résoudre l’erreur HasCustomFields:NotPreloadedError ?

3 « J'aime »

Je crains que le support pour ce plugin soit un peu limité en raison de la période des fêtes, mais (pour information) je viens de l’installer sur mon site de test et je suis également bloqué avec un message « Oups - Erreur 500 » avec la même erreur enregistrée :

Message

HasCustomFields::NotPreloadedError (Tentative d'accès au champ personnalisé non préchargé 'unlock-lock' sur la classe 'Category'. Ceci est interdit pour éviter les requêtes 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'

Je pense qu’il y a un conflit avec le plugin Chat d’une manière ou d’une autre. Si je désactive Chat via la console Rails, je peux accéder à mon site normalement (y compris la page /admin/plugins/discourse-unlock).

6 « J'aime »

Génial ! Comment désactiver le chat via la console Rails ?

2 « J'aime »