Fediverse/Nostr tip bot?

Hello Hello.

I started the discussion in the Telegram group but things always get lost in the chat. I strongly think Fediverse is very important for the human society, and more important for something like BCH. BCH is decentralized money system. Fediverse is the decentralized social media. So we should maintain a strong presence there. So I think a tip bot for fediverse will be very cool and useful.

Background

ActivityPub and nostr

The widely spread protocol is ActivityPub. It has got a quite mature ecosystem, and it also has got many users who are not tech savvy. Some entities like MIT, European Commission, NLnet and a great number of open source projects have got official accounts on Mastodon or other ActivityPub servers.

Nostr, is another newer protocol which tries to be more decentralized than ActivityPub and also do not tie the user and all what she has got to its instance. A user rather has a cryptography key which is her identity and can use any node in the network to communicate with the other users. Nostr has got quite a userbase, and many crypto advocates, including BTC fans, maintain a strong presence there. However, as Nostr is newer and younger, it has got a much smaller user specially with regard to “normal” people. Also the softwares and their UI/UX are not much mature and also possibly hard for most people at this stage.

The bot architecture

We need the bot to support both Nostr and Activitypub. And it should also have room for other protocols if needed in future. Best is having a core which is agnostic about the protocol(activitypub/nostr) or platform(mastodon/peertube). Then adapters for each of the platforms which connect the core to the outside. This way, in future, we could add support for other platforms like Matrix, too.

Final

I’m thinking about going for an MVP which is actually useful and works. Then deploy it as experimental on Mastodon and/or Nostr. During this time, the project would get polished and I/we could go for the next levels. In future, we could have more than just simple tipping. There could be small give aways, or mini games(like trivia) with small prizes.

This topic I’ve created is for receiving feedbacks about the project. And also the questions I need to answer in the campaign proposal.

Another thing, outside technical stuff, is that thanks to the situation in me country, I might not be able to deliver the project in a reasonable time frame, like the same happened for the webring project. It took me ~6-7 months to deliver the project after receiving the funds. While in Iran we believe they have given up on controlling people’s minds through disconnection, nothing is certain.

PS: I do hope I have opened the topic in the right category!

I suggest focusing on Nostr more than ActivityPub.

The BCH community already has two nostr clients: bchnostr.com and bchat.cash. Both are in early stages, but I personally believe that Nostr is the “correct” answer for decentralized social media, synergizing with BCH and IPFS.

I don’t think that a federated protocol like ActivityPub will enable a truly decentralized social media in the way we BCHers tend to value (permissionlessness, censorship-resistance, not having a single point of failure), but I think that Nostr CAN fulfill those goals.

It’s worth noting: one of the core value propositions behind both bchnostr and bchat is that tipping is a first-class method of engagement. In the case of bchat, EVERY engagement is monetized. In the case of bchnostr, you can tip on posts directly.

3 Likes

I do understand value of nostr and also problems of AP. However, most of engineers like us see things only from engineering point of view. We have to maintain a presence on Mastodon/AP because the UI/UX is much more mature, and also many users fleeing from centralized X/Twitter join Mastodon.

For many tech savvy people like you and me, UI/UX is not much of an issue. But for normal people, it’s very important. And we have to also reach normal people. That’s why I’m proposing an extensible architecture. The “core” doesn’t know nor cares (much) if it is talking to Nostr or AP. Then we could have adapters for each of them. This way, not only we can win both grounds. But also we’ll have a more smooth development thanks to modularity.

