Maidsafe is an ambitious project aiming to provide decentralized anonymous internet without limits. It's under active development since 2006. Let's take a look what it means, what's behind it.
In this article, we will take a look at:
What is wrong with internet
How to fix it with MaidSafe
Safe project architecture
Safe project development
Getting started with MaidSafe
Current state of internet
Internet was meant to be decentralized from its origin nature. In some aspect it still is. But as time went by it became more and more centralized or at least centrally controlled. Now tracking is quite easy and certain segments are completely under control or even cut away by some central authority. There is also no real anonymity and although it can be achieved by using various tools like TOR it has certain issues like capacity and trust is also questionable. We need something more robust and designed from ground.
The philosphical aspect
First, let's get rid with often quoted opinion that anonymity is bad because it serves to criminals. It serves to all, to good and bad like all other things. This is fundamental thought and it's needed to be spoken as there are alway some people (often with lazy and criminal mind) who wish to restrict other for their own profit. Although I believe that certain thing should be monitored (like when you try to make your own nuke in your garage), having a garage should not be forbidden just because of that.
As mentioned before current internet has some flaws which are bigger and bigger during these days. Let's see problems in certain countries where whole parts or internet are blocked and people persecuted for using it freely. In some other countries spying is beyond any measures. In some countries there are even both approaches.
MaidSafe project believes, and I quote now, in privacy, security and freedom to all users of the internet and see that it's not possible anymore with current internet infrastructure.
MaidSafe project in current internet architecture
MaidSafe is primarily a new architecture of network but it is not rewriting everything (at least not now). So now is a time to mention OSI model. This is how internet works underneath. Simply said there are different layers and each of them has some work to do. How devices can "talk" one to another. How routers know where to send a packet, etc, how applications can talk to each other.
There are these layers:
- Application layer
- Presentation layer
- Session layer
- Transport layer
- Network layer
- Data link layer
- Physical Layer
MaidSafe touches three of these highlighted layers : Presentation, Session and Transport layers.
Let's take a look at these more closely in OSI model:
Presentation layer: Encrypts/decrypts/compress context for communication between layers
Session layer: Controls dialogue between computers, controls termination and restarts
Transport layer: Enables transfer of data. End-to-end connections and uses well known TCP/UDP protocols.
These are exactly the layers where current issues can be addressed.
What MaidSafe basically does is that it expands processing on these layers to provide truly encrypted and anonymous p2p storage and access between members of the network. This sounds quite simple but it's a rather complex task.
MaidSafe architecture
Let's take a look at Maidsafe architecture and what it really does.
As already mentioned, Maidsafe utilizes Network layer and all lower layers and redefines all the higher structures to keep its goals.
There are two major parts of MaidSafe project residing existing network layer:
- Maidsafe Client
- Maidsafe Network
Let's start with the Network:
MaidSafe Network
MaidSafe Network is a space which clients can utilize. It provides this facility:
- Vault
- Passport
- Routing
- CURX
- UDP
Safe Network uses UDP protocol with CRUX (Connected Reliable UDP eXchange). This provides reliability and control of TCP and solves NAT traverse which basically means it resolves proper destination behind NAT which is often troublesome for many p2p services (like torrents, etc.)
Routing layer
This is basically Distributed Hash Table (DHT) which governs routing between nodes on the network. Each node stores information about other nodes that it's connected to.
Passport
Passport facilities user validation via keys to authorize them for various task like an access to to a file or t transfering SafeCoins ownership which is needed as MaidSafe is basicaly about secure storage and safe data exchange.
Vaults
There is no central authority. Vault resides on the machine of the network farmers (nodes which provides storage capacity) and provides functions for managing and storing data and supervising network.
Maidsafe Client
Maidsafe Client utilizes MaisSafe network and is what user or application developer work with. There are basic structures of the client:
- Safe Applications
- REST API and DRIVE
- NFS API
- ENCRYPTION / VAULT
Application
These are applications utilizing MaidSafe Nework via its Client, resp. API. Maidsafe application can be anything from some storage application, web application, exchange... almost whatever you can image that utilizes Safe Network.
API
API provides access to network services for applications. There is "simple" REST API and POSIX like NFS API for more advanced operations. This si something that developers will need to be familiar with when they start building new super-cool applications.
DRIVE
Drive is multi-platform virtual drive utilized by API and it's kind of abstraction of the underlying network which looks like local drive for applications. This is like facets so you could think that nework data are locally stored.
How does this work together
When you join SAFE network, a public key-par is created for you. when you log into the network a virtual drive is mounted. In reality data are encrypted and split across the network. You will be able to provide capacity as well for you and other network users. Data are replicated across the network in some ratio that provides optimal capacity usage and also backups when certain network farm is blown away.
How about SafeCoins?
Safecoins are tokens of value used in Maidsafe network. There is lot around this topic however this will not be part of this article because it deserves a special article. For now it's enough to know there are SafeCoins but they are not needed for testnet. You might need them later though and so feel free to buy some if you wish (no investment advice, though) or if you're a "mining-type" then you can prepare your storage for farming some in the future.
Maidsafe development
Maidsafe is mostly written in Rust language which provides additional stability at (almost) no cost and some less critical parts of the client are written in Javascript (Node.js). Project development is organized at Github (https://github.com/maidsafe). As a agenda of the project is wide, there are several repositories. Let's take a look at them:
- routing - this is mainly about DHT storage, the distributed hash table we talked above which maps routes across the network.
- config_file_handler - it basically works wtih JSON encoded config files
- rust_sodium - this is binding libsodium which is encryption library used in Maidsafe
- crust - facilitates p2p connections and NAT traversal, it's something like basic network library for Maidsafe
- Safe launcher - node.js application, basic Maidsafe bootstrap application that is used by users
- QA - this is related to Maidsafe tests
- safe_examples - there are various basic proof-of-concept application for Maidsafe, when you start with development, this is the place where you will probably start if you're interested about development
- rfcs - this are major RFC (Request for Comments). Basic features of the network are specified here and cannot be changed by simple pull request but needs to be discussed more widely.
- lru_time_cache - Least Recently Used Time Caching alghorithm implementation
- safe_valut - decentralized storage sharing capacity, computation power and transfering crypto tokens
- safe_network_commmon - shared code across Safe network
- self_encryption - modified encryption providing additional obfuscacting steps.
- accumulator - key-value store allowing accumulation of multiple values under a single key
- maidsafe_utilities - some utilities and extensions for various things like threads, serialization, etc.
- sodiumoxide_extras - provides libsodium initialization with using Pseudorandom number generator
- maidsafe.github.io - redirects to maidsafe documentation
- secure_serialization - provides methods for encrypted serialization
- kademlia_routing_table - provides mechanism for routing messages in a peer-to-peer network
- WhitePapers - Maidsafe whitepapers are available here
Remaining repos are obsolete ( MaidSafe-Transport, MaidSafe-DHT, OverSim), you can check it if you wish to see how it all started.
Getting started
Currently, the project is in alpha stage so keep it in your mind when troubles come. Anyway, you can play with it and use its testnet (currently Testnet7).
It's time to try it.
To start you need Safe Launcher (currently v0.7.1) and Safe Vault (currently v0.10.4).
I'll provide simple steps here:
- just download vault and launcher packages for your OS from here
and here - unpack
- go to safe_vault_* and start ./safe_vault
- go to safe_launcher_* and start ./safe_launcher
- set proxy as requested (basically point your browser to use
http://visualiser.maidsafe.net/safe_proxy.pac
URL so MaidSafe network resources can be reached from your browser)
And here you go, you can access Maidsafe Network. Well, not yet. You need to create your account and login.
Account in Maidsafe are made of two parts:
- account secret
- account password - gives you access to your data
Keep them secret, keep them safe! Well now it's not that critical as we are on a testnet.
Once account is created you have access to MaidSafe network
You can also try Maidsafe examples.
At Safe Network app page you can find some initial project utilizing MaidSafe network or you can pay with examples (web sites, exchanges, storage, etc.). I recommend to try Launcher demo apps s (https://apps.safenetwork.org/). That's the best way to see the potential of this project. Many project will be able utilize it, even the blockchain projects, maybe even Steemit will use it one day for image resources or who knows for what. Possibilities are limitless.
Enjoy the future!
Resources:
- [1] The architecture of the safe network -
https://blog.maidsafe.net/2015/02/23/what-is-the-safe-network/ - [2] OSI model wiki page -
https://en.wikipedia.org/wiki/OSI_model - [3] UDP (User datagram protocol) wiki -
https://en.wikipedia.org/wiki/User_Datagram_Protocol - [4] Introcution to MaidSafe - https://forum.safenetwork.io/t/introduction-to-maidsafe-what-it-is-how-it-works-and-how-it-compares-to-bitcoin/2500
- [5] Maidsafe Roadmap -
http://maidsafe.net/roadmap.htm - [6] Maidsafe documentation -
http://docs.maidsafe.net/ - [7] Maidsafe FAQ -
https://safenetwork.wiki/en/FAQ - [8] Maidsafe forum -
https://forum.safenetwork.io/ - [9] Safe Launcher releases -
https://github.com/maidsafe/safe_launcher/releases - [10] Safe Network Apps page -
https://apps.safenetwork.org/ - [11] Launcher demo applications -
https://github.com/maidsafe/safe_examples/releases - [12] Maidsafe company - http://maidsafe.net/company.html
Wow great read, hadn't heard of most of this before.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks, the project is interesting and so writing is very easy.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks for writing this in depth article.
As somebody with an infotech degree I really appreciate the detail work you've done.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Great, amazing complexity. I like MAID
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit