• Development
  • Is that ok? Toying with a decentralized twitter-like

Hi everyone,

This week-end, I've toyed with a simple idea : a decentralized twitter-like running on Stellar.

The implementation is quite simple. Each transaction has a memo which can handle 28 UTF8 characters. I generated a Stellar keypair and each transaction is sent to this address. A transaction uses the minimal amount for sending (0.0000001, from what I found, plus fees) and split a message in as many transactions as is needed to send the whole message. The memo of an incomplete message ends with the "+" character.

From there, I only need the client to watch for transactions sent to this address, and recompose messages from their parts. This is cool, because it's purely serverless, and people can create new "rooms" simply by changing the publishing address. I intend to allow people to set their username or room name by setting data on accounts.

But I wonder: would this be considered an abuse of Stellar's network? It sure is something else that what the network has been created to achieve, and it could mean a lot of transaction flood. I certainly would not want to hurt the network.

What do you guys think? Is this a problem, or would this has no impact on the network?

    I also had this idea. Are there any estimates on the computational capacity / scalability of the Stellar network?
    Are there any stress tests that have been done?

    I had similar idea and concern for using memo for voting app.
    Will it hurt the network if we use memo for high frequency data transactions ?
    Regarding your comment " A transaction uses the minimal amount for sending (0.0000001, from what I found, plus fees)", I was thinking of issuing token with zero value. So that people are using token and not their XLM savings but still they need to pay the fee in XLM.

      To me Stellar looks a bit like a bad fit for this problem. Of course you can do it, but I don't think it's a good idea. The Stellar slogan is "Move Money Across Borders Quickly, Reliably, And For Fractions Of A Penny", and this doesn't fit well with your idea. Form a scalability and usability perspective you could solve this problem much better without Stellar, so why use Stellar for it?

        bkolobara what have you in mind that would allow to build a distributed "database" without needing to deploy any server app and which usage cost for users would be as low as stellar?

        jagstock Yeah, my initial thought was to build a token as well. But this would have meant to manage an anchor and - if I understood correctly - to set a maximal amount of tokens being issued. Both would need to be managed on the long term, while when using xlm, I can die tomorrow and the app still lives. Plus, people need to buy tokens with xlm, anyway.

          oelmekki Anchors are needed if you are issuing credit with underlying physical asset. In this case, anchor is not needed. Just have an issuing account, transfer all the tokens into distribution account and then permanently lock the issuing account. So the tokens are fixed.
          User can setup trust with issuing account and you can directly transfer the tokens to users for free. But that does not prevent anyone from trading with XLM (can someone confirm ?)
          But your point of maintaining the token is valid. Since we are targeting non speculative token, we need to ensure the tokens are distributed evenly.

          bkolobara I think Stellar community needs to change the memo policy. I am very much tempted to use memo for non intended purposes. (it might be wrong but programmatically correct !)

          oelmekki

          I'd call it abuse, but that's me.

          It's definitely not what the network was intended for, and seems pretty wasteful in terms of resources used per message.

          Ok, thanks everyone, it seems quite clear that such kind of app would be controversial, at the very least.

          The fact that it's not what the network is intended to do is of lesser importance, to me. Jed himself said that he doesn't know what people will build with Stellar and that he expected to be surprised. That's usually what happen when you create a protocol.

          The fact that it's intended for money transfer is probably the reason why it could work : if developers don't need to host their database on a server, that's because people are willing to run Stellar nodes, because there's money in it for them due to their financial activities. I wouldn't call it wasteful because you just have those nodes which would be running anyway, and you don't have to spin up new servers just for holding data. Yet, from my initial PoC, it would be slow, due to the very limited nature of memos, and I certainly don't want either to discover later that it would cripple the network.

          I won't go further and will continue to watch for systems that would allow truly decentralized databases with no important costs for users (so this excludes ethereum). Any recommendation is appreciated.

          Well that's true that Stellar Foundation itself calls for innovative uses of their platform.

          The point being, as far as I know, nodes doesn't receive incentive as in most other crypto nets; and going this way might consume quite a load of ressources on the network.

          I think the idea is good, and nothing will prevent it to exist because, well, that's possible.

          Looks like problematic, though.
          Would be good having the Stellar devs sharing their ideas about it.

          This is a very interesting discussion. I agree that it seems wasteful making the supermajority of the validators on the network agree on a transaction that sends 28 characters instead of sending "real money" across the globe for someone that needs it.

          However, won't the many useless ICOs and joke assets that will be created and traded around be doing the same thing? The anti-spam tool the network has is the fee, and if the idea in this thread could be implemented and used to "abuse" the network, then it means that the fee is too low.

          17 days later

          I've thought about this idea too. I think it is a cool idea and experiment.

          Something to consider is that each "Chat room" will have to maintain a balance of 0.5XLM. And my understanding is that if whoever owns the keys to the chat room "merges" the account into another, the history will not be as easily retrieved.

          I was worried about the minimum account balance changing with the number of transactions, but looking closer at https://www.stellar.org/developers/guides/concepts/fees.html#minimum-account-balance it seems as though the minimum only changes with trustlines, offers, signers, and data entries. I don't think transactions qualify under that list, but I could be wrong.

          Oh, thanks Steve, indeed IPFS is an interesting direction to explore. It's not especially that I want to build a decentralized twitter, it's just that I'm interested in the concept of decentralized database, and publishing short public messages sounds like an easy use case for a first PoC. Ultimately, I don't want to think anymore : "yeah, that side project idea is cool, but I won't rent (pay for) a server for that". Maybe a decentralized database could be enough to build pure client side apps (I want to explore that idea, at least).

          Anyway, thanks for the pointer!

          24 days later

          I was thinking about this for quite some time in late 2017. Being aware of all the cons, I badly wanted to forget about it. But in the end I could not walk away from the idea.

          On the one hand, it seems like plain abuse of the functionality. On the other hand, it is such a cool and different way to use the technology, and who knows where it may lead.

          For example, you could have a central authority (that you set up and control) providing confidential info to your other (future) automated systems (and you don't even need to reveal the location of your authority to your clients, and vice versa).

          Or you could have automated authentication for logging into websites. For example, you provide the site with your public address, the site server sends you an authentication token (encrypted) in the memo, you provide it back, proving you are really you. Forget about storing passwords.

          I think the list of possibilities is endless. As is the list of potential for abuse :-/

          Anyway, I made a proof of concept, which works on the Testnet and can be found here: https://hmatejx.github.io/Interstellar-Whisper/

            Just one clarification, my proof of concept is about encrypted point-to-point messaging, so not like Twitter at all.

            It does look like an abuse of the network to me and that's why I think you should do it anyway if you care about Stellar.
            First of all, it may never pick up, so there will be no problem.
            If it does picks up and creates massive amount of transactions on the network and some services will be slowed down because of that - great! That's exactly what we need, the sooner we start facing real world problems - the better! We can't always assume that network consists of good actors only. Maybe fees will have to be adjusted effectively pushing you out of business (but then you can always set up your own private network) or some other solutions found.

            hmatejx I really love the idea of using stellar for authentication. Here's an other implementation idea: 1/ you register with your stellar public address rather than email address, 2/ on login page, you're provided with a stellar address for website (permanent, you can save it) and a randomly generated temporary hash, 3/ you issue a transaction of any amount to that address with that hash as memo, the server sees it and match the hash to your session/websocket, you're authenticated.

            This could even be automated with a browser extension, holding the private key for an account on which you only keep a very small balance for logging purpose, and you're automatically logged in each time you visit your favorite websites.

            On the other hand, it's the ultimate surveillance system as you just have to know websites public addresses to see all websites someone regularly logs to ?