Разблокировать Discourse

Всем привет,

Мы разработали плагин для Unlock Protocol для Discourse. Он позволяет закрывать темы за «крипто»-платным доступом.

Пользователи должны купить ваш NFT с помощью криптокошелька (MetaMask, WalletConnect), чтобы получить доступ к темам. Вы можете настроить его с любым токеном ERC20 в сетях Ethereum, xDai, Polygon… С прошлой недели также доступна разблокировка через оплату банковской картой.

ezgif-3-eda9d8c4547d

Вы можете протестировать его на форуме сообщества Unlock Protocol: https://unlock.community. Например, эта тема закрыта: https://unlock.community/t/introducing-the-dao/68 (в сети xDai).

Вы можете использовать тот же замок, чтобы предоставить пользователям доступ к приватным каналам в Discord через https://swordybot.com/.

Репозиторий плагина: GitHub - discourse/discourse-unlock · GitHub
Документация: https://unlock.community/t/unlock-discourse-plugin/64

Не стесняйтесь обращаться, если у вас возникнут вопросы.

32 лайка

Интересно, неужели существует финансовый инструмент, который можно было бы создать в Ethereum (или других криптоплатформах) для повторяющихся транзакций? Было бы здорово предложить подписку, где вы можете выбрать оплату X каждый месяц.

9 лайков

Можно ли настроить разблокировку для комментариев? Только первый комментарий или второй, но не заголовок темы и основной текст?
И можно ли добавить оплату в долларах через Visa или PayPal, а не через криптовалюту?

1 лайк

Привет @sam,

Это возможно с помощью протокола Unlock: Recurring Memberships

Однако на данный момент эта функция не реализована в плагине. Мы добавим её в следующей версии.

7 лайков

Не совсем понимаю эту часть.

Да, также возможна оплата с помощью кредитной карты: Credit Card Support

2 лайка

Комментарий разблокирован, но тема всё ещё отображается.

2 лайка

Привет, Сэм! Я Жюльен, основатель Unlock Protocol!

Действительно, это возможно, как и сказал @kam44.

Основной механизм заключается в использовании механизма «одобрения» (approval), который предоставляют контракты ERC20.
Суть идеи в том, чтобы одобрить контракт третьей стороны, называемый «покупателем» (purchaser), чья единственная задача — приобретать членства от имени пользователей, когда они истекают (или скоро истекут). Таким образом, членство может быть «возобновлено» только тогда, когда оно почти истекло или уже полностью истекло.

Одной из проблем, которую мы пытаемся решить, является поиск того, кто будет инициировать транзакцию в контракте покупателя. Прямо сейчас подход заключается в том, чтобы сделка покупки «возмещала» расходы тому, кто инициирует транзакцию, покрывая таким образом комиссии за газ (gas fees). Я думаю, мы можем использовать возможности «Flashbots», которые занимаются арбитражем, для решения этой задачи!

Это определенно одна из задач, над которыми мы сейчас работаем!

3 лайка

Удивительно, некоторые финансовые инструменты, предлагаемые смарт-контрактами, меня просто завораживают. Я думаю, это может стать чрезвычайно мощным способом финансирования правильных сообществ.

В частности, у нас уже есть Discourse Subscriptions Plugin, поэтому, возможно, PR, добавляющий режим «Разблокировка» вместо «Stripe», может стать интересным путём развития.

8 лайков

@kam44
Есть ли новости насчёт «разблокировки комментариев»?

3 лайка

Любые обновления
Этот плагин выглядит интересно
Отличная работа, друг!

1 лайк

Я создал два контракта блокировки в панели управления Unlock:
A. Блокировка для пользователей, у которых есть токены (1000 < количество < 5000)
B. Блокировка для пользователей, у которых более 5000 токенов

Для A я хочу добавить их в group A на Discourse.
Для B я хочу добавить их в group B на Discourse.

В настоящее время плагин Unlock поддерживает только один контракт блокировки на Discourse. Есть ли какой-то способ достичь этой цели?

2 лайка

Вам удалось найти решение для использования более одного контракта?

Я пытаюсь загрузить плагин Unlock Protocol. У меня появляются следующие страницы/ошибки. Пожалуйста, сообщите, как я могу это исправить:


1 лайк

Здравствуйте и добро пожаловать, @thesidsridhar :slightly_smiling_face:

Так как это неофициальный плагин, я переместил ваш пост в тему плагина Unlock, поскольку считаю, что это лучшее место для получения поддержки от людей, которые лучше разбираются в нём. :+1:

1 лайк

На самом деле, плагином теперь управляет команда Discourse, как вы можете видеть здесь: https://github.com/discourse/discourse-unlock

cc @zogstrip

5 лайков

О, приношу извинения. :pray: Я пропустил эту подмену. Спасибо, что обратили на это внимание. :+1:

4 лайка

О нет, не волнуйтесь, мы нигде не упоминали об этом.

2 лайка

Привет, @zogstrip! Я хотел бы ещё раз уточнить по поводу вышеизложенного. Как мне исправить ошибку HasCustomFields:NotPreloadedError?

3 лайка

К сожалению, из-за праздничного сезона поддержка этого плагина несколько ограничена, но (на всякий случай) я только что установил его на свой тестовый сайт и тоже столкнулся с блокировкой и ошибкой «Oops - Error 500» с аналогичным сообщением в логе:

Сообщение

HasCustomFields::NotPreloadedError (Попытка доступа к не предзагруженному пользовательскому полю 'unlock-lock' в классе 'Category'. Это запрещено для предотвращения 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/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. Если отключить Chat через консоль Rails, я могу получить доступ к своему сайту в обычном режиме (включая страницу /admin/plugins/discourse-unlock).

6 лайков

Отлично! Как мне отключить чат через консоль Rails?

2 лайка