IPFS 0.5.0 is here! Our largest upgrade to IPFS yet
by Molly Mackinlay on 2020-04-28
go-ipfs 0.5.0 is a major step forward on our journey toward a more efficient, secure, and resilient web to preserve and grow humanity’s knowledge.
We’re happy to share that IPFS 0.5.0, the largest upgrade to the IPFS protocol and Public Network yet, is now available. The result of extensive community feedback and rigorous focus, IPFS 0.5.0 offers major performance and reliability updates so that you can distribute content peer-to-peer more efficiently and affordably.
Check out our changelog if you’d like to dive right into the details.
What IPFS 0.5.0 means for the web
Today’s web is fragile, inefficient, and expensive. It’s built on a client-server model that finds and serves up content based on its location on a particular host — no matter how far away or inaccessible. It is a system that can no longer stand up to the highly dynamic ways we communicate, create, work, consume, and connect.
The distributed web is changing that. IPFS rearchitects the web to work peer to peer, addressing data by what it is instead of where it’s located. In doing so, IPFS powers a resilient and scalable network. Our latest release, IPFS 0.5.0, offers even greater performance and reliability to meet the increasing demands on the web today, as well as into the future.
Community feedback was our roadmap
The IPFS Public Network has experienced substantial growth (scaling 30x in 2019!), bringing new opportunities for IPFS users and the wider InterPlanetary ecosystem. Major deployments and applications that require fast and reliable connectivity have started building on and supporting IPFS:
- Opera & Brave: Opera became the first major web browser to offer default IPFS support on Android, shortly after Brave started directly embedding the IPFS Companion extension (complete with a built-in js-ipfs node). This means millions of people around the world now have access to the decentralized web built directly into their browsers.
- Microsoft ION: Microsoft has turned to IPFS as the content addressed storage layer to power its take on a decentralized identity system.
- Netflix: We began collaborating on ways to incorporate peer-to-peer services into Netflix’s developer tooling to speed up container image distribution in their build pipeline.
- Cloudflare: Cloudflare runs a distributed web gateway to serve content hosted on IPFS easily, quickly, and securely.
We worked with these organizations, as well as many active IPFS users and our broader community, to source feedback and identify priorities for this release and the remainder of 2020. With their help, we zeroed in on two major pain points: performance and reliability.
Performance and reliability upgrades in IPFS 0.5.0
Our performance work centered around content routing, the process of finding and fetching the data you need to load a website, watch a video, or use an app. Now that our distributed network scales to 100,000s of nodes, we need to be much more rigorous about what nodes should participate in routing requests and where we should announce new content to improve overall reliability.
Here are a few of the improvements made in IPFS 0.5.0:
- Faster content discovery: IPFS 0.5.0 makes finding and sharing data in the network much faster, thanks to large improvements to our DHT logic. More efficient routing and providing—already 2-3x faster—lowers bandwidth usage and background traffic. We’ve also updated our experimental QUIC transport to reduce connection latency and round-trips—with the aim to make this the default next release!
- Speedy files transfers: We sped up our file transfer mechanism, Bitswap, to make sharing data between many nodes much faster. Read more about how we worked with Netflix to benchmark and stress-test these improvements!
- Faster file adding: It’s now up to 2x faster to add files to the IPFS network using the Badger datastore on Linux and MacOS. Huzzah for async writes! We’ve also configured Badger to use less memory.
- Faster and more reliable mutable links: The Inter-Planetary Name System (IPNS), our system for creating mutable links for content addresses, now provides faster naming lookups and has a new experimental pubsub transport to speed up record distribution. Providing an IPNS record is now 30-40x faster in 1K node network simulations!
To ensure the reliability of all these large-scale improvements, we created Testground, a new testing tool for peer-to-peer networks at scale. This allowed us to validate and benchmark each enhancement across many network configurations with 1K+ node simulations—increasing development velocity and rigor.
But wait—there’s more!
We said this was a major release, after all. 😉 In IPFS 0.5, we also made great progress on the developer tools and security front, including:
- Broader support for security and encryption protocols: IPFS now uses Transport Layer Security (TLS), an open standard for transport security, by default to help maintain secure connections between clients and servers.
- Developer experience improvements: IPFS 0.5.0 supports many existing tools and workflows, making the power of decentralization accessible to more developers. Updates include:
- Subdomains in the HTTP gateway: Developers can now put dapps (decentralized apps) in isolated origins to secure their applications and web content. This works with hashes, IPNS, DNSLink, ENS, and others.
- /ipfs/peer_id → /p2p/peer_id: We now disambiguate ipfs files from peer addresses by using /p2p/ for the latter.
- .eth link support: Blockchain-based .eth links are supported by default, opening up IPFS further to decentralized application developers (support for more distributed TLDs coming soon!).
Please see our changelog for the comprehensive list of IPFS 0.5.0 updates, as well as our deep dive on all the great things in this release.
The impact of IPFS 0.5.0 (already!)
With our new testing and release process, IPFS 0.5.0 has already been put to use in a variety of production environments. Here’s how it’s making a difference for IPFS users:
Matt Ober, Pinata: “IPFS 0.5 makes big improvements to Bitswap, which de-dupes data transfer between nodes. This means data providers like Pinata who are transferring a lot of data all around the world every day, can send each block only once and it gets to its destination. That cuts our bandwidth costs down significantly. And, it’s also faster.”
Michael Godsey, Infura: “Our collaboration with Protocol Labs and the latest go-ipfs v0.5 release are essential to our upcoming premium IPFS product release later this year. The upgraded subdomain gateway support greatly improves the security of our offering while helping us support some great new features. The improvements to the DHT and stability of peering allow us to provide an even more reliable product and continue to get IPFS into the hands of decentralized application developers.”
Dr. Ian Preston, Peergos: “What we’ve seen is that an inactive IPFS instance now uses way less bandwidth to maintain the DHT and other background traffic. With IPFS 0.5, this load has gone down by a factor of four: it was about 800 kilobits a second and now it’s 200 kilobits a second. That doesn’t sound like much, but it adds up fast—so this makes a big difference.”
Brendan O’Brien, Qri: “Our engineering time is one of our most valuable resources. We’re now seeing a much more mature version of IPFS, which means we’re able to spend more time on our own code vs our dependencies. It took less than a day to upgrade to IPFS 0.5.0, allowing us to commit more of our engineering time to building and fixing our own things.”
Thank you, thank you, and thank you.
There is no way IPFS 0.5.0 could have been our biggest update yet without the help of many contributors. A special thanks to our early testers for this release, especially:
- @MichaelMure (Infura)
- @carsonfarmer (Textile)
- @b5 (Qri)
- @obo20 (Pinata)
- @ianopolous (Peergos)
- @postables (RTrade)
Also, a huge thank you to everyone who contributed patches and improvements in this release, all 98 of you! We couldn’t have made this happen without your help and feedback. ❤
Want to learn more…or even, better get involved?
We’d like to know what you think and help answer any questions you may have. Please join us for a virtual meetup on Friday, May 1st, to deep-dive on the improvements in this release and field questions and feedback.
And, of course, there are many other ways to get involved with IPFS based on your skill set, interest, and availability. Please check out our contribution page on GitHub for guidance and next steps.
This is an exciting time for IPFS and the web in general. Join us!