Skynet and Ignite from a technical standpoint

Prom
Prom
Published in
4 min readJun 17, 2020

Recently we announced that Prometeus and Nebulous Labs will cooperate on the creation of the first decentralized social network — Ignite, which will be integrated with Skynet. In this article, we will provide detailed information from a technical standpoint.

Overview

Being a decentralized social network, Ignite consists of multiple independent and equitable nodes. Communication between the nodes and user authentications is based on Ethereum blockchain. We also use Ethereum plasma to make the processes faster and cheaper. All the posts and media attached to them are stored in the Distributed Data Storage (DDS) based on BitTorrent File System (BTFS). To store files in BTFS we use charging service gateway and BTFS cluster called Soter. DDS is secure file storage, which is able to store necessary data and media for a period of 10–100 years. This ensures information immutability.

Bittorrent is a communication protocol for peer-to-peer file sharing, with its own advantages and disadvantages. At the current stage, it can’t provide appropriate download speed for every type of media file. More particularly, BTFS can satisfy our needs in terms of speed for big files, but due to our tasks, we need to provide our users a bunch of relatively small files. That’s because for each file you need to identify the exact ‘swarm’ (connected nodes, that have all portions of required file), perform the negotiations, create connections, and only after this you can start the downloading process. The actual overhead for even 1Mb file will be less than a few percent of total access time, but when you have to deliver a hundred tiny 10Kb user pics it will cause unacceptable delays. Total page loading time, in this case, can increase from 200–1, 200 ms up to 20s, or even a minute.

Solution

Caching all the media files locally on each node is just a temporary solution because we cannot store copies of all our media files on every Ignite node for a lifetime. It would be preferable to use the Content Delivery Network (CDN) to address these issues. CDN is a geographically distributed network of the servers and their data centers. The goal is to provide high availability and performance by distributing the service spatially relative to end-users.

Requests for content usually are algorithmically directed to nodes that are optimal in some way. For performance optimization, we need to follow the “location” rule. This may be measured by choosing locations that are the fewest hops, the lowest number of network seconds away from the requesting client, or the highest availability in terms of server performance (both current and historical), so as to optimize delivery across local networks. In an optimal scenario, these two goals tend to align, as edge servers that are close to the end-user at the edge of the network may have an advantage in performance and access speed.

As for Ignite — CDN basically serves as a huge cache that is synched with DDS (which can be considered as an immutable backup in this scheme). But the problem is that traditional CDN services are not decentralized and censorship-resistant. Using such a service therefore may jeopardize both the principles and sustainability of the Ignite ecosystem.

Here comes Skynet

Due to the reasons mentioned above, we concluded that there was a need to implement a decentralized and independent Content Delivery Network. Skynet CDN by Sia meets these requirements and helps us to fulfill our mission,. Additionally, Skynet is not just a reliable content delivery system, but a storage foundation for a Free Internet.

Technically, for each media file that our user uploads to Ignite, we create both unique internal hashcode that helps us to identify it in DDS and Skylink to retrieve it in Skynet. Ignite nodes upload locally stored media files to Skynet and it makes them ready to be retrieved worldwide. As well as BTT Soter storage, Skynet costs 10x lower than centralized providers, and bandwidth costs are 100x lower (without losing the performance or sustainability).

Here are some examples of Ignite files stored on Skynet:

  • sia://ZADymoAAT3-eI78Gnq92xbvLFEuh6ndyQ0MUjJ4rqQxgPw
  • sia://ZADxCiClSZ-1am4J5Ol1pJPC3I9O7MWOLgHTebR_P5V9Lw
  • sia://zADwyDUjMzMB8xviknx8eii3FarT15H223CuQtc-tpud6A
  • sia://zADWCX2Kr6MjuNn6IjUwU4ZZte_hLvLdqVUNrroYCT6HCA
  • sia://zADw7IIVFK_hI7i4151W0edR_3Y0I417EiPBMI_Mop6hmw
  • sia://zADv-UpcSoTrbkY6PYetvFhMq3Y14-hRxkOSlSgpbePhgg
  • sia://ZADV7OtVZGX40LLoPbe5pMdzfQKtBkqXfTlQsfiYyZqXyw
  • sia://ZADUBn9zDQb1hBC1uSygqUQ0i8nbU939B9CUmPhQcuBLDg
  • sia://zADSIxjhWfjeazwAeKpHUqQoD__djD-dxpOGaZNKnOM9HQ
  • sia://zADsiLO3r-UZzsHN9yCxW7YSLo3Rz1f6LXwFLy9aj3iDZw
  • sia://ZADs6VwgQCQN6eFjIC51DFy8pnS0mBqqvQrqlt1WK_F9pQ

Skynet helps us to minimize caching media files on the nodes, by avoiding the full duplication of those files, which could be a serious issue for further development of the Ignite ecosystem. Actually, it’s a silver bullet that allows us to avoid the creation of Ignite nodes clusters, without any losses in terms of decentralization.

Skynet solution not just fixes all our problems with content distribution and delivery but also helps us to make a difference.

To know more about Prometeus protocol and Sia, please follow links below, subscribe to our social media and stay up to date:

Prometeus Telegram Chat
Prometeus Telegram Announcement Channel
Prometeus Twitter
Sia Twitter
Sia Discord

--

--

Prom
Prom
Editor for

Modular zkEVM Layer 2. Connecting EVM & Non-EVM worlds through interoperability. Join the community: discord.gg/prom