I can’t tell if this is a simple question or a tough one…
Is there yet a route to calling some capability outside the network? I can’t get my head around how a request would be addressed, to see it answered. In the absence of a server on the network, will it be possible to pass a request to some point on the network which is then linked to an external capability?
Closest I’ve seen is allusion to use of databases, which is rather the inverse of this. If a user for example is to pass data or requests out, how does that best happen?.. obviously could post to some stamp addressed envelope but is there a more temporary route to communicating requests, perhaps using whatever will be there for transitory chat traffic?
maybe you could have a gateway of some sort that monitors a mutable in Safe. If the mutable takes some special value, it is a phone call. the listening device could answer, and convey some safe stored data to outside, and vice versa. Not sure if I really got your question right.
In the past we use to do api calls to our server on the clearnet, but now that is not possible anymore (and it’s for the better). If everything stays on the SAFE Network, that’s an attack vector less. On the other hand it does raise the question if some service can operate at all on the SAFE Network, think exchanges that need data feeds from clearnet etc.
IMHO everything that’s not on the SAFE Network is going to get hacked like we’ve seen so many times, so not allowing this is protecting the users and forcing clearnet apps to save on costs, get app revenue and embrace privacy.
but what of the other way round?.. a user on SAFEnetwork wants to access capability that is not within the network. mysearchrequest->outsideworld
That might be it … an interface between the Devices and SAFE tempts both ways??
I’m tired and thinking slowly then on how a search engine could be made practical or any other volume of database… there is a balance in any function of cost, where users will look to options for matching that with a balance of what is practical. Also, the transition to use of SAFE perhaps will find cases for partial engagement … providing a slippery slope helps get new capability drawn into the network. If the hurdle to transition was ever a big one, then devs would look for breaking down the problem into smaller pieces - one foot in SAFE and one foot outside.
Well if its an application that needs this then it simply does it the same way it would without safe network. And obviously a “native” application and not a browser application. But I’m sure you knew this.
Otherwise if you want a daemon in the network that accesses the outside world then you need to ask why and can it be done in the application that the user is running.
You need a application that is not the supplied SAFE browser. For example a native APP that provides this or a browser that someone may write that allows “outside” requests and SAFE network functionality/access
Of course you can go the “server” route and run a machine yourself that is always on and does the required requests itself. But the answer is writing an application that either runs on the users computer or in a server that the user’s SAFE browser accesses across the safe network.
I’m saying that for SAFE users to have access to things outside the network, somebody has to provide a gateway to those services (eg run a server that accesses the external service and provides a gateway to SAFEnetwork).
I think you may be asking if the network can do this in some other way? I’m sure it can’t at this time and I’m finding it hard to imagine any other way.
All in all, it is very hard (to say the least) to do this without compromising security, censorship resistance and privacy, because anything outside, including the gateway, is a sitting duck these days.
Yes, I expect you’re right as it stands and fits with my impression too.
However, my instinct is to challenge the boundaries of what is possible, rather than settle for the normal…and doing that early on perhaps helps too.
If we consider what the internet is used for, perhaps we might expect that people will want the same from anything trying to displace that normal.
So consider what the internet is used for atm and wonder how might SAFE cater for those interests List of most visited websites - Wikipedia
Some of those I can see are covered off, others where some level of interaction with user is wanted, are more hard to see through.
Given that so much of the web now is interactive, what option for interactivity?..
I don’t know the limits of what is practical with just client side and I’m unsure the costing model that SAFE will employ to understand the cost of a database within the network. Obviously, static data is simple one time problem but it’s the dynamic element of usability, that pushes the use cases.
The more use cases that are practical, the bigger then the potential market and larger the pool of users and engagement.
I agree with the value of your probing. You seen to be taking about two things here:
Things that might be hard to achieve on SAFE. Can you give any examples of things you think might not be possible on SAFE, some websites from that list perhaps?
The value of creating a bridge between a SAFE user and some external service. I can imagine these myself, and I expect people will provide such things (eg an email gateway) even if they defeat the objectives of using SAFEnetwork. I do understand the point that such bridges might help adoption, but I’m not sure about this because of the downside from using them. I’d rather we find a better way, though I’ve not given this much thought.
Yes, but I am interested in the official one provided by Maidsafe. I could develop my own browser or I could develop an app but there are 2 problems:
It’s much harder to develop that a simple safe site
a lot of people won’t use my app or my browser because they won’t trust them because they don’t execute in a sand box and so are able to do much harm. For example, personally, I won’t trust any app not done by Maidsafe.
The reason I’m asking you and @davidpbrown for examples is because then we can see if we can solve these issues with the current SAFEnetwork or not.
Saying “a fast changing database” can’t be done in SAFE skips over the problem that this fast changing database is currently being used to solve. That deprives us of trying to find ways of solving that problem in new ways, using this new SAFEnetwork technology. Do you see what I’m getting at?
It may be that there are some problems that can only be solved outside SAFEnetwork as it is now, in which case it would be good to know what they are and therfore how high a priority any improvements might be to help solve them. But I suspect there are also many problems that SAFEnetwork can solve, even though a change in approach might be needed (from a rapidly changing centralised database to something more distributed, and less rapidly synchronised, for example).
We can only figure this out by looking in more detail at specific examples and the characteristics they require in order to fulfil their particular functions.
Do you mean costly as in too much money ? or as in too much stress on the network ? or as in too much computations ?
From what I understood, the money part is yet to be designed, so I suppose tuning ratios between farming / market / demand could solve this.
One way to do this is to use SAFE as a kind of shared memory for a distributed app.
Let’s say I want to make an app and I make a client for the app which will run in the browser.
I can then also make a “server” side component. This would be another app that I could run for example on a virtual machine on AWS.
Requests could then go through mutable data. Basically the client side app stores the requests on the network, for example by appending it to a mutable data that my “server” app is polling. Eventually with MPID messaging I think this could be done through push instead of polling?
Anyways, so the client side app stores the request and the server app would read the requests and execute it. The request could for example be to run som query on an SQL database on the virtual machine, the result from the request would be stored as another mutable data or appended at the end of the motable data and the client app would read it.
The server component can in this case actually be hidden and anonymous, because the client only stores requests on the network and never has direct contact with the server and won’t know it’s ip address, so it would be a little bit like a TOR hidden service.
It could even be made to automatically scale. The sever app could look at the amount of incoming messages and automatically scale up new virtual machines if needed.
Sorry for my imprecision: I meant costing too much money (in safecoins).
My old safe galaxy site is an example. The states of the sections were reevaluated every minute. This means that some SDs were rewritten every minute. This was free at that time. Now this is not the case anymore with MDs.
Another example is a NoSQL database stored in MDs entries. Changing the values too often would cost too much money.
Another example would be the data produced by IoT devices
In all these examples, a way too workaround the cost would be to store the data outside the safe network and to get it with XMHttpRequests from pure web pages (not apps for user security as highlighted above). But doing this in a site stored on safe network is not allowed by safe browser.
Risk of getting confused by at least three thoughts now:
and as @tfa suggests
3. The cost of managing changes to data.
It was the first I was looking to but those other two are very important.
Limiting to thoughts above then for each of [1.2.3.]:
How would a user make use of a database within SAFE?
How would a user get to send requests to a resource external to SAFE? Perhaps that’s answered above with idea of browser hack.
What is the limit relative to cost… tempting perhaps a lot of capability where data changes over time might more easily be off the network. Which perhaps is not a problem, if there is an interface available that allows for static location off network to be addressable.
That last point was what I wondered is missing - an option to address a static real world point outside of xor-space. Specifically then, what option is there relative to IP addresses?.. and thought-experiment then : if there is no equivalent to IP addresses, what implications does that suggest for how services are provided?
I think at the base of this is a simpler question of what is possible on SAFE and what is not… and perhaps some of that still to resolve over time.