App Services Subsidizing User Payments

In this forum post, Dimitar mentioned, “The current design of the network economy is based on the assumption that we think people will pay to upload their data. We have no evidence for this.”

That got me thinking…could there be some way that app services could subsidize user payments? Either voluntarily or as built in to the network?

If it will truly be less expensive to host services on the network instead of on centralized servers (a proposition which to me seems doubtful given that files need to be broken up into chunks, encrypted, stored on several nodes, and then recombined somehow…but maybe someone can give me a counterargument), and given that many of the services will be for the express purpose of making a profit, then perhaps hosters should share some of their savings with users.

I’m new here, so forgive me if this has already been considered, if I’m not using the correct terminology, or if I am misunderstanding something.


This is a powerful idea and deserves a substantial amount of consideration.

The current idea is for people to run an authenticator, which is like a personal assistant to make sure your data goes to the right place, has the appropriate permissions, is only available to apps the person wants it to go to, is paid for (or not paid for)… it sounds very empowering but probably needs a good balance of automation vs intervention.

It’s tempting for app devs to ‘make it easier’ for their users by just paying for the upload themselves. But that would really go against the authenticator and own-your-data concept. So there’s a double duty for Safe Network devs to make it easy for people to own their data, and easy for app devs to work with that particular data model.

My guess is the best way to subsidize upload payments is to make sure the ‘ownership’ and the ‘payment’ are very separate from each other. If they’re too close together it’s tempting for the app dev to both own-and-pay, but if they’re cleanly separated it’ll be possible for app devs to pay without necessarily owning the data.


Something similar to ethereum smart contracts ‘allowance’ function.
User A has 8 and wants to pay 10
User B has 20 and sets allowance for User A to spend 2
User A uses his own DBC + some form of partial DBC that shows User A may spend once 2.
Combined value is payed.

Maybe the allowance function can also be extended to only be allowed when to certain address or service is paid. So User can only pay to X but not transfer to anything else while using Allowance of B.

Then there final payment should also be check-ed if it failed and nothing happens or is paid in full.


Maybe the easiest way is for there to be a procedure made for businesses to have a system that when you place an order (as an example) the user pays for the order to be written and the business sends a DBC to which reimburses the user. Very tiny amount but doesn’t require any changes to what has been proposed already. If the user is ordering stuff then you’d expect they can cover the tiny amount to send an order.

Now for larger amounts, like a book size which might be more than a cent, then maybe the publishing company can prepay the writes by sending a DBC for the amount since there’d be a contract ensuring the upload occurs.

The cases where an App is legit and wants to fund the user for their uploads, there usually is a reason and in that reason a procedure could be worked out from post to pre paying for the storing. And in that too can be who owns what data if that is an issue. For instance a contractor hands over ownership of the data generated to the paying person via an App

I would also consider that the many reasons would require different protocols for deciding the method of paying with who owns what. It may just be better that it remains as the uploader owns the data and payment is determined by the “parties” with pre or post payments. Thus no mistake can be made by the Safe protocols/code and the user is clear on it rather than the core code deciding and the user may not know.


I like the ideas floated for how this might be possible!

I’ve been trying to think of some real world examples to crystallize what I’m imagining. I’ve come up with a couple: (1) A SafeFacebook that wanted to subsidize user payments to upload information, say a profile picture, because it otherwise earns a profit from operating the service, (2) a SafeGithub or SafeWikipedia that wanted to subsidize user payments to upload new information for charitable reasons, (3) a doctor that may wish to subsidize patient payments to upload medical records on a SafePatientPortal to encourage the secure transmission of sensitive medical information.


Good place to get ideas – Gas Station Network concept:

Ethereum Gas Station Network (GSN) abstracts the process of paying for gas away from end users which minimizes UX friction for dapps. With GSN, gasless clients can interact with Ethereum smart contracts without users needing ETH for transaction fees. The GSN is a decentralized system that improves dapp usability without sacrificing security.

Example use cases for GSN:

  1. Privacy: Enabling ETH-less withdrawal of tokens sent to stealth addresses
  2. Pay for gas in supported ERC-20 tokens: Allow users to pay for gas in ERC-20 tokens that support permit function
  3. Pay for gas off-chain: Allow users to pay for gas indirectly via a L2 rollup or a credit card
  4. Onboarding: Allow dapps to subsidize the onboarding process for new users

# The problem

