Desbloqueo de 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 Me gusta

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 Me gusta

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 me gusta

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 Me gusta

Not sure to understand that part.

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

2 Me gusta

Mean Unlock comment but topic unstill display

2 Me gusta

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 Me gusta

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 Me gusta

@kam44
any news about “unlock comments” ?

3 Me gusta

Any Update
This plugin seems interesting

Great Job Man !

1 me gusta

Creé 2 contratos de bloqueo en el panel de control de Unlock
A. Bloqueo para los usuarios que tienen tokens (1000 < cantidad < 5000)
B. Bloqueo para los usuarios que tienen más de 5000 tokens

Para A, me gustaría añadirlos al grupo A en Discourse
Para B, me gustaría añadirlos al grupo B en Discourse

Actualmente, el plugin Unlock solo admite un contrato de bloqueo en Discourse. ¿Hay algún truco para lograr el objetivo?

2 Me gusta

¿Alguna vez encontraste una solución para usar más de un contrato?

Estoy intentando descargar el plugin Unlock Protocol. Me aparecen las siguientes páginas/errores. Por favor, indíquenme cómo puedo resolver esto:


1 me gusta

Hola y bienvenido @thesidsridhar :slightly_smiling_face:

Dado que es un plugin no oficial, he movido tu publicación al tema del plugin Unlock, ya que creo que sería un mejor lugar para obtener ayuda de personas que saben más sobre él. :+1:

1 me gusta

De hecho, el plugin ahora es administrado por el equipo de Discourse, como puedes ver aquí: https://github.com/discourse/discourse-unlock

cc @zogstrip

5 Me gusta

Oh, mis disculpas. :folded_hands: Me perdí ese cambio. Gracias por señalarlo. :+1:

4 Me gusta

No te preocupes, no lo mencionamos en ningún sitio.

2 Me gusta

Hola @zogstrip, quería volver a consultar sobre lo anterior. ¿Cómo resuelvo el error HasCustomFields:NotPreloadedError?

3 Me gusta

Me temo que el soporte para este plugin es un poco escaso debido a la temporada navideña, pero (por si acaso) lo acabo de instalar en mi sitio de prueba y también me está bloqueando con un ‘Oops - Error 500’ con el mismo error registrado:

Message

HasCustomFields::NotPreloadedError (Se intentó acceder al campo personalizado no precargado 'unlock-lock' en la clase 'Category'. Esto está prohibido 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'

Creo que hay un conflicto con el plugin Chat de alguna manera. Si deshabilito Chat a través de la consola de Rails, puedo acceder a mi sitio con normalidad (incluida la página /admin/plugins/discourse-unlock).

6 Me gusta

¡Genial! ¿Cómo deshabilitaría el chat a través de la consola de Rails?

2 Me gusta