Edit: BTW thanks for the feedback (:

1 Like

Fair - I understand this point :slight_smile:

Are you aware of any existing BCH communities on AP? (I’m not - would maybe be good to link them here?)

The old bitcoin tippr bot and chaintip offered great exposure to the general public.

Bitcoin is something that can be done out loud if the world is a place where people can have small amounts of free money.

However, platforms that lead with bitcoin tipping as a first-class feature (memo/read/noise/nostr clients) often devolve quickly into paid engagement, then begging and bots.

Melory has stood up a Mastodon server here: BCH Explorer (@bchexplorer@mastodon.melroy.org) - Melroy's Place

Outside of Xitter, it seems the general public has soured on free currency generally for the moment.

Exactly! Also playing with small amounts of money on Mastodon while being public is fun too! I mean on different platforms like Discord/IRC/Matrix, there are bots to have fun with. And a number growing, and it being traded, is enjoying. Now if you add small amounts of money, like few cents or sub cents, double the fun!

And I strongly agree it shouldn’t be first class, given the problems you mentioned. Also AFAIK, not all nostr clients have this as first class. Am I right?

The next step to realize is the technical aspects of the bot. I think it’s best of the money is controlled by the users themselves. That is, each user has got a keypair and the private key is shared with the bot. This way, the user can spend their funds through the bot. But also has got control of the money, whenever they want to cash out and also put money in it to be used for tipping.

Another advantage is that whenever the user moves to a different account, like on another instance, they can prove their identity using the keypair. The user could have different accounts aka aliases on PeerTube, Mastodon, Lemmy and others. I think we could also think of having this across the protocols. Like ActivityPub/nostr/Matrix/etc.

This, of course, should be optional as newcomers to this world are not used to control their key. So the bot will have to create a keypair and give it to the user.

A challenge with transportation of private keys on AP is that there is no E2EE and the instance owner can read all private keys. Solving this from technical point of view is easy peazy. The real challenge is UI/UX. The first idea which comes to me mind is a website for the bot. The user will authenticate with their AP account and the private key will given to them through that channel. Thoughts?

Most social clients built on Nostr do have zaps. BCHNostr has tipping too. So it’s pretty widespread. You could easily take tipping off of a client and rebrand it though, since almost all clients are FOSS.

Hmm does this mean we don’t need a tip bot for nostr? A problem with BCHnostr from what I can tell is that it targets users who are already BCH people. We need to attract people outside BCH, too. And it’s best if they can interact with the bot where they are.

Or perhaps I got it wrong?

A tip bot would be useful for people using any client other than bchnostr, so not a bad idea at all. Nostr was made in the BTC community so it has lightning tips in almost every client but obviously not BCH.

However, I do think that the more clients that have BCH tipping built-in the better. It’s great advertising for BTC and it would be great advertising for BCH. Tipping social media posts is part of the gimmick. We could really use something like Nostr Wallet Connect. Maybe I’ll look into that.

A tipping bot would be handy on other clients. I’m not sure how it would work though.

We have WizardConnect which uses nostr

Hmm I think again the user is required to install some special app for nostr, right?

What app actually provides that? I couldn’t find one.

Every client can see every post, whether it’s from BCHNostr or not, so it’s not stovepiped or anything. BCHNostr isn’t actually its own little space. However I think that BCHNostr only shows other people from BCHNostr. So it’s kind of the opposite of what you’re saying, the BCH community is a bit segregated from the outside world.

I already vibe-coded a version of ditto.pub (a nostr web client) to support BCH. Here’s the link. It still has the lightning symbol atm, but you can set your BCH wallet address in your profile and then send BCH to people if they have a wallet address set up.

I think I should go for AP for now, then we’ll think about nostr later. But an important thing to consider in every step for this project or others, is UI/UX. It should be as easy and simple as possible for normal users to join and test. So IMO, people shouldn’t need to set up a wallet address, at least for the first steps.

So for the MVP of the tip bot(version 0), I’m considering the following features:

  • The “base” must be extensible and it should be easy to support other protocol or transports in future.
  • The MVP needs to support an AP server. I have Mastodon or GotoSocial in mind.
  • Support for other protocols and AP servers are not part of the MVP.
  • Basic tipping or transfer of funds should be possible between users on Fediverse. Each user should have its own keypair generated and unique to them. So in the later versions, the user can take control of the funds as the bot provides them the private key.
  • In the MVP, the user hasn’t got control of the private key. However, they can request a withdraw of their funds to an address of their choice.
  • The bot should have capabilities to support languages other than English in future, for both commands and responses. I am sure many nations will find it very attractive as they can talk to bot with their own language.

Other than this, I would also need to host a GotoSocial instance so the bot can use it as there are very few instances which allow bots, and I’ve found none which allow crypto related stuff.

This MVP will be experimental. I will need to roll it out and slowly polish it, before I go for the next phase.

I estimate the MVP will take ~30 days done in Rust, and I think the next ~60 days after the launch, I would need to polish the bot from time to time and also take care of it.

Does 5000 USD for the base work and 1000 USD for the polish part make sense?