Abbiamo sviluppato un plugin per Discourse basato sul protocollo Unlock. Consente di bloccare i topic dietro un “paywall” in criptovaluta.
Gli utenti devono acquistare il tuo NFT tramite il loro portafoglio crittografico (MetaMask, Wallet Connect) per accedere ai topic. Puoi configurarlo con qualsiasi token ERC20 su Ethereum, xDai, Polygon… Da la settimana scorsa, è possibile sbloccare anche tramite pagamento con carta di credito.
Interessante, mi chiedo se esista uno strumento finanziario che possa essere progettato su Ethereum (o altri motori crittografici) per transazioni ripetute. Sarebbe piuttosto figo offrire un servizio in abbonamento in cui si sceglie di pagare X ogni mese.
Possiamo impostare uno sblocco per i commenti? Solo il primo commento o il secondo, non il titolo dell’argomento e il contenuto principale?
Inoltre, possiamo aggiungere il pagamento in dollari tramite Visa o PayPal, non tramite criptovalute?
Il meccanismo principale consiste nell’utilizzare la funzionalità di “approvazione” fornita dai contratti ERC20.
L’idea di base è autorizzare un contratto di terze parti, chiamato “acquirente”, il cui unico compito è acquistare abbonamenti per conto degli utenti quando questi scadono (o stanno per scadere). Quindi, fondamentalmente, un abbonamento può essere “rinnovato” solo quando è quasi scaduto o è già scaduto.
Una delle sfide che stiamo cercando di risolvere è capire chi attiverà la transazione su quel contratto acquirente. Al momento, l’approccio è far sì che l’acquisto “restituisca” i fondi a chi ha attivato la transazione, coprendo così le commissioni del gas. Penso che possiamo sfruttare i “flashbots”, che si occupano di arbitraggio, per farlo!
È sicuramente una delle cose su cui stiamo lavorando!
Fantastico, trovo alcuni dei veicoli finanziari offerti dagli smart contract davvero affascinanti. Penso che questo possa essere estremamente potente come metodo per finanziare la comunità giusta.
In particolare, abbiamo già Discourse Subscriptions Plugin, quindi forse una PR per consentire una modalità “Sblocco” rispetto a “Stripe” potrebbe essere una strada interessante da percorrere.
Ho creato 2 contratti di blocco sulla dashboard di Unlock
A. blocco per gli utenti che hanno token (1000 < importo < 5000)
B. blocco per gli utenti che hanno più di 5000 token
Per A, vorrei aggiungerli al gruppo A su discourse
Per B, vorrei aggiungerli al gruppo B su discourse
Attualmente il plugin Unlock supporta solo un contratto di blocco su discourse. C’è qualche trucco per raggiungere l’obiettivo?
Dato che si tratta di un plugin non ufficiale, ho spostato il tuo post nell’argomento del plugin Unlock, poiché penso che sarebbe un posto migliore per ottenere supporto da persone che ne sanno di più.
Temo che il supporto per questo plugin sia un po’ scarso a causa delle festività, ma (comunque) l’ho appena installato sul mio sito di test e anch’io vengo bloccato con un ‘Oops - Error 500’ con lo stesso errore registrato:
Message
HasCustomFields::NotPreloadedError (Tentativo di accedere al campo personalizzato non precaricato 'unlock-lock' sulla classe 'Category'. Questo è vietato per prevenire query 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'
Penso che ci sia un conflitto con il plugin Chat in qualche modo. Se disabilito Chat tramite la console rails posso accedere al mio sito normalmente (inclusa la pagina /admin/plugins/discourse-unlock).