Drag and drop files onto the decentralized web using Skynet and Filebase

In this post we'll show you just how easy it is to upload files to the decentralized web.

Drag and drop files onto the decentralized web using Skynet and Filebase

Today we're going to talk about Skynet. In this post we'll show you just how easy it is to upload files to the decentralized web. Once our files are uploaded, we'll show you how to access those files two different ways: by going through the Filebase platform, and by visiting any Skynet portal.

Filebase is an S3 compatible object storage platform that is powered by multiple decentralized storage networks. We offer a bridge from web2 to web3. Object storage is an industry standard form of data storage that focuses on storing pieces of data and metadata together as objects. For the purposes of this walkthrough, you can think of objects as files.

To start, we need a Filebase account. Our sign up form is simple. After clicking submit, you'll receive a confirmation email.

After your account is confirmed, login and select the Buckets page.

From the Buckets page, select Create Bucket. A modal will pop up. This form allows us to choose the name of our bucket and to select the Decentralized Storage Network that we'd like to use. Every bucket on the Filebase platform is backed by a network. For this example, input a bucket name and select Skynet.

Once our bucket is created, you'll see a success confirmation message. The network should read Skynet as well.

It's important to note that all buckets on Filebase are private by default. However, files placed on to the Skynet network are public by default when accessed using their Skylink. We'll explain what this means further down.

Clicking on the bucket name will take you to the bucket overview page. This page shows additional details about the bucket at the top, such as the decentralized storage network name, object count, and total size of objects.

Next we will upload a file. There are 3 ways to do this:

  1. Drag and drop the file into the browser window
  2. Click the upload button and select a file
  3. Use the Filebase S3 Compatible API

For this simple example, we'll go with option #1. Proceed by dragging a file into the browser window, and watch it upload instantly.

Our file is now uploaded to the decentralized web and live on the Skynet network! Click on the file name to view more details, such as ETag, file size, and Skylink.

The object overview page presents all details about an object. Today we will be focusing on the Object URL and Skylink values.

Object URLs provide access to your data, and they are routed through the Filebase platform. When you download content from Filebase, our platform streams data directly from the selected decentralized storage network to your computer. Once in a while, this streaming process can sometimes introduce a small latency overhead, somewhere around 200-500ms. To combat this, we have developed an edge caching layer that can uniquely cache data based on a number of heuristics. We refer to this as Filebase Edge Caching Technology.

When a file is frequently accessed, we'll copy it into our caching layer. This allows for subsequent downloads to be lightning fast, and it eliminates the extra step of having to stream data from a decentralized network. When data is downloaded from our edge cache, Filebase is able to offer Time To First Byte (TTFB) latencies of 100ms or less, and often times 50ms or less, depending on location.

When it comes to data access, object URLs can provide access in both a public and private manner. When a bucket is private, this URL will deny access. When a bucket is public though, this URL will allow us to download our content. Don't worry, you can still download content from private buckets too, you just need to ensure that your request is properly signed and authenticated. Most S3 compatible tools will automatically do this for you.

In the Filebase dashboard, the Open and Download buttons will also do this for you, by generating whats known as a presigned URL. These are a special type of URL that will expire after a certain amount of time. For security reasons, the dashboard will only generate URLs that are valid for 5 minutes. However you're able to generate longer duration URLs using the AWS CLI and other S3 tools.

The Skylink value is a 46 character content identifier that points to a specific file on Skynet. These values are content-addressable identifiers, and every file on Skynet has one. More importantly, this value can be used to fetch data in a fully decentralized manner, without going through the Filebase platform at all.

If we click on the Object URL, we'll be presented with that error we previously mentioned - that's because our bucket is still private.

Let's go ahead and make our bucket public. Navigate back to the bucket list page by clicking Buckets on the left sidebar. From here, simply click the access toggle switch, and wait for the text to change from Private to Public. Make sure your bucket doesn't have any sensitive data inside before proceeding.

Now that our bucket is public, let's try that Object URL link again. It works!

What if we want to access our data in a fully decentralized manner, without using Filebase at all? The answer is simple: We can make a request to any Skynet portal and provide our Skylink. The Skylink that we generated for this example is:

PAEV8SojuLWrZETy4ZApNQtHMctvyXShPxKwse2Lp635GQ

Now that we have the Skylink, let's make a request to a Skynet portal using any of the links below. The URL structure is simple: https://{portal_domain}/{skylink}.

https://siasky.net/PAEV8SojuLWrZETy4ZApNQtHMctvyXShPxKwse2Lp635GQ

https://skyportal.xyz/PAEV8SojuLWrZETy4ZApNQtHMctvyXShPxKwse2Lp635GQ

https://skydrain.net/PAEV8SojuLWrZETy4ZApNQtHMctvyXShPxKwse2Lp635GQ

As you can see from above, we were able to load the exact same image from a Skynet portal, without routing through Filebase at all!

This advancement in technology allows for a variety of use cases, but most importantly, it enables our customers to maintain continuity of access to their data by leveraging the decentralized web.

That's it for today! Stay tuned for more updates, and as always, feel free to reach out with any feedback you might have!