Please note: this is a repost from Medium — please feel free to support and comment on the article over there too
So you’ve come looking for some more information on what we’ve included in this Phase 1 Vaults release? Well, you’ve come to the right place! We’ve tried to keep this fairly non-technical. However, if anything is unclear or you need any support, head over to the Forum where the team and community will be ready and waiting to answer your questions.
We’ve implemented the 8 data types as defined in the Data Types RFC’s(0054 and 0055) which can, very simply, be categorised into Public (or Published) and Private (or Unpublished). We’ve got a standalone post which explains these types in more detail but in essence, they give every user ultimate control over how to maintain his or her data.
Public data is the content you publish to the Network that everyone can see it. This is the Perpetual Web in action. Private data, on the other hand, is slightly more nuanced and brings to life the concepts around Take Control of Your Data that you might have heard us discuss before.
We’ve implemented the basic functions defined in the Safecoin RFC (including creating balances, coin transfers, and transactions).
The CLI (Command Line Interface) provides many of the commands necessary to interact with the SAFE Network, including storing and browsing, finding data and using Wallet-related commands. It is worth noting that while we’re implementing all the data types, the CLI will only use a selected range (see later in this post).
At this point, we’re showcasing functionality . We haven’t implemented a GUI because we want to let you get closer to the action and interact with a greater degree of control without having to navigate around a GUI. This makes it perfect for developers, as you will have the permission to access many of the operations that can be made on SAFE Network data. It will allow you to also use it for automated scripts in a piped chain of commands, for example.
By developing the Network in this way, we’re able to decouple the GUI development from the back-end functionality of those GUI apps. With the CLI and its API being separate, we can test the operations needed to manipulate data on the Network more efficiently, by having automated tests and by using the CLI itself. Once this layer is solid and stable, developing a GUI is a more straightforward task (as the expected underlying functionality has been validated).
So what can the CLI do?
First off, the CLI needs to be authorised by you before it can access your account. Therefore, you’ll need to first authenticate yourself via the SAFE Authenticator CLI (all the details can be found here).
Currently, you can use the following data types:
- Create files (via the PublishedImmutable data type)
- Set up NRS (PublishedAppendOnly)
- Access a Wallet and its commands (UnpublishedAppendOnly)
As we’ve mentioned, you can upload files to these Vaults. We’ve got a super-clear guide here on how to do this, as well as details of what you can do with your data once it has been uploaded. But here’s a quick overview here of how it works…
Data is uploaded to the Vaults and stored as Published ImmutableData files (head to this post for all the details on the different data type) . That data is stored in a container which maps the data path together with the corresponding ImmutableData NRS (more details below). And this map is stored on the Vault within a special container called FilesContainer, which is stored as Published AppendOnlyData data. Simples!
NRS means Name Resolution System. The easiest way to think about it is how SAFE lets you have human-readable URLs.
Each piece of data on the Vault is held in a unique location with an associated XOR address name. This data can be accessed using the XOR address as a URL. Hence XOR-URL. We have been working on developing a more human-friendly URL system that can be easily remembered when trying to share them with other people or recognised quickly. Just like URLs on the current Internet today.
As an example, compare a XOR — URL ( safe://sadoiofsefohf89243hf9huheofhdoih289euhfafoishaoifdha893f2fh9eahfoiasef ) with an NRS URL ( safe://maidsafe ). This human-friendly naming system can be used not just to find data on the Vault but also can be used as a URL to enable the sourcing of websites, web applications, files and folders. It can even be used in Safecoin wallets for receiving transfers, SAFE IDs, etc in a memorable format.
Details on how to create your own NRS and how to work with others can all be found here.
As part of this release, we’ve included the Wallet in this CLI, which is a type of Container. A Container in this context means a structure to hold data (kind of like a folder). The Wallet holds your secret keys, which enable you to spend your Safecoin. The Wallet also holds the links to your SafeKeys, which holds your Safecoins. And importantly, everything that is stored in the Wallet is only accessible by you, the owner.
Details on how to set up your very own Wallet, as well as adding test Safecoins, view your balance and make transfers can be found over here, as well as setting up your Keys.
And that’s it! Next up, Phase 2. This will see the introduction of PARSEC, swiftly followed up by Phase 3 and 4 which will be iterative versions of the testnet, ultimately ending up in the implementation of Routing and, then…we have a Network! Make sure you keep up to date on progress by checking in each Thursday for the Dev Update or check out Twitter for the latest news and releases.