(The vault, I consider an engine.)
I’ve been lurking around the perimeters of this question for a while.
A couple of times I’ve begun writing a topic about it. Today, as I was practicing voodoo (reviving old mummified topics), I came across a topic I’ve been at before, but this time there was another post catching my attention (as it resonated with my current ideas):
A growing idea
During my time on the forum, doing research of SAFENetwork and what applications to develop and how, an idea has been forming.
As I’ve spent some days each on various topics such as decentralized exchange, smart contract framework with a virtual machine, decentralized search, to mention the more complex ones, drafting and thinking and even coding simulations, I have always landed in that it would be perfect to use the network infrastructure/logics of SAFENetwork for these things. Reimplementing it over and over - which would be needed if it was placed on app level - for every new application type that needs to form a network, just doesn’t seem right. It would be reinventing the wheel (probably less good of a wheel in many cases) and just stacking complexity upon complexity, with no end in sight, for every new decentralized application.
Really, one of the absolute finest parts of SAFENetwork is the logics of forming a secure network. The work done by the nodes of the network, is a completely decoupled responsibility (currently, storing and serving data). Anything could be done by this network. Token Exchange. Search (crawling, indexing, ranking, serving query responses), [Name any decentralized application]…
Extensibility
I would like to see the network being able to handle additional personas in a very decoupled way. An upgrade could let a new rust library with the additional persona, be added. And then engine (“vault”) managers, i.e. users, could decide what personas to run, and even how much resource they would be allowed to consume per persona type.
Users around the world wouldn’t even have to upgrade unless they wanted to take part of the new personas, as it would have no effect on the other functionality.
Reward mechanism
An additional thing, spinning further on what @Seneca mentioned: The reward mechanism could be abstracted to a general standard, just specifying points. A standard implementation could be used, or each persona could choose to implement its own reward algorithm, as long as it adhered to the interface, and produced the expected output (points), to be handled by the network rewarding processes.
Now, this moves implementation to rust, and some would say it isn’t the responsibility of the network. But I would say that this is exactly what the network should do: being The network, letting additional functionality be plugged in, with full backwards compatibility.
All FFI bindings would of course still be there, and anyone would be free to build their overlay networks as before.
The addition of personas could be done by completely independent developers doing “forks”, to be accepted by whomever liked the result, or by maidsafe, but still running on the same network and using the untouched core.
It would require that that core was designed in such a way to make it possible though.
How do you see the outlook for this?