IPFS seems a little slow on existing dapps. will Swarm load content more quickly? Also- is there a roadmap for swarm?
6 Answers
Both
- Peer to peer
- Data sharing network in which files are addressed by the hash of their content (Content-addressable)
- Decentralized file transfer systems
- Can be used to store the HTML, CSS and JavaScript that implement an application on top of the other decentralized systems. Can be used to store (arbitrary) static files.
- Some imply that Swarm may be better for small chunks / low latency.
Because BitTorrent is good at delivering large chunks of data with high throughput and high latency. Swarm is ALSO good at delivering small chunks of data with low latency, which is necessary for some anticipated applications - Dr. Daniel Nagy, Lead Developer on the Swarm team.
One "advantage" of Swarm is built-in incentives (within Ethereum).
Some feel that Swarm is "reinventing the wheel" and ipfs & filecoin should just be used instead. Filecoin being the incentive.
IPFS
IPFS is a peer-to-peer distributed file system that seeks to connect all computing devices with the same system of files. In some ways, IPFS is similar to the Web, but IPFS could be seen as a single BitTorrent swarm, exchanging objects within one Git repository. In other words, IPFS provides a high throughput content-addressed block storage model, with content-addressed hyperlinks. This forms a generalized Merkle DAG, a data structure upon which one can build versioned file systems, blockchains, and even a Permanent Web. IPFS combines a distributed hashtable, an incentivized block exchange, and a self-certifying namespace. IPFS has no single point of failure, and nodes do not need to trust each other.
The message I want to send couldn't possibly be more audacious: I strongly believe IPFS is the replacement to HTTP...Instead of looking for a centrally-controlled location and asking it what it thinks /img/neocitieslogo.svg is, what if we instead asked a distributed network of millions of computers not for the name of a file, but for the content that is supposed to be in the file? This is precisely what IPFS does.
IPFS is general purpose, and has little in the way of storage limitations. It can serve files that are large or small. It automatically breaks up larger files into smaller chunks, allowing IPFS nodes to download (or stream) files from not just one server like with HTTP, but hundreds of them simultaneously. The IPFS network becomes a finely-grained, trustless, distributed, easily federated Content Delivery Network (CDN). This is useful for pretty much everything involving data: images, video streaming, distributed databases, entire operating systems, blockchains, backups of 8 inch floppy disks, and most important for us, static web sites.
Swarm
Swarm - Decentralised data storage and distribution: Swarm is a peer to peer data sharing network in which files are addressed by the hash of their content. Similar to Bittorrent, it is possible to fetch the data from many nodes at once and as long as a single node hosts a piece of data, it will remain accessible everywhere. This approach makes it possible to distribute data without having to host any kind of server - data accessibility is location independent. Other nodes in the network can be incentivised to replicate and store the data themselves, obviating the need for hosting services when the original nodes are not connected to the network.
Other Fun Sources
Adding to tayvano's answer, the main author of Swarm has written a detailed perspective. Here are some parts of his answers (edited for clarity):
Similarities
Swarm and IPFS both offer comprehensive solutions for efficient decentralised storage layer for the next generation internet. Both high level goals and technology used are very similar...
As a result both are in principle ideally suited for replacing the data layer of the current broken internet and serve as storage layers for the web3 vision with the usual must-have properties of distributed document storage:
- low-latency retrieval
- efficient auto-scaling (content caching)
- reliable, fault-tolerant operation, resistent to node's disconnections, intermittent availability
- zero-downtime
- censorship-resistant
- potentially permanent versioned archive of content
Differences
He classifies differences under:
- (A) development status/popularity/user base
- (B) philosophical/ethical/political
- (C) lower-level technicalities
See the detailed perspective (and this thread on reddit for further information, and here are the summarized technical differences:
- Swarm's core storage component as an immutable content addressed chunkstore rather than a generic DHT. (IPFS uses DHT.)
- The two systems use different network communications layer and peer management protocol.
- Swarm has deep integration with the Ethereum blockchain and the incentive system benefits from both smart contracts as well as the semi-stable peerpool while Filecoin uses proof of retrievability as part of mining. The consequences of these choices are far reaching.
-
1This is probably a stupid question, but I'm curious why BitTorrent was insufficient. It was already in place when IPFS and Swarm were developed, and has all the must have properties you listed. Nov 7, 2016 at 1:52
-
@Olshansk: Asking about the difference between Swarm and BitTorrent could be a good question on it's own (not much room in a comment).– eth ♦Nov 7, 2016 at 10:59
-
1This answer just caused me a eureka moment re Ethereum and the future of the internet. Something just clicked. I was a total newbie to this until a moment ago, but now I feel like I have just discovered the future of humanity.– SentinelMar 22, 2017 at 17:33
-
1BitTorrent does not have an incentive layer, paid miners or a consensus algorithm. Aug 4, 2018 at 11:32
-
Neither does swarm @Tim Siwula. It's not a blockchain. Well it does have incentives in alpha stage but that's because of garbage collection (which is in itself not implemented yet afaik so yeah...) One of the main differences is that bittorrent consists out of multiple swarms and Ipfs and BZZ only exist out of a single "swarm" Oct 10, 2018 at 8:44
I think the best summary is here:
Differences
tl;dr Subtle but important differences in both projects design will likely keep the two projects steady and separate on their own relative tracks. Since the big picture and the high level solution are so magically aligned, the differences can be found elsewhere. I will group them under:
(A) Development status/popularity/user base. (B) Philosophical/ethical/political. (C) Lower-level technicalities.
(A) Status
tl;dr: IPFS is much further along in code maturity, scaling, adoption, community engagement and interaction with a dedicated developer community. Yet swarm's place in the Ethereum ecosystem translates to inherent infrastructural advantage.
- both IPFS and swarm are fully open source and the reference implementations are written in the Go language (swarm has an outdated java version, IPFS has javascript)
- both IPFS and swarm are alpha software before their production release
- IPFS has been proven to scale quite reasonably, swarm is just starting to be tested on larger scale (though swarm is built on top of devp2p, the Ethereum p2p networking layer which itself barely need testing)
- IPFS has had the product open for longer, and recruited a decent userbase, Swarm has not really come out yet, the POC release series just started this year
- IPFS has a lot of material out, videos, good docs, papers. Swarm has 2 devcontalks, scattered docs and 2 papers (first 2 in the ethersphere orange paper series) about the incentives to be published mid April! And a swarm guide is in the making
- IPFS has a working network (no incentivization), Swarm just recently launched the first stage of developer testnet IPFS already serves as a working solution for real-world businesses and is supported by an enthusiastic user-base
- swarm benefits from strong synergy with Ethereum, its promising ecosystem, live network of users and its organisational background in the form of reliable continued funding from the non-profit foundation. IPFS also has reliable funding sources and also used and supported by members of the Ethereum community.
Despite strong voices from the community disapproving of reinventing the wheel, swarm as a comprehensive in-house solution suffered and survived the toughest of times: the austerity measures of last autumn 2015 due to the financial difficulties of the foundation slowed the development. The favourable circumstances in 2016 made our original vision realistic once again and development has seen a new surge likely further testified by expanding the dev team. Admittedly biased, I am convinced that building our own hand tailored system is a winning ticket to enable such a pivotal component of web3 to quickly and flexibly adapt and co-evolve with Ethereum (EVM), its governance and funding aligned with that of Ethereum.
It is crucial that swarm's privileged infrastructural/organisational status should not be by itself the deciding factor in the predominant adoption among available alternatives when web3 comes to the masses. My intention is that users' choice be based on inherent merits of the particular technology and that the selection is not unduly restricted by arbitrary choices/limitations of Ethereum (e.g., use of devp2p network layer, see below).
Conversely, by bringing more and more discussions about our roadmap to the public, we aspire to counterbalance IPFS's advantage due to longer time being around. Maturity has a rightful place in choosing a technology if you need it now, so the discussion here is relevant to developers with medium-to-long-term plans. Hopefully by the time both projects are out with production-ready release candidates, the differences in this section become insignificant to let features, efficiency and ease of use dominate the evaluation.
(B) philosophical
tl;dr: no critical mismatch but different enough to predict and justify parallel evolution of the 2 projects.
Advice In many places of the world the cartels of information copyrighting or advocates of restricted freedom of information have the resources to come after you. If the cause of total transparency and unimpeded support for freedom of information is important to you (be it on moral or opportunistic grounds), consider supporting swarm.
Swarm is very specifically meant to be part of the Ethereum ecosystem. From the outset, it was always conceived of as one of the three pillars of the next webz, and alongside Ethereum and Whisper define the holy trinity of web3 components. Its development is guided and inspired by Ethereum's needs (most importantly the need of hosting dapps, contract source/metadata and the blockchain/state/etc). It is developed in the context of Ethereum's capabilities (including potential limitations) and as long as funded by the foundation is guaranteed to cater for specific uses arising in the Ethereum ecosystem.
Meanwhile IPFS is a unifying solution catering for integrating many existing protocols. In this respect
Swarm has a very strong anti-censorship stance. It incentivizes content agnostic collective storage (block propagation/distribution scheme). Implements plausible deniability with implausible accountability through a combination of obfuscation and double masking (not currently done). IPFS believes that wider adoption warrants compromising on censorship by providing tools for blacklisting, source-filtering though using these is entirely voluntary.
(C) technicalities
tl;dr:
- swarm's core storage component as an immutable content addressed chunkstore rather than a generic DHT (distributed hash table). you can upload to swarm, use it as cloud hosting, in ipfs you can only register/publish content already on your hard drive. the two systems use different network communications layer and peer management protocol
- swarm has deep integration with the Ethereum blockchain and the incentive system benefits from both smart contracts as well as the semi-stable peerpool. Filecoin, a planned incentivised network over IPFS aims to use its altcoin blockchain, with proof of retrievability as part of mining. The consequences of these choices are far reaching. These properties plays a big role in the low level differences.
Additionally I would like to add that the PSS Protocol is now being developed which is a combination of whisper+swarm . It fully translates as Postal services over swarm.
Another thing to add is that swarm is designed to not only be good at large content files at high latency, but also good at small files with low latency which will be necessary for certain applications (like for example Onyx by Mainframe, which is a decentralized slack built with PSS)
I wrote a full article about the topic. Take a look at it if you think: https://medium.com/coinmonks/what-are-the-differences-between-ipfs-and-ethereum-swarm-c0e11f9a928b
TL;DR:
Storage logic
IPFS is basically a storage provider community where the nodes publish content that is referenced by its content hash.
Ethereum Swarm has a different logic because it stores the content itself in the DHT. They call this system DISC (Distributed Immutable Store for Chunks), and the whole system is designed to make this DHT efficient.
Mutable content
If you want to store mutable content (for example a webpage that frequently changes) on IPFS, you can use IPNS.
On Ethereum Swarm, there are two types of chunks. One is the “usual” content addressed chunk, and the other is the single owner chunk. These single-owner chunks are also immutable, but you can create the ID from a topic name and a serial number. The retrievers can poll the system, and if a new chunk is available with a higher serial number then they can refresh the content from it. Swarm calls these serial-numbered structure feeds.
Incentive system
If you want to store content on the IPFS, you have more options. You can simply choose a centralized provider like Infura or Pinata, upload your content, and pay the storing fee to make your content available on IPFS, or you can simply run an IPFS node on your machine and publish it yourself.
Another way is using FileCoin, which is the “official” blockchain of IPFS (also developed by Protocol Labs which developed IPFS itself).
Ethereum Swarm uses its own payment system instead of a blockchain which is something similar to payment channels like the Lightning Network, but a little bit different.
They are different storage protocols. However there is much less documentation around swarm.
Here is an interesting reddit thread on the topic. https://www.reddit.com/r/ethereum/comments/3hbqbv/ipfs_vs_swarm/
-
6A link alone is not considered a good answer. Links may break and the answer becomes worthless later even if the linked material answered the question initially. At least if you include a summary, the answer can somewhat stand on its own.– q9fApr 6, 2016 at 8:44