Thanks nick. I really appreciate your input. I just believe that a project so seemingly well though out as this should have a summary that MOST can understand. Early adoption being the favorable outcome.
I will make it clear in anything I finalize before wide release regarding SAFE, that things are subject to change. Continued updates on my part will help to ensure informational accuracy over time. What I need for now is your written attempt to explain the SAFE protocol to a smart 7 year old. Pleeease! help me with this. Selectively emptying my mind temporarily is frustratingly difficult. Don’t laugh, it’s not easy
Hi there, welcome to the forum. I’ve tried Freenet for a number of times. This is the way I get it, and I will try to explain which differences there are with Safenet.
Freenet - You run it locally on your computer, including all chunks and keys etc. So when you stop using freenet, the chunks and storage and keys will stay on your computer until you run it again. The chunks are “cached” when they come by (correct me if I’m wrong).
Safenet - You run it locally on your computer, but only when you connect to the network, chunks get stored on your system. When you stop using the network, the chunks are gone/useless. You do cache chunks that come by, but when you’re part of the network, you also store chunks which are “close” to you based on XOR. That’s the Vault part. And when someone calls for that chunk (does a “GET”) you’re rewarded some Safecoin by the network. This doesn’t happen when you provide a chunk from cache.
Freenet - You have an identity bases on WoT or some other system on top of Freenet. Your private keys are on your computer (they can be encrypted for security).
Safenet - There’s nothing on your computer, just an empty client/vault. When you “log on” to Safenet, you’ll provide a username and PIN. (let’s say “polpolrene:5678”) you also provide a password. So when you provide username and PIN a hash is derived from these 2 values (and some Salt). This is the address of your personal file. So by providing “log on” info, you request an encrypted file from the network, it’s your own personal file. That’s where the keys are, and the data-atlas to your personal files. Your password is used to decrypt the file locally.
Freenet - Cache is used to store chunks. You store chunks that “come by”. If you request for a chunk, there’s an x-number of Hops-to-live to get that file. So you request a chunk to a number of users that you’re connected to. (again, correct me if I’m wrong). Data needs to be requested to stay “alive”.
Safenet - You request chunks from your close group. They will ask the network for the chunks and they’ll find out where the chunk is by finding the user that’s closest to the chunk based on XOR. With one billion users, you should be able to get the chunk within max 30 hops. There are always 4 copies around of each chunk in a vault somewhere. When a user logs off, the network will find out quite fast, and within moment a new location is added. So you might request a chunk that’s not requested for years, and it should be in a vault somewhere.
I agree that both projects are made for security, freedom etc. I also agree that not all info is out there on the wiki. But things are going quite fast, there used to be a lot of “manager” systems in the network, but a lot of them got killed and where removed to make things simpler. I’m not really excited to write new entrees to the wiki at the moment because I would need to poke the Devs who are very busy, and things might change to much in the “sprints”. In a few weeks we should have a live testnet, and when things become clear and are tested and will stay in place, I think we’ll jump on the wiki with a bunch of people, supported by the Devs to fix that part.
Here’s a topic I wrote about the different encryption layers. It might have changed a bit, but I still think it’s correct for the biggest part:
And to add some more info, on Safenet you can’t join the network by providing a public key. You actually need to provide a public key, and wait for a group (mex 32 nodes) to take you in. They provide you with an address. from that moment, you’re on the Safenet XOR-network with your own little location. The system behind that is called “Sentinel” and I tried to get my head around it in this post:
Bro please understand how much more important it is to actually make it (what the core team is busy with right now) than to keep explaining it to everybody (which they already have done a superb job of and again, all the code is open source on github).
If it works the way they’re planning, adoption will simply happen because it gives everyone a much improved alternative to everything they’re currently using online… And EARN MONEY !!!
But keep going with your info graphic!! It sounds awesome and I’ll definitely show it to all my friends when you finish!
Overarchingly, it appears it appears from a top down perspective that the main difference between safenet and freenet is that freenet is both one level above and one level below SafeNet architecturally. One the one hand, Safenet is a one-stop shop to fulling the bitcoin’s original goals of decentralized currency, I think that gets missed a lot. I seem to remember a discussion on the forum a while back and many may have decided to sort of underemphasize this quality of the network while focusing on the data storage, encryption and retrieval angle for broader appeal. Nevertheless, the fact remains that if Safenet works as advertised, not only will bitcoin, but all fiat currency quickly lose their place.
By providing an opportunity to easily make ‘money’ while providing security and rapid data access, Safenet provides a significant financial incentive to use the network, foreshadowing rapid growth once word catches on. Due to the decentralized nature, i.e. no heavy, central blockchain to download and check against, safenet has the power to expand infinitely faster than bitcoin, because bitcoin unfortunately scales horribly/not at all. I say all that to say: Freenet doesn’t seem to have this. This is a big deal.
One the other hand, however, And this is how freenet is one level above safe architecturally, it provides (perhaps the same quality, maybe a little less depending on implementation) a platform for such a system to arise, Safenet IS THAT PLATFORM. Freenet is your OS, Safenet is your Microsoft word/killerapp. However, Safenet is also its own OS in this sense as it provides the same basic platform. Safenet is more focused on replacing bitcoin as a viable replacement for fiat currency, and by extension all forms of centralized authority, to provide the ultimate autonomy in an autonomously authenticating network.
You can take the view that this is the big thing for you, but not for SAFEnetwork.
The primary goals as I understand them are essentially Security, Privacy and Freedom / Universal Access to Information for the benefit of everyone.
The currency is a means to support those goals, which, by the way, does promise to be a big deal economically (just not first and foremost). I think the order of the aims is important, because this is what underlies the project’s direction, goals, design choices etc.
Hello. I’m another Freenet user here who has heard about SAFE for a while now and has browsed the website several times over the past months. I have many questions, but only limited time, so I’ll try to keep to my main observations and concerns. First let me say that I want all applications that strive to give freedom and privacy to users to succeed. It is a worthy goal that we need more than ever.
Browsing the site and github repositories, one thing that jumped out at me is I see you initially wrote SAFE in one language (C++?), and now have switched to Rust because of perceived advantages with this language. I have never developed in Rust, so I’ll take that at face value. I’m not a language snob and I’m not going to criticize you just for using or not using XYZ language. However, new languages come out all the time with new and exciting features and improvements on previous ones. Are you going to keep rewriting Rust when a newer and better language comes out? Why not choose a more popular language where you will be pulling from a much larger pool of experienced developers. You’re severely limiting your potential contributors by choosing Rust over many other more popular languages.
Secondly, looking into SAFE as an application developer, I found scant details about what APIs are available and how to use them. I see an archive github repository with an self described pre-ALPHA quality API from over a year ago. It looks like this is before your Rust rewrite, so I’m not going to bother looking at severely outdated information. I saw mentioned that SAFE will be released in a few weeks, so how are application developers supposed to write apps when there’s not a current stable API available?
My biggest skepticism is with the claim of data persistence lasting forever. From what I gather the inserter of data pays a one time up front price for nodes to store that data, and the data is stored on multiple nodes for redundancy. So far that makes sense. Now if one of those nodes goes offline, the other nodes somehow detect that and then replicate the data to a new node. Now who exactly pays for this new node to store the data? Nodes that are storing data don’t know who inserted the data correct? Plus the inserter may now be offline, so it can’t be the inserter. Do the other nodes still online somehow take back the payment made to the now offline node? The offline storage node may have already used that payment for something else, so that can’t be it. Does the new node not get paid at all for storing the data? If so, why would they accept that data, when they could get a paid for storing data from someone else, so that can’t be it either.
But let’s say that the payment obstacle is overcome, and now all nodes that are storing data have been paid and the inserter can access their data and everyone is happy. What’s to stop a malicious storage node from accepting data and payments, shutting down their node, erasing their storage and creating a new one with a new identity, so the network views this as a completely new node? Now they can get paid again to store more data and still have the previous payments for data they no longer have. They can simply repeat this process ad-infinitum and keep getting paid for data they’re not going to store long term. So what are the protections against this?
I’m struggling to see how this payment for storage system can work and have the data last forever.
I suspect Rust will have the opposite effect. Its popularity is rising and there are a bunch of people wanting to use Rust and looking for projects to contribute too.
Nodes are not paid directly for storing data. They are paid through a lottery system. The more data their serve up the more 'entries" they might get paid for.
All in all I think the whole “payment” thing is overemphasized. The network makes hacking nearly obsolete in that there are no honeypot servers to take over and everything is encrypted and scattered by default – It protects the privacy of the users. The benefit of using it is payment enough. The monetary incentives make “bad acting” expensive.
Skype, Bittorent, etc all thrive without payment mechanisms. SAFE will be even stronger because it does have one.
Rust was an interesting move – but it was done so the code would be safe to run and much simpler for developers to dissect and understand. I think they cut the lines of code massively in making the switch… I don’t think they will be switching to whatever the next fad is… Rust made everything Safer simpler, and tidier… Can you really trust an open source project to do what they tell you it is doing if it has several million lines of obscure code? Simpler is better.
I’m working on aggregating this info for the purpose of dispelling your concerns. Regarding your data permanence related skepticism, I point you back up to the post in which I try to condense protocol and module design/function. SAFE does not pay it’s farmers for the data stored on their machine but instead for the data that is accessed from it. As nobody can tell what’s on their machine due to cryptographic obfuscation, attempting to create multiple clients in order to unfairly profit from forcing data stored on your machine to be downloaded largely fails.
It’s preferable to have devs give me some insight, but ANYONE is welcomed to. That includes you. They can use their own discretion when it comes to responding to my requests. The same way @happybeing is hunkering down to inform the rapidly increasing number of new members about SAFE, I am prepping for the tsunami by creating a clear window of condensed information for the casual to peer through. Some people regardless to how enticed will struggle to understand how SAFE works given the current information. They are my target. To me, they are great if not equal importance. Not everybody is impressed by the superficial. UI and UX are great but unless you can briefly inform a prospective users of the design advantages over existing solutions, they tend to remain loyal to what they already know. Assume the worst and hope for the best. With this in mind I assume nobody has the patience to read more a few lines at a time without losing interest. Which means every line has be succinct with a smooth transition to the next. It’s not perfect but I’m hoping it will help.
If I asked you to read 100 pages of academic papers in your native language, and 1 page of a children’s book in a foreign language, you’d find it easier to understand the 100 pages of your native language. You can see that knowledge of the language is fundamental to understanding the code. It doesn’t matter if you have 1 line of code or 100000 if you don’t understand the language. Using a less popular language means fewer people will review it to understand what it is doing. Simpler is not always better.
Who pays this? The person accessing the data? If I insert data do I not also have to pay to do that? Do both the inserter and requester of the data pay?
Right. A node won’t know what the unencrypted data is, but it surely has to know what encrypted data it has in order to serve it. Now other nodes must also know what encrypted data I’m serving if they are able to detect when my node goes down and replicate that data elsewhere. So how does that work exactly? How do other nodes know a specific piece of data needs to be replicated elsewhere? What incentive is there for a node to not just drop old data if they are full and someone wants to insert new data? According to what you say above, if data hasn’t been requested then I’m not getting paid for it, so there’s no incentive to keep it around.
Accesses of data are free. The SAFE network issues coin to farmers who serve successful GET requests. People who PUT (store) data to the network pay SAFEcoin to the network. The coin is then recycled for use in paying farmers and creators in future.
I suspect @freedomuser’s point is that if a node is not getting GET requests for the data it holds it’s not getting paid. So they would optimize to drop data they aren’t getting paid for in the hopes that it is filled with data they are getting paid for - that is data that is popular and gets lots of GET requests. If this is true then data will drop out of the network.
If accesses of data are free, how do you prevent a storage node from running a bunch of get requests from another client to get more funds?
Right. It should be simple to keep a least recently used list of data in the store and drop the oldest when the store is full, in hopes of storing new data that will be requested more often. What incentive is there to not do this?
It is also worthy to note that a node can be dropped from the network if it acts outside the purview of the network parameters.
EDIT: Bear in mind that the info linked above is from an old thread. It may not be completely current, and I’m not the one to ask specifically about that. What I do know is that these questions have been discussed here at length, and there is a solution (the solution linked above may still be it).
Here’s the wiki. I’m not sure whether all of the info here is completely current, however I think this pertains to what you are querying: https://safenetwork.wiki/en/Vaults_(How_it_works)
“All communications on the SAFE Network are carried out through close groups of 32 nodes. This prevents a rogue node(s) from behaving maliciously. It is not possible for a User to choose their own node ID, or to decide where their data is stored. This is calculated by the network. Every time a node disconnects from the network and reconnects, it is assigned a totally new and random ID.”
As far as I know, if a vault continues to delete data that is unpopular, then it would be violating the SAFE networks rules. The close group of 32 nodes would then remove the node, or at least lower it’s rank, either wiping out it’s income, or reducing it.
Could anybody who is certain on these points chime in?