Without GSN, anyone who sends an Ethereum transaction needs to have ETH to pay for gas fees. This forces new users to pass KYC and purchase ETH before they can start using any dapp. This can be a major hurdle for users without prior crypto experience that are unfamiliar with the concept of needing to keep ETH in their wallet for gas.

This is also a UX pain for existing users that need to continually replenish their ETH balance to pay for gas fees even if they have enough ERC-20 tokens in their wallet to pay for the transactions they need.


I get that there are good reasons for wanting to do this, although I’m not sure if it is technically feasible.

My concern is that it ends up replicating the “if it is free, you are the product” business models which have created enormous abuses of privacy and manipulation.


When you load a file on the classic clearnet you are essentially downloading the file from some server somewhere to your computer. And if you want to send a file you are transfering that file to a server and then some other computer is then downloading that file from that server. Ad nauseum. The bigger the file the longer the download time.

On SAFE you pay the resource cost in SNT, which you gain by devoting computer resources to the network, and then you can access that file anywhere you want because you have the access key to the file. If you make the file public then anyone can access it. If the file is private and you want to share it you simply share the access permission to the file. The load time is determined by how often the file is accessed network wide. If it’s a popular file then it gets copied network wide by a lot of nodes. If it’s obscure then the nodes around you might take a bit to find other nodes that have it. But the network makes a point to preserve all data so there will always be nodes with the file somewhere.

Moreover on the clearnet files get copied over and over. You can have 50 million copies of the same lolcats photo. That doesn’t happen on SAFE as there is no need for it. You upload once and the next time someone requests that data it doesn’t get copied, they just get sent access to the file, they get sent a link essentially. The network compares if there is any difference between what is being uploaded and what is already on the network. It’s part of the deduplification function. Look it up.

So essentially if you’re a business you can lose profit on SAFE because it wouldn’t that hard to pirate your stuff. That being said if you were say a game developer you could set your distribution to private and give only your paying subscribers access then they’d get near instant downloads and updates. Same with movies and music assuming you’re coming out with new media regularly.


Thanks for the insight, @Blindsite2k .

Do you know where I can find more information about this? Does storage on more nodes necessarily mean faster download times? Is there a function that chooses nodes with the lowest latency?

I hadn’t thought of that. Doesn’t that happen on the client-side, though? A website host doesn’t need to store several copies of files, right?

Will do.

1 Like

Just trawl the forum archives

To the extent that the more places a particular chunk is stored then the greater the chance that it will be closer and hence faster to download.

There was recent discussion on this. Check posts by @neo, I think

1 Like

I’d start with the SAFE network Primer and work your way out from there. But iirc yes the more nodes hosting a file the faster it is to load. The network optimizes for the smallest nodes not for the big bulky ones. That’s because the network splits the files up into chunks AND because the network is naturally decentralized. So it’s better to optimize for the billions of people with little laptops and cell phones than a few giant mega servers. And yes there is a function that opts for the lowest latency or rather rewards for offering the network more resources. Latency is just bandwidth by another name, and bandwidth is a network resource. Remember you pay the network resources to get SNT to upload data? So if you’ve got a fast internet connection but not a lot of space on your computer you can pay for SNT in bandwidth as opposed to space. If you haven’t got much speed but lots of space you can devote storage space on your hard drive instead of bandwidth. But both are computer resources worth SNT. So if you’re out and about around town you could devote CPU time on your phone and only a little bit of space and bandwidth to the network because you’re probably not going to be using the full power of your smartphone’s computing resources while walking around. Or at home you could leave your computer to farm SNT while it’s idle for minimum computer usage since you probably have infinite internet at home. But all this means that lag gets handled by people that can afford to do it not by the user waiting for their file to load.

The major issue with the SAFE network is that it’s asynchronous and doesn’t handle live streaming events too well. And by live i mean things like online gaming with down to the milisecond events. If all you want is to stream a broadcast you could probably do that but the problem is coordinating multiple people in say an mmorpg or something then it gets complicated. That’s where having a third party centralized server might come in handy. But even if all you did was used SAFE to handle all the identity information and just used a centralized server for processing gaming or live events that would still be a step up for privacy.

1 Like

This is a powerful idea. I had only considered the storage side.

I think that is a problem on the current clearnet as well. I think that’s why folks have LAN parties.

1 Like

Is that still a thing?
I went to my first nearly 25 years ago - Touring Car Championship was the game of the moment then. I honestly hadnt heard of them in a looong time. But Im not a hard core gamer, especially not FPS games.

For competitive games for sure, 1ms ping all day :100: