How do resources apart from storage work?


I’ve been reading about the SAFE network, and I think I good a good enough idea on how it generally works and distributes data. However, a couple things I still don’t understand. More specifically, resource management regarding applications.

My current understanding is that when you develop a SAFE application, you as the developer basically upload the application files to the network and make them publicly accessible. Users can then download the application and run it on their own devices. All data the application saves is then only stored on the users storage, and if it has to itneract between users, that interaction would need to happen decentralized/P2P as well.

Apparently that any application built for the regular internet can also be built for the SAFE network.

If that’s the case, how could applications work that can’t be downloaded and executed by the user? Sure, storage is decentralized and distributed over the whole network. But storing/managing data and databases isn’t the only thing centralized servers have to do in modern applications. To use an extreme example, there are services for Cloud Rendering - you upload a 3D model file, and for a fee the service will use its own CPU/GPU resources to render whatever you sent in. This can’t be done on the users machine, so can the SAFE network actually distribute resources like CPU, GPU and RAM as well?

Or another example: In some cases, users can’t be trusted to communicate directly with each other but there has to be some kind of trustworthy authority. Say, I developed a Dating app and need to compare the profiles of users to match them. However, if every user has their own data stored exclusively on their ground, the relevant profile information of the user has to be made public on their end, and if the application part that runs on the users machine wants to find any matches, it first has to scan and evaluate everyone else using the application. Which sounds impractical from a computational standpoint and has additionally a bad impact on privacy since you’d have to really make your information public for it to work instead of just trusting one third party for comparison. So, how would this be implemented properly for the SAFE Network?

And yet another example: Some applications use some algorithm, API secret or similar that the user can’t be trusted with. Users could only make use of those by accessing an interface for a server that only I, the developer, control.

TL;DR: Decentralization is nice, but as a developer, my users should not in every case have access to all of the application data. They do in some cases not have access to sufficient computing resources on their own device. How does the SAFE Network solve this?


The first version of the network won’t be capable of everything, but evenso some applications which currently assume centralisation might be implemented in other ways to achieve the same aims.

However, for those like your examples which can’t, the network will need additional features such as distributed compute. This is certainly in the long term plan and you will find some discussions about it, one or two in detail (here and in the Dev forum). But I don’t expect those to get much attention until storage and communications are up and running.