On November 17th, 2016, Go Ethereum (Geth) released version Geth 1.5, which was a complete internal rewrite of the Go Ethereum protocol. The update was packed with a number of new features, including an initial proof-of-concept implementation of Swarm, the decentralized file storage system for Ethereum. Currently, the Swarm testnet labeled, POC 0.2, is running on Microsoft Azure and is connected to the Ethereum blockchain.
What is Swarm?
According to the Swarm website:
Swarm is a distributed storage platform and content distribution service, a native base layer service of the ethereum web 3 stack. The primary objective of Swarm is to provide a decentralized and redundant store of Ethereum's public record, in particular to store and distribute dapp code and data as well as block chain data.
If you upload a file to Swarm, it’s quickly broken down into chunks of data. The current fixed maximum file size is 4KB. For example, a 100KB file would be broken down to 25 chunks. The chunks are dispersed among the nodes using a unique overlay network address space. This enables chunks to stay within close proximity which allows for fast recovery and seeks operations among the nodes - the Ethereum foundation is providing up to 105 nodes for the Swarm alpha implementation. The chunks themselves are identified using a hash function content-addressing scheme. According to the Ethereum blog, “A hash function is irreversible, collision free, and uniformly distributed.” When a file request is made, clients use each chunk’s relative content address to retrieve the file.
Swarm is known as Ethereum’s decentralized cloud storage solution. It’s touted as DDOS-resistant, fault-tolerant, and censorship-resistant. The decentralized aspect of Swarm allows it to operate as both a server and a cloud service. This makes it ideal for storing both dynamic web applications and persistent storage.
Swarm also offers an incentive system that allows for node hosts (community supporters) to receive payments for their services. An incentive approach makes sure that nodes use rational self-interest to collaboratively unite for the benefit of the whole system.
The Future of Swarm
Swarm is generating a lot of buzz in the Ethereum community. Developers are constantly being proactive with the platform to refine its applications. The code of the current version, POC 0.2, is more polished than its predecessor, but it’s clear the Go Ethereum developers want to see Swarm maximize its potential and demonstrate viable use cases once Web 3.0 (a smarter and faster internet) is deployed.
According to Ethereum foundation’s roadmap, more Swarm updates are to be expected:
The planned features of swarm include integrity protection, random access (range queries), url-based addressing, manifest-based routing on virtual hosts, domain name resolution via Ethereum Name Service, encryption support, plausible deniability, bandwidth and storage incentives, associated metadata, on-demand download of ethereum blockchain state/receipts/contract-storage, auto-scaling by popularity (elastic cloud), auto-syncing, client side configurable redundancy/availability.