Discourse 解锁

大家好,

我们开发了一个用于 Discourse 的 Unlock 协议 插件。它允许您将主题锁定在“加密”付费墙之后。

用户必须使用其加密钱包(MetaMask、Wallet Connect)购买您的 NFT 才能访问主题。您可以使用以太坊、xDai、Polygon 等网络上的任何 ERC20 代币进行配置。自上周起,您也可以通过信用卡支付进行解锁。

ezgif-3-eda9d8c4547d

您可以在 Unlock 协议社区论坛上测试该插件:https://unlock.community,例如这个主题已被锁定:https://unlock.community/t/introducing-the-dao/68(在 xDai 网络上)。

您还可以使用相同的锁定机制,通过 https://swordybot.com/ 为您的用户开放 Discord 私有频道的访问权限。

插件仓库:GitHub - discourse/discourse-unlock · GitHub
文档:https://unlock.community/t/unlock-discourse-plugin/64

如有任何问题,欢迎随时联系。

32 个赞

有意思,我在想是否能在以太坊(或其他加密货币平台)上设计一种金融工具,以支持重复交易。如果能提供一种订阅服务,让用户选择每月支付固定金额,那将会非常酷。

9 个赞

我们可以为评论设置解锁条件吗?是仅解锁第一条评论,还是第二条评论,但不包括主题标题和主要内容?
另外,我们能否支持通过 Visa 或 PayPal 按美元收费,而不使用加密货币?

1 个赞

你好 @sam

使用 Unlock 协议是可行的:Recurring Memberships

但目前该功能尚未在插件中实现。我们将在下一个版本中添加它。

7 个赞

我不太确定你指的是哪一部分。

是的,也可以使用信用卡支付:Credit Card Support

2 个赞

意思是解锁评论,但主题仍未显示。

2 个赞

嗨,Sam!我是 Julien,Unlock Protocol 的创始人!

确实,正如 @kam44 所说,这是可行的。

其核心机制是利用 ERC20 合约提供的“授权”(approval)功能。基本思路是授权一个第三方合约(称为“购买者”合约),该合约的唯一职责是代表用户在会员资格过期或即将过期时自动购买会员。因此,会员资格只能在即将过期或已完全过期时进行“续期”。

我们目前正努力解决的一个挑战是:确定由谁来触发该“购买者”合约上的交易。目前的做法是让购买操作“回补”触发交易的人,以覆盖其 gas 费用。我认为我们可以利用那些一直在进行套利交易的“Flashbots”来实现这一点!

这确实是我们正在努力推进的工作之一!

3 个赞

太棒了,我发现智能合约提供的一些金融工具非常引人入胜。我认为这可以成为为合适的社区提供资金的极其有力的方式。

特别是,我们已经有 https://meta.discourse.org/t/discourse-subscriptions/140818,因此或许可以提交一个 PR,支持“解锁”模式,而不是“Stripe”模式,这可能是一条值得探索的路径。

8 个赞

@kam44
关于“解锁评论”有什么新消息吗?

3 个赞

有任何更新吗
这个插件看起来很有趣

干得漂亮,兄弟!

1 个赞

我在 unlock dashboard 上创建了 2 个锁定合约
A. 锁定代币数量在 1000 到 5000 之间的用户
B. 锁定代币数量超过 5000 的用户

对于 A,我想将他们添加到 discourse 的 group A
对于 B,我想将他们添加到 discourse 的 group B

目前 Unlock 插件仅支持在 discourse 上使用一个锁定合约。有什么方法可以实现这个目标吗?

2 个赞

您是否找到了使用多个合同的解决方案?

我正在尝试下载 Unlock Protocol 插件。我遇到了以下页面/错误。请告知我如何解决此问题:


1 个赞

你好,欢迎你 @thesidsridhar :slightly_smiling_face:

由于这是一个非官方插件,我已经将你的帖子移至“解锁插件”主题,我认为那里会得到更多了解它的人的支持。:+1:

1 个赞

事实上,该插件现在由 Discourse 团队管理,正如你在此处所见:https://github.com/discourse/discourse-unlock

抄送 @zogstrip

5 个赞

哦,我的歉意。:pray: 我错过了那个交换。谢谢你指出来。:+1:

4 个赞

没关系,我们没在任何地方提到过。

2 个赞

您好 @zogstrip,我想再次就上述问题向您咨询。如何解决 HasCustomFields:NotPreloadedError?

3 个赞

恐怕由于假日季,此插件的支持有点少,但(就我所知)我刚刚在我的测试站点上安装了它,也遇到了“哎呀 - 错误 500”并被锁定,日志中出现相同的错误:

消息

HasCustomFields::NotPreloadedError (尝试访问 Category 类的未预加载自定义字段 'unlock-lock'。为防止 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'

回溯

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'

我认为这与 Chat 插件存在某种冲突。如果我在 rails 控制台中禁用 Chat,我就可以正常访问我的站点(包括 /admin/plugins/discourse-unlock 页面)。

6 个赞

太棒了!我该如何在 Rails 控制台中禁用聊天?

2 个赞