User Guide

Introduction

SkyBin is a peer-to-peer file storage application. Just like other online
storage apps, it lets you store your files online, share them with people you
know, and access them from multiple computers. The difference is that SkyBin is
powered by a peer-to-peer storage network instead of a central service. So when
you store a file in SkyBin, it gets placed on other users' machines, not on servers
operated by SkyBin.

This means that storage on SkyBin can be cheap, but it's also designed to be
secure and reliable. SkyBin encrypts your files end-to-end and guards against
data loss and corruption through periodic storage audits and redundant storage
built on a technique called erasure coding. These features allow the system
to recover your content even if other users go offline or try to tamper with
your files.

With SkyBin, you can also rent out your unused disk space to other users on the
network in return for cash. You get paid through Paypal, so it's easy to setup
and get started.

Getting Started

Before you can store some files, you'll need to set up your account, transfer
some money into SkyBin to pay for storage, and reserve some space with other
users.

After downloading the app from our website, start by launching it and
registering a user alias. This can be any unique identifier that you don't mind
sharing with other people. It's how people you know can share content with you
later on.

Next, you'll need to deposit some storage funds into SkyBin to pay for space.
Navigate to the "My Wallet" tab and enter an amount to deposit into the "Renter"
wallet. A few bucks should be enough to get started. Don't worry about the
Provider wallet for now; we'll get to that later.

Now you have some funds to pay for storage, so let's reserve some space to store files
with other users on the network. Navigate back to the My Files tab and click the
"Reserve More Space" icon in the upper right.

Choose how much space to reserve. A few gigabytes will be more than enough to store
a few files. Then click "Find Space" to search for users who can provide the storage.

The price of the storage will depend on the storage rates charged by the storage providers.
Click "Confirm" to pay for the space.

Now you're ready to upload a file. Click "Upload" and choose a file to store in SkyBin.

Once the file's been stored, you can right click on it to see what actions you can perform
on it.

You can also create folders to organize your content with the "Create Folder" icon.

Finally, retrieve the file by clicking the "Download" option.

Great! You've stored your first file in Skybin.

Running a Provider

With SkyBin, you can rent out your unused disk space to other users by running a provider
node. This is a server on your computer that stores other users' files. Before you set up a
provider node, though, you'll need to make sure that your network is configured to allow
incoming traffic. This will require that you have a publicly accessible IP address and
that your firewall settings don't permit incoming connections.

Once you've checked these network settings, you can get started by navigating to
the "Provide Storage" tab to register a provider node.

Here, you'll need to set your node's address, how much space you want to provide
to the network, and your pricing policy. The pricing policy determines how much
you charge for storage and the algorithm used by your node to set your storage rate.
With an "aggressive" policy, your node will try to undercut other users' prices on the
network; with a "passive" policy, your node will generally follow the network average
rate; and with a "fixed" policy, you set the prices yourself.

After this setup is complete, your provider node will run whenever you run the SkyBin
application. You can monitor its status, including things like network traffic, how much
space is being used by other users, and your current storage rate, by navigating back to
the "Provide Storage" tab at any time.

You can also update your provider node's settings by clicking on the "Settings" button
in the Summary panel. This will allow you to adjust things like your pricing policy and
how much space you want to provide to other users.

As you begin to make money from your provider node, you can return to the "My Wallet"
tab to view the balance of your provider wallet. From here, you can also withdraw
funds to an external account via Paypal.

Behind the Scenes

Underneath the hood, SkyBin is built around three components.

Renter nodes store files with other users in SkyBin. They perform operations
like encrypting and uploading files, determing where to store chunks of data,
and downloading and reconstructing files from data chunks. This is the component
which the typical user interacts with to perform basic operations in SkyBin, and
it runs on the user's computer as part of the SkyBin application.

Provider nodes provide storage to the network, negotiating storage agreements
with renters, storing file blocks, and serving other users' content. Any user
with spare disk space can run a provider node to rent out their space for cash.

Finally, the SkyBin Metaserver stores file and user metadata,
manages payments, and serves as a meeting place for renters and providers.
This is a global service operated by SkyBin.

Storage in SkyBin revolves around agreements called storage contracts. When a
renter would like to reserve storage space with a provider, they do so with a
storage contract, setting terms like how much space the provider is willing to
provide, the duration of the agreement, and the total fee the renter must pay
for the space. These agreements are negotiated behind the scenes by the SkyBin
system; users don't have to think about them.

Files are stored in SkyBin as encrypted chunks after being preprocessed by the renter
who uploads them. This process includes compressing the file, encrypting it with a
symmetric key (AES), breaking it into fixed-size data blocks, and then computing parity
blocks from the data blocks using an erasure coding scheme. Both data and parity blocks
are then stored on the network with providers the renter already has storage contracts
with. Metadata about the file, including the location of the blocks, is stored with
the SkyBin Metaserver.

The erasure-coding scheme used to create parity blocks for the file is based on
Reed-Solomon codes. This is an error correction technique that allows SkyBin to
recover file content despite partial data loss. If some data block is
irrecoverable or corrupted, a combination of data and parity blocks can be used
to reconstruct it. The approach is better than the more obvious recovery
technique of storing multiple copies of files because any single parity block
can be used to recover any single data block. For more information about this
interesting technique, the BackBlaze blog has a useful primer:
https://www.backblaze.com/blog/reed-solomon/.

Frequently Asked Questions

What happens if the users storing my files go offline?

SkyBin stores your files using a redundant storage scheme called erasure coding.
This allows SkyBin to retrieve your files even if some users storign them are
offline. If too many of the users storing your file are offline, it may become
inaccessible temporarily. SkyBin cannot guarantee that your files won't be
permanently lost or inaccessible, so you should keep this in mind when choosing
what to store with SkyBin.

How does SkyBin keep my data private?

SkyBin encrypts all of your data before it leaves your computer and only decrypts
it when you download it again. This ensures no one can see the content of your
files except you and the people you've shared them with.

How does SkyBin protect against users deleting or changing my files?

SkyBin's redundant storage scheme allows files to be retrieved even if parts
have been lost. SkyBin also checks the integrity of your files periodically in
the background and whenever you download them. If a user has tampered with or
lost part of your file, the system will detect it, reconstruct the file from the
redundant storage blocks, and store new copies of the lost or altered blocks
with other providers on the network. This makes permanent data loss
unlikely. However, it is still possible if too many users lose or tamper with
your data, so you should be cautious storing critical documents in SkyBin.

If I run a provider node, can traffic from other users overwhelm my computer?

If your provider node is popular, it is possible that traffic from other users
swamps your computer. You can always shut off your provider node temporarily
to avoid this by shutting down the SkyBin application.

How do payments work?

The money you place into your renter wallet is held in escrow by SkyBin and used
to pay for storage you reserve. You can withdraw funds you don't use by going to
the My Wallet pane.

If you run a provider node, you're paid for storage users rent on your machine
over time in amortized payments. These payments are added to your provider
wallet balance and can also be withdrawn by going to the My Wallet pane. How much
you get paid depends on the storage rate you have set and how much space other
users rent on your machine. Go to the Provide Storage tab in the SkyBin portal
to see this information.