If anyone is interested in Nostr Proof of Work, I have a draft NIP and functional implementation of a POW service provider that can remotely generate POW for your events before signing and publishing.

The general feedback and support was on Nostr, and the Github issue responses were more concerned based.

I built this entirely in anticipation for mass Nostr spam protection - in case we needed it urgently. We seem to be doing ok with spam now, however it’s possible we may need to revisit minimum POW for events when publishing - as a relay opt-in.

And just to clarify, I don’t like burnt CPU cycles either. Paying sats directly to a relay works well - however unless you pay for 10+ relays.. your events are not decentralised (as most relays move toward becoming paid to publish). POW helps address the issue of low value spam and flooding - it doesn’t solve everything.

https://github.com/nostr-protocol/nips/issues/340

Reply to this note

Please Login to reply.

Discussion

And my final point..

If there isn’t much interest, I’ll close the GitHub issue in a week or so - as it’s served it’s purpose for now.

I think this idea has merit.

Would the idea be that the service provider receives the event, then responds back with a nonce the may be used to meet the difficulty?

Or would it be more involved in the signing than that?

Basically before the event is signed (the sig key), the event id key gets generated.

I wrote the service as a websocket server, and something even relays could directly support and get paid for each generation or use a paid credit system.

Basically before you post you pick a POW provider, send your event and a minimum POW you want, and if you have credits, it will return an event that’s ready to sign and then publish.

All Nostr clients support websockets. And all clients that can sign, already generate the event id and sign the event - using this service just deferred the event id generation to a remote service provider, before the signing.

Curious how you see the credit system working. Is it based on the author of the event or would it use client auth? 🤔

There is a relay AUTH NIP 42 as well, so basically my pow service example only lets you request events with your pubkey to have pow generated for them. That means someone else can’t use all your credits by pretending to make events from you, and it means you can deduct credits or have a fee you can drawn down for that pubkey.

These projects are all related and can work together. I don’t want to tell people how to charge or do accounting - even if they wanted to accept fiat. I’m focused on Bitcoin and lightning however, and bringing the tools we have up to scratch to empower providers.

nostr:note1u0pxa5egj4258f84hp75jl65d9ldh3a63l87du7gnk7cs00nkxzqtpltmv

Cool stuff as usual Blake, thanks for sharing.

Let me know if these projects can help you with real world outcomes. I’m mostly slowly building for myself and the ecosystem - but the reality is we don’t have that many Nostr rust devs.. so often it feels like other people using stuff has a low chance atm.

I’d love to build on top of these projects and end up with more full functional projects people can use and run themselves. Like even a nice way for paid relays to not rely on third parties they don’t want to.

Appreciate that and I certainly will. Most excited about the http auth as that will be helpful in multiple ways.

Will be watching PoW space in the future.

I suppose I could also just wait for the draft proposal 🤣

I just read it and couldn’t make up my mind. We probably need time to see its use case.

Why not captcha for every few events?

I suggested that as a joke in the past.

I don’t think the UX works - do you have to perform a CAPTCHA per relay you publish to for every three events? Relays would otherwise have to trust some shared CAPTCHA service session or result.

Plus CAPTCHA doesn’t work well, and is dying slowly. It was a rat race of computer vs computer.