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 (opens new window) 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 (opens new window) became the first major web browser to offer default IPFS support on Android, shortly after Brave (opens new window) 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 (opens new window) as the content addressed storage layer to power its take on a decentralized identity system.
- Netflix: We began collaborating (opens new window) 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 (opens new window) 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 (opens new window). 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 (opens new window), to make sharing data between many nodes much faster. Read more (opens new window) 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 (opens new window)), 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 (opens new window), 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 (opens new window) 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.”
If you’re running IPFS, we highly encourage you to upgrade ASAP to take advantage of all these improvements! Check out our release notes (opens new window) and upgrade how-to (opens new window) to get started today!
# 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 (opens new window) 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 (opens new window) 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 (opens new window) on Friday, May 1st, to deep-dive on the improvements in this release and field questions and feedback.
(opens new window)
In the meantime, get started by installing go-ipfs (opens new window) or upgrading to go-ipfs 0.5 (opens new window) to see the improvements yourself!
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 (opens new window) on GitHub for guidance and next steps.
This is an exciting time for IPFS and the web in general. Join us!