Hemos desarrollado un plugin del protocolo Unlock para Discourse. Te permite bloquear temas detrás de un muro de pago “cripto”.
Los usuarios deben comprar tu NFT con su billetera cripto (MetaMask, Wallet Connect) para acceder a los temas. Puedes configurarlo con cualquier ERC20 en Ethereum, xDai, Polygon… Desde la semana pasada, también puedes desbloquear el acceso mediante pago con tarjeta de crédito.
Interesante, me pregunto si existe algún vehículo financiero que se pueda diseñar en Ethereum (u otros motores de criptomonedas) para transacciones repetitivas. Sería bastante interesante ofrecer un servicio de suscripción donde el usuario elija pagar X cada mes.
¿Podemos configurar el desbloqueo para los comentarios? ¿Solo el primer comentario o el segundo, pero no el título del tema ni el contenido principal?
¿Y podemos agregar el pago en dólares mediante Visa o PayPal, en lugar de criptomonedas?
El mecanismo central consiste en utilizar el mecanismo de “aprobación” que proporcionan los contratos ERC20. La idea principal es aprobar un contrato de terceros, llamado “comprador”, cuya única función es adquirir membresías en nombre de los usuarios cuando estas están expiradas (o a punto de expirar). Básicamente, una membresía solo puede “renovarse” cuando está casi expirada o completamente expirada.
Uno de los desafíos que estamos intentando resolver es determinar quién activará la transacción en ese contrato de comprador. Por ahora, el enfoque es que la compra “reintegre” a la persona que activa la transacción, de modo que esto cubra las tarifas de gas. Creo que podemos aprovechar a los “flashbots”, que han estado realizando arbitrajes, para hacer esto.
¡Definitivamente es una de las cosas en las que estamos trabajando!
¡Increíble! Encuentro fascinantes algunos de los vehículos financieros que ofrecen los contratos inteligentes. Creo que esto podría ser extremadamente poderoso como una forma de financiar a la comunidad adecuada.
En particular, ya tenemos Discourse Subscriptions Plugin, por lo que quizás una solicitud de extracción (PR) para permitir un modo “Desbloquear” en lugar de “Stripe” podría ser un camino interesante a seguir.
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?
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.
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).